I meet an error of using newton solver to solve nonlinear equation in Dymola, but the simulation ends with success, just like another question here,
my question is:
In the list of solvers, there is no newton solver, why would Dymola use newton solver?
Does Dymola choose dassal solver only when newton solver doesn't work?
隐式求解器需要迭代以找到解决方案,因为它们使用未知变量来估计结果。首先估计这些变量,然后使用残差方程进行验证。这个迭代需要在每个求解器步骤中完成,并且通常用牛顿迭代完成,因为这保证了良好的性能(一些幻灯片,以及完整的讲座)。牛顿迭代的一个缺点是,它可能会在给定强非线性或次优猜测值的情况下失败。这就是错误消息指出应该提供更好的“起始值”的原因。
求解器可以做的是从性能良好但并不总是稳定的牛顿迭代切换到更慢但更健壮的算法,如二分法。在 Dymola 中,这会给您一个警告(不幸的是记录为ERROR),但模拟仍在继续。所以你的模型很难处理,但求解器仍然可以通过一些额外的工作来完成。
在您的情况下,提供更好的起始值似乎很困难,因为这发生在模拟期间而不是在开始时(尽管在您显示的消息之前有相同类型的消息,第一个提供了更多信息)。因此,求解器本身似乎估计了一个很远的值,或者当时发生了事件,中断并重新启动求解器。可能值得测试这里提供的选项。
如果你想摆脱牛顿迭代,你需要选择一个显式求解器(例如 Dymola 中的 Euler、Rkfix、Dopri)。但是您可能需要非常小的步骤来成功模拟模型 - 使模拟变慢。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |