ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

自由落下の運動方程式はオイラー法?

2010年05月01日 13時08分09秒 | ソフト開発日記
単純な自由落下だけなら、y = y0 + v0*t + g*t*t/2
で位置を求めればいいと思いますが
跳ね返りだとかボール同士の衝突を考えたとき、
運動方程式という微分方程式を解くオイラー法でやるのが
1番しっくりきました。

まず、
my'' + mg
y'' = g

また、
y' = v
v' = g

とすれば、

y_(n+1) = y_n + v_n * H
v_(n+1) = v_n + g * H

と。Hは刻み幅で、小さければ小さいほど精度が上がりますが
0.05くらいを入れておけば十分に思います。

その後は次のように値の更新

y_n = y_(n+1)
v_n = v_(n+1)

地面に接触したときの跳ね返りに関しては、
跳ね返り係数をEとすると

y_(n+1) = 0
v_(n+1) = (- v_n + g * t) * E

とすればOK。
これでそれっぽくできました。
ただ、跳ね返り係数を1としたとき、
跳ね返るたびにほんのちょっとずつ上昇していく・・。
オイラー法だからかな?

気になってきたらルンゲクッタに変更します。
ジャンル:
ウェブログ
コメント (4)   この記事についてブログを書く
« 自由落下のあとの跳ね返り | トップ | プログラミング言語の勉強 »
最近の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
とおりすがり (今悩中)
2013-07-31 15:38:15
「物理演算」で検索しても何も得られないと言う事を最近知り、ようやく重力加速度の意味が分かったつもりでコード書こうとして、現在手が止まって逃避している所です。
脳みそ分譲してくださいませんか?
Unknown (あつた)
2013-08-03 12:39:23
お使いの言語はなんでしょう?
あ、すみません… (今悩中)
2013-08-03 20:14:18
答えが聞きたいんじゃなくて考えてるのって楽しいなあと言うニュアンスです。
だいぶ勘違いして解釈してるなぁとか。
ちなみに言語はDelphi6というアレなやつ一本ですが読むだけなら色々大丈夫なタイプです。
重力加速度が何か分かればあんな事やこんな事ができると思っていたのですが、衝突を考えると質量を保存しなきゃいけないんだなぁとか、今そんな所です。
気に掛けてくださってありがとうございます。
Unknown (あつた)
2013-08-04 11:31:25
失礼しました。
エネルギー保存、慣性モーメント、転がり摩擦、マグナス力等、正確な物理演算のためには色々と大変そうですよね。
お互い頑張りましょう。

コメントを投稿

ソフト開発日記」カテゴリの最新記事