• 締切済み

オイラー法を利用した空気抵抗を加味した斜方投射の式

オイラー法を利用した空気抵抗を加味した斜方投射の式について 空気抵抗を加味した斜方投射の式について教えて下さい F=kv^2で空気抵抗が与えられているオイラー法を用いて速度の式を立てる場合 v(n+1)=v(n)-a×⊿t で表せられると思うのですがこの式のaを a=(m×g-k×v(n)^2)/m で計算することは正しいのでしょうか 自分がこの式で計算したところ、yの値が減少せずに増加のみの状態になってしまいました また、終端速度がv=√(m×g/k)で表せられると思います 終端速度に達した場合vは等速直線運動になると思うのですがどのような式で表せばよいのかわかりません よろしくお願いします ※質量m=7.26、初速度v(0)=10、空気抵抗係数k=0.01、⊿t=0.1です 下に自分の考えたオイラー法のアルゴリズムを記述しておきます (u=x方向の加速度、v=y方向の加速度、、x=x方向の飛距離、y=y方向の飛距離) loop n=1 a=(m*g-k*v(n)^2)/m u(n+1)=u(n) v(n+1) = v(n) - a*⊿t x(n+1) = x(n) + u(n)*⊿t y(n+1) = y(n) + v(n)*⊿t end loop

みんなの回答

回答No.2

№ 1 の回答に対する補足質問に答えます。 № 1 の回答で a = ( -m×g - k×v(n)^2 ) / m とすべきと申し上げましたが、貴方の補足質問の通り、これでは終端速度には到達しませんね。MS-Excel の組み込み関数として使われている。sign (X) ={ X>0 なら 1, X=0 なら 0、X<0 なら -1 } を使用して a = ( -m×g - k× sign ( v(n) ) × v(n)^2 ) / m とすれば終端速度に到達するはずです。 ちょっと気になるのは x 方向の速度に減衰を設ける必要はないのでしょうか。貴方の計算アルゴリズムでは x 方向の速度は減衰のない等速運動になりますよね。 尚、出発点が ( 0, 0 ) でも、仮に ( 申し訳ないがシミュレーションしていません。) 落下距離が終端速度に到達するに不充分になら、y < 0 の領域で到達するので問題ありません。 なお、老婆心ながら終端速度 ( y 方向成分 ) は vyt=√( m×g / k ) ではなく vyt = -√( m×g / k ) ( 落下方向 ) となるはずです。したがって、全体の終端速度の絶対値 vt は、x 方向の終端速度 をvxt として vt = √( Vxt^2 + Vyt^2 ) となります。

回答No.1

貴方の式は a = ( m×g - k×v(n)^2 ) / m に誤りがあります。 a = ( -m×g - k×v(n)^2) / m とすれば上手く行くのではありませんか。? 重力による加速度が + になっているので、y の値はどんどん大きくなっ行くのは当然と思います。なお、終端速度に至るまでの十分な落下距離が確保できているかは検討していませんので、その時は y (0) = 10000 位を設定して計算させることを提案します。

abvzin
質問者

補足

回答ありがとうございます -mgとすると今度は加速度が-の値だけになってしまい、数値が減少のみになってしまうのです また後出しですみませんが今回は(x,y)=(0,0)からの投げ上げ(ボールを斜め上に投げる感じのです)になるのでyの初期値を変えることができないのです