20.07.2013 Views

Software matematic

Software matematic

Software matematic

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

148 Ecuat¸ii diferent¸iale în MATLAB<br />

Ecuat¸ia a fost scrisă ca un sistem de două ecuat¸ii de ordinul I, deci g(t,y) = y1.<br />

Codul pentru g(t,y) este<br />

function [gstop,isterminal,direction] = g(t,y)<br />

gstop = y(1);<br />

isterminal = 1;<br />

direction = 0;<br />

Primul argument de ies¸ire, gstop, este valoarea pe care dorim s-o anulăm. Dacă<br />

al doilea argument de ies¸ire, isterminal, are valoarea 1, rezolvitorul va termina<br />

execut¸ia dacă gstop este zero. Dacă isterminal = 0, evenimentul este<br />

înregistrat s¸i rezolvarea continuă. direction poate fi -1, 1 sau 0, după cum zeroul<br />

se atinge dacă funct¸ia este descrescătoare, crescătoare sau nemonotonă. Calculul s¸i<br />

reprezentarea traiectoriei se poate face cu<br />

function falling_body(y0)<br />

opts = odeset(’events’,@g);<br />

[t,y,tfinal] = ode45(@f,[0,Inf],y0,opts);<br />

tfinal<br />

plot(t,y(:,1),’-’,[0,tfinal],[1,0],’o’)<br />

axis([-0.1, tfinal+0.1, -0.1, max(y(:,1)+0.1)]);<br />

xlabel t<br />

ylabel y<br />

title(’Corp in cadere’)<br />

text(tfinal-0.8, 0, [’tfinal = ’ num2str(tfinal)])<br />

Pentru valoarea init¸ială y0=[1; 0] se obt¸ine<br />

>> falling_body([1;0])<br />

tfinal =<br />

1.65745691995813<br />

s¸i graficul din figura 6.10.<br />

Detect¸ia evenimentelor este utilă în probleme ce presupun fenomene periodice.<br />

Problema celor două corpuri este un exemplu bun. Ea descrie orbita unui corp asupra<br />

căruia act¸ionează fort¸a gravitat¸ională a unui corp mult mai greu. Utilizând coordonate<br />

carteziene, u(t) s¸i v(t) cu originea în corpul mai greu, ecuat¸iile sunt:<br />

u ′′ (t) = − u(t)<br />

r(t) 3<br />

v ′′ (t) = − v(t)<br />

r(t) 3,<br />

unde r(t) = u(t) 2 +v(t) 2 . Întreaga rezolvare este cont¸inută într-un singur fis¸ier<br />

de tip funct¸ie, orbit.m (sursa MATLAB 6.3). Parametrul de intrare, reltol, este

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!