
数値シミュレーション -二重振り子-
数値シミュレーション解説 第7回
Published: 8/19/2018
Updated: 12/23/2025
約5分
更新履歴
- 2025/12/23: プログラムを C# 14.0 に修正
こんにちは、Rafkaです。
今回は手計算では厳密解が求められないような微分方程式で数理モデルが表される物理現象を、
ルンゲ=クッタ法を用いてシミュレーションを行っていきます。
二重振り子
厳密解が求められないような数理モデルというわけで、
題材には二重振り子を選びました。
二重振り子とは、振り子の先にもう一つ振り子が付いている振り子のことです。
二重振り子の数理モデルは以下のサイトを参考にさせていただきました。
各記号は以下の通りです。
- : 1 つ目の振り子の質量
- : 1 つ目の振り子の長さ
- : 1 つ目の振り子の角度
- : 1 つ目の振り子の角速度
- : 2 つ目の振り子の質量
- : 2 つ目の振り子の長さ
- : 2 つ目の振り子の角度
- : 2 つ目の振り子の角速度
- : と の和
また、ドットはそれぞれ記号の時間微分を表しています。
最後に、 と はそれぞれ以下の値です。
数理モデルが分かったので、実際にプログラムしてシミュレーションしてみましょう。
シミュレーション結果
各振り子の重さをそれぞれ 、長さも とし、
初期の角度を 、
角速度はどちらも として、
時間刻み s で約 秒間のシミュレーションを行いました。
結果は各振り子の角度で記録されるので、
その値から各質点の位置に変換し、
さらに角度が の時に真下を向くように 回転させた時の位置の変化を
グラフで描画してみました。
前回の斜方投射のグラフと同じように、
時間による変化をアニメーションさせることができるので、
ボタンやスライドバーを操作して遊んでみてください。
因みに二重振り子のシミュレーションは、
カオスと呼ばれる系の代表例でして、
初期値鋭敏性という性質から予測できない軌道を示すことが知られています。
二重振り子のシミュレーションも、
初期値をほんの少し変更するだけで、
上のグラフの軌道とは全く異なる軌道が生成されるので、
是非今まで示してきたプログラムを組み合わせて、
自分の手元で初期値を変えながらシミュレーションを行ってみてください。
まとめ
二重振り子のシミュレーションを通して、
厳密解が求められないような微分方程式についても数値解を計算し、
その答えがもっともらしい事を確認できたと思います。
次回からはついに、脳のシミュレーションの話に入っていきます。
手始めに次回は、
脳を構成するパーツである神経細胞(ニューロン)の性質と、
数理モデルについて解説していきます。
