solving a ODE using ode45 or etc. with certain number of timestepping
4 次查看(过去 30 天)
显示 更早的评论
Hi everybody,
I want to solve an ODE using Adams-Bashforth 4th order method which needs the initial values of previous steps so I need to solve the ODE 4 or 5 times using other method such as Runge-Kutta. As far as ode45 is an adaptive time-stepping solver in order to save computation time has anybody any suggestion how can I make solver to do solving for just 4 or 5 times and then break it?
many tnx in advance.
0 个评论
回答(2 个)
Torsten
2015-6-16
Use the Runge-Kutta method to calculate 3 data points in addition to the initial condition:
for i = 1:3
k1 = f(t,y);
k2 = f(t+h/2, y+h/2*k1);
k3 = f(t+h/2, y+h/2*k2);
k4 = f(t+h, y+h*k3);
y = y+h/6*(k1 + 2*k2 + 2*k3 + k4);
t = t + h;
yn(1,i+1) = y;
end
Best wishes
Torsten.
2 个评论
Torsten
2015-6-16
Well, you can set h, 2*h and 3*h as output times for the solution from ODE45 and feed your Adams routine with these values.
Best wishes
Torsten.
Walter Roberson
2015-6-16
Configure an OutputFcn option that tests the number of function calls from the information structure passed in and sets the termination flag appropriately.
0 个评论
另请参阅
类别
在 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!