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)