SymPy-Lambdify()関数

lambdify関数は、SymPy式をPython関数に変換します。式を広範囲の値で評価する場合、evalf()関数は効率的ではありません。lambdifyはラムダ関数のように機能しますが、SymPy名を指定された数値ライブラリ(通常はNumPy)の名前に変換する点が異なります。デフォルトでは、数学標準ライブラリの実装をlambdifyします。

>>> 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")

上記の関数では、2つの引数aとbに2つのnumpy配列を使用します。numpy配列の場合、実行時間はかなり高速です。

>>> import numpy 
>>> l1=numpy.arange(1,6) 
>>> l2=numpy.arange(6,11) 
>>> f(l1,l2)

上記のコードスニペットは、次の出力を提供します-

array([ 37, 53, 73, 97, 125], dtype=int32)