GNU Octave/Chaos w atraktorze Lorentza

Chaos w atraktorze Lorentza edytuj

Rozwiązać klasyczny układ równań Lorentza, opisujący uproszczony model pogody:

 

gdzie  ,  ,  

 
Rozwiązanie klasycznego układu równań różniczkowych Lorentza.

Zdefiniujmy funkcję:

 function y=lorentz(x)
    global sigma;
    global r;
    global b;
    y(1)=sigma*(x(2)-x(1));
    y(2)=r*x(1)-x(2)-x(1)*x(3);
    y(3)=x(1)*x(2)-b*x(3);
 endfunction;

Zadajmy parametry:
 global sigma;
 global r;
 global b;
 sigma=10
 b=8/3
 r=28

Rysujemy ewolucję układu na odcinku   w 30 krokach, każdy na kolejnym odcinku o długości  . Punktem początkowym jest punkt końcowy w poprzedniego kroku. Polecenie hold on wyświetla to, co jest narysowane do tej pory. W ten sposób możemy obserwować ewolucję układu Lorentza. Polecenie hold off kończy rysowanie.

 x0=[0 1 0]';
 for (i=0:30)
    t=[i*10:0.01:(i+1)*10];
    z=lsode("lorentz", x0, t);
    plot(z(:,1),z(:,2));
    x0=z(length(z),:)';
    hold on
 endfor;
 hold off

Obserwujemy, że rozwiązanie nie stabilizuje się, zachowuje się "chaotycznie", wciąż kręci się w atraktorze wpadając to do lewego skrzydła to do prawego.