首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Matlab - ODE45 -更改时间步数

Matlab - ODE45 -更改时间步数
EN

Stack Overflow用户
提问于 2015-11-04 11:41:20
回答 1查看 1.2K关注 0票数 2

我有一个带有句柄@func的函数,它的初始条件为y0,我想在t = [0, tspan]上进行测试。确切地说,我需要做什么来增加ode45使用的时间步骤的数量,而不改变tspan

我看到了ode45的MATLAB文档,并看到我需要以某种方式将options输入更改为ode45。但是,我并不真正理解如何做到这一点,因为没有提供示例代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-04 12:02:34

您需要查看odeset,它创建了一个用于ODE求解器的选项结构,如ode45。您正在考虑更改MaxStep参数。

这方面的文档(MATLAB R2015a)说:

MaxStep -步长正标量的上界 在所有求解器中,MaxStep默认为tspan间隔的十分之一。

因此,你可以让它比0.1*tspan小一些.像1e-6之类的东西。这取决于tspan是什么,因此如果要增加时间步骤/输出点的总数,则需要使其小于0.1*tspan

因此,创建一个odeset结构并重写MaxStep参数。其余的值将保持为默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
options = odeset('MaxStep', 1e-6);

现在您已经完成了,请向ode45报告您的问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[tout,yout] = ode45(@func, tspan, y0, options);

只需使用MaxStep,直到获得所需的粒度。

小音符

虽然有些隐藏,但文档确实告诉您如何更改选项。这一节讨论如何使用选项调用ode45。请注意以黑体字突出显示的内容。这是MATLAB R2015a的文档:

ODESET [TOUT,YOUT] = ode45(ODEFUN,TSPAN,Y0,OPTIONS)解决了上述问题,默认的集成属性被OPTIONS中的值替换,是用函数创建的参数。详细信息见。常用的选项是标量相对容错'RelTol' (默认情况下为1e-3)和绝对误差容差向量'AbsTol' (默认情况下为所有组件1e-6 )。如果解决方案的某些组件必须是非负的,请使用ODESET'NonNegative'属性设置为这些组件的索引。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33530603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文