Harj 8 LV

pe 8.11.02

Alustukset

>    restart:with(LinearAlgebra):with(linalg):

Warning, the name changecoords has been redefined

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

>    alias(Id=IdentityMatrix):

>    alias(rref=ReducedRowEchelonForm): alias(Diag=DiagonalMatrix):alias(ref=GaussianElimination):

3.

>    A:=<<alpha,-2>|<2,0>>;

A := Matrix(%id = 136077108)

>    p:=det(A-lambda*Id(2));

p := lambda^2-lambda*alpha+4

>    solve(p=0,lambda);

1/2*alpha+1/2*(alpha^2-16)^(1/2), 1/2*alpha-1/2*(alpha^2-16)^(1/2)

1)   abs(alpha) < 4   => kompleksijuuret, lähdefokus (epästabiili), jos 0 < alpha , nielufokus (stabiili), jos alpha < 0.  (Jos alpha = 0 , saadaan keskus, joka on heikosti stabiili)

2) 4 < abs(alpha)

Molemmat ominaisarvot samanmerkkiset (tulo =4). Jos 0 < alpha , niin positiiviset, jos alpha < 0 , negatiiviset.

Siten alpha > 4 ==> lähde (epästabiili), alpha < 0 ==> nielu (stabiili).

Mielenkiintoisimmat  ovat ehkä dgeneraatiotapaukset 4 ja -4.

Tällöin käytetään Cayley-Hamiltonia:

>    alpha:=4: lambda:=alpha/2;

lambda := 2

>    At:='lambda*t*Id(2)'+'t*(A-lambda*Id(2))';

At := lambda*t*Id(2)+t*(A-lambda*Id(2))

>    expAt:=exp(lambda*t)*(Id(2)+t*(A-lambda*Id(2)));

expAt := exp(2*t)*(t*Matrix(%id = 138321988)+Matrix(%id = 138323980))

>    evalm(%);

matrix([[exp(2*t)*(2*t+1), 2*exp(2*t)*t], [-2*exp(2*t)*t, exp(2*t)*(-2*t+1)]])

>    exponential(A,t);

matrix([[exp(2*t)+2*exp(2*t)*t, 2*exp(2*t)*t], [-2*exp(2*t)*t, exp(2*t)-2*exp(2*t)*t]])

4.

a)

diag(d1,d2, .. dn)^k = diag(d1^k,d2^k,...,dn^k).  (Diagonaalimatriisien kertolaskussa diagonaalialkiot kerrotaan keskenään.)

>    At:=<<t*d1,0>|<0,t*d2>>;

At := Matrix(%id = 136451492)

>    add((At^k)/k!,k=0..10);

