ローレンツ・カオスとバタフライ効果(決定論的カオスの数理)
初期値がわずか0.001ズレただけで全く異なる未来を描く、大気対流の3次元非線形方程式
- 1
- 気象学者エドワード・ローレンツが1963年、大気熱対流の方程式を単純化した3元連立微分方程式から発見した現代数学の金字塔
- 2
- 「サイコロを振るようなランダムさ(確率過程)」が一切ない完全な決定論の方程式でありながら、未来予測が原理的に不可能になる現象(決定論的カオス)
- 3
- 「ブラジルで蝶が羽ばたくとテキサスで竜巻が起きるか?」というバタフライ効果の語源であり、解の軌道が描くストレンジ・アトラクタは蝶の羽の形をしている
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
「なぜ長期の天気予報は原理的に当たらないのか?」という気象学の疑問を、3つの単純な非線形微分方程式から発見した現代科学のパラダイムシフト。
身につく武器・思考力
「決定論的でありながら予測不可能」というカオスの本質を理解し、台風進路のアンサンブル予報や、株式市場の不確実性リスクを冷静に評価できるようになる。
実社会・ITでの活躍現場
- •気象庁の週間・1か月天気予報におけるアンサンブル予報(確率的降水・台風進路幅)
- •株式・為替市場の高頻度取引(HFT)における非線形時系列ボラティリティ予測
- •カオス同期現象を利用した軍事用秘話通信・暗号ハードウェア回路
- •心電図(不整脈)や脳波のカオス解析による突然死・てんかん予兆検知
Layer 1 — 直感・シミュレーター
初期値の微小差 (バタフライの羽ばたき)スライダーを動かしてみよう。最初は寸分違わず重なって進む青と赤の2つの軌道が、数周回ったあたりから劇的に別のループへと枝分かれし、まったく違う未来の軌跡を描き始めるカオスの神秘を観察できる。
カオス力学系において、初期状態の測定にどれほど高精度のスーパーコンピュータを用いても「長期的な天気予報」が不可能になる根本原因は何か?
Layer 2 — 定義・受験・証明
定義
大気の対流ロールを単純化した3次元状態空間 に対し、ローレンツ方程式は次の自励系非線形常微分方程式で定義される。
ここで各無次元パラメータの意味は以下の通りである。 - : プラントル数(流体の動粘性係数と熱拡散率の比、通常 10) - : レイリー数(温度差による対流駆動パラメータ、 でカオスへ遷移) - : 幾何学的アスペクト比(通常 8/3)
公式・数理モデル
証明・導出
体積収縮性とストレンジ・アトラクタ(フラクタル次元)の導出:
ローレンツ系の速度ベクトルの発散(ダイバージェンス)を計算する。
標準パラメータ を代入すると、
発散が常に一定の負の値であるため、リウヴィルの定理より、状態空間内の任意の微小体積 は時間とともに次式で指数関数的にゼロへ収縮する。
体積がゼロに潰れる一方で、解の軌道はある有界な領域から脱出できず、平衡点にも周期軌道にも収束しない。自己交差のない無限の長さを持つ軌道がゼロ体積の領域に折り畳まれ続ける結果、非整数次元(ハウスドルフ次元 )を持つ自己相似な「フラクタル幾何構造(ストレンジ・アトラクタ)」が形成される。
押さえておきたいポイント
- カオスは「決定論(偶然の介在しない厳密な方程式)」と「非予測性」が同居する驚くべき数学的実在である
- 現代の気象予報が「1週間先まで」しか当たらないのは、計算機の性能不足ではなく、大気力学系が持つリヤプノフ時間(約2週間)という数学的限界によるものである
- 気象庁の台風進路予報の「予報円」は、初期値をわずかにズラした数十パターンのシミュレーションを同時に走らせる「アンサンブル予報」によってカオスの広がりを確率的に捉えている
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
アンサンブル気象予報・カオス暗号・非線形時系列予測
気象庁の全球数値予報モデル(GSM)では、特異ベクトル法を用いて初期値の誤差拡大方向を同定し、アンサンブル摂動を与えて将来の不確実性幅を計算する。また通信分野では、ローレンツ方程式の軌道を用いたカオス同期による盗聴不可能な秘話通信回路が研究されている。
1// ローレンツ方程式の4次ルンゲクッタ数値積分2class LorenzSystem {3 constructor(4 public sigma: number = 10.0,5 public rho: number = 28.0,6 public beta: number = 8 / 37 ) {}89 public deriv(x: number, y: number, z: number) {10 return {11 dx: this.sigma * (y - x),12 dy: x * (this.rho - z) - y,13 dz: x * y - this.beta * z,14 };15 }1617 // 2つの近接軌道のリヤプノフ乖離シミュレーション18 public compareDivergence(deltaX: number = 0.0001, steps: number = 2000, dt: number = 0.01) {19 let p1 = { x: 1.0, y: 1.0, z: 1.0 };20 let p2 = { x: 1.0 + deltaX, y: 1.0, z: 1.0 };2122 for (let i = 0; i < steps; i++) {23 const d1 = this.deriv(p1.x, p1.y, p1.z);24 const d2 = this.deriv(p2.x, p2.y, p2.z);2526 p1.x += d1.dx * dt; p1.y += d1.dy * dt; p1.z += d1.dz * dt;27 p2.x += d2.dx * dt; p2.y += d2.dy * dt; p2.z += d2.dz * dt;28 }2930 const dist = Math.sqrt(31 Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2) + Math.pow(p1.z - p2.z, 2)32 );33 return { finalDistance: dist.toFixed(2) };34 }35}3637const lorenz = new LorenzSystem();38const result = lorenz.compareDivergence(0.0001, 2000, 0.01);39console.log(`初期差 0.0001 の2軌道の20秒後距離: ${result.finalDistance} (完全乖離)`);
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元