二重振り子は、1つの振り子の先にもう1つ振り子を連結したものです。
1つの振り子は周期 \(T\) の規則的な運動をしますが、二重振り子は非周期的で極めて複雑な運動をすることが知られています。
この記事では、Pythonで二重振り子を実装し、シミュレーションの結果生じるカオスを観察する方法について解説します。
二重振り子とカオス
次のような性質をみたす現象をカオスといいます。
- 振る舞いが決定論的法則にしたがう
- しかし、挙動を予測するのは難しい
- 初期値依存性が高いため、誤差が入るとさらに予測は困難になる
振り子は周期的な運動をするため、予測が簡単なものの代表例ですが、
これを2つ連結した二重振り子では途端に挙動が複雑になり、予測は困難になります。
そのため、これは身近な道具から観察できる例として、カオスを実感するための最適な実験といえます。
Pythonによる実装
以下のPythonコードを実行することで、二重振り子のふるまいを観察することができます。
python double_pendulum.py none
none
をtrajectory
に変更すると、質点2の軌跡をプロットします。
python double_pendulum.py trajectory
ここで実装されている二重振り子は、糸が剛体で、その先端に質点が存在していることを想定しています。
コード中で使われている変数の意味は以下の通りです。
変数名 | 意味 |
---|---|
g | 重力加速度 |
m1 | 質点1の質量 |
m2 | 質点2の質量 |
l1 | 糸1の長さ |
l2 | 糸2の長さ |
dt | シミュレーション更新の時間ステップ |
theta1 | 糸1がy軸となす角度(初期角度) |
theta2 | 糸2がy軸となす角度(初期角度) |
v_theta1 | 糸1がy軸となす角速度(初速度) |
v_theta2 | 糸2がy軸となす角速度(初速度) |
Comments