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:utf-8
from sympy import *
from pprint import pprint
print(e**(i*pi)+1)
# 0#為了用sympy求證上面的公式,需要引入變數x,在sympy中,數學符號是
#symbol類的物件,所以先要建立
x=symbol('x')
#expand函式可以將公式展開,
print(expand(e**(i*x)))
# exp(i*x)
# exp不是math.exp或者numpy.exp,而是sympy.exp,它
# 是乙個類,用來表述自然指數函式
# expand函式有關鍵字引數complex,當它為true時,expand將把公式
#分為實數和虛數兩個部分
print(expand(exp(i*x),complex=true))
# i*exp(-im(x))*sin(re(x)) + exp(-im(x))*cos(re(x))
#顯然這裡將符號x當作複數了,指定符號x必須為實數。
x=symbol('x',real=true)
print(expand(exp(i*x),complex=true))
# i*sin(x) + cos(x)
# 用泰勒多項式展開
tmp=series(exp(i*x),x,0,10)
pprint(tmp)
"""1 + i*x - x**2/2 - i*x**3/6 + x**4/24 + i*x**5/120 - x**6/720 - i*x**7/5040 +
x**8/40320 + i*x**9/362880 + o(x**10)
"""# 分別獲得tmp的實部和虛部,分別和cos和sin的展開公式進行比較
pprint(re(tmp))
"""x**8/40320 - x**6/720 + x**4/24 - x**2/2 + re(o(x**10)) + 1
"""pprint(series(cos(x),x,0,10))
"""1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + o(x**10)
"""pprint(im(tmp))
"""x**9/362880 - x**7/5040 + x**5/120 - x**3/6 + x + im(o(x**10))
"""pprint(series(sin(x),x,0,10))
"""x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880 + o(x**10)
"""
使用scipy數值積分可以計算球體體積,而sympy的符號積分函式integrate則可以幫助我們進行符號積分。
integrate進行不定積分:
in [3]: x=symbol('x')
in [4]: integrate(x*sin(x),x)
out[4]: -x*cos(x) + sin(x)
如果指定x的取值範圍的話,integrate則進行定積分運算:
in [5]: integrate(x*sin(x),(x,0,2*pi))
out[5]: -2*pi
計算球體體積。
y(x)=(r*r-x*x)**0.5
in [11]: #建立多個符號
in [12]: x,y,y=symbols('x,y,r')
in [13]: r=symbols('r',positive=true)
in [14]: #定義r大於0
in [18]: circle_area=2*integrate(sqrt(r**2-x**2),(x,-r,r))
in [19]: circle_area
out[19]: pi*r**2
in [16]: #得到了球與x-y平面軸交線圓的面積
in [17]: #因為球體積是對切面進行積分,所以替換r為切面方程
in [21]: circle_area=circle_area.subs(r,sqrt(r**2-x**2))
in [22]: circle_area
out[22]: pi*(r**2 - x**2)
in [23]: integrate(circle_area,(x,-r,r))
out[23]: 4*pi*r**3/3
用Python做科學計算
python是一種物件導向的 動態的程式語言,具有非常簡潔而清晰的語法,既可以用於快速開發程式指令碼,也可以用於開發大規模的軟體,特別適合於完成各種高層任務。隨著numpy,scipy,matplotlib,enthought librarys等眾多程式庫的開發,python越來越適合於做科學計算。...
用python進行階乘計算
問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...
python科學計算 numpy
畢設的程式設計中使用了python來處理資料,主要使用的是numpy包,網上大部分對numpy進行介紹的教程比較老舊,想要使用的功能不太容易找到。因此,寫這篇文章來對現有的一些資源就行整理,當然想要更全面的了解numpy的使用還是從訪問官方手冊開始。win下 pip isntall numpy當然最...