06.08.2013 Views

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

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.

otherwise<br />

error(['Unknown flag ''' flag '''.']);<br />

end<br />

(2)<br />

[t,YY]=ode45('DYDt2',tspan,Y0,[],G,ME);<br />

4.14.2.2 解算指令较复杂格式的使用示例<br />

【例 4.14.2.2-1】带事件设置的 ODE 文件及主程序编写演示。本例将以较高精度计算卫星经<br />

过近地点和远地点的时间,并在图上标志。<br />

(1)<br />

[DYDt3.m]<br />

function varargout=DYDt3(t,Y,flag,G,ME,tspan,Y0)<br />

%<br />

%<br />

%<br />

%<br />

%<br />

%<br />

%<br />

switch flag<br />

case '' %<br />

varargout{1} = f(t,Y,G,ME); %<br />

case 'init' %<br />

[varargout{1:3}] = fi(tspan,Y0); %<br />

case 'events' %<br />

[varargout{1:3}] = fev(t,Y,Y0);<br />

otherwise<br />

error(['Unknown flag ''' flag '''.']);<br />

end<br />

% ------------------------------------------------------------------<br />

function Yd = f(t,Y,G,ME)<br />

%<br />

X=Y(1:2);V=Y(3:4);r=sqrt(sum(X.^2));Yd=[V; -G*ME*X/r^3];<br />

% ------------------------------------------------------------------<br />

function [ts,y0,options] = fi(tspan,Y0)<br />

%<br />

ts=tspan;y0 = Y0;<br />

options = odeset('Events','on','Reltol',1e-5,'Abstol',1e-4);<br />

%<br />

% ------------------------------------------------------------------<br />

function [value,isterminal,direction] = fev(t,Y,Y0)<br />

%<br />

dDSQdt = 2 * ((Y(1:2)-Y0(1:2))' * Y(3:4));<br />

%dDSQdt<br />

value = [dDSQdt; dDSQdt]; %<br />

direction = [1; -1]; %<br />

isterminal = [1; 0]; %<br />

36

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

Saved successfully!

Ooh no, something went wrong!