複素数

複素数

中級

説明

複素数は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)

絶対値の2乗は、zとその共役zcの積として計算されます。

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

加法

2つの複素数z1 = a + b * iとz2 = c + d * iの和は、それぞれの実部と虚部を別々に足し合わせて計算します。

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

減法

2つの複素数の差は、それぞれの実部と虚部を引いて求めます。

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

乗法

2つの複素数の積は、次のように定義されます。

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

逆数

0ではない複素数の逆数は、次のように表されます。

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))

実装の要件

複素数の組み込みサポートは使わないという前提で、次の演算を実装してください。

  • 2つの複素数の加法
  • 2つの複素数の減法
  • 2つの複素数の乗法
  • 2つの複素数の除法
  • 複素数の共役
  • 複素数の絶対値
  • 自然対数の底である_e_の複素数によるべき乗

出典

Wikipediaリンクは新しいウィンドウまたはタブで開きます
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
PHP Exercism

複素数を始める準備はできましたか?

Exercismに登録すれば、11個のコンセプト122個の演習、そして本物の人間によるメンタリングとともに、PHPを学んでマスターできます。すべて無料です。