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

工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















