Sympy,如何以某种形式获得ODE的解决方案

时间:2016-11-01 11:45:55

标签: python-3.x sympy

我们说我们有这个ODE:

19.6f(t) + 8.0\frac{d^2}{dt^2}f(t)=0

这个等式的解通常是

f(t)=C_1sin(7\sqrt{5}t/10)+C_2cos(7\sqrt{5}t/10)

很明显,虽然我需要以这种形式提供解决方案,但是很明显会有同情心:

f(t)=Acos(7\sqrt{5}t/10 + \phi)

常量为A和\phi

这样做的目的是研究相关系统的失相。

2 个答案:

答案 0 :(得分:1)

在这种情况下,C1 = -A*sin(phi)C2 = A*cos(phi)(您可以通过查看身份cos(x + y) = -sin(x)*sin(y) + cos(x)*cos(y)来解决此问题。)

所以要做简化,替换常量:

In [19]: A, C1, C2, phi = symbols('A C1 C2 phi')

In [20]: dsolve(9.6*f(t) + 8.0*f(t).diff(t, t), f(t))
Out[20]:
             ⎛√30⋅t⎞         ⎛√30⋅t⎞
f(t) = C₁⋅sin⎜─────⎟ + C₂⋅cos⎜─────⎟
             ⎝  5  ⎠         ⎝  5  ⎠

In [21]: dsolve(9.6*f(t) + 8.0*f(t).diff(t, t), f(t)).subs({C1: -A*sin(phi), C2: A*cos(phi)})
Out[21]:
                     ⎛√30⋅t⎞               ⎛√30⋅t⎞
f(t) = - A⋅sin(φ)⋅sin⎜─────⎟ + A⋅cos(φ)⋅cos⎜─────⎟
                     ⎝  5  ⎠               ⎝  5  ⎠

In [22]: trigsimp(dsolve(9.6*f(t) + 8.0*f(t).diff(t, t), f(t)).subs({C1: -A*sin(phi), C2: A*cos(phi)}))
Out[22]:
            ⎛    √30⋅t⎞
f(t) = A⋅cos⎜φ + ─────⎟
            ⎝      5  ⎠

答案 1 :(得分:0)

最后,解决

C_1*sin(x)+C_2cos(x) = A*cos(x + \phi)

如果知道C_1C_2只是一个几何问题。从

开始

cos(x) = sin(x+\frac{\pi}{2})

我建议在https://mathoverflow.net/中提出这个问题。如果你问,请在这里链接问题。我很好奇答案。