Göm meny
Gäller för: HT25

Förberedelsematerial 3.3


Linjär algebra (eng. linear algebra)

I princip all matematik man stöter på i grundskolan och på gymnasiet behandlar “vanliga” tal, som t.ex. $3$, $42$, $\frac{22}{7}$, decimaltalet $639.95$, eller till och med irrationella tal som $\pi$. I den här kursen har vi också studerat de matematiska objekt som kallas för mängder och vi har sagt att mängdläran är en del av den diskreta matematiken.

En annan viktig gren av matematiken som man först brukar stöta på på universitetsnivå är så kallad linjär algebra. Den linjära algebran ligger till grund för både den moderna naturvetenskapen och, genom statistiken, de kvantitativa humanvetenskaperna. Linjär algebra, eller LinAlg som det ofta kallas, utgör också grunden för modern datorgrafik, maskininlärning, storskaliga simuleringar, etc. Idag är en kurs i LinAlg obligatorisk för nästan alla teknologer på LiU, och ca 75 % av dessa läser den redan under första terminen.

LinAlg kan beskrivas som den gren av matematiken som studerar vektorer, matriser, linjära rum/vektorrum, linjära ekvationssystem och transformationer i linjära koordinatsystem. Det låter kanske komplicerat, och det kan det absolut bli, den linjära algebran ligger som sagt till grund för väldigt mycket av den högre matematiken.

Vi ska dock avgränsa oss till några få typer av beräkningar. Syftet är inte att ni ska bli experter utan att ni ska få öva på kopplingen mellan matematiska formler och programkod och bekanta er med några koncept som kommer att dyka upp igen i framtida kurser. (Här finns ytterligare en samling med tillämpningar av matriser: https://www.youtube.com/watch?v=rowWM-MijXU)

Vektorer och vektorrum är t.ex. mycket vanligt förekommande inom det AI-område som brukar kallas för kunskapsrepresentation och återkommer för kogvetare speciellt i språkteknologiska kurser, särskilt då man behandlar semantik och ordvektorer. Matriser och matrisberäkningar är fundamentalt för de flesta former av maskininlärning och statistik, och återkommer för kogvetare t.ex. i kursen i Artificiell Intelligens och i kursen i Kognitiv Teknologi. Såväl vektorer som matriser kommer också tillbaka i flera kurser på masterprogrammet.

Den som skulle vilja ha en mer rigorös introduktion till linjär algebra än den vi erbjuder nedan, och uppfyller de nödvändiga förkunskapskraven (Matematik 4 eller Matematik E), kan slänga ett öga på den fristående kursen ETE325 Linjär Algebra.

Vektorer

En vektor är vad man inom vissa andra grenar av matematiken kallar en $n$-tupel, dvs. en ordnad samling av $n$ stycken tal. Dessa skrivs oftast inom parentes och kommaseparerat, som t.ex. $\mathbf{a} = (1, 2, 75, 6, 7)$, men ibland ser man också $\mathbf{a} = [1, 2, 75, 6, 7]$. Det förekommer också att vektorer skrivs utan kommatecken, som t.ex. $\mathbf{a} = \begin{pmatrix}1 & 2 & 75 & 6 & 7\end{pmatrix}$ eller $\mathbf{a} = \begin{bmatrix}1 & 2 & 75 & 6 & 7\end{bmatrix}$. Ibland skrivs vektorer också som kolonner, dvs. med varje element, eller komponent, som vi ofta säger i LinAlg, på en egen rad, men det är ovanligt när man har fler än 4 komponenter:

$$ \mathbf{a} = \begin{pmatrix} 1 \\ 2 \\ 75 \\ 6 \\ 7 \end{pmatrix} = \begin{bmatrix} 1 \\ 2 \\ 75 \\ 6 \\ 7 \end{bmatrix} $$

En variabel som representerar en vektor skrivs oftast som en gemen i fetstil, som $\mathbf{a}$. Man ser ibland också notationen $\vec{a} = (1, 2, 75, 6, 7)$ eller $\overrightarrow{OA} = (1, 2, 75, 6, 7)$ (mer om varför längre ner).

Vi använder, precis som i Python, index för att indikera ett specifikt värde i en vektor. I Python använder vi ju subskriptoperatorn ([]) för att komma åt värdet på ett visst index (t.ex. en_sekvens[0]). Denna operator har fått sitt namn av det typografiska subskriptet som används för samma syfte inom matematiken. T.ex. om $\mathbf{x} = (4, 1, 7)$ så är $x_1 = 4$, $x_2 = 1$ och $x_3 = 7$. Notera att matematiker, till skillnad från programmerare, oftast indexerar från 1, men det förekommer också att man börjar på 0, speciellt i mer datanära sammanhang. Det viktiga är att vara konsekvent och oftast så anger författarna huruvida index startar från 0 eller 1. Här kommer vi att indexera från 1 bara för att ni ska få en tydligare koppling till den matematiska notationen.

Vi kommer att begränsa oss till vektorer av reella tal, dvs. tal som ingår i den reella talmängden, $\mathbb{R}$. Dvs. vektorer där varje komponent är ett reellt tal. Oftast kommer komponenterna till och med att vara heltal i våra exempel, men räknereglerna fungerar likadant oavsett vilket.

En vektor med $n$ stycken reella tal kallas en $n$-dimensionell vektor, eller en vektor med $n$ dimensioner. Vektorer med två dimensioner kallas ofta för 2-vektorer, vektorer med tre dimensioner för 3-vektorer, etc. En vektor med $n$ dimensioner kan alltså skrivas som $\mathbf{x} = (x_1, x_2, x_3, \ldots, x_n)$ där varje $x_i$ är ett reellt tal. Vi säger också att en vektor med $n$ dimensioner är en punkt i ett $n$-dimensionellt vektorrum. Eftersom vi håller oss till vektorer av reella tal så är dessa reella vektorrum och vi betecknar normalt dessa som $\mathbb{R}^n$.

Av Svjo - Eget arbete, CC BY-SA 4.0, Länk

En vektor med två dimensioner, som $\mathbf{v} = (2, 3)$, kan sägas representera en punkt i planet, ett 2-dimensionellt koordinatsystem (som i bilden till höger), vektorrummet $\mathbb{R}^2$. Ni kanske minns den här notationen, att koordinater uttrycks som $(x, y)$, från tidigare matematiklektioner på högstadiet eller gymnasiet. En vektor med tre dimensioner, t.ex. $\mathbf{w} = (4, 1, 7)$, kan på samma sätt representera en punkt i rummet, ett 3-dimensionellt koordinatsystem, vektorrummet $\mathbb{R}^3$. Detta är orsaken till att vi kallar antalet komponenter i en vektor för dess dimension. Det är alltså antalet dimensioner i det koordinatsystem i vilket vektorn representerar en punkt.

Notationen $\overrightarrow{OA}$ är alltså ett sätt att tydliggöra tolkningen av en vektor som en representation av en riktad linje i ett $n$-dimensionellt rum. T.ex. $\overrightarrow{OA} = (2, 3)$ som är linjen från origo $O = (0, 0)$ till punkten $A = (2, 3)$ i det 2-dimensionella planet. I det 3-dimensionella rummet kan vi på samma sätt ha t.ex. linjen $\overrightarrow{OB} = (4, 1, 7)$ från origo $O = (0, 0, 0)$ till punkten $B = (4, 1, 7)$.

Om vi släpper på tolkningen att en vektor representerar en specifik punkt i ett koordinatsystem så måste inte vektorer inte utgå från origo. Två vektorer sägs dock vara lika ifall det gäller att om de parallellförflyttas (flyttas utan att längd eller riktning förändras) så att de båda utgår från samma startpunkt så får de också samma slutpunkt. Dvs. om de har samma längd och riktning. Den här egenskapen hos vektorer kallas för att de är affina. När vi uttrycker en vektor som $(4, 1, 7)$ under den här tolkningen så beskriver vi alltså en linje från en godtycklig punkt till en punkt som ligger $4$ enheter bort i en riktning, $1$ enhet bort en andra riktning, och $7$ enheter bort i en tredje riktning. Alla vektorerna i bilden nedan är alltså lika (alla är vektorn $(1, 2)$ för att vara exakt) eftersom de har samma längd och riktning.

Det finns inte någon övre gräns för antalet dimensioner vi kan studera inom linjär algebra. T.ex. har vektorn $\mathbf{a} = (1, 2, 75, 6, 7, 75, 6, 7, 75, 6, 7)$ hela 11 dimensioner, och representerar därför en punkt, och en linje från origo $O = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)$, till den punkten i ett 11-dimensionellt vektorrum, och alla andra vektorer med samma riktning och längd. Inom artificiell intelligens, t.ex. inom kunskapsrepresentation eller maskininlärning, arbetar vi ofta med vektorrum med tusentals dimensioner. Det fina i kråksången är att inom LinAlgen så spelar det ingen roll hur många dimensioner en vektor har, räknereglerna är samma ändå!

