Sympy ODE求解器初始条件无效

时间:2017-10-27 11:27:05

标签: python sympy ode

我想使用dsolve来解决初始值问题,但初始条件ics似乎没有效果。示例中的dsolve都给出了相同的结果。

from sympy import *
x = symbols('x')
f = Function('f')

eq = Eq(Derivative(f(x), x), f(x))

# No initial condition
pprint(dsolve(eq, f(x)))

# With initial condition f(0) = 1
pprint(dsolve(eq, f(x), ics={f(0):1}))

在这两种情况下,我都得到相同的解决方案

           x
f(x) = C1 ℯ
即使使用C1

1也不会被值ics取代。 Sympy second order ode提到了同情issue 4720,但该问题现已结束。我正在使用SymPy 1.1.1。

1 个答案:

答案 0 :(得分:3)

PR implementing the initial conditions不是SymPy 1.1.1的一部分,但应该是1.2。您可以通过执行

来测试您的SymPy版本是否具有它
from sympy.solvers.ode import solve_ics

(如果它抛出错误,除了电源系列之外,你没有ICS支持)。除了您提到的帖子之外,我的answer还简要讨论了如何使用solve(在不同情况下有不同类型的习惯)来查找和替换常量。

eq = Eq(Derivative(f(x), x), f(x))
sol = dsolve(eq, f(x)).rhs
constants = solve([sol.subs(x,0)-1], dict=True)
print(sol.subs(constants[0]))