Python 中的Sympy詳細使用
遇到復雜計算找python絕對不讓你失望,sympy是一個Python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數(shù)展開、矩陣運算等等計算問題。雖然Matlab的類似科學計算能力也很強大,但是Python以其語法簡單、易上手、異常豐富的三方庫生態(tài),個人認為可以更優(yōu)雅地解決日常遇到的各種計算問題。安裝在本博客就不細講了!
1、表達式與表達式求值:
#--------多項式求解-------- #定義變量 x=sympy.Symbol('x') fx=5*x+4 #使用evalf函數(shù)傳值 y1=fx.evalf(subs={x:6}) print(y1)
#多元表達式 x=sympy.Symbol('x') y=sympy.Symbol('y') fx=x*x+y*y result=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的關系式, print(sympy.solve(fx,x,y))
#解方程組 #定義變量 x=sympy.Symbol('x') y=sympy.Symbol('y') f1=x+y-3 f2=x-y+5 sympy.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-15 result=sympy.solve(f,x) print(result)
4、求極限(注意,math包中sin和很多數(shù)學函數(shù)會報錯,要用sympy中的,無窮大用 sympy.oo 表示)
#求極限使用limit方法 #定義變量與函數(shù) x=sympy.Symbol('x') f1=sympy.sin(x)/x f2=(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、求導
#求導使用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_) #求偏導 y=sympy.Symbol('y') f3=2*x**2+3*y**4+2*y #對x,y分別求導,即偏導 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 integrate def f(x): return x + 1 v, err = integrate.quad(f, 1, 2)# err為誤差 print (v)
以下計算多重積分:
#求多重積分,先求里面的積分,再求外面的 x,t=sympy.symbols('x t') f1=2*t f2=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ù)學符合補充:
#數(shù)學符合 #虛數(shù)單位i sympy.I #自然對數(shù)低e sympy.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**2 ff=sympy.expand(f) print(ff) #公式折疊用factor方法 f=x**2+1+2*x ff=sympy.factor(f) print(ff)
10、公式分離與合并(分數(shù)的分離與合并)
x=sympy.Symbol('x') y=sympy.Symbol('y') #公式展開用apart方法,和expand區(qū)別不是很大,常用于分數(shù)進行分離 f=(x+2)/(x+1) ff=sympy.apart(f) print(ff) #公式折疊用tegother方法 f=(1/x+1/y) ff=sympy.together(f) print(ff)
11、表達式簡化
#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)
到此這篇關于Python 中的Sympy詳細使用的文章就介紹到這了,更多相關Python Sympy使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python dataclass 快速創(chuàng)建數(shù)據(jù)類的方法
在Python中,dataclass是一種用于快速創(chuàng)建數(shù)據(jù)類的裝飾器和工具,本文實例代碼中我們定義了一個Person數(shù)據(jù)類,并使用fields()函數(shù)遍歷其字段,打印出每個字段的名稱、類型、默認值和元數(shù)據(jù),對python dataclass 數(shù)據(jù)類相關知識感興趣的朋友一起看看吧2024-03-03python Tcp協(xié)議發(fā)送和接收信息的例子
今天小編就為大家分享一篇python Tcp協(xié)議發(fā)送和接收信息的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python函數(shù)命名空間,作用域LEGB及Global詳析
這篇文章主要介紹了Python函數(shù)命名空間,作用域LEGB及Global詳析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-09-09Python高級數(shù)據(jù)分析之pandas和matplotlib繪圖
Matplotlib是一個強大的Python繪圖和數(shù)據(jù)可視化的工具包,下面這篇文章主要給大家介紹了關于Python高級數(shù)據(jù)分析之pandas和matplotlib繪圖的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05python讀取當前目錄下的CSV文件數(shù)據(jù)
這篇文章主要為大家詳細介紹了python讀取當前目錄下的CSV文件數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03Python操作excel的方法總結(xlrd、xlwt、openpyxl)
這篇文章主要給大家介紹了關于Python操作excel的一些方法,其中包括xlrd、xlwt、openpyxl的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-09-09