首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SymPy求解微分方程

用SymPy求解微分方程
EN

Stack Overflow用户
提问于 2017-07-26 00:22:03
回答 1查看 3K关注 0票数 3

我有以下微分方程,我想用SymPy来解决

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

但SymPy给出了

其他软件包,如Maxima,能够找到的。然而,使用SymPy我就做不到。有没有办法做到这一点?我的代码是

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2017-07-26 06:14:32

SymPy没有计算积分,因为它不确定积分中1-y的符号。

微分方程在h=1处有一个奇点,它的行为取决于我们在1的哪一边。没有一种方法可以说h(t) < 1,但可以用h(t) =1- g(t)代替,其中g是正函数:

代码语言:javascript
复制
g = sp.symbols('g', function=True, positive=True)
eq1 = eq.subs(h(t), 1 - g(t))
print(sp.dsolve(eq1))

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

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45308747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档