![]() |
如何强制ode45在T轴上采取恰好0.01的步长?
我正在使用Matlab求解微分方程。我想强制ode45采取恒定的步长,因此在求解方程式时它总是在T轴上增加0.01。我该怎么做呢?
ode45始终采取优化的随机步骤,我似乎无法弄清楚如何使它采取一致的0.01小步数。这是代码: options= odeset('Reltol',0.001,'Stats','on'); %figure(1); %clf; init=[xo yo zo]'; tspan=[to tf]; %tspan = t0:0.01:tf; [T,Y]=ode45(name,tspan,init,options); [B]回答:[/B] 根据[URL="https://www.mathworks.com/help/matlab/ref/ode45.html"]文档[/URL] ,似乎不可以控制ode45在求解方程式时内部执行的步骤的大小,但[I]可以[/I]控制生成输出的时间点。您可以按照注释行中的指示执行此操作: tspan = to:0.01:tf; % Obtain solution at specific times [T, Y] = ode45(name, tspan, init, options); 关于使用固定步长时解决方案的准确性,请参考上面链接的摘录: [INDENT]如果tspan具有两个以上的元素[t0,t1,t2,...,tf] ,则求解器将返回在给定点求值的解。但是,求解器不能精确地步进到tspan指定的每个点。相反,求解器使用其自己的内部步骤来计算解决方案,然后在tspan中的请求点上评估解决方案。在指定点生成的解的精度与在每个内部步骤计算出的解的精度相同。 指定几个中间点对计算效率几乎没有影响,但是对于大型系统,这可能会影响内存管理。 [/INDENT]因此,即使您指定要在输出中的特定时间点进行求解,求解器仍在内部在您指示的时间点[I]之间[/I]采取许多自适应步骤,接近这些固定时间点的值。 [url=https://stackoverflow.com/questions/2549238]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 05:03。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.