数值整合约束动力学的简单方法?

时间:2015-03-14 08:36:51

标签: physics numerical-methods

例如,一个简单的摆(字符串长度= 1)可以描述为

mx''=λ* 2x

我的''= -mg +λ* 2y

x ^ 2 + y ^ 2 - 1 = 0

其中素数意味着时间的推导,而λ* 2x和λ* 2y是来自第3个方程的约束力,这是约束。

当然,在这种情况下,可以通过选择弦的幅度θ作为唯一坐标来不使用λ。在这种情况下,我认为Python(Scipy)的odeint将是整合方程式的最简单的自由方式。

然而,这种坐标减少并不总是那么容易。

有没有一种简单的方法可以像这样集成受约束的ODE(没有Mathematica / Maple / Matlab)?性能和准确性对我来说都不重要,我只是不会快速检查结果。

(我不确定这个问题是否适合这里或物理论坛,但对我来说,似乎物理论坛更多的是理论,但不是很多关于程序和数字的东西。)

非常感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

这种类型的系统称为微分 - 年龄方程。 netlib中有标准求解器,例如DASSL。

必须小心使用涵盖DAE(微分)索引的方法。通常,求解器涵盖索引1或索引2系统。如果索引较高,则必须使用符号索引缩减方法才能应用数值方法。

钟摆具有指数3,这意味着系统的方程必须被区分两次以区分3次以便能够提取普通的微分方程系统。或者2个区别以简化为明确的index-1系统。

进一步阅读:http://www.scholarpedia.org/article/Differential-algebraic_equations#Software