Matrisövningar
Vi börjar med att skapa lite data som kommer att användas
i
beräkningarna. Vi återanvänder a
och
b
från föregående övning.Jag
har
använt diverse kommandon för att bilda matriserna. Toeplitz,
Hankel
och Hessenberg kommer vi inte att se mer på denna kurs. Den
magiska
matrisen är ingalunda viktig i numerisk analys, men det är en
bra
testmatris eftersom varje tal i matrisen förekommer bara en
gång
(det är lätt att se var elementen hamnar om man flyttar
på
delar av matrisen).
Några matriser att räkna med:
Uttryck | Kommentar |
n = 5; A = magic(n) |
Det finns många speciella matriser som har fått namn. |
B = toeplitz(1:n,
-(1:n)) |
Här är en ytterligare en. Hankel och Hessenberg är två till som är döpta efter personer; det finns fler och dessutom många som har namn efter matrisens struktur (t.ex. diagonalmatris). |
R = rand(n, 2) |
Det finns randn också. |
C = ones(n, 2) |
zeros- funktionen är bra att
känna till också. |
a = (1:5)'; b = [1 4 3 2 6]' |
Vi behöver två vektor också. Du kan vektorerna från vektorövningen, t.ex. |
Nu till lite matrisräkning:
Uttryck | Kommentar |
A + B |
|
A + 2 |
Så här får man göra i Matlab, men inte i "matematiken" |
A + C, size(A), size(C) |
|
A * B |
|
A .* B |
Notera skillnaden. |
A * C |
|
A * C' |
|
C * A |
|
C' * A |
|
R - [R(:, 1), R(:, 2)] |
Så? Vad betyder kolon här? |
A * R - [A * R(:, 1), A * R(:, 2)] |
Slutsats |
S = A + A' |
|
S - S' |
S är exempel på en sådan
matris. Vad kallas den? |
(A * B)' - B' * A' |
Sats |
D = diag(n:-1:1) |
Vad kallas en sådan matris? |
A * D |
Slutsats |
D * A |
Slutsats |
D * A * D |
|
I = eye(n) |
Vad heter denna matris? |
e2 = I(:, 2) |
|
e5 = I(:, 5) |
|
e2' * A, A(2, :) |
Slutsats |
A * e5, A(:, 5) |
Slutsats |
e2' * A * e5, A(2, 5) |
|
e2' * a, a' * e5 |
|
I + a * a' |
Använd ovanstående för att beräkna elementen i matrisen. |
W = (I - a * a' / (a' * a)), W * a |
Vad är W ? |
W - W * W, W - W' |
|
A(:, [5 1 2 4 3]) |
Slutsats |
p = [5 1 2 4 3] |
|
A(:, p) |
Slutsats |
A([5 1 2 4 3], :) - A(p, :) |
Slutsats |
A(p, p) |
Vad är detta? |
P = eye(n); P = P(:, p); |
P för permutation |
A(:, p) - A * P |
Slutsats |
A(p, :) - P' * A |
Slutsats |
A(p, p) - P' * A * P |
Slutsats |
IA = inv(A), A * IA, IA * A |
Slutsats |
det(A) |
|
inv(C) |
Så att? |
inv(inv(A)) - A |
Sats |
inv(A * B) - inv(B) * inv(A) |
Sats |
inv(A') - inv(A)' |
Sats |
S = magic(6) |
|
inv(S), det(S) |
Sats |
z = [2 2 -1 -2 -2 1]', S * z |
Sats |
rank(S) |
Sats |
x = [3 -2]', R * x - (R(:, 1) * x(1) + R(:, 2) * x(2) ) |
Slutsats |
Q = orth(randn(n)) |
help orth |
Q' * Q, Q * Q' |
Vad kallas en sådan matris? |
inv(Q) - Q' |
Sats |
Q = orth(randn(n, 2)) |
|
Q' * Q, Q * Q' |
Slutsats |
Det finns många andra matnyttiga kommandon. Testa gärna:
max(A) |
|
max(A, [], 2) |
[] är en tom matris (till skillnad
från en nollmatris). |
sort(A) |
|
sort(A, 2) |
|
[m, p] = max(A) |
|
[X, L] = eig(A) |
|
[l, p] = sort(diag(L)) |
Vad blir diag(L) ? |
X = X(:, p); |
|
A * X - X * diag(l) |
Vad blir diag(l) ? Vad borde uttrycket
bli? |
sum(A, 2) |
|
sum(A) |
|
sum(diag(A)) |
|
sum(diag(A(:, end:-1:1))) |
Vad är A(:, end:-1:1) ? Vad betyder end
här? |
A(end, :), A(:, end), A(end, end) |
|
max(max(A)) |
|
max(A(:)) |
|
A(:) |
|
sum(abs(sort(A(:)) - (1:length(A)^2)')) |
|
[A, a; a', 2] |
|
A(2:4, 3:4) |