Det är alltså viktigt att inse att antalet dimensioner i en vektor inte nödvändigtvis har något att göra med den fysiska världen. Vi lever ju till vardags i en tredimensionell värld, eller fyrdimensionell om vi räknar med tid som ytterligare en dimension. Vi kan dock fortfarande räkna på vektorer med många fler dimensioner när vi har fler än 3 mätpunkter. Det är svårt att visualisera vektorer med fler än 3 dimensioner, men vissa av oss lärde oss bara hur linjär algebra egentligen fungerade när vi började arbeta med så många dimensioner att det var fullständigt omöjligt att ens försöka visualisera ;)

Och vad i hela fridens namn ska vi som kognitionsvetare ha detta till? Även om det låter som att vektorer är abstrakta konstruktioner som bara har geometriska tolkningar så kan de faktiskt användas för att representera nästan alla former av sammanhängande data. En vektor kan t.ex. representera $n$ stycken numeriska mätvärden om en viss datapunkt. Exempelvis längd, vikt, ålder, samt resultaten på ett antal psykometriska tester, för en specifik försöksdeltagare. Eller data från ett antal olika sensorer vid en viss tidpunkt, t.ex. temperatur, luftfuktighet, ljusnivå, ljudnivå, och lufttryck. Det kan också handla om biometriska data som t.ex. EKG-mätningar, EEG-mätningar, eller mätningar av blodtryck och andra vitalparametrar.

Att vi kan kan behandla dessa skenbart väsenskilda typer av data — personattribut, testresultat, fysiska sensordata eller biometriska data — som om de vore samma sak, koordinater och linjer i ett vektorrum, är orsaken till att LinAlg är så fundamentalt för nästan alla andra former av “högre matematik”.

Addition och subtraktion av vektorer

En trevlig egenskap hos vektorer är att vi enkelt kan addera dem till varandra genom att addera deras koordinater. En förutsättning för att kunna addera två vektorer är dock att de har samma antal dimensioner. Vi kan alltså inte addera en 2-vektor med en 3-vektor.

Av Svjo - Eget arbete, CC0, Länk

Har vi t.ex. en vektor $\mathbf{a} = (a_x, a_y)$ och en vektor $\mathbf{b} = (b_x, b_y)$ så kan vi så att säga “klistra ihop dem” genom att flytta utgångspunkten för $b$ från origo till slutpunkten för $a$. Vi Detta gör vi genom att addera vektorerna på följande sätt:

$$ \mathbf{a}+\mathbf{b} = (a_x + b_x, a_y + b_y) $$

Vill vi t.ex. uttrycka den koordinat som vi når genom att först följa $\mathbf{a}$ och sedan följa $\mathbf{b}$ kan vi alltså helt enkelt addera dem. Eftersom koordinater också är ekvivalenta med vektorn från origo till de koordinaterna så har vi på det här sättet också beräknat vektorn från origo till $\mathbf{a+b}$ som i bilden till höger.

Negationen av en vektor är den vektor som pekar i motsatt riktning och har samma längd. Om $\mathbf{a} = (a_x, a_y)$ så är $-\mathbf{a} = (-a_x, -a_y)$. Utifrån detta kanske vi kan gissa oss fram till att subtraktion av vektorer, precis som för vanliga tal, är ekvivalent med additionen av ett negativt tal. Dvs.

$$\begin{align*} \mathbf{a}-\mathbf{b} &= \\ \mathbf{a}+(-\mathbf{b}) &= \\ (a_x, a_y) + (-b_x, -b_y) &= \\ (a_x - b_x, a_y - b_y) \end{align*} $$

T.ex. kan vi addera vektorerna $\mathbf{a} = (2, 3)$ och $\mathbf{b} = (4, 1)$:

$$\mathbf{a} + \mathbf{b} = (2 + 4, 3 + 1) = (6, 4)$$

Skalär multiplikation av vektorer

Vi kan också enkel multiplicera en vektor med ett vanligt reellt tal. Detta kallas för skalär multiplikation eftersom vi “skalar upp eller skalar ner” vektorn och vanliga tal kallas också för skalärer inom LinAlg.

Om vi har en vektor $\mathbf{a} = (a_x, a_y)$ och ett reellt tal $c$ så är skalär multiplikation av $c$ med $\mathbf{a}$ definierad som: $$ c \cdot \mathbf{a} = (c \cdot a_x, c \cdot a_y) $$

Dvs. vi multiplicerar varje koordinat i vektorn med det reella talet. Om $c$ är större än 1 så “skalar vi upp” vektorn, dvs. gör den längre, och om $0 < c < 1$ så “skalar vi ner” vektorn, dvs. gör den kortare. Om $c$ är negativt så pekar den resulterande vektorn i motsatt riktning jämfört med den ursprungliga vektorn.

T.ex. kan vi multiplicera vektorn $\mathbf{a} = (2, 3)$ med skalären $4$:

$$ 4 \cdot \mathbf{a} = 4 \cdot (2, 3) = (4 \cdot 2, 4 \cdot 3) = (8, 12) $$

Skalärprodukt (eng. dot product eller inner product)

Den kanske viktigaste operationen med vektorer är den så kallade skalärprodukten. Den kallas också för inre produkt eller på engelska dot product eftersom den ofta skrivs med en punkt mellan vektorerna, som i $\mathbf{a} \cdot \mathbf{b}$.

Namnet skalärprodukt kommer av att resultatet av operationen är ett vanligt reellt tal, en skalär, och inte en vektor. Det är lite oturligt att skalär multiplikation och skalärprodukt låter så lika när de är helt olika operationer. Skalärprodukten mellan två vektorer $\mathbf{a}$ och $\mathbf{b}$ är definierad som:

$$ \mathbf{a} \cdot \mathbf{b} = a_1 \cdot b_1 + a_2 \cdot b_2 + \ldots + a_n \cdot b_n $$

Vi kan alltså beskriva skalärprodukten som summan av produkterna av motsvarande koordinater i de två vektorerna. Om vi t.ex. har två 3-vektorer $\mathbf{a} = (1, 2, 3)$ och $\mathbf{b} = (4, 5, 6)$ så är deras skalärprodukt:

$$ \mathbf{a} \cdot \mathbf{b} = 1 \cdot 4 + 2 \cdot 5 + 3 \cdot 6 = 4 + 10 + 18 = 32 $$

Skalärprodukten har många viktiga egenskaper och tolkningar. En av de viktigaste är att den kan användas för att beräkna vinkeln mellan två vektorer. Den här tillämpningen kommer tillbaka i många sammanhang, t.ex. inom maskininlärning och naturlig språkbehandling.

Här kommer vi dock främst att använda skalärprodukten för att beräkna matrismultiplikation, som vi ska titta på härnäst.

Skalärprodukt, exempel

Låt oss titta på ett exempel med två 4-vektorer:

  • $x = (1, 0, 4, 2)$
  • $y = (3, 2, 6, 5)$

I första steget multiplicerar vi koordinaterna på första index i vektorerna med varandra:

$$ \begin{align} \notag x \cdot y &= ({\color{Blue}{\textbf{1}}}, 0, 4, 2) \cdot ({\color{DarkOrange}{\textbf{3}}}, 2, 6, 5) =\\ \notag&= {\color{Blue}{\textbf{1}}} \cdot {\color{DarkOrange}{\textbf{3}}} + \phantom{0 \cdot 2 + 4 \cdot 6 + 2 \cdot 5 =}\\ \notag&\phantom{= 3 + 0 + 24 + 10 =}\\ \notag&\phantom{= 37} \end{align} $$

I nästa steg multiplicerar vi koordinaterna på andra index i vektorerna med varandra:

$$ \begin{align} \notag x \cdot y &= (1, {\color{Blue}{\textbf{0}}}, 4, 2) \cdot (3, {\color{DarkOrange}{\textbf{2}}}, 6, 5) =\\ \notag&= 1\cdot3 + {\color{Blue}{\textbf{0}}}\cdot{\color{DarkOrange}{\textbf{2}}} + \phantom{4\cdot6 + 2\cdot5 =}\\ \notag&\phantom{= 3 + 0 + 24 + 10 =}\\ \notag&\phantom{= 37} \end{align} $$

Så fortsätter vi med tredje och fjärde index:

$$ \begin{align} \notag x \cdot y &= (1, 0, {\color{Blue}{\textbf{4}}}, 2) \cdot (3, 2, {\color{DarkOrange}{\textbf{6}}}, 5) =\\ \notag&= 1\cdot3 + 0\cdot2 + {\color{Blue}{\textbf{4}}}\cdot{\color{DarkOrange}{\textbf{6}}} + \phantom{2\cdot5 =}\\ \notag&\phantom{= 3 + 0 + 24 + 10 =}\\ \notag&\phantom{= 37} \end{align} $$

$$ \begin{align} \notag x \cdot y &= (1, 0, 4, {\color{Blue}{\textbf{2}}}) \cdot (3, 2, 6, {\color{DarkOrange}{\textbf{5}}}) =\\ \notag&= 1\cdot3 + 0\cdot2 + 4\cdot6 + {\color{Blue}{\textbf{2}}}\cdot{\color{DarkOrange}{\textbf{5}}} =\\ \notag&\phantom{= 3 + 0 + 24 + 10 =}\\ \notag&\phantom{= 37} \end{align} $$

Slutligen beräknar vi produkterna och summerar:

$$ \begin{align} \notag x \cdot y &= (1, 0, 4, 2) \cdot (3, 2, 6, 5) =\\ \notag&= 1\cdot3 + 0\cdot2 + 4\cdot6 + 2\cdot5 =\\ \notag&= 3 + 0 + 24 + 10 =\\ \notag&= 37 \end{align} $$

Längden av en vektor

Enligt Pythagoras sats så är längden av en vektor $\mathbf{a} = (a_1, a_2)$ i ett 2-dimensionellt rum definierad som:

$$|\mathbf{a}| = \sqrt{a_1^2 + a_2^2}$$

Exempelvis för vektorn $\overrightarrow{OA} = (2, 3)$ som vi såg ovan så är längden:

$$|\overrightarrow{OA}| = \sqrt{2^2 + 3^2} = \sqrt{4 + 9} = \sqrt{13} \approx 3.61$$

Notera att vi återigen använder det vertikala strecket $|$. Den här gången för att beteckna längden av en vektor, precis som vi använder det för att beteckna absolutvärdet av ett vanligt tal, eller antalet element i en mängd. Vi börjar alltså kanske se ett mönster i att $|$ ofta används för att beteckna något som har med “storlek” att göra.

Pythagoras sats är vi ju bekanta med sedan grundskolan, men hur gör vi om vi har fler dimensioner än 2? Vi kan generalisera Pythagoras sats till högre dimensioner. I ett 3-dimensionellt rum är längden av en vektor $\mathbf{b} = (b_1, b_2, b_3)$ definierad som:

$$|\mathbf{b}| = \sqrt{b_1^2 + b_2^2 + b_3^2}$$

Så kan vi fortsätta och i ett $n$-dimensionellt rum är längden av en vektor $\mathbf{x} = (x_1, x_2, x_3, \ldots, x_n)$ definierad som:

$$|\mathbf{x}| = \sqrt{x_1^2 + x_2^2 + x_3^2 + \ldots + x_n^2}$$

Den som är extra uppmärksam kanske redan har gissat sig fram till att längden av en vektor också kan uttryckas med hjälp av skalärprodukten. Längden av en vektor $\mathbf{a}$ är nämligen lika med kvadratroten av skalärprodukten av vektorn med sig själv:

$$|\mathbf{a}| = \sqrt{\mathbf{a} \cdot \mathbf{a}}$$

Vektorer i Python

Python har ingen inbyggd datatyp för att hantera vektorer. Det finns paket som NumPy som erbjuder stöd för vektorer i Python men vi kommer att implementera våra egna vektorer som tupler. T.ex. kan vi skriva vektorerna $x$ och $y$ ovan som:

x = (1, 0, 4, 2)
y = (3, 2, 6, 5)

Matriser

En matris är en 2-dimensionell tabell av siffervärden som används för att representera många typer av sammansatta numeriska data. T.ex. kan kolumnerna i en matris representera olika mätvärden för försöksdeltagare i en studie, medan raderna representerar varje person.

En skillnad mellan en matris och vilken tabell som helst är dock att en matris kan behandlas matematiskt som en helhet. Matrisberäkningar ligger till grund för de flesta former av modern statistik, datorgrafik, maskininlärning och naturvetenskap.

Varje rad och varje kolumn i en matris utgör en vektor. I matrissammanhang kallar vi dessa för radvektorer respektive kolumnvektorer och varje värde i en matris ingår i både en radvektor och en kolumnvektor.

Ur vissa perspektiv kan en vektor ses som en matris med bara en rad eller en kolumn. En 3-vektor som $\mathbf{a} = (9, 5, 9)$ kan t.ex. ses som en matris med en rad och tre kolumner.

I matematisk notation skriver vi en matris som:

$$ \mathbf{A} = \begin{bmatrix} 9 & 5 & 9 \\ 3 & 1 & 9 \\ 3 & 5 & 1 \\ 0 & 7 & 3 \end{bmatrix} \text{ eller } \mathbf{A} = \begin{pmatrix} 9 & 5 & 9 \\ 3 & 1 & 9 \\ 3 & 5 & 1 \\ 0 & 7 & 3 \end{pmatrix} $$

Både rundade parenteser och hakparenteser förekommer i litteraturen så vi visar båda formerna här. Notera att konventionen för variabler som representerar matriser är versaler i fetstil, som $\mathbf{A}$.

Vi kommer att implementera våra egna matriser som tupler i tupler:

((9, 5, 9), (3, 1, 9), (3, 5, 1), (0, 7, 3))

Det blir ju självklart lite besvärligt att läsa, så i Pythonuppgifterna ska ni börja med att implementera en funktion som skriver ut en matris representerad som tupler i tupler på ett lite trevligare sätt:

( (9, 5, 9),
  (3, 1, 9),
  (3, 5, 1),
  (0, 7, 3) )

Egenskaper hos matriser

Vi kan referera till enskilda värden i en matris med hjälp av rad- och kolumnindex. Vi skriver oftast elementen i en matris med små bokstäver. I matrisen $\mathbf{A}$ ovan är t.ex. värdet på rad 4, kolumn 2 lika med 7. Vi skriver därför $a_{4,2} = 7$. Notera att vi precis som för vektorer indexerar från 1, vilket är vanligast i matematiska sammanhang.

Vi kan också tala om dimensionerna på en matris. I exemplet ovan har matrisen $\mathbf{A}$ 4 rader och 3 kolumner, och vi säger att den har dimensionerna $4 \times 3$ (läses “fyra gånger tre”). Det är alltså antalet rader och antalet kolumner som anger dimensionerna på en matris.

Matriser består som sagt av radvektorer och kolumnvektorer. I matrisen $\mathbf{A}$ ovan är t.ex. den första radvektorn $a_{1,\ast} = (9, 5, 9)$ och den tredje kolumnvektorn är $a_{\ast,3} = (9, 9, 1, 3)$.

Addition och subtraktion av matriser

Addition och subtraktion av matriser fungerar på samma sätt som för vektorer. Vi kan bara addera eller subtrahera två matriser om de har samma dimensioner, dvs. samma antal rader och samma antal kolumner.

Vi gör detta genom att addera eller subtrahera motsvarande element (element på samma positioner) i de två matriserna. Om vi har två matriser $\mathbf{A}$ och $\mathbf{B}$ med dimensionerna $m \times n$ så är additionen av dessa matriser definierad som:

$$ \mathbf{A} + \mathbf{B} = \begin{bmatrix} a_{1,1} + b_{1,1} & a_{1,2} + b_{1,2} & \ldots & a_{1,n} + b_{1,n} \\ a_{2,1} + b_{2,1} & a_{2,2} + b_{2,2} & \ldots & a_{2,n} + b_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m,1} + b_{m,1} & a_{m,2} + b_{m,2} & \ldots & a_{m,n} + b_{m,n} \end{bmatrix} $$

Skalär multiplikation av matriser

Precis som vi kunde göra skalär multiplikation av vektorer så kan vi också göra det med matriser. Om vi har en matris $\mathbf{A}$ och en skalär, ett reellt tal, $c$ så är skalär multiplikation av $c$ med $\mathbf{A}$ definierad som:

$$ c\mathbf{A} = \begin{bmatrix} c \cdot a_{1,1} & c \cdot a_{1,2} & \ldots & c \cdot a_{1,n} \\ c \cdot a_{2,1} & c \cdot a_{2,2} & \ldots & c \cdot a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ c \cdot a_{m,1} & c \cdot a_{m,2} & \ldots & c \cdot a_{m,n} \end{bmatrix} $$

T.ex. om vi har matrisen

$$ \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} $$ och vi vill multiplicera den med skalären $3$ så får vi: $$ 3\mathbf{A} = 3 \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}= \begin{bmatrix} 3 \cdot 1 & 3 \cdot 2 & 3 \cdot 3 \\ 3 \cdot 4 & 3 \cdot 5 & 3 \cdot 6 \end{bmatrix} = \begin{bmatrix} 3 & 6 & 9 \\ 12 & 15 & 18 \end{bmatrix} $$

Matrismultiplikation

Matrismultiplikation är den absolut viktigaste matrisoperationen. Den används i nästan alla former av modern statistik, datorgrafik, maskininlärning och naturvetenskap. Den är också ganska enkel att utföra om man kan beräkna skalärprodukter av vektorer, men vi måste hålla tungan rätt i mun.

För att kunna multiplicera två matriser så måste antalet kolumner i den första matrisen vara lika med antalet rader i den andra matrisen. Om vi har en matris $\mathbf{A}$ med dimensionerna $m \times n$ ($m$ rader och $n$ kolumner) och en matris $\mathbf{B}$ med dimensionerna $n \times p$ ($n$ rader och $p$ kolumner) så kan vi multiplicera dem för att få en ny matris $\mathbf{C}$ med dimensionerna $m \times p$ ($m$ rader och $p$ kolumner).

Matrismultiplikation är definierad på så sätt att varje element i den resulterande matrisen $\mathbf{C}$ är skalärprodukten av en radvektor från den första matrisen och en kolumnvektor från den andra matrisen. Mer formellt:

$$c_{i,j} = a_{i,\ast} \cdot b_{\ast,j}$$

Dvs. varje element i den resulterande matrisen $\mathbf{C}$ är skalärprodukten av radvektorn $a_{i,\ast}$ från den första matrisen $\mathbf{A}$ och kolumnvektorn $b_{\ast,j}$ från den andra matrisen $\mathbf{B}$.

