Contents
- Määrittele matriisi A tehtävän harj 4 AV mukaisesti.
- Muodosta matriisi X, jonka sarakkeina ovat ominaisvektorit ja
- Muodosta vektori d, jossa on D:n lävistäjä.
- Kirjoita yleinen ratkaisukaava tähän tyyliin:
- Ratkaise vakiot C alkuarvojen avulla tyyliin:
- Nyt haluaisit piirtää ratkaisun aikakuvan ja ennenkaikkea faasikuvan.
- Nyt tositoimiin!
- Olispa hauskaa, jos voitaisiin piirtää suuntakenttä ja siinä valita
% ratk4tietok.m % Lineaarinen 2 x 2- systeemi, diagonalisoituva matriisi % close all
Määrittele matriisi A tehtävän harj 4 AV mukaisesti.
A=[1/3 4/3;8/3 5/3]
A = 0.3333 1.3333 2.6667 1.6667
Muodosta matriisi X, jonka sarakkeina ovat ominaisvektorit ja
matriisi D, jonka lävistäjällä vastaavat ominaisarvot.
[X,D]=eig(A);
Muodosta vektori d, jossa on D:n lävistäjä.
d=diag(D)
d = -1.0000 3.0000
Kirjoita yleinen ratkaisukaava tähän tyyliin:
C(1)=1; C(2) = 1; % sama kuin C=[1 1];
t=0.2;
Y=C(1)*exp(d(1)*t)*X(:,1) + C(2)*exp(d(2)*t)*X(:,2)
Y = -1.3938 -1.0508
Ratkaise vakiot C alkuarvojen avulla tyyliin:
Y0=[1;0] % Muuteltava alkuarvo C= X\Y0 % Ratkaise yhtälöryhmä % C=M\b, missä M=xxx ja b=xxx.
Y0 = 1 0 C = -0.9428 -0.7454
Nyt haluaisit piirtää ratkaisun aikakuvan ja ennenkaikkea faasikuvan.
Mutta voi, eihän se tuosta Y:n lausekkeesta onnistu, siihen ei saa mitenkään järkevästi t:n paikalle t-vektoria. hm - hm - hm
Mikä se juttu olikaan, joka on mainittu luennolla 27 kertaa? Lineaarikombinaatiot matriisitulona, riviajattelu vs. sarakeajattelu: Y = X*[C(1)*exp(d(1)*t);C(2)*exp(d(2)*t)] % Kokeile, saatko saman kuin yllä, kun t:llä on edellä annettu skalaariarvo. Jälkimmäisen muodon suuri etu on tässä se, että kerrottavia vektoreita voi olla paljon, ne kootaan 2-riviseksi matriisiksi, ja homma hoituu yhdellä matriisitulolla.
Nyt tositoimiin!
Y0=[1;1]; C=X\Y0; t=linspace(-3,0.5,50); Y = X*[C(1)*exp(d(1)*t);C(2)*exp(d(2)*t)]; Y(:,1:10) % Katsotaan 10 ekaa pistettä. plot(t,Y(1,:),t,Y(2,:)); grid on; shg % Aikakuva figure % seuraava ikkuna plot(Y(1,:),Y(2,:)) % Faasikuva axis([-5 5 -5 5]) % Sama koordinaatisto kuin pplanessa. % Miten piirretään ominaissuorat? Nehän ovat sarakkeina matriisissa X. hold on plot(5*[0 X(1,1)],5*[0,X(2,1)],'k',5*[0,X(1,2)],5*[0,X(2,2)],'k') plot(-5*[0 X(1,1)],-5*[0,X(2,1)],-5*[0,X(1,2)],-5*[0,X(2,2)]) % Myös vastavektorit
ans = Columns 1 through 6 6.6953 6.2337 5.8040 5.4040 5.0315 4.6847 -6.6950 -6.2334 -5.8037 -5.4035 -5.0309 -4.6840 Columns 7 through 10 4.3618 4.0612 3.7813 3.5208 -4.3609 -4.0601 -3.7800 -3.5191
Olispa hauskaa, jos voitaisiin piirtää suuntakenttä ja siinä valita
alkupiste hiirellä, kuten Java-pplane:ssa. No näin vähäisellä koodilla se käy tässä:
[y1,y2]=meshgrid(-5:0.5:5,-5:0.5:5); % Koordinaattihilapisteistö dy1=A(1,1)*y1+A(1,2)*y2; dy2=A(2,1)*y1+A(2,2)*y2; % Derivaattavektori % saadaan lineaariselle näin: dy=A*y, jos y on jokin 2 x 1-vektori. % Tässä on kirjoitettava matriisitulo auki, koska y1 ja y2 ovat % hilapisteistön määrääviä matriiseja, joten dy=A*[y1;y2] on "mahdoton yhtälö". % clf % Puhdistetaan ikkuna 2. quiver(y1,y2,dy1,dy2) % Suuntanuolet hilapisteisiin derivaattojen suuntaan. axis([-5 5 -5 5]); grid on;hold on plot(5*[0 X(1,1)],5*[0,X(2,1)],'k',5*[0,X(1,2)],5*[0,X(2,2)],'k') plot(-5*[0 X(1,1)],-5*[0,X(2,1)],'k',-5*[0,X(1,2)],-5*[0,X(2,2)],'k') disp('Kuljeta hiirtä grafiikkaikkunaan ja klikkaa') Y0=ginput(1)'; % Matlab antaa hiusristikon, jonka avulla voit hiirellä valita % alkupisteen. C=X\Y0; % Ratkaise vakiot. t=linspace(-3,1,50); % Kokeile eri arvoja Y = X*[C(1)*exp(d(1)*t);C(2)*exp(d(2)*t)]; plot(Y(1,:),Y(2,:),Y0(1),Y0(2),'o') % Faasikuva ja alkuarvopiste %axis([-5 5 -5 5]); grid on; shg
Kuljeta hiirtä grafiikkaikkunaan ja klikkaa
%Talletetaan viimeinen kappale tiedostoon ratk4ajo.m %Voit ajaa komennot komentamalla Matlab-ikkunassa: close all % grafiikkaruutujen poisto %ratk4ajo % Usempia trajektoreita: %close all %ratk4ajo;ratk4ajo;ratk4ajo % tai: close all n=8; for i=1:n disp(['Sinulla on ',num2str(n-i+1),' klikkaus(ta)']) ratk4ajo end
Sinulla on 8 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = 2.1464 -1.7193 Sinulla on 7 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = 1.1079 -2.3442 Sinulla on 6 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = -0.9541 -2.5359 Sinulla on 5 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = -0.8945 0.9764 Sinulla on 4 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = 1.3534 1.5440 Sinulla on 3 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = 0.6615 0.4739 Sinulla on 2 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = -0.3023 -0.3207 Sinulla on 1 klikkaus(ta) Kuljeta hiirtä grafiikkaikkunaan ja klikkaa C = -0.5298 0.7090