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

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

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

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としたとき、
跳ね返るたびにほんのちょっとずつ上昇していく・・。
オイラー法だからかな?

気になってきたらルンゲクッタに変更します。