【发布时间】:2018-02-11 11:30:13
【问题描述】:
使用 dymola 模拟模型,根据选择的集成方法,我得到不同的结果。所以我的问题是:为什么选择哪种方法?
【问题讨论】:
标签: modelica dymola openmodelica
使用 dymola 模拟模型,根据选择的集成方法,我得到不同的结果。所以我的问题是:为什么选择哪种方法?
【问题讨论】:
标签: modelica dymola openmodelica
理想情况下,方法的选择应该基于哪种方法最快速地给出足够接近准确结果的结果。
但我们不知道确切的结果,在这种情况下,至少有一些求解器(可能是所有求解器)没有生成足够接近它的结果。
一种可能性是首先尝试以更严格的公差进行模拟 - 例如1e-9.(注意:对于固定步长求解器,Euler 和 Rkfix*,步长会更小,但不要开始使用它们。)
希望求解器之间的差异会减少,并且不同的求解器会给出更相似的结果(应该接近确切的结果)。
然后您可以始终使用这种更严格的容差。或者,如果一个求解器已经给出了相同的结果,但容差不那么严格——那么你可以使用那个容差不那么严格的求解器;但您还必须在准确性和模拟时间之间进行权衡。
有时这不会发生,即使是同一个求解器也会针对不同的容差产生不同的结果;没有收敛到真正的解决方案。 (假设解决方案在开始时很接近,但很快就发散了。) 在这种情况下,模型很可能是混乱的。处理起来有点复杂,有几种选择:
也可能是其他一些错误(包括初始化期间的问题),但这需要更完整的示例来调查。
【讨论】:
选择最匹配精确解的求解器。
也许 Robert Piché 在数值求解器上的 work 提供了更多线索。
【讨论】: