Denna Maplesession består av två avdelningar:
1. Ortogonala matriser och
2. Egenvärden och egenvektorer.
Maple erbjuder ett sätt att bilda en ortogonal matris utifrån en viss godtycklig riktning
som läggs in i första raden.
Metoden bygger på Gram-Schmidts ortogonaliseringsmetod.
Vi börjar med att ladda in linalg-paketet och den givna riktningen
representerad av vektorn a = (1,2,2):
> with(linalg):
>
a:=vector([1,2,2]);
b:=vector([1,0,0]); c:=vector([0,1,0]);
De två övriga vektorerna b och c är två andra vektorer som tillsammans med a
bildar ett linjärt oberoende system.
Kommandot 'GramSchmidt' skapar ett ortogonalt system av vektorer utgående från den
första vektorn (här a) i argumenten.
Dvs. den första vektorn ingår alltid bland de tre ortogonala.
> G:=GramSchmidt([a,b,c]);
Här erhålls tre ortogonala vektorer, varav den första mycket riktigt är a=(1,2,2).
Dessa vektorer ligger själva i vektorn G och kan benämnas G[1],G[2] resp. G[3].
Anm: Om man matar in två inbördes ortogonala vektorer i GramSchmidt i de första två positionerna,
bibehålls
dessa två medan en ny tredje vektor, ortogonal mot de första två, anges i utmatningen.
I nästa steg normaliseras dessa:
> a1:=normalize(G[1]);
> b1:=normalize(G[2]);c1:=normalize(G[3]);
Nu har vi tre normerade, ortogonala vektorer som alltså kan vara rader i en ortogonal matris:
>
O1:=matrix(3,3,[a1,b1,c1]);
Vi kollar ortogonaliteten genom att bilda produkten mellan matrisen och dess transponat.
Om matrisen är ortogonal ska resultatet bli en enhetsmatris.
> P:=evalm(O1&*transpose(O1));
Stämmer alltså!
Vi kollar determinanten också.
Den är +1 eller -1 för ortogonala matriser.
+1 om raderna bildar ett högersystem, annars -1.
> det(O1);
Alltså ett högersystem!
Den ortogonala matrisens effekt på vektorer kan också
prövas med matrismultiplikation:
(OBS att man inte behöver ta 'transpose(a)' i produkten!)
> s:=evalm(O1&*a);
Att andra och tredje komponenten blev 0 var förutsägbart.
a är ju parallell med första raden och därmed ortogonal mot både
andra och tredje raden i O1.
Vi matar in en symmetrisk matris (Exempel 15, s. 178i ELA)
> A:=matrix(3,3,[1,0,3,0,1,4,3,4,1]);
Egenvärden och egenvektorer erhålles direkt genom kommandot 'eigenvects':
> EV:=eigenvects(A);
Resultatet är en aning svårtolkat.
I första tredjedelen står det: ' 1 , 1 , [[-4/3,1,0]) ' .
Detta tolkas så att första egenvärdet är 1 (första ettan),
som har 1 st. egenvektor (andra ettan) och den egenvektorn är [-4/3,1,0].
De två andra tredjedelarna talar på samma sätt om att de andra egenvärdena
är 6 resp. -4, som har varsina egenvektorer, som också anges..
Vi ger också ett exempel med dubbla egenvärden , där ett
egenvärde har två linjärt oberoende egenvektorer (ELA 518d)
> B:=matrix(3,3,[1,2,-2,-2,5,-2,-6,6,-3]);
> eigenvects(B);
Här är alltså -3 och 3 egenvärden och egenvärdet 3 har två linjärt oberoende
egenvektorer. Detta framgår av uttrycket ' 3,2,[...' där tvåan står
för antalet egenvektorer som förknippas med egenvärdet 3.
Här ger Maple egenvektorerna [1,1,0] och [-1,0,1].
Dessa är inte inbördes ortogonala.
Det är dock möjligt att skaffa sig två ortogonala egenvektorer hörande till 3.
Gram-Schmidt kan användas
> h:=vector([1,1,0]);v:=vector([-1,0,1]);
> Gr:=GramSchmidt([v,h]);
Här är de två vektorerna ortogonala.
Man kan visa att den nya, andra vektorn , v2 = Gr[2], också är en egenvektor svarande mot
egenvärdet 3:
> V:=evalm(B&*Gr[2]);
Observera att resultatet blev Bv2 = 3v2.
Stämmer alltså.