Gram-Schmidt
Der findes i pakken LinAlg en kommando
GramSchmidt
, som vi illustrerer brugen af.
Betragt de tre vektorer
| > |
a1:=<1,2,0,-1>;a2:=<0,1/2,-1,3>; a3:=<-2,1,0,-1>; |
Gram-Schmidt ortogonalisering på disse vektorer giver
| > |
GramSchmidt([a1,a2,a3]); |
, Vector[column](%id = 51063492), Vector[column](%id = 51090096)]](images/manual5_4.gif) |
(1.2) |
Bemærk, at første vektor er uændret. Ved Gram-Schmidt ortogonalisering afhænger resultatet af række følgen af vektorerne
| > |
GramSchmidt([a2,a3,a1]); |
, Vector[column](%id = 51147004), Vector[column](%id = 51170384)]](images/manual5_5.gif) |
(1.3) |
Hvis man ønsker at ortonormalisere skal man tilføje normalized=true:
| > |
GramSchmidt([a1,a2,a3], normalized=true); |
, Vector[column](%id = 51225620), Vector[column](%id = 51248136)]](images/manual5_6.gif) |
(1.4) |
eller
| > |
T:=GramSchmidt([a2,a3,a1], normalized=true); |
, Vector[column](%id = 51384032), Vector[column](%id = 51408884)]](images/manual5_7.gif) |
(1.5) |
Bemærk igen, at rækkefølgen er vigtig.
Hvis man vil checke om disse vektorer virkelig er ortonormale kan vi bruge kommandoen
DotProduct
. Vi benytter at vektorerne kan skrives
, Vector[column](%id = 51384032), Vector[column](%id = 51408884)]](images/manual5_8.gif) |
(1.6) |
| > |
DotProduct(T[3],T[3]),DotProduct(T[2],T[3]); |
 |
(1.7) |
Eller alle produkterne
| > |
seq(seq(DotProduct(T[i],T[j]), i=1..3), j=1..3); |
 |
(1.8) |
Koordinatskift.
Hvis vi har en gammel basis
,...,
(
for gammel) og en ny basis
,...,
(
for ny) for et n-dimensionalt vektorrum, ønsker vi at finde den matrix
S der skifter fra gamle koordinater til nye koordinater. Atlså den matrix, der opfylder at Sx=y, hvis
+...+
=
+...+
. Her er et eksempel udregnet i maple:
Eksempel: Skift af koordinater mellem to vilkårlige baser i
Find den matrix der skifter mellem koordinaterne i den gamle basis:
| > |
unprotect(gamma):gamma[1]:=<1,0,1>;gamma[2]:=<1,2,-1>;gamma[3]:=<0,3,-1> ; |
til koordinaterne i den nye basis:
| > |
nu[1]:=<1,1,1>; nu[2]:=<0,1,-1>; nu[3]:=<2,-4,3>; |
Ligningen
kan skrives
x=
y, hvor
| > |
unprotect(Gamma):Gamma:=<<1,0,1>|<1,2,-1>|<0,3,-1>>; N:=<<1,1,1>|<0,1,-1>|<2,-4,3>>; |
 |
 |
(2.1.3) |
Derfor bliver
 |
(2.1.4) |
Husk at søjlerne i S er de nye koordinater til de gamle basisvektorer. F.eks. har
altså de nye koordinater (3/5, 1/5,1/5).
Det betyder at følgende udtryk er nulvektoren
| > |
(3/5)*nu[1]+(1/5)*nu[2]+(1/5)*nu[3]-gamma[1]; |
](images/manual5_35.gif) |
(2.1.5) |
Skift af matrixrepræsentation for endomorfi
Hvis man har en endomorfi (en lineær afbildning fra et vektorrum ind i sig selv) vil den i en given basis være repræsenteret ved en kvadratisk matrix A. Hvis man nu skifter til en ny basis vil den nye matrix, der repræsenterer endomorfien være givet ved
, hvor S er koordinattransformationsmatricen.
Hvis man er givet to kvadratiske matricer, kan man spørge, om de kan repræsentere samme lineære afbildning og i givet fald, hvilken koordinattransformationsmatrix der fører den ene over i den anden. Matricer der kan repræsentere samme lineære afbildning kaldes similære og i Maple
har man en kommando
IsSimilar
, (fra pakken
LinearAlgebra
) til at afgøre om to matricer er det.
| > |
A:=<<1|1>,<1|-1>>;B:=<<1|2>,<2|1>>;C:=<<0|3>,<1|2>>; |
 |
(2.2.2) |
 |
(2.2.3) |
Man kan også finde koordinattransformationsmatricen
| > |
S0:=IsSimilar(B,C,output='C'); |
 |
(2.2.4) |
Når man skriver output='C' står C for Coordinate Transformation Matrix. Vi checker at
 |
(2.2.5) |