TMV035 Analysis and Linear Algebra B, 2006

STUDIO 1.1 – MATRISER

Matlab betyder “Matrix Laboratory” och bygger på numeriska matrisberäkningar. Vi ska nu (äntligen) börja använda matriser.

0.1. Matriser. En matris är ett rektangulärt talschema:

(1)  A = [\begin{matrix}a_{11} & … & a_{1n} \\ ⋮ & & ⋮ \\ a_{m1} & … & a_{mn} \end{matrix}]

Matrisen ovan har m rader och n kolonner, vi säger att den är av typ m × n. Ett matriselement i rad nr i, kolonn nr j tecknas a_{ij}, där i är radindex och j är kolonnindex. I Matlab skrivs detta A(i,j) och size(A) ger matrisens typ.

En matris av typ m × 1 kallas kolonnmatris (kolonnvektor) och en matris av typ 1 × n kallas radmatris (radvektor):

(2)  a = [ a_{1} ; ⋮ ; a_{m}] , b = [b_{1}, …, b_{n}]

Du kommer att se att vi använder oftast kolonnvektorer för att representera kvantiteter som vi beräknar. Element nr i ges i Matlab av a(i), b(i) och antalet element ges av length(a).

Övning 1. Skriv in följande matriser i Matlab.

A = [\begin{matrix}1 & 5 & 9 \\ 2 & 6 & 10 \\ 3 & 7 & 11 \\ 4 & 8 & 12 \end{matrix}] , B = [\begin{matrix}4 & 5 & 6 \\ 3 & 2 & 1 \\ 1 & 1 & 1 \end{matrix}] , x = [\begin{matrix}1 \\ 1 \\ 1 \end{matrix}] , a = [−1 0 1]

Skriv ut matriselementen a_{23}, b_{23}, x_{2}. Prova size, length. Tips: A skrivs

A=[1, 5, 9; 2, 6, 10; 3, 7, 11; 4, 8, 12]
A(2,3)

Ändra b_{23} genom att skriva B(2,3)=5. □

En matris kan betraktas som en kollektion av kolonner:

A = [\begin{matrix}a_{11} & … & a_{1j} & … & a_{1n} \\ ⋮ & … & ⋮ & … & ⋮ \\ a_{m1} & … & a_{mj} & … & a_{mn} \end{matrix}] = [a_{1} … a_{j} … a_{n}]

med kolonnerna

a_{1} = [ a_{11} ; ⋮ ; a_{m1}] , a_{j} = [ a_{1j} ; ⋮ ; a_{mj}] , a_{n} = [ a_{1n} ; ⋮ ; a_{mn}]

Man kan även betrakta den som en kollektion av rader, men vi använder oftast kolonnrepresentationen. I Matlab plockar man ut kolonn nr j med A(:,j). Här är j kolonnindex medan radindex i = 1, … m representeras av tecknet kolon :. På liknande vis ges rad nr i av A(i,:).

Övning 2. Skriv ut kolonn nr 1, 2 och 3 ur matrisen A. Sätt in kolonnvektorn x som första kolonn i B genom att skriva B(:,1)=x. □

Övning 3. Radera matrisen B (clear B) och skriv in den igen genom att först bilda kolonnerna

b_{1} = [\begin{matrix}4 \\ 3 \\ 1 \end{matrix}] , b_{2} = [\begin{matrix}5 \\ 2 \\ 1 \end{matrix}] , b_{2} = [\begin{matrix}6 \\ 1 \\ 1 \end{matrix}]

och sedan sätta in dem i matrisen B = [b_{1}, b_{2}, b_{3}]. □

0.2. Matris-vektor-multiplikation. Vi definierar produkten av en radmatris och en kolonnmatris (med samma antal element) enligt:

ax = [a_{1} … a_{n}] [x_{1} ; ⋮ ; x_{n}] = a_{1}x_{1} + a_{2}x_{2} + ⋯ + a_{n}x_{n}.

