SymPy - função Lambdify ()
A função lambdify traduz expressões SymPy em funções Python. Se uma expressão deve ser avaliada em um grande intervalo de valores, a função evalf () não é eficiente. lambdify atua como uma função lambda, exceto que converte os nomes SymPy para os nomes da biblioteca numérica fornecida, geralmente NumPy. Por padrão, lambdify em implementações na biblioteca de padrões matemáticos.
>>> expr=1/sin(x)
>>> f=lambdify(x, expr)
>>> f(3.14)
O trecho de código acima fornece a seguinte saída -
627.8831939138764
A expressão pode ter mais de uma variável. Nesse caso, o primeiro argumento para a função lambdify () é uma lista de variáveis, seguida pela expressão a ser avaliada.
>>> expr=a**2+b**2
>>> f=lambdify([a,b],expr)
>>> f(2,3)
O trecho de código acima fornece a seguinte saída -
13
No entanto, para aproveitar a biblioteca numpy como backend numérico, temos que definir o mesmo como um argumento para a função lambdify ().
>>> f=lambdify([a,b],expr, "numpy")
Usamos duas matrizes numpy para dois argumentos aeb na função acima. O tempo de execução é consideravelmente rápido no caso de arrays entorpecidos.
>>> import numpy
>>> l1=numpy.arange(1,6)
>>> l2=numpy.arange(6,11)
>>> f(l1,l2)
O trecho de código acima fornece a seguinte saída -
array([ 37, 53, 73, 97, 125], dtype=int32)