オイラー法を用いた斜方投射の近似計算 [ねこ騙し物理]
オイラー法を用いて斜方投射のシミュレーションをしてみた。
角度θで球(砲弾)を初速度で射出したとすると、運動方程式は
初期条件は
とする。
ここでu、vは、それぞれ、x軸とy軸の正の方向の速度であり、また、mは質量、gは重力加速度、そしてk>0は空気抵抗の比例定数である。
m、g、kといった文字があると計算が厄介。
そこで、適当な無次元化を行うと、上の微分方程式は次の形の微分方程式になる。
このとき初期条件は
この微分方程式の解は、簡単な計算から
と求められ、オイラー法を用いて、この連立微分方程式をわざわざ数値的に解く必要はないのだが、それを言ったら身も蓋もない。
だから、このような批判をしてはいけないにゃ。
さて、
を積分すると
になる。
この右辺の積分を
と近似すると
などとやるのが正式なのだろうが、この方法はすこし面倒なので、ここでは採用しないことにする。
テーラー展開から
になる。
この微分方程式の場合
となるので、この結果を代入すると
だから、下の式の右辺で
とu(t+Δt)を近似したときの誤差はであることがわかる。
でもあるので、(4)式は
さてさて、とし、
とし、
から得られる、の値でにおける微分方程式の解の値で近似する。
においてであるとき、(3)と(4)式から
これを、離散化した時の(局所的な)打ち切り誤差などと呼ぶことがあるようだにゃ。
同様に
という漸化式が得られ、
を起点にし、前進的になどの前進的にその値を次々と求めることができる。
これがオイラー法を用いた連立微分方程式(1)、(2)の数値的な解法である。
γ=0.3、θ=π/3=60°、Δt=0.1として解いた結果は次のとおり。
uとxはよく合っているのですが、vとyが少し合わない。
Δt=0.1という粗い計算でここまで合ってれば十分といえば十分。
着弾点はほとんど一致しているので、敵を大砲で吹き飛ばすには十分な結果だろう。
でも、なんか気にらないケロ。
そこで、近似計算法を改良すると――仮称:ネムネコ法(笑)――、次のように良好な結果が得られる。
精度が劇的に向上し、ネムネコ法(笑)による計算結果と厳密解との違いを視覚的に見つけることはできないケロ!!
なお、投射角θ=60°なのに、そう見えないのは、x軸とy軸の目盛の間隔が1:1でないため。もしこれが1:1ならば、60°で投げ出されていることがわかる。
この計算モデルの場合、
無次元重力加速(初速、質量、空気抵抗の比例定数の違いは全てここに反映される)
の場合、θ=60°で砲弾を撃つと、砲弾はほとんど真上から落ちてくるんだね。知らなかった。
ちなみに、この無次元重力加速度γと投射角度θが同一であれば、同じ軌道を描く!!
それはそれとして、この計算結果を見ると、uは0に、vは−γ=−0.3に収束することがわかる。
この値は微分方程式
に、du/dt=0、dv/dt=0を代入すれば出てくるんだケロよ。
つまり、終端速度を求めるだけならば、微分方程式を解く必要がない。
知っていたケロか?
このままでは癪なんで、修正オイラー法、ルンゲ・クッタなんて高級な計算方法――計算法の導出が1変数の微分積分の範囲を越える!!――は使わずに、計算精度を向上させる方法について考え、スプレッドシートを作るにゃ。
コメント 0