求解可分微分方程

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?)相比,这是一个非常旧的版本。

以上是关于求解可分微分方程的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab求解微分方程并画图

Matlab通过ode求解微分方程

求解高阶微分方程

Matlab求解常微分问题

Matlab求解常微分问题

矩阵指数函数与常微分方程组求解