Matrisprodukt och determinanter.

Vi börjar sessionen med att ladda in linalgpaketet.

Glöm inte ':' efter i stället för ';' för undvikande av stort output.

> with(linalg):

Warning, new definition for norm

Warning, new definition for trace

Vi matar nu in två allmänna 3x3-matriser utan att specificera komponenter.

Resultatet blir allmänna matriser som Maple uttrycker med dubbelindicerade parametrar.

När produkten bildas (observera matrisprodukttecknet '&*') tar man lämpligen 'evalm'

för produkten 'G&*H' för att se komponenterna:

> G:=matrix(3,3);

[Maple Math]

> H:=matrix(3,3);

[Maple Math]

> P:=evalm(G&*H);

[Maple Math]

> Detta är alltså den allmänna matrisprodukten för två 3x3-matriser.

Nu testar vi den ganska märkliga determinantrelationen det(G)det(H) = det(GH)

som sammanfattar mycket komplexa uttryck.
Vi bildar alltså produkten av det(G) och det(H) samt bildar det(GH) = det(P)

> dGH:=det(G)*det(H);
dP:=det(P);

[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

Kan verkligen dessa två tal vara lika?

Testa med 'simplify'!

> S:=simplify(dGH-dP);

[Maple Math]

Jo, faktiskt!

Nu matar vi in två nya 3x3-matriser för att studera transponatoperationen

(som ju byter rader och kolumner i en matris).

Kommandot för transponering är 'transpose'.

> G:=matrix(3,3,[1,2,3,3,2,1,2,3,4]);
H:=matrix(3,3,[5,0,7,1,1,1,2,1,6]);
GT:=transpose(G);HT:=transpose(H);

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Nu testar vi relationen (GH)T = HTGT:

> T1:=transpose(G&*H);
T2:=evalm(HT&*GT);

[Maple Math]

[Maple Math]

Stämmer alltså bra eftersom T1 = T2.



Linjära ekvationssystem.

Här testar vi det system som visas i OH2-3, i LA2, som alltså innehåller

parametrarna a och b.

Vi matar in matrisen A, som innehåller systemets matris i de tre första kolumnerna och högerledsvektorn

i den sista fjärde.

> A:=matrix(3,4,[1,3,4,2,2,8,a,1,-1,-2,1,b]);

[Maple Math]

Gausselimination utförs helt enkelt med kommandot 'gausselim'.

> E:=gausselim(A);

[Maple Math]

Man känner nästan igen resultatet från OH-bilden.
Dock är tydligen Maple inte så noga med att fixa ettor i diagonalen.
Kommen så här långt brukar man lösa ut z och därefter y och x.
Detta kallas återsubstitution.

Maple ordnar det med kommandot 'backsub':

> E1:=backsub(E);

[Maple Math]

Här får vi alltså precis den lösning som anges då a är skilt från 18. Kontrollera!

Nu prövar vi Maple då a = 18. Vi sätter in värdet 18 i 2:a raden tredje kolumnen, där a stod förut.

> A[2,3]:=18

> e1:=gausselim(A);

[Maple Math]

Återsubstitutionen borde här rimligen misslyckas:

> e2:=backsub(e1);

Error, (in backsub) inconsistent system

Alldeles riktigt: Slutsatsen är att lösning saknas.
Men Maple tänkte inte på fallet b=-7/2, då det borde

finnas oändligt många lösningar.

Vi testar, sätter in 0 i e1:s 3:e rad, 4:e kolumn och återsubstituerar.

> e1[3,4]:=0;

e21:=backsub(e1);

[Maple Math]

[Maple Math]

Ja! Det visar sig att Maple kan räkna med parametrar när det behövs.

Här uttrycks lösningslinjen på ett ganska svårläst men korrekt sätt.

Jämfor med OH-bilden Gausselimination2 !



Inversmatriser.

VI avslutar med att titta på inversmatriserna.

Sådana behöver som bekant att ursprungsmatrisen har determinanten skild från 0.

Vi kollar determinanterna för de tidigare införda matriserna G och H:

> dG:=det(G);dH:=det(H);

[Maple Math]

[Maple Math]

G:s determinant är alltså 0 medan H:s är skild från 0.

Vi testar inverserna som i Maple tas fram med 'inverse'.

> GI:=evalm(inverse(G));IH:=evalm(inverse(H));

Error, (in inverse) singular matrix

[Maple Math]

Som väntat felmeddelande för 'inverse(G);'

Vi visar nu att man kan lösa kvadratiska system Av=h genom v= A-1h.

Vi inför en högerledsvektor h och använder H:s invers IH som redan beräknats:

> h:=matrix(3,1,[1,2,3]);

[Maple Math]

> sol1:=evalm(IH&*h);

[Maple Math]

Här fås alltså systemets lösning som IH*h.

Vi prövar också med Gausselimination.

Här måste vi lägga in kolumnvektorn h som sista kolumn efter H:s kolumner.

Detta kan göras med kommandot 'concat' som klistrar ihop matriser horisontellt.

(Kommandot 'stackmatrix' gör samma sak vertikalt).

> Hh:=concat(H,h);

[Maple Math]

Nu kan vi Gausseliminera och återsubstituera som vanligt på matrisen Hh:

> sg:=gausselim(Hh);

[Maple Math]

> sol2:=backsub(sg);

[Maple Math]

Samma lösning alltså!

Fortsätt gärna med att lösa ex.vis kursbokens linjära system med Maple, valfri metod.