Harj. 8 AV
5.11.02, päivitetty 4.11.02
Lisänä käsinkirjoitettuja prujuja Astridin huoneen ovenpielessä.
Alustukset
> | with(LinearAlgebra): |
1.
> | v1:=<-3,1>; v2:=<-1,1>; |
> | lambda[1]:=4: lambda[2]:=2; |
> | Y:=t->C1*exp(4*t)*v1+C2*exp(2*t)*v2; |
> | Y(0); |
> | A0:=<v1|v2>; |
> | Ceet:=LinearSolve(A0,<-1,6>); |
> | Yaa:=subs(C1=Ceet[1],C2=Ceet[2],Y(t)); |
> | y1y2:=evalm(Yaa); # koordinaattimuodossa |
Kuvia ei vaadittu, mutta piirretän tässä. Huomaa parametripiirron syntaksi. (Kts. L12maple ja myös [HAM]-kirja)
> | plot([y1y2[1],y1y2[2],t=0..2]); |
Tästä kuvasta ei paljon näy. view -optio on välttämätön:
> | plot([y1y2[1],y1y2[2],t=0..2],view=[-1..10,-10..10]); |
> | plot([y1y2[1],y1y2[2],t=0..2],view=[10..200,-40..10]); |
> |
2.
> | restart: with(LinearAlgebra): |
Warning, the name changecoords has been redefined
> | dyht:=diff(y(t),t,t)+0.125*diff(y(t),t)+y(t)=0; |
Merkitään = y, = y' , jolloin saadaan yhtälösysteemi:
' =
' =
> | A:=<<0,-1>|<1,-.125>>; A:=convert(A,rational); |
> | (Lambda,ov):=Eigenvectors(A); |
> | v1:=ov[1..-1,1]: v2:=ov[1..-1,2]: |
> | y:=C1*exp(Lambda[1]*t)*v1+C2*exp(Lambda[2]*t)*v2; |
Tässä on kompleksimuoto. Reaaliseen kantaan pääsemiseksi voidaan tehdä vanhat temput:
> | lambda:=Lambda[1]; w:=ov[1..-1,1]; |
> | u:=map(Re,w); v:=map(Im,w); |
Kaavan johto lienee helpompi tehdä käsin kuin Maplella. Tässä on senverran hankalat lukuarvot, että on parempi johtaa yleisillä symboleilla:
> | alpha:='alpha': beta:='beta': |
> | lambda:=alpha+I*beta; |
> | u:='u': v:='v': |
> | yr:=Re(exp(lambda*t)*(u+I*v)); yr:=evalc(%); |
> | yi:=Im(exp(lambda*t)*(u+I*v)); yi:=evalc(%); |
Perun heti puheeni. Kun sievennykset tehdään yleisillä symboleilla, menemättä vektorien komponentteihin, kaikki sujuu kuin rasvattu.
> | u:=map(Re,w); v:=map(Im,w);lambda:=Lambda[1]: alpha:=Re(lambda); beta:=Im(lambda); |
> | yr; |
> | yi; |
> | y:=C1*yr+C2*yi; |
> | y:=evalm(y); |
> | y:=map(simplify,y); |
> | y1:=y[1]; |
> | y2:=y[2]; |
> | #dyht:=diff(y(t),t,t)+0.125*diff(y(t),t)+y(t)=0; |
> | diff(y1,t,t)+0.125*diff(y1,t)+y1; |
> | simplify(%); |
> | diff(y1,t), y2; |
> | diff(y1,t)- y2: simplify(%); |
Nuo kaksi nollaa kertovat kaiken. Systeemin ratkaisun 1. komponenttifunktio y1 toteuttaa dyht:n. Toinen komponentti on ensimmöisen derivaatta.
Ehkä hiukan huonosti harkittu käsinlaskuksi.
3.
> | A:=<<-2/25,2/25>|<1/50,-2/25>>; |
> | (lambda,V):=Eigenvectors(A); |
> | v1:=V[1..-1,1]: v2:=V[1..-1,2]: |
> | y:=t->C1*exp(lambda[1]*t)*v1+C2*exp(lambda[2]*t)*v2; |
> | y(0)=<25,0>; |
> | A0:=<<1,-2> | <1,2>>; |
> | Ceet:=LinearSolve(A0,<2.5,0>); |
> | Y:=subs(C1=Ceet[1],C2=Ceet[2],y(t)); |
> | ykoord:=evalm(Y); |
> | ykoord[1]=ykoord[2]; |
> | tsama:=solve(%,t); |
> | plot([ykoord[1],ykoord[2]],t=0..30); |
> | evalf(tsama); |
> |
4.
> | restart: |
Warning, the name changecoords has been redefined
> | with(plots): 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
> | A:=<<2,-1>|<3,-2>>; |
> | (lambda,V):=Eigenvectors(A); |
> | v1:=V[1..-1,1]; v2:=V[1..-1,2]; |
> | y:=t->C1*exp(lambda[1]*t)*v1+C2*exp(lambda[2]*t)*v2; |
> | y(0); |
> | A0:=<<-3,1>|<-1,1>>; |
> | Ceet:=LinearSolve(A0,<3,2>); |
> | yAA:=subs(C1=Ceet[1],C2=Ceet[2],y(t)); |
> | arrow([v1,v2],shape=arrow); |
Ominaisvektorin v1 suunnalla trajektori kulkee poispäin O:sta, v2:n suunnalla O:oon päin.
> | y(t); |
> | Ys:=map(eval,subs(t=log(s),y(t))); |
Selvästi hyperbelejä.
> | YY:=evalm(Ys); |
> | parvi:=seq(seq([YY[1],YY[2],s=0..4],C2=-2..2),C1=-2..2): |
> | plot([parvi]); |
> | display(%,arrow([v1,v2]),view=[-5..5,-5..5]); |
> | kuva:=%: |
> | y1:='y1':y2:='y2': |
> | with(DEtools): |
Warning, the name adjoint has been redefined
> | display(kuva,DEplot([D(y1)(t)=2*y1(t)+3*y2(t),D(y2)(t)=-y1(t)-2*y2(t)], [y1(t),y2(t)],t=-5..2,y1=-5..5,y2=-5..5,color=grey),title="Satula"); |
> |
5.
> | restart: |
Warning, the name changecoords has been redefined
> | with(plots): 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
> | A:=<<7,3>|<-1,3>>; |
> | (lambda,V):=Eigenvectors(A); |
> | v1:=V[1..-1,1]; v2:=V[1..-1,2]; |
> | y:=t->C1*exp(lambda[1]*t)*v1+C2*exp(lambda[2]*t)*v2; |
> | y(0); |
> | A0:=<<1,3>|<1,1>>; |
> | Ceet:=LinearSolve(A0,<3,2>); |
> | yAA:=subs(C1=Ceet[1],C2=Ceet[2],y(t)); |
> | arrow([v1,v2],shape=arrow); |
Trajektorit kulkevat poispäin O:sta..
> | y(t); |
> | Ys:=map(eval,subs(t=log(s),y(t))); |
> | YY:=evalm(Ys); |
> | parvi:=seq(seq([YY[1],YY[2],s=0..4],C2=-2..2),C1=-2..2): |
> | plot([parvi]); |
> | display(%,arrow([v1,v2]),view=[-5..5,-5..5]); |
> | kuva:=%: |
> | y1:='y1':y2:='y2': |
> | with(DEtools): |
Warning, the name adjoint has been redefined
> | display(kuva,DEplot([D(y1)(t)=7*y1(t)-y2(t),D(y2)(t)=3*y1(t)+3*y2(t)], [y1(t),y2(t)],t=-5..2,y1=-5..5,y2=-5..5,color=grey),title="Lähde"); |
> |
> |
> |