2017-07-25 204 views
2

我有以下的微分方程,我想与SymPy解决求解微分方程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) 

回答

3

SymPy离开积分不计算,因为它是不确定1-Y的积分符号。

微分方程在h = 1处有一个奇点,它的行为取决于我们是哪一边。没有一种方法来说,H(t)的< 1,但一个可替代H(T)= 1 - 克(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) 
+0

有趣。是否没有办法对'h(t)'做出一些假设,即它小于1且大于或等于0? – Chiel

+0

“非负”:是,“小于1”:不。见http://docs.sympy.org/latest/modules/core.html#module-sympy.core.assumptions – FTP

+0

嗯,这是一个遗憾。有了这种复杂程度,手工解决似乎更直接。 – Chiel