複素数
2乗すると−1になる数(虚数単位)を使った複素数と、その掛け算が平面の回転になることについて説明します。
フーリエ変換やZ変換など、音の処理の数学の準備にもなります。
<注意>
このページでは、数式を表示するためにMathJaxを使用しています。ブラウザの設定でスクリプト実行をブロックしている場合、ページ内の数式が正しく表示されません。
複素数とは
2乗すると\(\ -1\ \)になる数を虚数単位と言い、\(\ i\ \)と書きます(電気や信号処理の分野では\(\ j\ \)と書くこともあります)。
定義 (複素数)
実数\(\ a,\ b\ \)と虚数単位\(\ i\ \)(\(\ i^2 = -1\ \))を使って\(\ z = a + bi\ \)と表される数を複素数と言う。
\(\ a\ \)を実部(\(\ \mathrm{Re}\,z\ \))、\(\ b\ \)を虚部(\(\ \mathrm{Im}\,z\ \))と言う。
複素数\(\ a + bi\ \)を、平面の点\(\ (a,\ b)\ \)に対応させたものを複素平面と言います。
複素数は、平面のベクトル(ベクトル)と同じように、2つの数の組として扱えます。

絶対値と偏角
複素平面で、原点から\(\ z\ \)までの長さを絶対値、\(\ x\ \)軸から測った角度を偏角と言います。
\[ |z| = \sqrt{a^2 + b^2}, \qquad \arg z = \theta \quad(\ a = |z|\cos\theta,\ \ b = |z|\sin\theta\ ) \]虚部の符号を反対にした\(\ \bar{z} = a - bi\ \)を共役複素数と言います。
\(\ z\bar{z} = a^2 + b^2 = |z|^2\ \)は、必ず0以上の実数になります。
計算
足し算・引き算は、実部どうし・虚部どうしで計算します。これはベクトルの足し算と同じです。
掛け算は、\(\ i^2 = -1\ \)に気を付けて展開します。
割り算は、分母の共役複素数を分母と分子に掛けて、分母を実数にしてから計算します。
\[ \frac{a + bi}{c + di} = \frac{(a + bi)(c - di)}{c^2 + d^2} \]掛け算は回転
定理
\[ |zw| = |z|\,|w|, \qquad \arg(zw) = \arg z + \arg w \]
2つの複素数の積の絶対値は絶対値の積、偏角は偏角の和になる。
\(\ |w| = 1\ \)の複素数を掛けると、長さを変えずに\(\ \arg w\ \)だけ回転します。
特に、\(\ i\ \)を掛けると90度回転します(\(\ (a + bi)\,i = -b + ai\ \))。
\(\ w = \cos\phi + i\sin\phi\ \)を掛ける計算を、実部と虚部に分けて書くと次のようになります。
\[ (x + yi)(\cos\phi + i\sin\phi) = (x\cos\phi - y\sin\phi) + (x\sin\phi + y\cos\phi)i \]これは、行列変換の回転移動の式と同じです。
複素数\(\ c + di\ \)を掛けることは、行列\(\ \pmatrix{c & -d\\ d & c}\ \)を掛けることと同じで、回転と拡大を1つの数で表しています。
オイラーの公式
定理 (オイラーの公式)
\[ e^{i\theta} = \cos\theta + i\sin\theta \]
\(\ e^{i\theta}\ \)は、絶対値1、偏角\(\ \theta\ \)の複素数、つまり単位円の上の点です。
これを使うと、絶対値\(\ r\ \)、偏角\(\ \theta\ \)の複素数を\(\ re^{i\theta}\ \)と書けます(極形式)。
指数法則\(\ e^{i\alpha}e^{i\beta} = e^{i(\alpha + \beta)}\ \)が、そのまま「掛け算は偏角の足し算」を表しています。
この両辺を実部と虚部に分けると、三角関数の加法定理が出てきます。
三角関数のページのn倍角の公式も、\(\ (e^{ix})^n = e^{inx}\ \)(ド・モアブルの定理)から導かれたものです。
回転を繰り返す
\(\ w = e^{i\phi}\ \)を毎回掛けると、点は単位円の上を\(\ \phi\ \)ずつ回ります。
\[ z_{n+1} = z_n\,w \]三角関数の表を引かずに、掛け算4回と足し算2回で次の点が求まるので、円運動や、回転する模様の点を順に求めるのに使えます。
ただし、固定小数点数で計算すると、1回ごとに丸めの誤差が入り、それが積み重なって長さが変わっていきます。

右のグラフは、8.8形式で1/32周ずつ回転を繰り返したときの長さです。
四捨五入では長さがほぼ保たれますが、切り捨て(右シフトで小数部を捨てる)では、20周で長さが約半分になります。
長く回し続ける場合は、ときどき長さを1に戻す(正規化する)か、角度を数えておいて表から位置を求め直します。
差分法と数値積分法の「安定性」で扱った円運動の計算も、同じ回転を別の方法で計算したものです。
1の累乗根
\(\ z^n = 1\ \)を満たす複素数は、ちょうど\(\ n\ \)個あり、単位円を\(\ n\ \)等分した点に並びます。
\[ \omega^k = e^{2\pi i k/n} \qquad (k = 0,\ 1,\ \dots,\ n-1) \]前の節の図の左側は\(\ n = 8\ \)の場合で、正八角形の頂点になっています。
\(\ \omega^k\ \)を\(\ k = 0\ \)から順にたどると、\(\ n\ \)回で1周して元に戻ります。
これは合同算術で扱った、\(\ n\ \)を法とした数と同じ構造で、角度を\(\ n\ \)方位で表すことにあたります。
1の累乗根は、フーリエ変換で、波形を周波数に分けるときに使います。
正弦波と複素数
\(\ e^{i\omega t}\ \)は、時間とともに複素平面の単位円の上を回る点を表します。
その実部と虚部は、それぞれ余弦波と正弦波です(三角関数の「円運動と単振動」)。
振幅\(\ A\ \)、初期位相\(\ \alpha\ \)の正弦波\(\ A\cos(\omega t + \alpha)\ \)は、\(\ Ae^{i\alpha}\ \)という1つの複素数と、回転\(\ e^{i\omega t}\ \)の積の実部として表せます。
\[ A\cos(\omega t + \alpha) = \mathrm{Re}\left(Ae^{i\alpha}\,e^{i\omega t}\right) \]定理
同じ周波数の正弦波どうしの和は、同じ周波数の正弦波になる。その振幅と初期位相は、それぞれの\(\ Ae^{i\alpha}\ \)を複素数として足したものの絶対値と偏角である。
たとえば、同じ高さの音を少しずらして2つ重ねると、ずれ(位相の差)によって、強め合ったり打ち消し合ったりします。
位相の差が180度なら、\(\ Ae^{i\alpha}\ \)どうしが反対向きになって、打ち消し合います。
フィルタが正弦波の振幅と位相をどれだけ変えるか(サンプリングとデジタルフィルタの「周波数特性」)も、1つの複素数で表されます。