Celý seriál je také možné nalézt v ročence.
$$x(t) = x_0 \cos\left[\omega(x_0) t\right]\,, \quad \omega(x_0) = 2\pi \left(1 - \frac{x_0^2}{l_0^2}\right)\,,$$
kde $l_{0}je$ nějaká délková škála. Myslíme si, že pouštíme kyvadlo z $x_{0}=l_{0}⁄2$, ale ve skutečnosti jej vypouštíme z $x_{0}=l_{0}(1+ε)⁄2$. O kolik se liší argument kosinu od 2π po jedné námi předpokládané periodě? Po kolika periodách bude kyvadlo vychýlené na druhou stranu, než bychom předpokládali? Tip Argument kosinu se bude v tu chvíli od předpokládaného lišit o víc než π ⁄ 2.
Bonus: Jak byste tedy nejdále dohodili krikeťákem? Je náš model pro tuto úvahu dostatečný?
function xidot = f(t,xi)
…
xdot=…;
ydot=…;
zdot= …;
xidot = [xdot;ydot;zdot];
endfunction
nastaveni = odeset('InitialStep', 0.01,'MaxStep',0.1);
pocPodminka=[0.2,0.3,0.4];
reseni=ode45(@f,[0,300],pocPodminka,nastaveni);
plot3(reseni.y(:,1),reseni.y(:,2),reseni.y(:,3)); </pre> Jen místo tří teček doplňte zbytek programu podobně jako v druhém dílu seriálu a použijte $σ=9,5$, $b=8⁄3$. Pak zjistěte alespoň s přesností na jednotky, pro jaké kladné $r$ přechází systém z asymptotického zastavování se na chaotickou oscilaci (na počátečních podmínkách nezáleží).
pkg load odepkg
function xidot = f(t,xi)
alfa=0.1;
vx=xi(3);
vy=xi(4);
r=sqrt(xi(1)^2+xi(2)^2);
ax=-xi(1)/r^3;
ay=-xi(2)/r^3;
xidot = [vx;vy;ax;ay];
endfunction
nastaveni = odeset('InitialStep', 0.01,'MaxStep',0.1);
x0=0;
y0=1;
vx0=…;
vy0=0;
pocPodminka=[x0,y0,vx0,vy0];
reseni=ode45(@f,[0,100],pocPodminka,nastaveni)
plot(reseni.y(:,1),reseni.y(:,2));
pause()</pre>
Y01=2;
Z01=5;
X02=…;
Y02=…;
Z02=…;
nastaveni = odeset('InitialStep', 0.01,'MaxStep',0.1);
pocPodminka1=[X01,Y01,Z01];
reseni1=ode45(@f,[0,45],pocPodminka1,nastaveni);
pocPodminka2=[X02,Y02,Z02];
reseni2=ode45(@f,[0,45],pocPodminka2,nastaveni);
plot(reseni1.x,reseni1.y(:,1),reseni2.x,reseni2.y(:,1));
pause()
</pre> Místo tří teček u $X02,Y02,Z02$ musíte zadat počáteční podmínky pro druhou trajektorii. Pusťte kód alespoň pro pět řádově odlišných, ale malých odchylek a poznamenejte si čas, ve kterém se druhá trajektorie od první kvalitativně odlepí (tj. směřuje například na úplně druhou stranu). Odchylku nezmenšujte pod řád cca $10^{-8}$, protože pak se začnou projevovat nepřesnosti numerické integrace. Načrtněte závislost odlepovacího času na řádu odchylky.
Bonus: Pokuste se ze získané závislosti odlepovacího času na velikosti odchylky odhadnout odpovídající Ljapunovův exponent. Budete potřebovat víc než pět běhů a můžete předpokládat, že v okamžiku odlepení velikost odchylky pokaždé zrovna překročila nějaké konstantní $Δ_{c}$.
$$x_{n} = x_{n-1} y_{n-1},$$
$$\\ y_n = y_{n-1} K \sin(x),$$
kde $x$, $y$ jsou nějak přeškálovaná $dφ⁄dt$, $φ$. Určete fyzikální rozměr $K$, $x$, $y$.
Bonus: Zkuste podle ingrediencí ze seriálu navrhnout kopání, které bude dávat chaotickou dynamiku. Dávejte ale pozor na to, že $φ$ je 2π-periodické a že by se vám $dφ⁄dt$ nemělo vyšroubovat kopáním do nekonečna.
Opište si funkci iterace_stanMap ze seriálu a pomocí následujících příkazů si vyberte deset velmi blízkých počátečních podmínek pro nějaké K.
K=...; X01=...; Y01=...; Iter1 = iterace_stanMap(X01,Y01,1000,K); ... X10=...; Y10=...; Iter10 = iterace_stanMap(X10,Y10,1000,K);
V Iter1 až Iter10 je tedy schováno tisíc iterací daných počátečních podmínek pomocí Standardní mapy. K tomu, abyste viděli, jak vypadá všech deset bodů po n-té iteraci, musíte napsat
n=...; plot(Iterace1(n,1),Iterace1(n,2),"o",...,Iterace10(n,1),Iterace10(n,2),"o") xlabel ("x"); ylabel ("y"); axis([0,2*pi,-pi,pi],"square"); refresh;
„o“ do příkazu plot píšeme, aby se body pro přehlednost vykreslily jako kroužky. Zbytek příkazů je pak zahrnut kvůli tomu, aby graf zahrnoval celý čtverec a měl ty správné popisky.
Bonus: Zkuste naprogramovat a vykreslit i chování nějaké jiné nakopávané mapy. (Pro inspiraci se můžete podívat do vzorového řešení minulé série.)