【问题标题】: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报告。

标签: sympy ode


【解决方案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?)相比,这是一个非常旧的版本。
猜你喜欢
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 2021-04-19
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多