Python 用辛方法求解微分方程

Python 用辛方法求解微分方程,python,sympy,maxima,Python,Sympy,Maxima,我有下面的微分方程,我想用辛解 该微分方程具有隐式解(h(0)=[0,1)和t=[0,inf)) 但辛皮给予 还有哪些其他软件包,比如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.Derivati

我有下面的微分方程,我想用辛解

该微分方程具有隐式解(h(0)=[0,1)和t=[0,inf))

但辛皮给予

还有哪些其他软件包,比如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)

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)

有趣。难道没有办法对
h(t)
做出一些假设,即它小于1且大于或等于0吗?“非负”:是,“小于1”:否。请看,这是一个遗憾。在这种复杂程度下,手工求解似乎更简单。