L8maple
Luento ke 9.10.02
Alustukset
> | restart: |
> | with(LinearAlgebra): with(linalg): |
Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value
Warning, the protected names norm and trace have been redefined and unprotected
> | with(plots):setoptions(scaling=constrained):setoptions3d(axes=boxed,orientation=[-30,50]): |
Warning, the name changecoords has been redefined
> | alias(Inv=MatrixInverse,Id=IdentityMatrix,Diag=DiagonalMatrix): |
> | alias(rref=ReducedRowEchelonForm):alias(ref=GaussianElimination): alias(Id=IdentityMatrix): alias(Diag=DiagonalMatrix): |
> | # Diag([a,b,c]); |
Diagonalisoituvuus
Teoriaa
Muistathan aina , vaikka unissasi (ja jo 1. välikokeessa), ja osaathan todistaakin: Eri ominaisarvoihin liittyvät ominaisvektorit ovat LRT.
Määr: Neliömatriisit A ja B ovat similaariset , jos on olemassa säännöllinen (eli kääntyvä) matriisi S siten, että
.
Jos A on
similaarinen diagonaalimatriisin kanssa
(ts. on olemassa diagonaalimatriisi D se.
), sanotaan, että A on
diagonalisoituva
(lyh. diagva).
Lause TE 4.5. s. 44, Lay Thm 5 " The Diagonalization Thm , s. 320, KRE Thm 5 s. 394 (asiallisesti sama, muotoilu hiukan vähemmän yleinen)
A (n x n ) on diagva, joss (jos ja vain jos)
A:lla on n kpl. LRT ominaisvektoreita, ts. A:n ominaisvektoreista voidaan muodostaa
:n kanta, missä
tai
.
Erityisesti, jos A:n ominaisarvot ovat erilliset, niin A on diagva.
Seuraus 4.6
. A on diagva joss
kaikilla ominaisarvoilla lambda . (Jokaisen ominaisarvon algebrallinen ja geometrinen kertaluku
on sama.)
Palautetaan mieleen V2-asia , jota hyödynnettiin (ilman todistusta):
Symmetrinen matriisi on diagonalisoituva ja ominaisarvot ovat reaaliset .
Palaamme tämänkaltaisiin kysmyksiin, kunhan ensin
puhumme vähän sisätuloista ja ortogonaalisuudesta,
Diagonalisointiresepti : (seuraa suoraan päälauseen todistuksesta)
1) Lasketaan A:n ominaisarvot ja -vektorit (pessimistit laskevat vain geometriset kertaluvut).
Jos ominaisvektoreita ei ole tarpeksi, A ei diagonalisoidu.
2) Jos ominaisvektoreita on tarpeeksi, muodostetaan matriisit S ja
, missä
- S:n sarakkeet ovat A:n ominaisvektorit.
-
on diagonaalimatriisi, jossa diagonaalilla on ominaisarvot samassa järjestyksessä kuin S:ssä ominaisvektorit
(eli ominaisarvot ja -vektorit vastaavat toisiaan).
3) Koska S:n sarakkeet LRT, voidaan muodostaa, ja siis muodostetaan
.
Tarkistus
: Kerrotaan
ja katsotaan, onko A.
Diagonalisoinnin tarkoitus
on löytää matriisit
,
,
ja hyödyntää niitä esim. matriisin potenssien laskemisessa tms. analyysissa,
ei siis vain laskea ja todeta, että eräs matriisikaava on tosi.
Esim 1
Diagonalisoi seuraava matsriisi, jos mahdollista.
> | A:=<<1,-3,3>|<3,-5,3>|<3,-3,1>>; |
Koska ominaisarvojen ja -vektoreiden laskentaa on jo harjoiteltu, käytämme valmista Eigenvectors -funktiota.
> |
> |
Warning, premature end of input
> | (oa,ov):=Eigenvectors(A); |
Valitettavasti tässä jää aika vähän tehtävää, koska Maple palauttaa mukavasti ov-matrisiin juuri siten, että sarakkeina ovat oa-vektorin alkoita
vastaavat ominaisvektorit. Jos ominaisvektoreita ei ole tarpeeksi, Maple palauttaa nollasarakkeen.
Normaalisti siis on määritettävä kunkin ominaisavaruuden kanta.
> | S:=ov;Lambda:=Diag(oa); SI:=S^(-1); |
Tässä on siis matriisin diagonalisointi.
Voidaan tarkistaa:
> | A = S.Lambda.SI; |
Lisää esimerkkejä, esim. KRE ss. 394 - 395
Katsotaan tässäkin lisää tapauksia.
Esim 2
Diagonalisoi, jos mahdollista:
> | A:=<<2,-4,3>|<4,-6,3>|<3,-3,1>>; |
> | Eigenvectors(A); |
Nollasarake keskellä kertoo, että ominaisavaruudessa
on vain yksi kantavektori, eli
, vaikka
Esim. 3
Diagonalisoi, jos mahdollista:
> | A:=<<5,0,1,-1>|<0,5,4,-2>|<0,0,-3,0>|<0,0,0,-3>>; |
Koska kyseessä on kolmiomatriisi, ominaisarvot paistavat suoraan päälävistäjältä. Ovatko molemmat ominaisavaruudet 2-ulotteisia?
Turvaudumme halpamaiseen keinoon:
> | (oa,ov):=Eigenvectors(A); |
> | S:=ov: Lambda:=Diag(oa): SI:=S^(-1): |
> | diagonalisointi:=[S,Lambda,SI]; |
> | A,S.Lambda.SI; # Verrataan. |
> |
Kaupunkidynamiikkaa diagonalisoimalla
Vrt. myös TE Esim. 4.6, s. 46-47, KRE s. 377 Exa 2
> | A:=<<.95,.05>|<.03,.97>>; A:=convert(A,rational); |
> | (oa,ov):=Eigenvectors(A); |
Jätetään normeeraamatta, koska ajosta toiseen muuttuminen osoittautui hankalaksi.
> | # ov[1..-1,2]:=3*ov[1..-1,2]: ov; # Ei mitenkään välttämätöntä. # Huomaa, että Maple saattaa vaihdella järjestystä, joten voit # joutua vaihtamaan sarakenumeroa. # Huom2: Ominaisarvojen muodostamaa vektoria ei missään nimessä saa normeerata! |
> | S:=ov: SI:=S^(-1): Lambda:=Diag(oa): |
> | S,Lambda,SI; |
> | Lambda_pot_k:=map(x->x^k,Lambda); |
> | Lambda_limes:=map(limit,Lambda_pot_k,k=infinity); |
> | lim_A_potenssiin_k:=S.Lambda_limes.SI; |
> | alias(Alim=lim_A_potenssiin_k): |
> | Alim.<1,0>, Alim.<0,1>; |
> | Alim.<p,1-p>; |
Sama tulos, olipa alkupiste mikä tahansa todennäköisyysvektori (tai ylimalkaan vektori, jonka koordinaattisumma = 1)..
Ominaisvektorikantalasku
L7maple
-työarkilla osoitti, että tulos on ominaisvektorin
suuntainen tod. vektori, eli juuri yllä oleva.
(Laskut ovat hyvin läheistä sukua toisilleen.)
Käytetään lopuksi raakaa voimaa ja verrataan:
> | A:=convert(A,float); # seq(A^k,k=1..10); |
> | A20:=(A^20); |
> | A40:=A20.A20; |
> | A80:=A40.A40; |
> | A160:=A80.A80; |
> | convert(Alim,float); |
Kompleksiset ominaisarvot
Alustukset
> | kuvakulma:=(A,u)->display(arrow(u,shape=arrow,color=blue),arrow(A.u,shape=arrow,color=red),scaling=constrained,title="Lahto:sininen, kuva:punainen"): |
> | #n:=30:display(seq(kuvakulma(A,<cos(Theta),sin(Theta)>),Theta=[seq(k*2*Pi/n,k=0..n)]),insequence=true,scaling=constrained); |
Voiko kiertokuvauksella olla ominaisarvoja?
> | A:=<<cos(phi),sin(phi)>|<-sin(phi),cos(phi)>>; |
> | phi:=Pi/2: |
> | n:=40:display(seq(kuvakulma(A,<cos(Theta),sin(Theta)>),Theta=[seq(k*2*Pi/n,k=0..n)]),insequence=true,scaling=constrained); |
No ei sitten millään voi olla ominaisarvoja, eihän? Vai voiko sittenkin?
Lasketaanpa!
> | A; |
> | karpoly:=det(A-lambda*Id(2)); |
> | lam:=solve(karpoly=0,lambda); |
> | M1:=A-lam[1]*Id(2); |
> | rM1:=ref(M1); |
> | x2:=t: x1:=solve(rM1[1,1]*x+rM1[1,2]*x2=0,x); |
> | v:=subs(t=1,<x1,x2>); |
> | A.v,I*v; |
> | v_:=map(conjugate,v); |
> | A.v_ = -I*v_; |
> |
Toinen 2x2- esimerkki kompl. ominaisarvoista
> | A:=<<.5,.75>|<-.6,1.1>>; |
> | p:=det(A-lambda*Id(2)); |
> | lam:=solve(p=0,lambda); |
> | M:=map(convert,A-lam[1]*Id(2),rational); |
> | ref(M); # Ei olisi tarpeen, tiedetään muutenkin, että rivit ovat LRT. |
> | 10*%; |
> | x1:=2*t: x2:=solve((3+6*I)*x1=-6*x,x); |
> | v1:=subs(t=1,<x1,x2>); |
> | v2:=map(conjugate,v1); |
> | A.v1=lam[1]*v1; |
> | A.v2=lam[2]*v2; |
> | n:=40:display(seq(kuvakulma(A,<cos(Theta),sin(Theta)>),Theta=[seq(k*2*Pi/n,k=0..n)]),insequence=true,scaling=constrained); |
> | n:=40:display(seq(kuvakulma(A,<cos(Theta),sin(Theta)>),Theta=[seq(k*2*Pi/n,k=0..n)]),insequence=false,scaling=constrained); |
Lasketaan reaalinen similariteettimuunnos:
> | v1; |
> | u:=map(Re,v1); v:=map(Im,v1); |
> | S:=<u | v>; |
> | SI:=S^(-1); |
> | ab:=<<0.8,-0.6>|<0.6,0.8>>; |
> | A,S.ab.SI; |
> |
> |
Niinpä vaan on.