假设我试图在MATLAB中使用ode
求解器求解微分方程组。
假设我已经定义了一个事件函数来定位三个不同的事件,这些事件都是终端的。
我注意到在某些情况下,在其中一个事件(ie
)的位置返回的ie
数量是停止求解器的事件的索引,在我的情况下它可以是1,2或3)并不总是一个数字,而是一个有两个元素的向量(通常这些元素是相同的)
在ie
不是标量的情况下,停止求解器的是ie(1)
还是ie(2)
?
答案 0 :(得分:2)
实际上,我注意到当模拟由于终端事件而停止然后从停止的相同点(初始时间和条件)再次开始时,会发生这种情况。
从技术上讲,由于初始条件下的算术不准确,MATLAB重新检测到之前停止的相同事件。 MATLAB无法区分这一点,但它被编程为不停止在第一个成功步骤之后发生的终端事件中(参见odezero
函数以供参考)。但它确实记录了这一事件。
因此,下次ode因终结事件而停止时,ie
附加附加新索引,那时{和1}}是ie
带有两个元素的向量。