Matlab ode45与ode23,不同的解决方案

时间:2016-01-27 19:12:41

标签: matlab ode numerical-integration ode45

我使用ode45ode23作为一组非刚性微分方程。但是,这两种方法都集中到略有不同的解决方案。我怎样才能找出哪一个是正确的?请参见附图,其中蓝色为ode45,红色为ode23。虚线是每个求解器的最终值。此外,ode15s有点不同(小于1米)......

enter image description here

1 个答案:

答案 0 :(得分:0)

Matlab的ODE求解器为adaptive,因此可以指定容差而不是步长(另请参阅this answer)。根据{{​​3}}中的代码,如果您为相对容差指定较小的值,ode45ode23的解决方案将在相同的时间后收敛。您可以使用PDF linked in the comments设置odeset

...
opts = odeset('RelTol', 1e-12);
[t, oput] = ode23(@(t,y)secondode(t,y,C,g), tspan, IC, opts);
...

请注意,我还删除了链接代码中使用的全局变量(它们是'RelTol'bad)。您还需要将secondode的函数定义更改为:

function z = secondode(t, indata, C, g)
...