首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab ode45 vs. ode23,不同的解决方案

Matlab ode45 vs. ode23,不同的解决方案
EN

Stack Overflow用户
提问于 2016-01-27 19:12:41
回答 1查看 2.4K关注 0票数 1

我用ode45ode23建立了一组非刚性微分方程.然而,这两种方法都收敛到了一个稍微不同的解决方案。我怎么才能知道哪一个是正确的?见附图,蓝色为ode45,红色为ode23。虚线是每个求解器的最终值。而且,ode15s有点不同(小于1米).

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 00:23:47

Matlab的ODE求解器是自适应,因此可以指定公差而不是步骤大小(参见这个答案)。给定PDF链接在评论中中的代码,如果为相对公差指定一个较小的值,则来自ode45ode23的解决方案将在相同的时间后收敛。您可以使用odeset设置'RelTol'

代码语言:javascript
复制
...
opts = odeset('RelTol', 1e-12);
[t, oput] = ode23(@(t,y)secondode(t,y,C,g), tspan, IC, opts);
...

注意,我还去掉了链接代码中使用的全局变量(它们是坏的低效)。还需要将secondode的函数定义更改为:

代码语言:javascript
复制
function z = secondode(t, indata, C, g)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35046020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档