假设我尝试使用 MATLAB 中的 ode
求解器求解微分方程组。
还假设我定义了一个事件函数来定位三个不同的事件,这些事件都是终端事件。
我注意到,在某些情况下,在事件之一的位置返回的 ie
数量(ie
是停止求解器的事件的索引,在我的例子中,它可能是 1、2 或 3)并不总是单个数字,而是具有两个元素的向量(通常这些元素是相同的)
在 ie
不是标量的情况下,是 ie(1)
还是 ie(2)
停止了求解器?
最佳答案
实际上,我注意到当模拟因终端事件而停止,然后从停止的同一点(初始时间和条件)再次开始时,就会发生这种情况。
从技术上讲,由于初始条件中的算术不准确,MATLAB 会重新检测导致其先前停止的同一事件。 MATLAB 无法区分这一点,但它被编程为不会在第一个成功步骤之后发生的终端事件中停止(请参阅odezero
函数以供引用)。不过,它确实记录了该事件。
因此,下一次颂歌由于终端事件而停止时,ie
会附加新索引,这就是(以及原因) ie
是一个具有两个元素的向量。
关于matlab - MATLAB 中的 ode 求解器事件位置索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621664/