Python 中的Sympy詳細(xì)使用
遇到復(fù)雜計算找python絕對不讓你失望,sympy是一個Python的科學(xué)計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數(shù)展開、矩陣運算等等計算問題。雖然Matlab的類似科學(xué)計算能力也很強大,但是Python以其語法簡單、易上手、異常豐富的三方庫生態(tài),個人認(rèn)為可以更優(yōu)雅地解決日常遇到的各種計算問題。安裝在本博客就不細(xì)講了!
1、表達(dá)式與表達(dá)式求值:
#--------多項式求解--------#定義變量x=sympy.Symbol(’x’)fx=5*x+4#使用evalf函數(shù)傳值y1=fx.evalf(subs={x:6})print(y1)
#多元表達(dá)式x=sympy.Symbol(’x’)y=sympy.Symbol(’y’)fx=x*x+y*yresult=fx.evalf(subs={x:3,y:4})print(result)
2、函數(shù)方程求解:
#解方程 有限解#定義變量x=sympy.Symbol(’x’)y=sympy.Symbol(’y’)fx=x*3+9#可求解直接給出解向量print(sympy.solve(fx,x))
#解方程無窮多解#定義變量x=sympy.Symbol(’x’)y=sympy.Symbol(’y’)fx=x*3+y**2#得到是x與y的關(guān)系式,print(sympy.solve(fx,x,y))
#解方程組#定義變量x=sympy.Symbol(’x’)y=sympy.Symbol(’y’)f1=x+y-3f2=x-y+5sympy.solve([f1,f2],[x,y])
3、求和
import sympy#定義變量n=sympy.Symbol(’n’)f=2*n#前面參數(shù)放函數(shù),后面放變量的變化范圍s=sympy.summation(f,(n,1,100))print(s)
解帶有求和式的方程 :
#解釋一下,i可以看做是循環(huán)變量,就是x自己加五次#先定義變量,再寫出方程x=sympy.Symbol(’x’)i=sympy.Symbol(’i’)f=sympy.summation(x,(i,1,5))+10*x-15result=sympy.solve(f,x)print(result)
4、求極限(注意,math包中sin和很多數(shù)學(xué)函數(shù)會報錯,要用sympy中的,無窮大用 sympy.oo 表示)
#求極限使用limit方法#定義變量與函數(shù)x=sympy.Symbol(’x’)f1=sympy.sin(x)/xf2=(1+x)**(1/x)f3=(1+1/x)**x#三個參數(shù)是 函數(shù),變量,趨向值lim1=sympy.limit(f1,x,0)lim2=sympy.limit(f2,x,0)lim3=sympy.limit(f3,x,sympy.oo)print(lim1,lim2,lim3)
5、求導(dǎo)
#求導(dǎo)使用diff方法x=sympy.Symbol(’x’)f1=2*x**4+3*x+6#參數(shù)是函數(shù)與變量f1_=sympy.diff(f,x)print(f1_) f2=sympy.sin(x)f2_=sympy.diff(f2,x)print(f2_) #求偏導(dǎo)y=sympy.Symbol(’y’)f3=2*x**2+3*y**4+2*y#對x,y分別求導(dǎo),即偏導(dǎo)f3_x=sympy.diff(f3,x)f3_y=sympy.diff(f3,y)print(f3_x)print(f3_y)
6、求定積分
#求定積分用 integrate方法x=sympy.Symbol(’x’)f=2*x#參數(shù)傳入 函數(shù),積分變量和范圍result=sympy.integrate(f,(x,0,1))print(result)
上面的求法有點爛,難的就罷工不干了,我丟,還是喜歡scipy,如下: http://liao.cpython.org/scipy18/ scipy 還能解決很多數(shù)值計算,包括多重積分。
from scipy import integratedef f(x): return x + 1v, err = integrate.quad(f, 1, 2)# err為誤差print (v)
以下計算多重積分:
#求多重積分,先求里面的積分,再求外面的x,t=sympy.symbols(’x t’)f1=2*tf2=sympy.integrate(f1,(t,0,x))result=sympy.integrate(f2,(x,0,3))print(result)
7、求不定積分
#求不定積分其實和定積分區(qū)別不大x=sympy.Symbol(’x’)f=(sympy.E**x+2*x)f_=sympy.integrate(f,x)print(f_)
8、數(shù)學(xué)符合補充:
#數(shù)學(xué)符合#虛數(shù)單位isympy.I#自然對數(shù)低esympy.E#無窮大sympy.oo#圓周率sympy.pi#求n次方根sympy.root(8,3)#求對數(shù)sympy.log(1024,2)#求階乘sympy.factorial(4)#三角函數(shù)sympy.sin(sympy.pi)sympy.tan(sympy.pi/4)sympy.cos(sympy.pi/2)
9、公式展開與折疊
x=sympy.Symbol(’x’)#公式展開用expand方法f=(1+2*x)*x**2ff=sympy.expand(f)print(ff)#公式折疊用factor方法f=x**2+1+2*xff=sympy.factor(f)print(ff)
10、公式分離與合并(分?jǐn)?shù)的分離與合并)
x=sympy.Symbol(’x’)y=sympy.Symbol(’y’)#公式展開用apart方法,和expand區(qū)別不是很大,常用于分?jǐn)?shù)進(jìn)行分離f=(x+2)/(x+1)ff=sympy.apart(f)print(ff)#公式折疊用tegother方法f=(1/x+1/y)ff=sympy.together(f)print(ff)
11、表達(dá)式簡化
#simplify( )普通的化簡simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))#trigsimp( )三角化簡trigsimp(sin(x)/cos(x))#powsimp( )指數(shù)化簡powsimp(x**a*x**b)
到此這篇關(guān)于Python 中的Sympy詳細(xì)使用的文章就介紹到這了,更多相關(guān)Python Sympy使用內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 詳解CSS偽元素的妙用單標(biāo)簽之美2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法3. HTML5 Canvas繪制圖形從入門到精通4. XHTML 1.0:標(biāo)記新的開端5. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究6. 利用CSS3新特性創(chuàng)建透明邊框三角7. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實現(xiàn)代碼8. ASP基礎(chǔ)知識VBScript基本元素講解9. JSP的Cookie在登錄中的使用10. XML入門的常見問題(四)
