Sympy 简单的二阶颂歌

Sympy simple second order ode

我想用 Sympy 表演颂歌。

如果我从一个简单的开始,例如 f''(x) = f(x),dsolve 工作正常

import sympy as sym

z = sym.symbols('z', real=True) 
Phi = sym.Function('Phi')(z)
Phi_ = sym.Derivative(Phi,z)
Phi__ = sym.Derivative(Phi_,z)

Eqn1 = sym.Eq(Phi__, Phi) # f'' = f

sol1 = sym.dsolve(Eqn1) # Find solution

但是,我尝试了这个 ode f''(x) = exp(f(x)) (解决方案可以用 Wolfram Alpha 检查)

Eqn2 = sym.Eq(Phi__, sym.exp(Phi))  # f'' = exp (f)
sol2 = sym.dsolve(Eqn2) # ERROR

我有一个错误:

NotImplementedError: solve: Cannot solve -exp(Phi(z)) + Derivative(Phi(z), (z, 2))

这是 Sympy 的限制吗?我应该使用其他功能吗?

我不知道您使用的是什么版本的 SymPy,但我使用的是 1.9,我刚刚将所有版本检查回 1.2,并且此 ODE 始终已解决:

In [1]: import sympy as sym
   ...: 
   ...: z = sym.symbols('z', real=True)
   ...: Phi = sym.Function('Phi')(z)
   ...: Phi_ = sym.Derivative(Phi,z)
   ...: Phi__ = sym.Derivative(Phi_,z)
   ...: 
   ...: Eqn1 = sym.Eq(Phi__, Phi) # f'' = f
   ...: 
   ...: sol1 = sym.dsolve(Eqn1) # Find solution

In [2]: sol1
Out[2]: 
           -z       z
Φ(z) = C₁⋅ℯ   + C₂⋅ℯ 

我使用的是 1.6.2 版(2020 年 8 月)。在更新到 1.9 版本后(2021 年 10 月),我终于可以解决第二个问题 f'' = exp(f)。但是,求解器真的很慢。