我不熟悉主题"物理系统建模"。我阅读了一些基础文献,并在Modelica和Simulink / Simscape中做了一些教程。如果我正确理解以下内容,我想问你:
非常感谢您的回答。
答案 0 :(得分:7)
Modelica的符号处理包括:
OpenModelica也可以在DAE模式下解决系统而不将其转换为ODE,我猜其他Modelica工具也可以这样做。
A"平面Modelica代码"是Modelica代码,其中对象方向被移除,连接方程被扩展为正规方程。结果是混合DAE。
有关所有这些的更多信息,请参阅Modelica Spec 3.3(例如附录C): https://modelica.org/documents/ModelicaSpec33Revision1.pdf
答案 1 :(得分:1)
所以我认为你对术语的理解也很好。 由于在modelica中编程的声明方式(与命令式相反),我们立即获得了非常多的代数方程。首先,解决这些(部分)象征性地具有这些重要优势:
速度。在不消除代数循环的情况下,modelica实际上不能用于任何现实世界的问题,即使这样,只有在简单的情况下才能保留代数方程。它会太慢并且会迫使你自己在modelica中手动进行转换(例如在命令式语言中,例如在C / C ++或Simulink中)。即使在今天,modelica仍然比手动转换和优化的解决方案慢。 此外,modelica应用程序通常需要实时模拟。
正确性。符号转换基于证明,而modelica应用程序通常属于安全关键或网络物理系统领域。
答案 2 :(得分:1)
另外一个考虑因素是存在不同形式的 DAE,并且建模通常会导致高指数 DAE,这些 DAE 在数值上求解很复杂 (*)。 (注意“高”表示指数大于 1,通常为 2 - 但有时甚至更高。)
符号变换可以将高指数 DAE 简化为半显式指数 1 DAE,然后通过(数值上)求解方程组,将它们转化为 ODE。
因此,即使工具直接解决 DAE,通常也解决的是半显式索引 1 DAE,而不是原始的高索引 DAE。
(我知道这个答案来晚了。符号转换的混合部分更复杂,仍在研究中。)
有关详细信息,请参阅 https://en.wikipedia.org/wiki/Differential-algebraic_system_of_equations
(*):对于高指数 DAE(特别是指数 2)有一些求解器,但通常它们依赖于模型的特定结构,并且找到该结构需要与将指数减少到 1 类似的技术。