我想使用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。
答案 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]))