H5T2vaiheiluri

Tehdään mieluummin suoraan mukaillen ohjetta:

Contents

http://math.aalto.fi/opetus/MatOhjelmistot/2014kevat/L/ODEohje.html

ODEfunktio "heiluri" voidaan määritellä myös funktiokahvana:

k=1;
c=0.1;  % Vaimennusvakio, Vaihdellaan.
c=0.2;  %
vaiheiluri=@(t,y) [y(2);-k*sin(y(1))-c*y(2)]
Tvali=[0 20]; y0=[1;1];        % Alkukulma=1, alkukulmanopeus=1.
[T,Y]=ode45(vaiheiluri,Tvali,y0); % ode45 havaitsee funktiokahvan, sille
                               % ei tarvitse sitä enää @-merkillä
                               % ilmoittaa. (Muistisääntö 1 @-merkki
                               % joko määrittelyssä tai kutsussa, ei molemmissa.)
size(T)  % Aikapistevektorin pisteiden lkm.
size(Y)  % Kaksisarakkeinen matriisi, ratkaisut y1 ja y2 aikapisteissä t.
plot(T,Y(:,1),T,Y(:,2))  % Aikakuva: heilahduskulma ja kulmanopeus ...
                         %              ajan funktiona
figure
plot(Y(:,1),Y(:,2))     % Faasikuva: Kulmanopeus kulman "funktiona" ...
                        % eli käyrä (Theta(t),omega(t)), 0< t < 20).
vaiheiluri = 

    @(t,y)[y(2);-k*sin(y(1))-c*y(2)]


ans =

   101     1


ans =

   101     2

Kriittset pisteet samat kuin vaimentamattomalla

sin(y1)=0, y2=0, siis y1-akselilla n*pi.

3 eri trajektorityypppiä:

close all
ya0=[1;1]; % Pieni alkukulma/nopeus -> heilahtelee edestakaisin
yb0plus=[-pi;0.01]; % Kriittinen alkutilanne (Heiluri pysytyasennossa+)
yb0miinus=[-pi;-0.01]; % Kriittinen alkutilanne (Heiluri pysytyasennossa-)
yc0=[-5;2];   % Suuret alkuarvot, heiluri pyörii ympäri
yd0=[5;-2];   %    ... toisinpäin
Tvali=[0 10];
[ta,Ya]=ode45(vaiheiluri,Tvali,ya0);
[tbplus,Ybplus]=ode45(vaiheiluri,Tvali,yb0plus);
[tbmiinus,Ybmiinus]=ode45(vaiheiluri,Tvali,yb0miinus);
[tc,Yc]=ode45(vaiheiluri,Tvali,yc0);
[td,Yd]=ode45(vaiheiluri,Tvali,yd0);
hold on
plot(Ya(:,1),Ya(:,2),Ybplus(:,1),Ybplus(:,2),Ybmiinus(:,1),Ybmiinus(:,2),...
    Yc(:,1),Yc(:,2),Yd(:,1),Yd(:,2))
axis equal; axis([-6 6 -4 4])
xlabel y_1(t); ylabel y_2(t)
grid on

Hiiri avuksi, samalla suuntakentta:

[y1,y2]=meshgrid(-6:0.5:6,-6:0.5:6); % Koordinaattihilapisteistö
dy1=y2; dy2=-sin(y1);  % Heiluridiffyhtälöryhmän derivaatat hilapisteissä
quiver(y1,y2,dy1,dy2)  % Suuntanuolet hilapisteisiin derivaattojen suuntaan.
% Toden totta, näillä 3:lla koodirivillä saat suuntakentän!

Tahan jatkoksi se valmis ginput-skripti pienin virityksin ...

Odottakoon toistaiseksi. (Toki voit tehdä pplanella)