$ \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}$, $\qquad \mathbf{B} = \begin{bmatrix} 7 & 8 \\ 9 & 10 \\ 11 & 12 \end{bmatrix} \qquad $

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&\phantom{=\begin{bmatrix} {\color{DarkOrange}{\textbf{1}}} \cdot {\color{Blue}{\textbf{7}}} + {\color{DarkOrange}{\textbf{2}}} \cdot {\color{Blue}{\textbf{9}}} + {\color{DarkOrange}{\textbf{3}}} \cdot {\color{Blue}{\textbf{11}}} & 1 \cdot 8 + 2 \cdot 10 + 3 \cdot 12 \\ 4 \cdot 7 + 5 \cdot 9 + 6 \cdot 11 & 4 \cdot 8 + 5 \cdot 10 + 6 \cdot 12 \end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}} \end{align}$$

Först ställer vi upp skalärprodukten av den första radvektorn i $\mathbf{A}$ och den första kolumnvektorn i $\mathbf{B}$:

$ A = \begin{bmatrix} {\color{DarkOrange}{\textbf{1}}} & {\color{DarkOrange}{\textbf{2}}} & {\color{DarkOrange}{\textbf{3}}} \\ 4 & 5 & 6 \\ \end{bmatrix}$, $\qquad \mathbf{B} = \begin{bmatrix} {\color{Blue}{\textbf{7}}} & 8 \\ {\color{Blue}{\textbf{9}}} & 10 \\ {\color{Blue}{\textbf{11}}} & 12 \\ \end{bmatrix} \qquad $

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&=\begin{bmatrix} {\color{DarkOrange}{\textbf{1}}} \cdot {\color{Blue}{\textbf{7}}} + {\color{DarkOrange}{\textbf{2}}} \cdot {\color{Blue}{\textbf{9}}} + {\color{DarkOrange}{\textbf{3}}} \cdot {\color{Blue}{\textbf{11}}} & \phantom{1 \cdot 8 + 2 \cdot 10 + 3 \cdot 12} \\ \phantom{4 \cdot 7 + 5 \cdot 9 + 6 \cdot 11} & \phantom{4 \cdot 8 + 5 \cdot 10 + 6 \cdot 12}
\end{bmatrix} =\\ \notag&\phantom{=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}} \end{align}$$

Sedan ställer vi upp skalärprodukten av den första radvektorn i $\mathbf{A}$ och den andra kolumnvektorn i $\mathbf{B}$:

$ \mathbf{A} = \begin{bmatrix} {\color{DarkOrange}{\textbf{1}}} & {\color{DarkOrange}{\textbf{2}}} & {\color{DarkOrange}{\textbf{3}}} \\ 4 & 5 & 6 \end{bmatrix}$, $\qquad \mathbf{B} = \begin{bmatrix} 7 & {\color{Blue}{\textbf{8}}} \\ 9 & {\color{Blue}{\textbf{10}}} \\ 11 & {\color{Blue}{\textbf{12}}} \end{bmatrix} \qquad $

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&=\begin{bmatrix} 1 \cdot 7 + 2 \cdot 9 + 3 \cdot 11 & {\color{DarkOrange}{\textbf{1}}} \cdot {\color{Blue}{\textbf{8}}} + {\color{DarkOrange}{\textbf{2}}} \cdot {\color{Blue}{\textbf{10}}} + {\color{DarkOrange}{\textbf{3}}} \cdot {\color{Blue}{\textbf{12}}} \\ \phantom{4 \cdot 7 + 5 \cdot 9 + 6 \cdot 11} & \phantom{4 \cdot 8 + 5 \cdot 10 + 6 \cdot 12}
\end{bmatrix} =\\ \notag&\phantom{=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}} \end{align}$$

Sedan gör vi samma sak för den andra radvektorn i $\mathbf{A}$:

$ \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ {\color{DarkOrange}{\textbf{4}}} & {\color{DarkOrange}{\textbf{5}}} & {\color{DarkOrange}{\textbf{6}}} \end{bmatrix}$, $\qquad \mathbf{B} = \begin{bmatrix} {\color{Blue}{\textbf{7}}} & 8 \\ {\color{Blue}{\textbf{9}}} & 10 \\ {\color{Blue}{\textbf{11}}} & 12 \end{bmatrix} \qquad $

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&=\begin{bmatrix} 1 \cdot 7 + 2 \cdot 9 + 3 \cdot 11 & 1 \cdot 8 + 2 \cdot 10 + 3 \cdot 12 \\ {\color{DarkOrange}{\textbf{4}}} \cdot {\color{Blue}{\textbf{7}}} + {\color{DarkOrange}{\textbf{5}}} \cdot {\color{Blue}{\textbf{9}}} + {\color{DarkOrange}{\textbf{6}}} \cdot {\color{Blue}{\textbf{11}}} & \phantom{4 \cdot 8 + 5 \cdot 10 + 6 \cdot 12}
\end{bmatrix} =\\ \notag&\phantom{=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}} \end{align}$$

$ \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ {\color{DarkOrange}{\textbf{4}}} & {\color{DarkOrange}{\textbf{5}}} & {\color{DarkOrange}{\textbf{6}}} \end{bmatrix}$, $\qquad \mathbf{B} = \begin{bmatrix} 7 & {\color{Blue}{\textbf{8}}} \\ 9 & {\color{Blue}{\textbf{10}}} \\ 11 & {\color{Blue}{\textbf{12}}} \end{bmatrix} \qquad $

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&=\begin{bmatrix} 1 \cdot 7 + 2 \cdot 9 + 3 \cdot 11 & 1 \cdot 8 + 2 \cdot 10 + 3 \cdot 12 \\ 4 \cdot 7 + 5 \cdot 9 + 6 \cdot 11 & {\color{DarkOrange}{\textbf{4}}} \cdot {\color{Blue}{\textbf{8}}} + {\color{DarkOrange}{\textbf{5}}} \cdot {\color{Blue}{\textbf{10}}} + {\color{DarkOrange}{\textbf{6}}} \cdot {\color{Blue}{\textbf{12}}} \end{bmatrix} =\\ \notag&\phantom{=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =}\\ \notag&\phantom{=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix}} \end{align}$$

