这是我编写并提供的代码,下面是我反复收到的错误。我尝试在这段代码中同时使用
y.diff
和 Derivative
函数,但是它们都给了我同样的错误。
#y'-2ty = -t
from sympy import *
t = symbols('t')
y = Function('y')(t)
eqn = (Derivative(y(t)) - (2*t*y(t)), -t)
display(eqn)
ysol = dsolve(eqn,y(t))
print("The solution is ", ysol.lhs, " = ", ysol.rhs)
print("The solution is ")
display(ysol)
错误:
----> 1 ysol = dsolve(eqn,y(t))
TypeError: 'y' object is not callable
线路
y = Function('y')(t)
已经将
y
定义为 t
的函数。当您稍后编写 y(t)
时,您要求 sympy 调用 y
,就好像它是一个函数一样(就像您将 print
函数称为 print(...)
一样)。您有两个选择: (1) 不要将 y
定义为 t
的函数,即
y = Function('y')
进行此更改后,您将不再收到错误。 (2) 保持
y
原样定义,但稍后只写y
而不是y(t)
,即
eqn = (Derivative(y) - (2*t*y), -t)
在你的问题中,你说你尝试过
y.diff()
,但是根据你如何定义y
,这实际上应该有效,所以我猜你确实做到了y(t).diff()
。
现在,你实际上还有另一个问题,那就是你应该将
eqn
定义为一个 sympy 方程,即
eqn = Eq(Derivative(y) - (2*t*y), -t)
如果没有这个,
dsolve
将会抛出一个错误(它需要一个方程)。
还有一个小问题,避免在代码中导入通配符 (
from X import *
)。有些人会做import sympy as smp
或import sympy as sp
或只是import sympy
。然后,你会做y = smp.Function("y")
。