Python 與複數計算

Python支援複數的運算,只是在數學當中的複數,我們是用「i」來表示虛數的部份,而在Python當中則是用「j」或是「J」來表示。

什麼叫做複數?如果有人已經忘掉了,那就在這裡簡單說明一下。

複數的英文是 complex number ,它將數字分成實部與虛部兩個部份,任何一個數,都是由這兩個部份所組成的。1484年的法國數學家舒開在他的算術三篇當中解二次方程式4+x2=3x,得到的結果卻是一個負數的平方根,因此他認為這樣的結果是無解,因為沒有一個數的平方會是負數。

為了解決這樣的問題,後來的數學家提出了虛數的概念,但是卻仍然遭受到廣大數學家的不接受,17世紀笛卡兒就稱負數的方根為虛數,也就是子虛烏有的數;只不過18世紀初期棣美弗及歐拉大力推動複數,最終還是讓負數這個觀念慢慢的被人們接受。

複數的符號表示相當的簡單,通常寫作:a+bi,這裡的a跟b是實數,而i是虛單位,最重要的性質就是 i2=-1,因此我們可以知道,所謂的實數,其實就是虛部為零的複數。

因為複數的英文就是 complex number,所以在Python要表示複數就可以使用:complex(x, y)來表示。x代表實部的數字,y代表虛部的數字,也就是說:

complex(2, 6) = 2 + 6i

不過剛剛有說過,在Python當中是以j來代表i,所以print結果後所看到的輸出內容應該是 2+ 6j,非常簡單吧~

當然,另外一個很簡單而且直觀的表示法,就是直接打上複數的表示式,例如:n = 2 + 6j,這樣一來,n就成了一個複數,你可以使用 n.real 來取出實部的數、使用 n.imag 來取出虛部的數,例如:

a = 1.5+0.5j
print a.real
print a.imag

複數也可以使用四則運算,方法如下:

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)

不過要注意的是,複數並沒有辦法直接使用float()int()、或是long()轉換成浮點數或是整屬,基本上,複數這種東西並沒友直接對應的實數,因此你得使用abs(a)或是先前所提到的a.real來取得實部的數字,當然這兩種作法出來的結果並不一樣。

Leave a comment