SymPy符号变量调用np.sin触发Add对象无sin属性报错求助
错误原因
- 导入库不匹配:你代码中使用
var()定义符号变量是符号计算库sympy的功能,但你导入的是simpy(离散事件仿真库),二者完全不同。 - 数学函数不兼容符号运算:
math、numpy模块下的三角函数、开方函数仅支持数值类型输入,无法处理sympy定义的符号对象,会触发类型报错。
修复后可正常运行的代码
import numpy as np import matplotlib.pyplot as plt import sympy as sp from sympy import init_printing, var, sin, pi, sqrt init_printing() var('x,y,z') a = sqrt(10/7) c = (y - sqrt(18/7) - 1) b = sin(pi/2 * c) - z f = lambda x,y,z: x**2 + y**2 + z**2 - 4 g = lambda x, y, z: (9/2)*(x**2 + z**2) + y**2 - 9 h = lambda y, z: sqrt(10/7) * sin((pi/2) * y - sqrt(18/7) - 1) - z F = [[f(x, y, z)], [g(x, y, z)], [h(y, z)]]
改动说明
- 将
import simpy as sp替换为import sympy as sp,同时导入sympy内置的init_printing、sin、pi、sqrt等符号运算工具 - 移除所有
math.、np.前缀的数学函数调用,统一使用sympy提供的符号运算版本,适配符号变量的计算需求 - 原有业务逻辑完全保留,仅修正了工具库调用错误
内容的提问来源于stack exchange,提问作者Piteco
相关产品推荐
相关产品推荐

