Pythonで二重振り子を実装し、シミュレーションをする方法

Python
Sponsored

二重振り子は、1つの振り子の先にもう1つ振り子を連結したものです。

1つの振り子は周期 \(T\) の規則的な運動をしますが、二重振り子は非周期的で極めて複雑な運動をすることが知られています。

この記事では、Pythonで二重振り子を実装し、シミュレーションの結果生じるカオスを観察する方法について解説します

二重振り子とカオス

次のような性質をみたす現象をカオスといいます。

  • 振る舞いが決定論的法則にしたがう
  • しかし、挙動を予測するのは難しい
  • 初期値依存性が高いため、誤差が入るとさらに予測は困難になる

振り子は周期的な運動をするため、予測が簡単なものの代表例ですが、

これを2つ連結した二重振り子では途端に挙動が複雑になり、予測は困難になります。

そのため、これは身近な道具から観察できる例として、カオスを実感するための最適な実験といえます。

Pythonによる実装

以下のPythonコードを実行することで、二重振り子のふるまいを観察することができます。

python double_pendulum.py none

nonetrajectoryに変更すると、質点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