複數

複數

簡單

說明

複數是一種形如 a + b * i 的數,其中 a 和 b 是實數,且 i 滿足 i^2 = -1。

a 稱為 z 的實部,b 稱為 z 的虛部。 a + b * i 的共軛複數是 a - b * i。 複數 z = a + b * i 的絕對值是實數 |z| = sqrt(a^2 + b^2)。絕對值的平方 |z|^2 是 z 與其共軛複數相乘的結果。

兩個複數的和/差,就是分別將它們的實部和虛部相加/相減: (a + i * b) + (c + i * d) = (a + c) + (b + d) * i, (a + i * b) - (c + i * d) = (a - c) + (b - d) * i。

乘法結果依定義為 (a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i。

非零複數的倒數是 1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i。

將複數 a + i * b 除以另一個複數 c + i * d 會得到: (a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i。

將 e 取複數次方可以表示成 e^(a + i * b) = e^a * e^(i * b),其中最後一項由歐拉公式 e^(i * b) = cos(b) + i * sin(b) 給出。

請實作以下運算:

  • 兩個複數的加、減、乘、除,
  • 給定複數的共軛、絕對值與指數。

假設你使用的程式語言沒有內建複數的實作。


出處

Wikipedia連結會在新視窗或分頁中開啟
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Haskell Exercism

準備好開始 複數 了嗎?

註冊 Exercism,透過 107 個練習 和真人引導來學習並精通 Haskell,全部免費。