SymPy中如何使用多变量函数?lambdify调用多变量报错怎么解决
问题修复方案
报错原因
你触发报错的核心原因是lambdify函数的传参格式不符合要求:
SymPy的lambdify标准调用规则为lambdify(变量/变量列表, 待转换的SymPy表达式, 可选后端模块),多变量场景下需要把所有输入变量打包为列表/元组作为第一个参数传入。你原有代码中,把单个符号x作为第一个参数、y作为本该放表达式的第二个参数,原本的表达式x*y被传到了本该传入模块参数的第三个位置,因此触发了类型错误。
修复后代码
from sympy import symbols, lambdify x, y = symbols("x y") f_expr = x * y # 多变量打包为列表作为第一个入参,第二个入参传入待转换的表达式 f = lambdify([x, y], f_expr) print(f(3, 3))
运行上述代码将正常输出结果9。
额外说明
- 单变量场景下不需要把变量打包为列表,直接传入单个符号作为第一个参数即可,这也是你之前单变量代码可以正常运行的原因
- 如果需要批量代入多组输入求值,可以直接传入numpy数组,
lambdify默认支持numpy广播运算,示例如下:
import numpy as np xs = np.array([1, 2, 3]) ys = np.array([4, 5, 6]) print(f(xs, ys)) # 输出 [ 4 10 18]
内容的提问来源于stack exchange,提问作者SuperComputer29
相关产品推荐
相关产品推荐

