Python使用SymPy时报'Symbol' object is not callable错误如何解决
报错根因
'Symbol' object is not callable报错是因为你使用了SymPy已废弃的特性:旧版本中symbols('x, y', function=True)可以返回可调用的函数对象,新版本中该参数不再生效,返回的是普通符号对象,无法执行x(t)这类函数调用操作。
修复方案
SymPy当前版本专门使用Function类定义可调用的函数符号,修复后的完整代码如下:
from sympy import symbols, Eq, Derivative, Function # 定义自变量t t = symbols('t', real=True) # 定义x、y为绑定自变量t的函数符号 x = Function('x')(t) y = Function('y')(t) # 构造微分方程组 eq = ( Eq(Derivative(x, t), 12*t*x + 8*y), Eq(Derivative(y, t), 21*x + 7*t*y) )
如果需要后续复用未绑定自变量的函数定义,也可以按以下写法声明:
x = Function('x') y = Function('y') # 后续使用时再传入自变量即可,如x(t)、Derivative(x(t), t)
验证
修改后运行代码不会再触发该报错,可直接调用dsolve(eq)求解该微分方程组。
内容的提问来源于stack exchange,提问作者Tatanik501
相关产品推荐
相关产品推荐

