代数环求解器的工作原理
当模型中包含代数环时,Simulink 在每个时间步使用非线性求解器解算代数环。求解器执行迭代以确定代数约束的解(如果存在)。因此,有代数环的模型的运行速度可能比没有代数环的模型的运行速度慢。
Simulink 使用折线信赖域算法解算代数环。使用的容差小于 ODE 求解器 Reltol 和 Abstol。这是因为 Simulink 使用“显式 ODE 方法”来解算指数为 1 的微分代数方程 (DAE)。
要使代数环求解器发挥作用,
必须存在一个模块,在该模块中,代数环求解器可以中断循环并尝试解算该循环。
模型应该具有双精度实信号。
基础代数约束必须是一个平滑函数。
例如,假设您的模型中有一个带两个输入的 Sum 模块:一个相加,另一个相减。如果您将 Sum 模块的输出馈送给其中一个输入,则会创建一个代数环,其中的所有模块都包括直接馈通。
Sum 模块无法在不知道输入的情况下计算输出。Simulink 会检测代数环,代数环求解器将使用迭代循环解算代数环。在 Sum 模块示例中,该软件通过以下方式计算正确的结果:xa(t) = u(t) /2.(1)
代数环求解器使用基于梯度的搜索方法,这需要与代数环相对应的代数约束的连续一阶导数。因此,如果代数环包含不连续性,代数环求解器可能会失败。
有关详细信息,请参阅 Solving Index-1 DAEs i