You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
150 Ecuat¸ii diferent¸iale în MATLAB<br />
eroarea (precizia) relativă dorită. Codificarea problemei twobody s¸i funct¸ia de tratare<br />
a evenimentelor gstop sunt date prin subfunct¸ii (ele pot fi păstrate la fel de bine<br />
în fis¸iere separate). Calculul orbitei se realizează cu ode45. Argumentul de intrare<br />
y0 este un vector cu 4 elemente, care dă pozit¸ia init¸ială s¸i viteza. Corpul us¸or pornes¸te<br />
din pozit¸ia (1,0) s¸i are viteza init¸ială (0,0.3), care este perpendiculară pe vectorul<br />
pozit¸iei init¸iale. Argumentul opts este o structură creată cu odeset, care specifică<br />
eroarea relativă (egală cu reltol) s¸i funct¸ia de tratare a evenimentelor gstop. Ultimul<br />
argument al lui ode45 este o copie y0, transmisă atât lui twobody cât s¸i lui<br />
gstop. Vectorul bidimensional d din gstop este diferent¸a dintre pozit¸ia curentă s¸i<br />
punctul de pornire. Viteza în pozit¸ia curentă este dată de vectorul bidimensional v,<br />
iar cantitatea val este produsul scalar al lui d s¸i v. Expresia funct¸iei de oprire este<br />
unde<br />
g(t,y) = d ′ (t) T d(t),<br />
d = (y1(t)−y1(0),y2(t)−y2(0)) T .<br />
Punctele în care g(t,y(t)) = 0 sunt extreme locale ale lui d(t). Punând dir = 1,<br />
vom indica că zerourile lui g(t,y) sunt atinse de sus, ceea ce corespunde minimelor.<br />
Setând isterm = 1, vom indica faptul că procesul de calcul trebuie oprit la<br />
întâlnirea primului minim. Dacă orbita este periodică, atunci orice minim al lui d<br />
apare când corpul se întoarce în punctul init¸ial.<br />
Apelând orbit cu o precizie mică<br />
orbit(2e-3)<br />
se obt¸ine<br />
tfinal =<br />
2.35087197761946<br />
yfinal =<br />
0.98107659901112 -0.00012519138558<br />
s¸i graficul din figura 6.11(a). Se poate observa din valoarea lui yfinal s¸i din grafic<br />
o abatere de la periodicitate. Avem nevoie de o precizie mai bună. Cu comanda<br />
orbit(1e-6)<br />
se obt¸ine<br />
tfinal =<br />
2.38025846171798<br />
yfinal =<br />
0.99998593905520 0.00000000032239<br />
Valoarea yfinal este acum suficient de apropiată de y0, iar graficul arată mult mai<br />
bine (figura 6.11(b)).