Я не большой пользователь 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
с (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 дает еще одну ошибку. Документация скажите, что sympy должен быть в состоянии правильно угадать его, поэтому я пропустил это - только для того, чтобы найти правильный аргумент, будет x(t)
позже)
Это дает мне res =
Eq(x(t), exp(t)/4 - cos(t)/2 + exp(-t)/4)