我不是 sympy 的重度用户,但我让它起作用了 -
问题是当你定义x = sp.Function('x')(t)
你已经得到了
参数t
到它,并且不能再传递0
对于它在行res = sp.dsolve(diffeq, t, ics={x(0): 0, sp.diff(x(t), t).subs(t,0): 0})
-
的召唤x
with (t) 使其成为“定义的函数”。
所以,离开x
作为一个未定义的函数,并且只是传递t
对于它在创建微分方程时需要的点是要走的路:
import sympy as sp
t = sp.symbols('t')
x = sp.Function('x')
diffeq = sp.Eq(x(t).diff(t, t) - x(t), sp.cos(t))
res = sp.dsolve(diffeq, ics={x(0): 0, sp.diff(x(t), t).subs(t,0): 0})
(此外,试图通过t
在第二个参数中 do dsolve 给出了另一个错误。The docs告诉 sympy 应该能够正确猜测它,所以我把它遗漏了 - 只是为了找到正确的参数x(t)
later)
这给了我 res =
Eq(x(t), exp(t)/4 - cos(t)/2 + exp(-t)/4)