二重振り子(カオス)シミュレーター 戻る
対話型シミュレーター

二重振り子(カオス)シミュレーター

ラグランジュ方程式をRK4で数値積分。2本の振り子の長さ・質量・初期角度を変えてカオス軌跡を観察。2軌道比較で「初期条件の微小な差が爆発的に拡大する」カオスの本質を体感。

プリセット
L₁
m
L₂
m
m₁
kg
m₂
kg
θ₁
°
θ₂
°
減衰(空気抵抗)
プリセット
制御
カオス域(大角度)
ライブ数値(リアルタイム)
θ₁ [°]
θ₂ [°]
ω₁ [rad/s]
ω₂ [rad/s]
全エネルギー [J]
分離 Δ [m]
振り子(実線=本体・薄い影=感度ゴースト)
軌跡A 軌跡B 振り子A 感度ゴースト(双子)
青 = 振り子A(本体) | 赤い影 = 振り子B(θ₂を +0.001 rad だけずらした双子)。最初は重なり、やがて指数的に分離します。
決定論なのに予測不能。2本の振り子は完全に同じ方程式に従い、初期角度の差はわずか 0.001 rad(約0.06°)。それでも上の「分離 Δ」がほぼ指数関数的に増大し、数秒〜十数秒で軌道は完全に別物になります。これがカオス=初期条件への鋭敏な依存性(バタフライ効果)です。
エネルギー収支(KE / PE / 合計)
運動 KE
— J
位置 PE
— J
合計 E
— J
減衰=0 では合計エネルギーは一定(保存)。KEとPEが互いに移り変わるだけです。
理論・主要公式

$L = T - V$

$T$:運動エネルギー、$V$:重力ポテンシャル

連成ODE:$\ddot{\theta}_1, \ddot{\theta}_2$ をRK4で積分

分離 $\Delta(t)$ は初期にほぼ $\Delta(t)\approx\Delta_0\,e^{\lambda t}$($\lambda$=最大リャプノフ指数 > 0)で増大します。

二重振り子(カオス)とは

🙋
二重振り子って、単なる振り子が2つ繋がっただけですよね?なんで「カオス」って言われるほど複雑な動きをするんですか?
🎓
大まかに言うと、2つの振り子の動きが互いに強く影響し合う「非線形」の連成振動だからだよ。例えば、上の振り子(L₁)がちょっと揺れると、それが下の振り子(L₂)に伝わって大きく揺れ、その揺れがまた上にフィードバックされる。このシミュレーターで「2軌道比較」ボタンを押すと、初期角度θ₁をほんの10⁻⁴ rad(約0.006°)だけずらした2本目の軌道が描かれる。一瞬は同じ動きをしても、すぐに大きく異なる軌道になってしまうよ。これがカオスの「初期値敏感性」だ。
🙋
え、そうなんですか!でも、その複雑な動きをコンピューターはどうやって計算してるんですか?物理の授業で習う運動方程式とは違うんですか?
🎓
実務では、複雑な拘束がある系を解くのに「ラグランジュ方程式」を使うことが多いんだ。振り子の接続点のような力の計算が難しい部分を、エネルギー(運動エネルギーTと位置エネルギーV)の差からスマートに導き出せる。このツールでは、その方程式を「RK4」という高精度な数値積分法で解いている。パラメータの「減衰」を大きくすると空気抵抗が強くなって動きが早く収束するから、確認してみて。
🙋
なるほど!でも、こんな複雑な動きのシミュレーションって、何の役に立つんですか?遊びみたいなものですか?
🎓
とんでもない!これはCAEの基本そのものなんだ。例えば、多関節ロボットアームの制御設計では、各関節がまさにこの二重振り子のように連動して動く。シミュレーターで質量m₂を大きくしてみると、動きが重たくなって予測不能な振動(カオス)が起きやすくなるよね。現場では、そんな不安定な動きを制御するアルゴリズムを、こうしたシミュレーションで事前に検証するんだ。

よくある質問

二重振り子はカオス系であり、初期条件の微小な差が時間とともに指数関数的に拡大します。これは「バタフライ効果」として知られるカオスの特徴で、シミュレーターの「2軌道比較」機能を使うと、最初はほぼ同じ軌道が徐々に乖離していく様子を視覚的に確認できます。
RK4法(4次ルンゲ=クッタ法)は、精度と計算コストのバランスが優れているためです。二重振り子の運動方程式は非線形で解析解が得られないため数値積分が必要ですが、RK4法は誤差が小さく、カオス軌道を安定して追跡できます。より高精度な方法もありますが、実用的な速度でリアルタイム描画するにはRK4が適しています。
長さや質量を変えると、系の固有振動数やエネルギー分配が変化し、カオスの現れ方や軌道のパターンが変わります。例えば、2本の長さを等しくすると規則的な運動が見えやすくなり、非対称にするとカオス領域が広がります。質量比を極端にすると、一方の振り子の動きが他方を支配するようになります。
数値積分の時間刻み(タイムステップ)が大きすぎると誤差が蓄積し、エネルギーが保存されず発散することがあります。シミュレーターの設定でタイムステップを小さくする(例:0.001秒以下)か、描画速度を落として計算精度を優先してください。また、初期角度が極端に大きい(例:179度)と、振り子が高速回転して数値誤差が増大するため、90度以内での設定をおすすめします。

