MATLAB中的ode求解器事件位置索引

时间:2011-10-01 16:59:59

标签: matlab indexing solver differential-equations

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

因此,下次ode因终结事件而停止时,ie 附加附加新索引,那时{和1}}是ie带有两个元素的向量。