複素数と複素平面(ガウス平面)
虚数単位 i を掛けると「90度回転する」という幾何学的世界
- 1
- 複素数と複素平面(ガウス平面)の本質的な定義と直感的ビジュアルをシミュレーターで体験できる。
- 2
- 公式や証明の背景にある数学的意味と、厳密な導出ステップを解説。
- 3
- 実社会における工学応用(2Dゲーム・ロボティクスにおける回転計算と四元数(クォータニオン)への発展)のTypeScript実装コードを収録。
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
3次方程式を解く途中で現れる「2乗して -1 になる謎の数」を認めたことで、実は「平面上の90度回転」を完璧に表現できると判明した。
身につく武器・思考力
行列を使わずに複素数の掛け算だけで「回転と拡大」をシンプルに扱え、交流回路や量子力学の波を直感的に記述できるようになる。
実社会・ITでの活躍現場
- •スマートフォンやWi-Fiの電波変調(QAM通信: 直交振幅変調)
- •電気工学における交流回路のインピーダンス(抵抗)計算
- •2Dゲーム開発における高速な回転・ベクトル回転処理
- •量子力学のシュレーディンガー方程式(波動関数の記述)
Layer 1 — 直感・シミュレーター
複素平面上の青い点 z をドラッグしてみよう。「× i ボタン」を押すと、点 z に虚数単位 i を掛けた結果(緑の点)が反時計回りにちょうど 90° 回転することが確認できる。もう一度 i を掛けると 180° 回転して -z になる(i^2 = -1 の幾何学的正体)。
↑ 「× i を掛ける」ボタンを2回押すと、角度が 180° 回転して符号が真逆()になり、4回押すと 360° 回転して元の位置()に戻ります。虚数は「実在しない謎の数」ではなく、「2次元平面上での直角回転操作」そのものです。
Layer 2 — 定義・受験・証明
定義
2乗して になる仮想の数 ()を虚数単位と呼び、実数 を用いて と表される数を複素数という。複素数は、横軸に実部 、縦軸に虚部 をとる「複素数平面(ガウス平面)」上の点 として1対1に対応づけられる。極形式では と表される。
公式・数理モデル
証明・導出
ド・モアブルの定理と回転の証明: 2つの複素数 と の積を計算すると、三角関数の加法定理より
すなわち、複素数の積は「絶対値(長さ)は掛け算 、偏角(角度)は足し算 」になる。特に を掛けることは、偏角に を足す(反時計回りに90°回転させる)操作そのものである。
押さえておきたいポイント
- 虚数単位 を掛けることは、複素平面上で「原点中心に反時計回りに90°回転」することと同値である
- とは、90°回転を2回行って 180°回転(符号反転)した状態を意味する
- 複素数の掛け算は、幾何学的には「拡大と回転(相似変換)」である
- オイラーの公式 により、三角関数と指数関数が美しく統合される
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
2Dゲーム・ロボティクスにおける回転計算と四元数(クォータニオン)への発展
2次元の回転処理は、行列を使わなくても複素数の掛け算だけで極めて高速・簡潔に実装できる。この性質を3次元に拡張したものが「四元数(クォータニオン)」であり、UnityやUnreal Engineなどのゲームエンジンで3Dの回転表現の標準として使われている。
1type Complex = { re: number; im: number };23// 複素数の掛け算: (a + bi)(c + di) = (ac - bd) + (ad + bc)i4function multiplyComplex(z1: Complex, z2: Complex): Complex {5 return {6 re: z1.re * z2.re - z1.im * z2.im,7 im: z1.re * z2.im + z1.im * z2.re,8 };9}1011// 角度 theta の回転複素数を作る12function makeRotator(thetaRad: number): Complex {13 return { re: Math.cos(thetaRad), im: Math.sin(thetaRad) };14}1516// ベクトル (3, 0) を 45度回転させる17const vector: Complex = { re: 3, im: 0 };18const rot45 = makeRotator((45 * Math.PI) / 180);19const rotated = multiplyComplex(vector, rot45);2021console.log(`回転後: (${rotated.re.toFixed(2)}, ${rotated.im.toFixed(2)})`); // (2.12, 2.12)
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元