Slutligen beräknar vi produkterna och summerar för varje skalärprodukt:

$$\begin{align} \notag \mathbf{A} \times \mathbf{B} \notag&= \begin{bmatrix} a_{1,\ast}\cdot b_{\ast,1} & a_{1,\ast}\cdot b_{\ast,2} \\ a_{2,\ast}\cdot b_{\ast,1} & a_{2,\ast}\cdot b_{\ast,2} \end{bmatrix} =\\ \notag&=\begin{bmatrix} 1 \cdot 7 + 2 \cdot 9 + 3 \cdot 11 & 1 \cdot 8 + 2 \cdot 10 + 3 \cdot 12 \\ 4 \cdot 7 + 5 \cdot 9 + 6 \cdot 11 & 4 \cdot 8 + 5 \cdot 10 + 6 \cdot 12
\end{bmatrix} =\\ \notag&=\begin{bmatrix} 7 + 18 + 33 & 8 + 20 + 36 \\ 28 + 45 + 66 & 32 + 50 + 72
\end{bmatrix} =\\ \notag&=\begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix} \end{align}$$

Alltså är produkten av matriserna $\mathbf{A}$ och $\mathbf{B}$:

$$ \mathbf{A} \times \mathbf{B} = \begin{bmatrix} 58 & 64 \\ 139 & 154 \end{bmatrix} $$

Ordningen spelar roll vid matrismultiplikation

Notera att när vi multiplicerar matriser så spelar ordningen roll. I exemplet ovan har vi beräknat $\mathbf{A} \times \mathbf{B}$ och den resulterande matrisen har dimensionerna $2 \times 2$. Om vi istället beräknar $\mathbf{B} \times \mathbf{A}$ så får vi en matris med dimensionerna $3 \times 3$:

$$ \begin{align*} \mathbf{B} \times \mathbf{A} &= \begin{bmatrix} b_{1,\ast}\cdot a_{\ast,1} & b_{1,\ast}\cdot a_{\ast,2} & b_{1,\ast}\cdot a_{\ast,3} \\ b_{2,\ast}\cdot a_{\ast,1} & b_{2,\ast}\cdot a_{\ast,2} & b_{2,\ast}\cdot a_{\ast,3} \\ b_{3,\ast}\cdot a_{\ast,1} & b_{3,\ast}\cdot a_{\ast,2} & b_{3,\ast}\cdot a_{\ast,3} \end{bmatrix}\\ &= \begin{bmatrix} 7 \cdot 1 + 8 \cdot 4 & 7 \cdot 2 + 8 \cdot 5 & 7 \cdot 3 + 8 \cdot 6 \\ 9 \cdot 1 + 10 \cdot 4 & 9 \cdot 2 + 10 \cdot 5 & 9 \cdot 3 + 10 \cdot 6 \\ 11 \cdot 1 + 12 \cdot 4 & 11 \cdot 2 + 12 \cdot 5 & 11 \cdot 3 + 12 \cdot 6 \end{bmatrix}\\ &= \begin{bmatrix} 7 + 32 & 14 + 40 & 21 + 48 \\ 9 + 40 & 18 + 50 & 27 + 60 \\ 11 + 48 & 22 + 60 & 33 + 72 \end{bmatrix}\\ &= \begin{bmatrix} 39 & 54 & 69 \\ 49 & 68 & 87 \\ 59 & 82 & 105 \end{bmatrix} \end{align*} $$

Detta är alltså en helt annan matris än den vi fick när vi beräknade $\mathbf{A} \times \mathbf{B}$. Detta är en viktig skillnad jämfört med multiplikation av vanliga tal, där ordningen inte spelar någon roll (dvs. $a \cdot b = b \cdot a$). Matrismultiplikation är alltså inte kommutativ. Andra operationer som inte är kommutativa är t.ex. subtraktion och division av vanliga tal. (Däremot är både addition och skalär multiplikation av matriser kommutativa, precis som multiplikation och addition av vanliga tal.)

Att det blir på det här sättet beror på att matrismultiplikation är definierad med hjälp av skalärprodukter av radvektorer från den första matrisen och kolumnvektorer från den andra matrisen. Om vi byter plats på matriserna så byter vi också vilka radvektorer och kolumnvektorer som används, vilket ger helt andra skalärprodukter och därmed en helt annan resulterande matris.

Transponatet av en matris och symmetriska matriser

Transponatet av en matris $\mathbf{A}$, som skrivs som $\mathbf{A}^T$, är en ny matris som fås genom att byta plats på rader och kolumner i den ursprungliga matrisen. Dvs. den första radvektorn i den ursprungliga matrisen blir den första kolumnvektorn i transponatet, och vice versa. Detta gäller för samtliga rad- och kolumnvektorer.

Om vi har en matris $\mathbf{A}$ med dimensionerna $m \times n$ så kommer transponatet $\mathbf{A}^T$ att ha dimensionerna $n \times m$. Om vi t.ex. har matrisen:

$$ \mathbf{A} = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix} \iff \mathbf{A}^T = \begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix} $$

Vi kan se det som att vi gör följande transformation där vi “roterar matrisen 180 grader runt diagonalen”:

