複數

複數

中等

說明

複數表示為 z = a + b * i 的形式,其中:

  • a是實部(一個實數),

  • b是虛部(同樣是一個實數),

  • i是滿足i^2 = -1的虛數單位。

複數的運算

共軛

複數z = a + b * i的共軛為:

zc = a - b * i

絕對值

z的絕對值(或模)定義為:

|z| = sqrt(a^2 + b^2)

絕對值的平方,等於z與其共軛zc的乘積:

|z|^2 = z * zc = a^2 + b^2

加法

兩個複數z1 = a + b * i與z2 = c + d * i的和,就是把各自的實部與虛部分別相加:

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

減法

兩個複數的差,就是把對應的部分相減:

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

乘法

兩個複數的乘積定義為:

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

倒數

非零複數的倒數為:

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

除法

一個複數除以另一個複數的結果為:

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

指數運算

將 e(自然對數的底數)取複數次方,可以用歐拉公式表示:

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

實作要求

由於不能使用內建的複數支援,請實作下列運算:

  • 兩個複數的加法
  • 兩個複數的減法
  • 兩個複數的乘法
  • 兩個複數的除法
  • 複數的共軛
  • 複數的絕對值
  • 將 e(自然對數的底數)取複數次方的指數運算

出處

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

準備好開始 複數 了嗎?

註冊 Exercism,透過 19 個概念100 個練習 和真人引導來學習並精通 C++,全部免費。