【发布时间】:2011-10-22 01:40:54
【问题描述】:
在 MATLAB 中,ode45 有一个名为 NonNegative 的参数,它将解限制为非负数。 They even wrote a paper about how this method works 以及它如何不像将 y_i 变为负数时设置为 0 那样愚蠢,因为这通常不起作用。
现在,MATLAB 也有 dde23 用于求解延迟微分方程,但此积分器没有等效的 NonNegative 参数。
不幸的是,我的任务是向现有 ODE 系统添加延迟,该系统使用 ode45 和启用 NonNegative 解决。
任何想法我应该如何进行?
编辑:
我不确定这是否有帮助,但是...
我系统的 DDE 部分基本上是这样的:
dx = 1/(1+y*z) - x;
dy = (y*z)^2/(1+(y*z)^2) - y;
dz = X - z;
其中X(第三个等式中的大写字母变量)是x 的延迟版本。然后,我通过在x 和z 的方程中添加几个项,然后将组合系统全部集成在一起,将这个 DDE 系统链接到现有的(和更大的)ODE 系统。
【问题讨论】:
-
是否可以简单地使用 ode45,然后将延迟分量添加到结果时间向量中?...如果您可以将延迟输入与非延迟输入分开,这是可能的
-
我不这么认为。使用
dde23的全部原因是因为存在相互依赖关系……比如 X 取决于一个小时前 Y 的值。 -
当然,我编辑了我的原始帖子以添加更多信息。如您所见,延迟仅出现在一个方程式中,但所有方程式最终都联系在一起,因此延迟会影响一切。
标签: matlab scipy numerical-methods differential-equations numerical-integration