學習《Python Cookbook》第三版
你寫的最新的網絡認證方案代碼遇到了一個難題,并且你唯一的解決辦法就是使用複數空間。再或者是你僅僅需要使用複數來執行一些計算操作。
複數可以用使用函數 complex(real, imag) 或者是帶有後綴 j 的浮點數來指定。比如:
a = complex(2, 3)
b = 3 - 6j
print(a) # "(2 3j)"
print(b) # "(3-6j)"
對應的實部、虛部和共轭複數可以很容易的獲取。就像下面這樣:
print(a.real) # "2.0"
print(a.imag) # "3.0"
print(a.conjugate()) # "(2-3j)"
另外,所有常見的數學運算都可以工作:
print(a b) # "(5-3j)"
print(a - b) # "(-1 9j)"
print(a * b) # "(24-3j)"
print(a / b) # "(-0.26666666666666666 0.4666666666666667j)"
print(abs(a)) # "3.605551275463989"
如果要執行其他的複數函數比如正弦、餘弦或平方根,使用 cmath 模塊:
import cmath
print(cmath.sin(a)) # "(9.15449914691143-4.168906959966565j)"
print(cmath.cos(a)) # "(-4.189625690968807-9.109227893755337j)"
print(cmath.exp(a)) # "(-7.315110094901103 1.0427436562359045j)"
Python 中大部分與數學相關的模塊都能處理複數。比如如果你使用 numpy ,可以很容易的構造一個複數數組并在這個數組上執行各種操作:
import numpy as np
np_a = np.array([2 3j, 2-5j, 8 9j])
print(np_a) # "[2. 3.j 2.-5.j 8. 9.j]"
print(np_a 2) # "[ 4. 3.j 4.-5.j 10. 9.j]"
print(np.sin(np_a)) # "[ 9.15449915 -4.16890696j 67.47891524 30.87943134j 4008.42651446-589.49948373j]"
Python 的标準數學函數确實情況下并不能産生複數值,因此你的代碼中不可能會出現複數返回值。
如果你想生成一個複數返回結果,你必須顯示的使用 cmath 模塊,或者在某個支持複數的庫中聲明複數類型的使用。比如:
import math
import cmath
# print(math.sqrt(-1)) # 報錯 ValueError: math domain error
print(cmath.sqrt(-1)) # "1j"
我們把形如z=a bi(a,b均為實數)的數稱為複數,其中a稱為實部,b稱為虛部,j稱為虛數單位。當z的虛部等于零時,常稱z為實數;當z的虛部不等于零時,實部等于零時,常稱z為純虛數。
加法法則
複數的加法法則:設z1=a bj,z2=c dj是任意兩個複數。兩者和的實部是原來兩個複數實部的和,它的虛部是原來兩個虛部的和。兩個複數的和依然是複數。
即 (a bj) (c dj) = (a c) (b d)j
減法法則
兩者和的實部是原來兩個複數實部的和,它的虛部是原來兩個虛部的和。兩個複數的和依然是複數。
即 (a bj) (c - dj) = (a - c) (b - d)j
乘法法則
複數的乘法法則:把兩個複數相乘,類似兩個多項式相乘,結果中i2= -1,把實部與虛部分别合并。兩個複數的積仍然是一個複數。
即 (a bj) * (c - dj) = (ac - bd) (bc ad)j
除法法則
運算方法:将分子和分母同時乘以分母的共轭複數,再用乘法法則運算,即
NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!