By Lucas Vieira - Own work, Public Domain, Link

En matris som är lika med sitt transponat, dvs. $\mathbf{A} = \mathbf{A}^T$, kallas för en symmetrisk matris. Ett exempel på en symmetrisk matris är:

$$ \mathbf{S} = \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 5 \\ 3 & 5 & 6 \end{bmatrix} = \mathbf{S}^T $$

Den här typen av symmetriska matriser är viktiga i många sammanhang, t.ex. inom statistik där de ofta används för att representera kovariansmatriser och alla typer av situationer där vi vill beskriva “alla-till-alla”-relationer, t.ex. avstånd mellan punkter i ett rum, vänskapsrelationer i sociala nätverk eller något så enkelt som multiplikationstabellen för alla tal 1-10 (här är varje värde produkten av radindex och kolumnindex):

$$\begin{bmatrix} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\ 2 & 4 & 6 & 8 & 10 & 12 & 14 & 16 & 18 & 20 \\ 3 & 6 & 9 & 12 & 15 & 18 & 21 & 24 & 27 & 30 \\ 4 & 8 & 12 & 16 & 20 & 24 & 28 & 32 & 36 & 40 \\ 5 & 10 & 15 & 20 & 25 & 30 & 35 & 40 & 45 & 50 \\ 6 & 12 & 18 & 24 & 30 & 36 & 42 & 48 & 54 & 60 \\ 7 & 14 & 21 & 28 & 35 & 42 & 49 & 56 & 63 & 70 \\ 8 & 16 & 24 & 32 & 40 & 48 & 56 & 64 & 72 & 80 \\ 9 & 18 & 27 & 36 & 45 & 54 & 63 & 72 & 81 & 90 \\ 10 & 20 & 30 & 40 & 50 & 60 & 70 & 80 & 90 & 100 \end{bmatrix}$$

Här kommer den symmetriska egenskapen hos matrisen från att multiplikation är kommutativ, dvs. $a \cdot b = b \cdot a$. Detta gör att värdet i rad $i$ och kolumn $j$ alltid är lika med värdet i rad $j$ och kolumn $i$.

En symmetrisk matris är ett specialfall av en kvadratisk matris, dvs. en matris med lika många rader som kolumner. Alla symmetriska matriser är alltså kvadratiska, men inte alla kvadratiska matriser är symmetriska. Ett exempel på en kvadratisk matris som inte är symmetrisk är:

$$ \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} $$

Vi kan tänka oss en “divisionstabell” på samma sätt som vi gjorde med multiplikationstabellen ovan. Eftersom division inte är kommutativ, dvs. $\frac{a}{b} \neq \frac{b}{a}$ så blir tabellen inte symmetrisk (här är varje värde kvoten mellan radindex och kolumnindex, dvs. radindex dividerat med kolumnindex):

$$\begin{bmatrix} \frac{1}{1} & \frac{1}{2} & \frac{1}{3} & \frac{1}{4} & \frac{1}{5} & \frac{1}{6} & \frac{1}{7} & \frac{1}{8} & \frac{1}{9} & \frac{1}{10} \\ \frac{2}{1} & \frac{2}{2} & \frac{2}{3} & \frac{2}{4} & \frac{2}{5} & \frac{2}{6} & \frac{2}{7} & \frac{2}{8} & \frac{2}{9} & \frac{2}{10} \\ \frac{3}{1} & \frac{3}{2} & \frac{3}{3} & \frac{3}{4} & \frac{3}{5} & \frac{3}{6} & \frac{3}{7} & \frac{3}{8} & \frac{3}{9} & \frac{3}{10} \\ \frac{4}{1} & \frac{4}{2} & \frac{4}{3} & \frac{4}{4} & \frac{4}{5} & \frac{4}{6} & \frac{4}{7} & \frac{4}{8} & \frac{4}{9} & \frac{4}{10} \\ \frac{5}{1} & \frac{5}{2} & \frac{5}{3} & \frac{5}{4} & \frac{5}{5} & \frac{5}{6} & \frac{5}{7} & \frac{5}{8} & \frac{5}{9} & \frac{5}{10} \\ \frac{6}{1} & \frac{6}{2} & \frac{6}{3} & \frac{6}{4} & \frac{6}{5} & \frac{6}{6} & \frac{6}{7} & \frac{6}{8} & \frac{6}{9} & \frac{6}{10} \\ \frac{7}{1} & \frac{7}{2} & \frac{7}{3} & \frac{7}{4} & \frac{7}{5} & \frac{7}{6} & \frac{7}{7} & \frac{7}{8} & \frac{7}{9} & \frac{7}{10} \\ \frac{8}{1} & \frac{8}{2} & \frac{8}{3} & \frac{8}{4} & \frac{8}{5} & \frac{8}{6} & \frac{8}{7} & \frac{8}{8} & \frac{8}{9} & \frac{8}{10} \\ \frac{9}{1} & \frac{9}{2} & \frac{9}{3} & \frac{9}{4} & \frac{9}{5} & \frac{9}{6} & \frac{9}{7} & \frac{9}{8} & \frac{9}{9} & \frac{9}{10} \\ \frac{10}{1} & \frac{10}{2} & \frac{10}{3} & \frac{10}{4} & \frac{10}{5} & \frac{10}{6} & \frac{10}{7} & \frac{10}{8} & \frac{10}{9} & \frac{10}{10} \end{bmatrix} $$

Vi kommer att se en annan tillämpning av symmetriska matriser längre fram i kursen.

Quiz

Testa din förståelse av materialet med tillhörande quiz.


Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2025-10-08