Observera att detta är samma formel som för skalärprodukt. Produkten y = Ax av en matris av typen m × n och en kolonnvektor av typen n × 1 definieras på liknande vis genom att vi multiplicerar matrisens rader i tur och ordning med kolonnvektorn. Vi får en kolonnvektor av typen m × 1 och den ges av

y = Ax

[ y_{1} ; ⋮ ; y_{m}] = [\begin{matrix}a_{11} & … & a_{1n} \\ ⋮ & & ⋮ \\ a_{m1} & … & a_{mn} \end{matrix}] [x_{1} ; ⋮ ; x_{n}] = [ a_{11}x_{1} + a_{12}x_{2} + ⋯ + a_{1n}x_{n} ; ⋮ ; a_{m1}x_{1} + a_{m2}x_{2} + ⋯ + a_{mn}x_{n}] ,

y_{i} = ∑_{j=1}^{n} a_{ij}x_{j} = a_{i1}x_{1} + a_{i2}x_{2} + ⋯ + a_{in}x_{n}.

Obs att typerna måste stämma överens för att produkten ska vara definierad enligt regeln m×1 = (m × n)(n × 1). I Matlab skriver man helt enkelt y=A*x.

Övning 4. Beräkna följande produkter, först för hand sedan med Matlab. Samma matriser som i tidigare övningar.

Ax, Bx, ax, Aa.
□

Speciella matriser. Matlab har funktionerna zeros, ones, eye för att bilda speciella matriser med nollor, ettor och enhetsmatris.

Övning 5. Prova följande

zeros(1), zeros(2,5), zeros(size(A))
ones(1), ones(2,5), ones(size(A))
eye(1), eye(2,5), eye(size(A))

Skapa matris kolonnvis. Vi bygger ofta upp matriser med hjälp någon beräkningsalgoritm, ibland görs beräkningen kolonnvis. Vi ger ett exempel. Matrisen

C = [\begin{matrix}1 & 2 & 3 & 4 & … & 10 \\ 1 & 2 & 3 & 4 & … & 10 \\ 1 & 2 & 3 & 4 & … & 10 \\ 1 & 2 & 3 & 4 & … & 10 \end{matrix}]

skapas av for-loopen

clear C;
ett=ones(4,1);
for i=1:10
  C(:,i)=i*ett;
end

Skriv en skriptfil som gör detta. Tag bort semikolon så att du ser vad som händer i varje steg.

Övning 6. Låt

K = [\begin{matrix}1 & 1 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{matrix}]

Skriv en for-loop som skapar matrisen X = [x_{1}, x_{2}, …, x_{5}] där

x_{1} = [\begin{matrix}1 \\ 2 \\ 3 \end{matrix}] , x_{i} = Kx_{i−1}.

□

Linjärt ekvationssystem. Matriser används bland annat för att skriva ned linjära ekvationssystem. Exempel: ekvationssystemet

x_{1} + 2x_{2} + 3x_{3} = 14
3x_{1} + 2x_{2} + x_{3} = 10
7x_{1} + 8x_{2} = 23

kan skrivas på matrisform

[\begin{matrix}1 & 2 & 3 \\ 3 & 2 & 1 \\ 7 & 8 & 0 \end{matrix}] [\begin{matrix}x_{1} \\ x_{2} \\ x_{3} \end{matrix}] = [\begin{matrix}14 \\ 10 \\ 23 \end{matrix}] ,

dvs

Ax = y, med A = [\begin{matrix}1 & 2 & 3 \\ 3 & 2 & 1 \\ 7 & 8 & 0 \end{matrix}] , y = [\begin{matrix}14 \\ 10 \\ 23 \end{matrix}] .

Vi ska senare lära oss hur man löser sådana ekvationssystem. I Matlab finns “backslash”- kommandot som löser systemet:

x=A\y

Övning 7. Skriv ekvationssystemet

x_{1} + 5x_{2} + 9x_{3} = 29
2x_{1} + 5x_{3} = 26
3x_{1} + 7x_{2} + 11x_{3} = 39

på matrisform och lös med “backslash”.