26 符號運算庫SymPy中lambdify的使用

00

lambdify()將表達式轉化為函數

01 單個表達式

import numpy as np
from sympy import *
x=symbols('x')
f=symbols('f',cls=Function)
f_diff=f(x).diff(x)
ss=f_diff.subs(f(x),x*exp(-x**2)).doit()
s_func=lambdify(x,ss,modules='numpy')
s_func(np.array([-1,0,1]))
Out[77]: array([-0.36787944,  1.        , -0.36787944])

02 多個表達式

from sympy import *
a,b,c,x=symbols('a,b,c,x')
roots=solve(a*x**2+b*x+c,x)
roots_func=lambdify((a,b,c),roots)
roots_func(2,-3,1)
Out[79]: [1.0, 0.5]

03 復數

import cmath
from sympy import *
a,b,c,x=symbols('a,b,c,x')
roots=solve(a*x**2+b*x+c,x)
roots_func=lambdify((a,b,c),roots,modules=cmath)
roots_func(2,2,1)
Out[80]: [(-0.5+0.5j), (-0.5-0.5j)]

04 復數(計算數組)

import numpy as np
from sympy import *
a,b,c,x=symbols('a,b,c,x')
roots=solve(a*x**2+b*x+c,x)
roots_func=lambdify((a,b,c),roots,modules='numpy')
A=np.array([2,2,1,2],'D')
B=np.array([1,4,2,1],'D')
C=np.array([1,1,1,2],'D')
roots_func(A,B,C)
Out[93]:
[array([-0.25      +0.66143783j, -0.29289322+0.j        ,
        -1.        +0.j        , -0.25      +0.96824584j]),
 array([-0.25      -0.66143783j, -1.70710678+0.j        ,
        -1.        +0.j        , -0.25      -0.96824584j])]

26 符號運算庫SymPy中lambdify的使用的圖1

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP