如何向sympy生成的导数函数中代入数值计算结果?
实现方法分为两种常见场景:
1. 单次少量数值代入:使用subs方法
直接对求导得到的符号表达式调用.subs(变量名, 数值)即可得到计算结果,示例代码如下:
import sympy def ham(): x = sympy.Symbol("x") return x**3 + x**2 + 1 # 求导得到符号形式的导数表达式 deriv_expr = sympy.diff(ham()) # 代入x=3计算结果 res = deriv_expr.subs('x', 3) print(deriv_expr) # 输出:3*x**2 + 2*x print(res) # 输出:33
如果需要同时代入多个变量,可传入字典格式:deriv_expr.subs({x:3, y:2})。
2. 多次代入/批量数值计算:使用lambdify转成可调用函数
如果需要频繁代入不同数值计算,subs执行效率较低,推荐用sympy.lambdify将符号表达式转换为普通Python可调用函数,调用方式和普通函数完全一致,还支持传入numpy数组批量计算:
import sympy import numpy as np x = sympy.Symbol("x") origin_expr = x**3 + x**2 + 1 deriv_expr = sympy.diff(origin_expr) # 转换为可调用函数 deriv_func = sympy.lambdify(x, deriv_expr) # 单次调用 print(deriv_func(3)) # 输出:33 # 批量传入数组计算 print(deriv_func(np.array([1,2,3]))) # 输出:[ 5 16 33]
内容的提问来源于stack exchange,提问作者Znone
相关产品推荐
相关产品推荐

