Python 中的Sympy詳細(xì)使用
遇到復(fù)雜計(jì)算找python絕對不讓你失望,sympy是一個(gè)Python的科學(xué)計(jì)算庫,用一套強(qiáng)大的符號計(jì)算體系完成諸如多項(xiàng)式求值、求極限、解方程、求積分、微分方程、級數(shù)展開、矩陣運(yùn)算等等計(jì)算問題。雖然Matlab的類似科學(xué)計(jì)算能力也很強(qiáng)大,但是Python以其語法簡單、易上手、異常豐富的三方庫生態(tài),個(gè)人認(rèn)為可以更優(yōu)雅地解決日常遇到的各種計(jì)算問題。安裝在本博客就不細(xì)講了!
1、表達(dá)式與表達(dá)式求值:
#--------多項(xiàng)式求解--------
#定義變量
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*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的關(guān)系式,
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ù)學(xué)函數(shù)會報(bào)錯(cuò),要用sympy中的,無窮大用 sympy.oo 表示)

#求極限使用limit方法
#定義變量與函數(shù)
x=sympy.Symbol('x')
f1=sympy.sin(x)/x
f2=(1+x)**(1/x)
f3=(1+1/x)**x
#三個(gè)參數(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)
上面的求法有點(diǎn)爛,難的就罷工不干了,我丟,還是喜歡scipy,如下: http://liao.cpython.org/scipy18/ scipy 還能解決很多數(shù)值計(jì)算,包括多重積分。
from scipy import integrate
def f(x):
return x + 1
v, err = integrate.quad(f, 1, 2)# err為誤差
print (v)
以下計(jì)算多重積分:

#求多重積分,先求里面的積分,再求外面的
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、求不定積分
#求不定積分其實(shí)和定積分區(qū)別不大
x=sympy.Symbol('x')
f=(sympy.E**x+2*x)
f_=sympy.integrate(f,x)
print(f_)
8、數(shù)學(xué)符合補(bǔ)充:
#數(shù)學(xué)符合 #虛數(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、公式分離與合并(分?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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為
這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05
Python操作json數(shù)據(jù)的一個(gè)簡單例子
這篇文章主要介紹了Python操作json數(shù)據(jù)的一個(gè)簡單例子,需要的朋友可以參考下2014-04-04
pycharm打開chrome自動(dòng)退出錯(cuò)誤的解決方法
這篇文章主要給大家介紹了關(guān)于pycharm打開chrome自動(dòng)退出錯(cuò)誤的解決方法,文中通過實(shí)例代碼以及圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
pytorch中 gpu與gpu、gpu與cpu 在load時(shí)相互轉(zhuǎn)化操作
這篇文章主要介紹了pytorch模型載入之gpu和cpu互轉(zhuǎn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python + Chrome抓取AJAX動(dòng)態(tài)數(shù)據(jù)的兩種方法
在現(xiàn)代 Web 開發(fā)中,AJAX技術(shù)被廣泛應(yīng)用于動(dòng)態(tài)加載數(shù)據(jù),使得網(wǎng)頁能夠在不刷新的情況下更新內(nèi)容,本文將詳細(xì)介紹 Python + Chrome 如何抓取 AJAX 動(dòng)態(tài)數(shù)據(jù),并提供兩種方法的完整實(shí)現(xiàn)代碼,需要的朋友可以參考下2025-04-04
python 辦公自動(dòng)化——基于pyqt5和openpyxl統(tǒng)計(jì)符合要求的名單
前幾天接到的一個(gè)需求,因?yàn)閷W(xué)校給的名單是青年大學(xué)習(xí)已學(xué)習(xí)的名單,然而要知道未學(xué)習(xí)的名單只能從所有團(tuán)員中再排查一次,過程相當(dāng)麻煩。剛好我也學(xué)過一些操作辦公軟件的基礎(chǔ),再加上最近在學(xué)pyqt5,所以我決定用python寫個(gè)自動(dòng)操作文件的腳本給她用用。2021-05-05
python 模擬創(chuàng)建seafile 目錄操作示例
這篇文章主要介紹了python 模擬創(chuàng)建seafile 目錄操作,結(jié)合實(shí)例形式詳細(xì)分析了Python模擬創(chuàng)建seafile 目錄相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
在Linux上安裝Python的Flask框架和創(chuàng)建第一個(gè)app實(shí)例的教程
這篇文章主要介紹了在Linux上安裝Python的Flask框架和創(chuàng)建第一個(gè)app實(shí)例,包括創(chuàng)建一個(gè)HTML模版和利用Jinja2模板引擎來做渲染的步驟,需要的朋友可以參考下2015-03-03

