- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 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 系统系统一起。
最佳答案
您遇到了一个棘手的问题,我不确定是否有一步解决方案。我很乐意向任何愿意提供替代答案的人表示敬意。
根据延迟的长度,一种选择是多次运行等式,每次迭代都将 x 的旧值传递给最新更新。
例如,假设您的延迟时间为一小时。在第一个小时内,运行带有 NonNegative 标记的 ode45。将值与时间参数一起存储到新矩阵中,然后再次运行算法。这次确保您添加了两个输入参数:您的旧解矩阵和旧时间矩阵
dx = 1/(1+y*z) - x;
dy = (y*z)^2/(1+(y*z)^2) - y;
tindex = find(told>t,1) -1 % find the upper index which best approximates t
X = xold(tindex) + (xold(tindex+1)-xold(tindex))*(t-told(tindex))/(told(tindex+1)-told(tindex)) % or interpolation method of your choosing
dz = X - z;
现在清洗、冲洗并重复。请注意,X 现在是一个准时间相关项,如 ode45 中的示例 3 所示。 .
关于matlab - 求解受约束提供非负解的延迟微分方程 (DDE) 系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977107/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
Julia的新手,试图测试ODE求解器的速度。我在本教程中使用了Lorenz方程 using DifferentialEquations using Plots function lorenz(t,u
我来这里是因为我一直在尝试使用 sympy 求解微分方程,不幸的是到目前为止我还没有成功。到目前为止我所做的是: 1)插入微分方程,赋值并求解: import sympy as sp from IPy
我不知道问这个地方是否合适,因为我的问题是关于如何使用微分方程增长和衰减方法计算计算机科学算法的复杂性。 我想证明的算法是二分查找排序数组,其复杂度为log2(n) 算法说:如果要搜索的目标值等于中间
我想知道是否有人可以帮助我使用 MatLab 求解 Lotka-Volterra 方程。我的代码似乎不起作用。我执行以下操作: 第 1 步 - 我创建了一个名为 pred_prey_odes.m 的文
我是一名优秀的程序员,十分优秀!