sympy特點及簡單使用

2021-10-02 03:29:42 字數 2954 閱讀 5422

sympy庫對於需要進行數**算的python開發者非常友好,它不僅擁有比math、numpy等庫更高的運算精度,還具有更強大的符號運算能力,能夠輕鬆對表示式進行簡化、積分、求導等操作,堪稱居家旅行,養家餬口之利器。下面直接用**進行說明。

直接在anaconda prompt中用pip install sympy進行安裝即可,網路條件不好時可能報錯,多試幾次就能成功。

print

(math.sqrt(2)

**2)print

(np.sqrt(2)

**2)print

(sympy.sqrt(2)

**2)

執行結果為:

# 2.0000000000000004

# 2.0000000000000004

# 2

2

\sqrt

2​作為乙個無理數,如若計算精度不高(即保留的精度不夠多),計算結果就會有所失真,對於實數運算來說,這點誤差可能不足掛齒,但若是針對整數運算,則可能得出完全不同的結果。

從運算結果可以看出,math和numpy的運算結果帶有乙個很小的誤差,而sympy的計算結果在當前的精度下是準確的,具有較高的計算精度。

sympy可以對各種表示式進行簡化,且使用簡便,如下:

from sympy import

*x,y,z,a,b,c = symbols(

'x,y,z,a,b,c'

)f =(2

/3)*x**2+

(1/3

)*x**

2+ x + x +

1print

(simplify(f)

)print

(f.simplify(

))

執行結果:

# 1.0*x**2 + 2*x + 1

# 1.0*x**2 + 2*x + 1

兩種方法等價,結果相同。其中symbols方法用以將字串轉換為代表變數的物件。

f=

(x+1)**

2print

(expand(f)

)print

(f.expand(

))

結果為:

# x**2 + 2*x + 1
f1 =

2*x - y + z -

10f2 =

3*x +

2*y - z -

16f3 = x +

6*y -z -

28print

(solve(

[f1,f2,f3]

))

sympy可以自動求解由f1、f2和f3三個表示式構成的齊次方程組的解。計算結果為:

#
print

(diff(sin(

2*x)

), x,1)

print

(sin(

2*x)

.diff(x)

)

diff方法用於對表示式進行求導操作,其中第乙個引數為需要求導的表示式,第二個引數為自變數,第三個引數為求導的次數。執行結果為:

#2*cos(2*x) x 1
不定積分與求導互為反操作。

f =

3*x**2+

1print

(integrate(f,x)

)

結果為:

#x**3 + x
from scipy.stats import bernoulli

p_i =

1.0/

2fp = bernoulli(p_i)

#產生伯努利分布的隨機變數

xs = fp.rvs(

200)

#產生200個樣本

print

(xs[:30

])

呼叫scipy庫中的bernoulli方法獲得隨機變數,並顯示前30個樣本值。

[10

0011

1011

0011

0100

0110

0110

1110

]

import sympy

import numpy as np

x,p,z = sympy.symbols(

'x p z'

,positive=

true

)#positive=true表示xpz中的引數都是正數

phi = p**x*(1

-p)**(1

-x)#分布函式

l = np.prod(

[phi.subs(x,i)

for i in xs]

)print

(l)

其中subs方法用於置換操作,即將表示式phi中的x用i代替,而i則是存放隨機變數值得列表xs中的值。結果為:

#p**262*(1 - p)**238
#對表示式取對數

logl = sympy.expand_log(sympy.log(l)

)#對表示式求一階導,並使之為0,此時x即為使似然函式最大的值

sol = sympy.solve(sympy.diff(logl,p)

)print

(sol)

如果樣本數量足夠多,試驗結果將於真實值無限接近。極大似然估計多用於對類條件概率的估計。執行結果為:

#[12/25]

安裝和使用sympy

3 解開壓縮包,找到sympy包所在的資料夾,如圖。4 在上面所示的資料夾內,開啟命令列視窗,執行 pip install sympy 出現下圖,匯入包結束。5 示例 import sympy a,b 500,600 print a,b numbers range a,b prime numbers...

索引的特點及使用

1.1 索引特點 第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時...

MylSAM引擎的特點及場景使用

1.什麼是mylsam引擎 myisam引擎是mysql關聯式資料庫管理系統的預設儲存引擎 mysql5.5版本以前 這種mysql 表儲存結構從舊的isam 擴充套件出許多有用的功能。在新版本的mysql中,innodb引擎由於其對事物參照完整性,以及更高的併發性等優點開始逐步的取代myisam引...