求解可分微分方程
Posted
技术标签:
【中文标题】求解可分微分方程【英文标题】:Solving separable differential equation 【发布时间】:2021-11-17 23:15:25 【问题描述】:我想用 SymPy 简单的可分方程 y'=e^(y-x) 求解,但是 SymPy 无法求解!
from sympy import *
x = symbols("x")
y = Function("y")
dsolve(Eq(Derivative(y(x), x), exp(y(x)-x)), y(x))
但它成功地解决了类似的方程 y'=e^(y+x)。
非常感谢我如何解决此问题的任何想法!
【问题讨论】:
如果内容或顺序存在差异,您可以尝试找出 sympy 在这两种情况下适用的分类。请注意,符号 ODE 求解器仍然相当不完整,并且可能包含错误。也请告诉我们sympy.__version__
的值。
这是一个错误。请向github报告。
【参考方案1】:
根据我的评论,修改脚本以阅读
eq = Eq(Derivative(y(x), x), exp(y(x)-x))
print(classify_ode(eq,y(x)))
返回
('factorable', 'separable', '1st_power_series', 'lie_group', 'separable_Integral')
正如您所观察到的,'factorable'
的方法似乎已损坏。显式使用第二种方法,
dsolve(eq, y(x), hint='separable')
快速返回解决方案。
对于另一个方程,方法列表是
('separable', '1st_power_series', 'lie_group', 'separable_Integral')
以便不使用有问题的方法。为什么微不足道的符号差异会在分类器中产生如此大的差异,只有开发人员才会知道。
【讨论】:
谢谢!有趣的是,SymPy 的在线版本可以在这种 DEs 上正常运行... 查看版本,网上版本已经很久了,比较过时。尤其是dsolve
中间经过了彻底的重新设计,因此可能包含更少的错误,但很可能引入了不同的错误,这些错误通常也“更有趣”。
SymPy 的在线版本是 1.5.1。据我了解,与 Google Colab 中使用的当前版本(1.9?)相比,这是一个非常旧的版本。以上是关于求解可分微分方程的主要内容,如果未能解决你的问题,请参考以下文章