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)
。但是,求解器真的很慢。
我想用 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)
。但是,求解器真的很慢。