【问题标题】:ode solver event location index in MATLABMATLAB 中的 ode 求解器事件位置索引
【发布时间】:2011-10-01 16:59:58
【问题描述】:

假设我试图在 MATLAB 中使用 ode 求解器求解微分方程组。

假设我已经定义了一个事件函数来定位三个不同的事件,它们都是终端。

我注意到在某些情况下,在其中一个事件的位置返回的 ie 数量(ie 是停止求解器的事件的索引,在我的情况下它可能是 1、2或 3) 并不总是一个数字,而是一个包含两个元素的向量(通常这些元素是相同的)

ie 不是标量的情况下,是ie(1) 还是ie(2) 停止了求解器?

【问题讨论】:

  • 有一个简单的例子吗?最后是否满足多个事件?
  • 我在问题帖中添加了一个示例。另请注意,根据我的经验,ie(2) 通常包含停止 ode 的事件,ie(1) 只是求解器停止的上一次重复。但这只是我的经验,不能想当然

标签: matlab indexing solver differential-equations


【解决方案1】:

实际上,我注意到当模拟由于终止事件而停止然后从停止的同一点(初始时间和条件)重新开始时会发生这种情况。

从技术上讲,由于初始条件中的算术不准确,MATLAB 会重新检测使其先前停止的相同事件。 MATLAB 无法区分这一点,但它被编程为不会在 first 成功步骤之后发生的终端事件中停止(请参阅odezero 函数以供参考)。不过,它确实记录了事件。

因此,下次 ode 因终端事件而停止时,ie附加 新索引,这就是 ie 何时(以及为什么)是一个包含两个元素。

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    相关资源
    最近更新 更多