求解受限于给出非负解的时滞微分方程 (DDE) 系统

2024-02-09

在 MATLAB 中,ode45 http://www.mathworks.com/help/techdoc/ref/ode45.html有一个参数叫做NonNegative http://www.mathworks.com/help/techdoc/ref/odeset.html#f92-1016858这将解决方案限制为非负。他们甚至写了一篇关于这种方法如何运作的论文 http://www.sciencedirect.com/science/article/pii/S0096300304009683以及它如何不像每当 y_i 变为负数时将 y_i 设置为 0 那么愚蠢,因为这通常不起作用。

现在,MATLAB也有dde23 http://www.mathworks.com/help/techdoc/ref/dde23.html用于求解时滞微分方程,但没有等价的NonNegative该积分器的参数。

不幸的是,我的任务是向现有的 ODE 系统添加延迟,该系统可以使用以下方法解决ode45 http://www.mathworks.com/help/techdoc/ref/ode45.html with NonNegative http://www.mathworks.com/help/techdoc/ref/odeset.html#f92-1016858已启用。

有什么想法我应该如何进行?

EDIT:

我不确定这是否有帮助,但是......

我系统的 DDE 部分基本上如下所示:

 dx = 1/(1+y*z) - x;
 dy = (y*z)^2/(1+(y*z)^2) - y;
 dz = X - z;

where X(第三个方程中的大写字母变量)是延迟版本x。然后,我通过在方程中添加几个项,将此 DDE 系统链接到现有(和更大的)ODE 系统x and z,然后将组合系统集成在一起。


您遇到了一个棘手的问题,我不确定是否有一步解决方案。我很乐意为任何愿意提供替代答案的人提供荣誉。

根据延迟的长度,一种选择是多次运行方程,每次迭代将 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 现在是一个准时间相关项,如示例 3 所示ode45 http://www.mathworks.com/help/techdoc/ref/ode45.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

求解受限于给出非负解的时滞微分方程 (DDE) 系统 的相关文章

随机推荐

  • 将 1GB 数据加载到 hbase 需要 1 小时

    我想将 1GB 1000 万条记录 的 CSV 文件加载到 Hbase 中 我为它编写了 Map Reduce 程序 我的代码运行良好 但需要 1 小时才能完成 最后一个Reducer 花费了半个多小时的时间 有人可以帮我吗 我的代码如下
  • 根据 C 标准,写入然后读取不同的联合成员是否未定义? [复制]

    这个问题在这里已经有答案了 我读到这段代码根据 c 标准是未定义的 但我找不到原因 它在 gcc 8 1 0 和 clang 6 0 中编译没有错误并打印 1 代码如下 include
  • pyEphem 'sublat' 和 'sublong' 是在地心还是大地测量中给出的?

    文档说 如果给 pyEpehm 一个 TLE 和一个时间 它将返回以下内容 但是 我无法将返回的 sublat 和 sublon 转换为 ECEF XYZ 并返回 LLA 坐标进行验证 当我转换回来时 经度会被保留 但对于不同的测试 纬度会
  • Gradle Build 停留在生成调试源

    当我尝试构建任务 android generateDebugSources 时 Gradle 陷入困境 我让它运行了几个小时但没有成功构建 我已经在 Android Studio 1 0 0 0 8 1 Gradle 版本 2 1 1 1
  • 用户表单列表框显示一定范围内的值

    我正在尝试在 Excel 中创建一个用户窗体 其中有一个组合框 并且根据所选值 一系列单元格中的值将显示在用户窗体上的列表框中 到目前为止我有这个 Private Sub UserForm Initialize With ComboBox1
  • 从 MYSQL 中的索引号获取工作日名称

    我有一个表 其中存储 0 6 作为工作日值 我想显示工作日名称 例如 如果值为0 它将显示Sunday 如果值为1 它将显示Monday 同样地 是否有内置的 MySQL 函数可以从索引中获取日期名称 提前致谢 正如 Aliminator提
  • 虚拟属性和质量分配

    开发商 我无法理解接下来的情况 例如我有模型 class Pg City lt ActiveRecord Base belongs to country virtual accessors attr accessor population
  • numpy 初学者:使用 numpy.savetxt 编写数组

    我有一个 numpy 直方图 我想将其输出为制表符分隔的文本文件 我的代码如下 targethist np histogram targetlist bins ilist print targethist np savetxt ChrI d
  • cv::Mat 在 Visual C++ Express 2010 中给出错误

    我有 opencv2 1 并在 64 位计算机上使用 Visual C 2010 Express 进行编码 我之前没有遇到问题 我可以使用其他代码 但是下面的简单代码给出了错误 cvMatExample exe 中 0x571365af m
  • 动态规划:城市遍历

    我遇到了这个问题 有两个人 有 n 个城市的有序序列 并且每对城市之间的距离是给定的 您必须将城市划分为两个子序列 不一定是连续的 使得人 A 访问第一个子序列中的所有城市 按顺序 人 B 访问第二个子序列中的所有城市 按顺序 并且使得A
  • 2D 几何库:LGPL 替代 CGAL? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 CGAL 似乎可以满足我需要的一切 并且可以为我即将进行的项目做更多的事情 它可以从弧线段创建多边形并对其运行布尔运算 它已经有了空间排序
  • 如何保持 /*!与 UglifyJS2 的评论?

    默认行为寻找 license or preserve 但很多插件和库仍在使用 用于许可评论块 我该如何使用UglifyJS2 https github com mishoo UglifyJS2 usage保留以以下内容开头的评论 See h
  • 从另一个 Python 脚本运行 Python 脚本时处理异常

    我正在从另一个 python 脚本运行一个 python 脚本 我想知道如何从父 python 脚本中捕获异常 我的父 python 脚本调用另一个 python 脚本 n 次 最终 被调用的脚本将退出并出现 ValueError 异常 我
  • ie7 内联块的替代方案

    对于我的网站 我使用内联块属性 它适用于 mozilla 和 ie8 但在 ie7 中显示为块元素 我怎样才能把它设置正确 看看这个 http foohack com 2007 11 cross browser support for in
  • 无法初始化 Log4j - SLF4JLoggerContextFactory

    我有一个使用 log4j2 运行的 jetty web 应用程序 它没有记录任何内容 并且启动时出现以下错误 错误 StatusLogger LogManager 返回了 org apache logging slf4j SLF4JLogg
  • numpy 从索引列表创建 2D 掩码 [+ 然后从掩码数组中绘制]

    我有一个二维值数组 需要先屏蔽该数组的某些元素 索引取自约 100k 元组对的列表 然后再从剩余元素中抽取随机样本而不进行替换 我需要既快速 高效 希望避免 for 循环 又具有较小内存占用的东西 因为实际上主数组约为 20000 x 20
  • 更改文本区域字段中的字体和字体大小

    使用以下代码示例
  • String.Replace 不替换撇号

    我试图用字符串替换撇号 由于某种原因 该方法只是在字符串中找不到撇号 这是似乎不起作用的 URL news 2012 march cameron s crackdown on whiplash why the minimum speed r
  • Criteriabuilder之类的,如何长时间做到这一点?

    我尝试使用 Criteriabuilder 中的 like 方法来获取基于模式 10 的所有记录 我想要获取 ID 为 101 10002 1003 1000 等的记录 我用过这个代码 Predicate p cb like r
  • 求解受限于给出非负解的时滞微分方程 (DDE) 系统

    在 MATLAB 中 ode45 http www mathworks com help techdoc ref ode45 html有一个参数叫做NonNegative http www mathworks com help techdo