- ベストアンサー
振り子をオイラー法で
プログラムで、振り子のヒモの長さ、重さ、角度を自由に設定し、振り子のアニメーションが表示されるようにしようと考えています。 普通の運動方程式での振り子の運動の表示はできたのですが、 オイラー法やルンゲクッタ法を使って導き出した振り子の動きも表示したいと考えています。 ところが、どうやってオイラー法を振り子の運動方程式に応用すれば、振り子のX、y座標が分かるのか?ということが、勉強不足でどうにもわかりません… どなたか、ヒントだけでも教えていただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 補足を拝見しました。 運動方程式で、途中で速度をかませてよいのでしたら、オイラー法や修正オイラー法を使うことができます。この方法は、常に、速度⇒変位の順に解いていくものです。 http://www.asahi-net.or.jp/~hy9n-knk/eq_simu.htm そのほかに、邪道かもしれませんが、速度の計算を一度だけで省略する方法もなくはありません。 2階微分方程式を差分方程式の形に直すと、初期変位として2点が必要になります。1点は問題自体に与えられているものを使いますが、2点目は、速度をかませて求めた変位を使います。あとは常に最初の2点が確保されますので、順に数値計算を進めていくことができます。 なお、オイラー法を使う場合は、誤差がかなり大きくなってくるので注意してください。 http://maya.phys.kyushu-u.ac.jp/~knomura/education/numerical-physics/text5/node2.html また、ルンゲ・クッタ法でも解くことができます。 運動方程式に適用した例を掲載したサイトがありましたので紹介します。 http://www6.ocn.ne.jp/~simuphys/runge-kutta.html
その他の回答 (1)
- Mr_Holland
- ベストアンサー率56% (890/1576)
オイラー法は、1階常微分方程式の数値計算方法なので、運動方程式には使えません。無理に2階微分の項を作り出しても、初期値に2つの値が必要になり求められないことが分かるでしょう。 http://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E6%B3%95
補足
回答ありがとうございます。使えないんですか…! どなたかがなさっていた、似たようなプログラムでは、オイラー法、修正オイラー法、ルンゲクッタ法で振り子を表示していたのでできるものなのだと思い込んでいました。 とすると2階微分方程式を解くことのできる、ルンゲクッタ法ならば描写が可能という事でしょうか…それとも他の方法があるのでしょうか。
お礼
丁寧な返答、どうもありがとうございました! おかげさまで全部を使った表示をすることができました。大変助かりました。