SymPy Lambdify()函数
lambdify()函数将SymPy表达式转化为Python函数。如果一个表达式需要在大范围的数值上计算,使用evalf()函数效率不高。lambdify()函数类似于lambda函数,不同之处在于它将SymPy的名字转换为给定数值库(通常是NumPy)的名称。默认情况下,lambdify()函数在math标准库中实现。
>>> expr=1/sin(x)
>>> f=lambdify(x, expr)
>>> f(3.14)
以上代码片段产生了以下输出 –
627.8831939138764
表达式可能有多个变量。在这种情况下,lambdify()函数的第一个参数是一个变量列表,其后是要评估的表达式。
>>> expr=a**2+b**2
>>> f=lambdify([a,b],expr)
>>> f(2,3)
上述代码片段给出了以下输出:
13
然而,为了利用numpy库作为数值后端,我们必须将其定义为lambdify()函数的参数。
>>> f=lambdify([a,b],expr, "numpy")
我们在上述函数中使用了两个numpy数组作为参数a和b。使用numpy数组执行时间相当快。
>>> import numpy
>>> l1=numpy.arange(1,6)
>>> l2=numpy.arange(6,11)
>>> f(l1,l2)
以上代码片段给出了以下输出−
array([ 37, 53, 73, 97, 125], dtype=int32)