In Ode15s, how do I break the time span into smaller intervals and call the solver twice, so that the integration proceeds faster?
2 次查看(过去 30 天)
显示 更早的评论
Hi, can anyone explain these lines from the Matlab website to me?
and
I understand how splitting the total time span into small intervals can speed up ODE. But in order to implement this method, how exactly do I "call the solver twice"? How to combine the outputs from each call into one? Say my total time span is
tspan=[t0 tf];
and I break it into
tspan1=[t0 t1];
tspan2=[t1 tf];
If I directly call the solver twice like the following,
% Method 1
[ta,y1]=ode15s(@odefun,tspan1,initialCond,solverOptions,additionalParams);
[tb,y2]=ode15s(@odefun,tspan2,initialCond,solverOptions,additionalParams);
I will get two outputs. But all I need is just one, like the [t, y] below.
% Method 2
[t,y]=ode15s(@odefun,tspan,initialCond,solverOptions,additionalParams);
How can I combine the results from method 1 and get only one output? It would be best if there's code or examples. Thank you.
0 个评论
回答(1 个)
Torsten
2019-2-27
tspan1=[t0 t1];
[ta,y1]=ode15s(@odefun,tspan1,initialCond,solverOptions,additionalParams);
initialCond=y1(end,:);
tspan2=[t1 tf];
[tb,y2]=ode15s(@odefun,tspan2,initialCond,solverOptions,additionalParams);
t=[ta(1:end-1);tb];
y=[y1(1:end-1,:);y2];
3 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!