資料科學之sympy庫

2022-01-19 06:28:52 字數 3555 閱讀 2774

sympy是乙個python的科學計算庫,用一套強大的符號計算體系完成諸如多項式求值、求極限、解方程、求積分、微分方程、級數展開、矩陣運算等等計算問題。

python以其語法簡單、易上手、豐富的三方庫生態,個人認為可以更優雅地解決日常生活、工作遇到的各種計算問題。

安裝:

pip install sympy

虛數單位i

sympy.i

#i平方

sympy.i**2

-1的平方根

sympy.sqrt(-1)

自然對數的底e:

print(sympy.log(sympy.e))

無窮大oo:

print(sympy.oo)

圓周率:

print(sympy.pi)

求n次方根 root(8,4)即求8的4次方根:

rst = sympy.root(8,4)

print(rst)

求k次方以及階乘

print(2**3) #

2的3次方

print(sympy.factorial(5)) #

求5的階乘

求三角函式

print(sympy.sin(sympy.pi/2))

表示式與表示式求值

sympy可以用一套符號系統來表示乙個表示式,如函式、多項式等,並且可以進行求值。

x = sympy.symbol('x'

)fx = 2*x + 1

print(type(fx)) #

檢視fx的型別

f = fx.evalf(subs=) #

傳入乙個x的值,求出fx

print(f)

多元方程求解:

x1,y = sympy.symbols('

x1 y')

f1 = 2 * x1 +y

f1 = f1.evalf(subs = ) #

傳入自變數值求出因變數值

print(f1)

求解方程:solve()

使用sympy.solve函式解方程,該函式通常傳入兩個引數,

第1個引數是方程的表示式(把方程所有的項移到等號的同一邊形成的式子),

第2個引數是方程中的未知數。函式的返回值是乙個列表,代表方程的所有根(可能為複數根)

解普通方程:

首先定義x為乙個符號,代表乙個未知數

x = sympy.symbol('

x')

解方程:x - 6 = 0 返回乙個解組成的列表

print(sympy.solve(x - 6,x))

解方程組

x,y = sympy.symbols('

x y'

)print(sympy.solve([x-y-8,x+y-2],[x,y]))

#第乙個引數傳入的方程組(也就是表示式),

#第二個引數傳入的是方程組的變數,兩個引數都是以列表形式傳入

求和:summation(a,b)

第乙個引數傳入求和的表示式,第二個引數以元組形式傳入求和的相關資訊

第二個引數的元組的第乙個引數是變數、第二個引數是變數起始、第三個引數是變數上限。

n = sympy.symbol('n'

)print(sympy.summation(2 * n, (n,1,100)))

解帶有求和式的方程

x = sympy.symbol('

x') #

宣告符號變數

i = sympy.symbol('

i',integer =true)

f = sympy.summation(x,(i,1,5)) + 10 * x - 15 #

構造表示式

reslute = sympy.solve(f,x) #

第乙個引數是表示式,第二個是變數;求解結果

print(reslute)

求極限:

x = sympy.symbol('x'

)f1 = sympy.sin(x)/x #

宣告表示式

sympy.limit(f1,x,0) #

求解表示式是f1,變數x趨於0的極限

求導:

x= sympy.symbol('x'

)f = x**2+2*x+1

print

(sympy.diff(f,x))

#第乙個引數是表示式,第二個引數是符號變數、返回乙個型別的結果

多元函式求偏導

y = sympy.symbol('y'

)f3 = x**2+2*x+y**4

print(sympy.diff(f3,x)) #

對x求偏導

print(sympy.diff(f3,y)) #

對y求偏導

求定積分:sympy.integrate函式:

第乙個引數填入被積表示式,第二個引數填入乙個元組【元組的第乙個引數是變數、第二個引數是下限、第二個引數是上限】

#求解複雜積分的時候,遵循變數巢狀原則

x = sympy.symbol('x'

)f = 2 *x

print(sympy.integrate(f,(x,0,1)))

求解不定積分:簡單來說不定積分就是沒有上下限的積分:

x = sympy.symbol('x'

)f = sympy.exp(x)+3**2+sympy.log(x)

print

(sympy.integrate(f,x))

#求不定積分,此時第二個引數填入的不再是元組,而是直接傳入變數,因為沒有上下限。當然也可以作為元組形式傳入元組

求解微分方程 y』=4xy [即(dy/dx) = 4xy] :

#

定義符號變數

x=sympy.symbol('x'

) #定義符號函式、f可以與x構成函式方程f(x)、因為x就是自變數、f是因變數。

f = sympy.function('f'

)fx =sympy.diff(f(x),x)

print(sympy.dsolve(fx-2*x*f(x),f(x)))

#dsolve函式第乙個引數傳入微分方程表示式,第二個引數傳入函式【f與x構成的函式f(x)】

矩陣操作交給numpy還是比較習慣numpy.

《用Python進行科學計算》 SymPy

sympy是python的數學符號計算庫,用它可以進行數學公式的符號推導。e i 1 0 e是自然指數的底,i是虛數單位,是圓周率。驗證這個公式 from sympy import print e i pi 1 0尤拉恒等式可以用下面的公式運算 e ix cos x i sin x coding u...

python 資料科學相關庫

spring cloud 實戰 乾貨 mybatis 實戰 乾貨 spring boot 實戰 乾貨 react 入門實戰 乾貨 構建中小型網際網路企業架構 乾貨 python 學習持續更新 elasticsearch 筆記 kafka storm 實戰 乾貨 scala 學習持續更新 rpc最受歡...

科學計算庫之pandas高階

pd.to datetime實現日期字串轉日期 pd.to datetime str 字串型別物件轉換成日期型別物件 pd.date range生成日期序列 pd.date range start none,end none,periods none,freq d start 起始日期,字串 end...