Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Matriseregning 0.1: Matrisemultiplikasjon

Vi kan gange to matriser med hverandre, det kalles matrisemultiplikasjon. Vi bruker termen matrise også for vektorer, som bare er matriser med bare én kolonne (kolonnevektor), eller én rad (radvektor).

Intro

Ett krav for at to matriser kan ganges med hverandre, er at antall kolonner i den første er lik antall rader i den andre. Det vil si at matrisemultiplikasjon er udefinert for to matriser der dette ikke er tilfelle. Hvis matrisene er gyldige, tar vi så dottproduktet av hver rad i den første matrisen og hver kolonne i den andre matrisen. Merk at antall kolonner i en matrise tilsvarer lengden på radene, og motsatt. Den resulterende matrisen vil ha like mange rader som den første matrisen, og like mange kolonner som den andre matrisen.

Eksempel: Gitt vektor a og vektor b:

a = [1,2,3]

b = [2,
3,
4]

Vektor a har 3 kolonner og 1 rad.

Vektor b har 1 kolonne og 3 rader.

Vi tar prikkproduktet (skalarproduktet) av [1,2,3] og [2,3,4].
Husk at prikkproduktet er summen av tallene i den ene vektoren ganget med tallet på tilsvarende plass i den andre vektoren. Her blir ikke radvektorer og kolonnevektorer noe annerledes, men husk at vi begynner å telle fra venstre i radvektoren, og fra øverst i kolonnevektoren. Her står × for "vanlig" multiplisering.

Altså:
a⋅b = [1,2,3]⋅[2,3,4] = 1×2 + 2×3 + 3×4 = 2 + 6 + 12 = 20

Men hvis vi snur rekkefølgen, og tar b⋅a får vi en annen situasjon. Da stemmer det fortsatt at antall kolonner i den første matrisen er det samme som antall rader i den andre, men siden den resulterende matrisen vil ha like mange rader som den første matrisen, og like mange kolonner som den andre matrisen, får vi en 3x3-matrise, og vi må gjøre utregningen i 9 steg.

b⋅a gir oss altså en 3x3-matrise, vist her som en todimensjonal Python-liste:
[[i1,i2,i3],
[i4,i5,i6],
[i7,i8,i9]]

...hvor utregningen er som følger:

b = [2,
3,
4]

a = [1,2,3]

i1 = 2×1 = 2 (2 fra b, 1 fra a)
i2 = 2×2 = 4 (2 fra b, 2 fra a)
i3 = 2×3 = 6 (2 fra b, 3 fra a)
i4 = 3×1 = 3 (3 fra b, 1 fra a)
i5 = 3×2 = 6 (3 fra b, 2 fra a)
i6 = 3×3 = 9 (3 fra b, 3 fra a)
i7 = 4×1 = 4 (4 fra b, 1 fra a)
i8 = 4×2 = 8 (4 fra b, 2 fra a)
i9 = 4×3 = 9 (4 fra b, 3 fra a)

Vi kan også teste dette i numpy:

np.matrix() kan blant annet ta inn ei liste som representerer en matrise.
np.matmul() er matrisemultiplikasjon som tar to matriser.

import numpy as np

a = np.matrix([1,2,3])
b = np.matrix([[2],[3],[4])

print(np.matmul(a,b))
print(np.matmul(b,a))

Da får vi følgende utskrift:

matrix([[20]])

matrix([[ 2,  4,  6],
        [ 3,  6,  9],
        [ 4,  8, 12]])

Hvis matrisene ikke er gyldige

I noen tilfeller vil man gange sammen matriser som er helt like. Med kriteriene for matrisemultiplikasjon i minne ser vi at det ikke går med mindre de to matrisene er kvadratiske. Men, det finnes et triks! Vi kan transposere den ene matrisen. Dette indikeres med en T øverst til høyre for matrisebetegnelsen, slik: aT. Les introoppgave 0.2 for mer info om transposering. Kort fortalt gjør vi om alle rader til kolonner, så hvis vi har to vektorer med lik dimensjonalitet:

a = [1,2,3,4,5]
b = [3,4,5,6,7]

og vi vil gange dem, så finner vi enten:

aTb, som gir oss en 5x5-matrise.

eller

bTa, som gir oss en 1x1-matrise.

Les mer her:
https://www.mathsisfun.com/algebra/matrix-multiplying.html