実世界での応用

ロボットアームの動力学解析:産業用や手術支援用の多関節ロボットは、各リンクが二重振り子のように連成して動きます。設計段階で、質量や長さのパラメータを変えながら、意図しないカオス的振動が発生しないかをシミュレーションで確認します。

構造物の非線形振動解析:高層ビルや橋梁、風力発電のブレードなど、しなりを持つフレキシブルな構造物は、大きな外力を受けると非線形な連成振動を起こします。その基礎的な振る舞いを理解するためのモデルとして二重振り子が参照されます。

制御理論の研究・教育:カオス系を如何にして制御するかは、制御理論の重要なテーマです。二重振り子はシンプルながら豊富な動的挙動を示すため、新しい制御アルゴリズムの開発や、学生教育における教材として広く用いられています。

エンターテインメント・アート:その予測不可能で美的な軌道から、メディアアートや物理エンジンを利用したゲームの動きの表現にインスピレーションを与えています。シミュレーターで描かれる軌跡は、まさに「カオスが生み出すアート」です。

よくある誤解と注意点

まず、「カオス=ランダム」ではないという点を押さえよう。このシミュレーターの動きは、初期条件が決まれば完全に決定されている。でも、ほんのわずかな初期値の違い(例えばθ₁を30.0度と30.0001度)が、短時間で指数関数的に増幅され、予測不能に見えるだけだ。実務でモデル化する時、「結果がバラつくからシミュレーションは当てにならない」と早合点しないように。

次に、パラメータ設定の落とし穴。例えば、下の振り子の質量m₂を極端に大きく(上の振り子の10倍など)すると、数値計算が不安定になりやすく、結果が発散することがある。これは、連立方程式の係数が極端な値になり、数値誤差が爆発的に増幅されるため。実機の設計でも、重量バランスはシミュレーションの安定性に直結する重要なファクターだ。

また、「エネルギー保存」表示の見方にも注意。減衰係数を0にしても、数値計算の誤差でエネルギーがじわじわ増減するのは普通だ。しかし、それが急激に変化する場合は、時間ステップΔtが大きすぎる可能性がある。例えば、Δtを0.01秒から0.001秒に小さくしてみると、エネルギー保存の精度が格段に上がるはず。計算コストと精度のトレードオフを体感できる良い例だ。

使い方ガイド

  1. L1NumとL2Numで第1振り子・第2振り子の長さを設定します。例えばL1=0.5m、L2=0.3mとしてください。
  2. m1Numとm2Numで各振り子の質量を入力します。m1=1kg、m2=0.8kgが典型的な設定です。
  3. 初期角度(θ1、θ2)をラジアンで指定し、シミュレーション開始ボタンを押します。わずかな角度差で軌跡が大きく変わります。
  4. 運動エネルギー、ポテンシャル、全エネルギーをリアルタイム監視し、エネルギー保存則の成立を確認できます。

具体的な計算例

L1=1.0m、L2=1.0m、m1=2.0kg、m2=1.5kg、初期角度θ1=60°、θ2=30°の設定で実行した場合、最初の全エネルギーは約29.4J(ポテンシャル主体)から始まり、振り子が下降するにつれ運動エネルギーに変換されます。0.1秒の時刻経過時には運動エネルギーが約18.7J、ポテンシャルが約10.7Jとなり、全エネルギー約29.4Jが保存されることを確認できます。初期角度をθ2=30.01°(わずか0.01°増加)に変更すると、3秒以降から軌跡が著しく異なり、カオスの初期値鋭敏性を体験できます。

実務での注意点

  1. 大角度振動(30°以上)ではラグランジュ方程式の非線形項が顕著になるため、シミュレーション精度(Runge-Kutta4次法推奨)の検証が重要です。
  2. L1とL2の比率が1:1に近いほどカオス領域が拡大するため、制御工学や振動解析での予測可能性の限界を学ぶ際に有効です。
  3. 軌跡点数が100万点を超える場合、ブラウザのメモリ使用量が顕著に増加するため、フレームレート調整による計算間隔の最適化が必要です。
  4. 実験装置では空気抵抗(減衰係数0.01~0.05)を加算し、エネルギー散逸のモデリングを行うことで現実に近い挙動を再現できます。