Matrix(%id = 138301172)+Matrix(%id = 136498264)+Matrix(%id = 136557132)+Matrix(%id = 136739052)+Matrix(%id = 134642060)+Matrix(%id = 140189560)+Matrix(%id = 136823984)+Matrix(%id = 136906752)+Matrix(%i...
Matrix(%id = 138301172)+Matrix(%id = 136498264)+Matrix(%id = 136557132)+Matrix(%id = 136739052)+Matrix(%id = 134642060)+Matrix(%id = 140189560)+Matrix(%id = 136823984)+Matrix(%id = 136906752)+Matrix(%i...

>    evalm(%);

matrix([[1+t*d1+1/2*t^2*d1^2+1/6*t^3*d1^3+1/24*t^4*d1^4+1/120*t^5*d1^5+1/720*t^6*d1^6+1/5040*t^7*d1^7+1/40320*t^8*d1^8+1/362880*t^9*d1^9+1/3628800*t^10*d1^10, 0], [0, 1+t*d2+1/2*t^2*d2^2+1/6*t^3*d2^3+1...

Tässä näkyy selkeästi, miten matriisisarja muodostuu. Diagonaalialkiosarjat ovat exp(d1*t) :n ja exp(d2*t) :n sarjoja. Eli:

>    exponential(At);

matrix([[exp(t*d1), 0], [0, exp(t*d2)]])

Tämä tietysti pätee yleisellä n:llä.

Tässä siis:

>    A:=<<1,0>|<0,2>>; exponential(A,t);

A := Matrix(%id = 137731968)

matrix([[exp(t), 0], [0, exp(2*t)]])

b.

>    A:=<<0,0>|<1,0>>; At:=<<0,0>|<t*1,0>>; # LinearAlgebra on huono sieventelemään matriiislausekkeita. Siksi tämä At.

>   

A := Matrix(%id = 135888784)

At := Matrix(%id = 138369096)

>    At^2;

Matrix(%id = 136136920)

>    expAt:=Id(2)+At; # Tästä eteenpäin 0:aa

expAt := Matrix(%id = 136166732)

>    exponential(A,t); # Tarkistus

matrix([[1, t], [0, 1]])

c.)

>    A:=<<0,-1>|<1,0>>;

A := Matrix(%id = 134601684)

>    seq((A^k),k=0..10);

Matrix(%id = 136714044), Matrix(%id = 136720368), Matrix(%id = 136700536), Matrix(%id = 136795948), Matrix(%id = 136883268), Matrix(%id = 136827820), Matrix(%id = 136918632), Matrix(%id = 138301828), M...

4:n pituinen jakso. Siitä nähdään kerroinjonot.

>    At:=<<0,-t>|<t,0>>;

At := Matrix(%id = 134606064)

>    add((At^k)/k!,k=0..10);evalm(%);

Matrix(%id = 137265708)+Matrix(%id = 137228772)+Matrix(%id = 137311596)+Matrix(%id = 137389232)+Matrix(%id = 137445060)+Matrix(%id = 137504788)+Matrix(%id = 137542560)+Matrix(%id = 135531620)+Matrix(%i...
Matrix(%id = 137265708)+Matrix(%id = 137228772)+Matrix(%id = 137311596)+Matrix(%id = 137389232)+Matrix(%id = 137445060)+Matrix(%id = 137504788)+Matrix(%id = 137542560)+Matrix(%id = 135531620)+Matrix(%i...

matrix([[1-1/2*t^2+1/24*t^4-1/720*t^6+1/40320*t^8-1/3628800*t^10, t-1/6*t^3+1/120*t^5-1/5040*t^7+1/362880*t^9], [-t+1/6*t^3-1/120*t^5+1/5040*t^7-1/362880*t^9, 1-1/2*t^2+1/24*t^4-1/720*t^6+1/40320*t^8-1...

Kun vielä kertomat otetaan mukaan, saadaan tällaisia osasummia alkiosarjoille, ts.

>    expAt:=<<cos(t),-sin(t)>|<sin(t),cos(t)>>;

expAt := Matrix(%id = 139670052)

Toki voidaan myös diagonalisoida ja käyttää Eulerin kaavaa.

5.

>    A:=<<1,-1>|<4,-3>>;

A := Matrix(%id = 135400016)

>    g:=t-><t,1>;

g := proc (t) options operator, arrow; `<,>`(t,1) end proc

>    (lambda,ov):=Eigenvectors(A);

lambda, ov := Vector(%id = 134829864), Matrix(%id = 138332164)

Lasketaan e^(A*t)   taiteen sääntöjen mukaan, vaikka tehtävässä ei vaadittu. (Olis kannattanut):

>    'A'*t=(-t)*'Id'+('A'+'Id')*t;

A*t = -t*Id+(A+Id)*t

>    eAt:=exp(-t)*(Id(2)+(A+Id(2))*t);

eAt := exp(-t)*(t*Matrix(%id = 138332596)+Matrix(%id = 138334932))

>    (A+Id(2))^2; # Toden totta, Cayley-Hamilton toimii!

Matrix(%id = 135743536)

>    eAt;eAt:=evalm(%);

exp(-t)*(t*Matrix(%id = 138332596)+Matrix(%id = 138334932))

eAt := matrix([[exp(-t)*(2*t+1), 4*exp(-t)*t], [-exp(-t)*t, exp(-t)*(-2*t+1)]])

>    exponential(A,t);

matrix([[exp(-t)+2*exp(-t)*t, 4*exp(-t)*t], [-exp(-t)*t, exp(-t)-2*exp(-t)*t]])

Saatiin sama!

>    eAt:=Matrix(eAt);

eAt := Matrix(%id = 138341188)

>    yh:=eAt.<C1,C2>;

yh := Vector(%id = 134852640)

Sitten se kaunis EHY-kaava:

>    expA:=unapply(eAt,t):

>    y(t)=e^('A'*t)*C+Int(e^'A(t-s)'*'g(s)',s=0..t); #tekstinkäsittelyä

y(t) = e^(A*t)*C+Int(e^A(t-s)*g(s),s = 0 .. t)

>    yp:=map(int,expA(t-s).g(s),s=0..t);

yp := Vector(%id = 134854400)

>    y:=yh+yp;

y := Vector(%id = 134771892)

Tarkistetaan, että toteuttaa diffyhtälön:

>    vas:=map(diff,y,t); oik:=A.y+g(t);

vas := Vector(%id = 134780308)

oik := Vector(%id = 134676264)

>    map(simplify,vas);

Vector(%id = 134586432)

>    map(simplify,oik);

Vector(%id = 134622740)

>    %-%%;

Vector(%id = 134663612)

Hyvin kävi!

Sitten alkuehto:

>    subs(t=0,y);

Vector(%id = 134764864)

Voiko olla totta, no voi näinkin käydä. Siispä:

>    yAA:=subs(C1=1,C2=-1,y);

yAA := Vector(%id = 135093208)

>    subs(t=0,yAA);

Vector(%id = 135321200)

Niin se vaan on!

6.

>    A:=<<1,1,0,0>|<0,1,0,0>|<1,2,2,1>|<2,1,0,1>>;

A := Matrix(%id = 138373644)

>    (lambda,ov):=Eigenvectors(A);

lambda, ov := Vector(%id = 138375880), Matrix(%id = 135201104)

>    v1:=ov[1..-1,1];

v1 := Vector(%id = 138376000)

Etsitään ominaiarvoa 1 vastaavat yleistetyt ominaisvektorit:

>    u1:=ov[1..-1,2]; # Ensin se oikea ominaisvektori

u1 := Vector(%id = 138376040)

>    M2:=(A-Id(4))^2;

M2 := Matrix(%id = 138395404)

>    rref(M2);

Matrix(%id = 138399664)

>    u2:=<1,0,0,0>;

u2 := Vector(%id = 138376200)

>    M3:=(A-Id(4))^3;

M3 := Matrix(%id = 134877284)

>    rref(M3);

Matrix(%id = 138406984)

>    u3:=<0,0,0,1>;

u3 := Vector(%id = 138376240)

>    v1,u1,u2,u3;

Vector(%id = 138376000), Vector(%id = 138376040), Vector(%id = 138376200), Vector(%id = 138376240)

Tästä saadaan tulos, mutta nyt en enää ehdi kirjoitella.