用SymPy求解微分方程

时间:2017-07-25 16:22:03

标签: python sympy maxima

我想用SymPy

解决以下微分方程式

enter image description here

这个微分方程有隐式解(用h(0)= [0,1)和t = [0,inf))

enter image description here

但是SymPy给出了

enter image description here

Maxima等其他软件包能够找到。然而,对于SymPy,我无法做到。有办法吗?我的代码是

import sympy as sp
sp.init_printing(use_unicode=True)
h = sp.symbols('h', function=True)
t = sp.symbols('t')
eq = sp.Eq(sp.Derivative(h(t),t), (1 - h(t))**sp.Rational(4,3) / h(t))
sp.dsolve(eq)

1 个答案:

答案 0 :(得分:3)

SymPy保留了未评估的积分,因为它不确定积分中1-y的符号。

微分方程在h = 1时具有奇点,其行为取决于我们的1侧。没有办法说h(t)< 1,但可以用h(t)= 1 - g(t)代替,其中g是正函数:

g = sp.symbols('g', function=True, positive=True)
eq1 = eq.subs(h(t), 1 - g(t))
print(sp.dsolve(eq1))

这将返回ODE的显式解(实际上有三个,因为SymPy解决了一个三次方程)。第一个看起来很合理。

Eq(g(t), (-2*(C1 + t)/(sqrt(-8*(C1 + t)**3 + 729) + 27)**(1/3) - (sqrt(-8*(C1 + t)**3 + 729) + 27)**(1/3))**3/27)