Processing math: 100%

2013年8月18日日曜日

AAMの速度変化

いりやっくさんのMAの日記(MA会員のみ)から。AAMの速度変化はポアソン分布の密度関数のような感じになるようです。じゃあということでニュートンの運動方程式を立ててみます。(符号等が間違っていたので諸処修正)

初速というか母機の速度をv0とします。高校の物理で習ったように、高速で運動する物体の空気抵抗は速度の二乗に比例するとします。質量も空気抵抗の比例定数も正規化して1としましょう。発射時を時刻0, 推力a>0は時刻t0まで一定で、その後は0になるものとします。

速度をv(t)で表すと、時刻0からt0までは次のニュートンの運動方程式が成立します。

dvdt(t)=av(t)2

変数分離形なので解くことにします。まず
12loga+v(t)av(t)+C=t
(絶対値は省略。最後に符号を調整。)

整理して、
 v(t)=aDee2t+1De2t1
ここで、Dv0から次のように定まります。
D=a+v0av0
tが正負の無限大で±aに収束します。これが推力aで飛翔し続けた時の限界速度です。が、今はt0で推力が止まるのです。

t0以降は次のようになります。
dvdt(t)=v(t)2
1v(t)1v(t0)=tt0
これより、
v(t)=v(t0)v(t0)(tt0)+1

t0では滑らかな形になりませんが、推力を細かく与えると解けるかどうかわからなくなりますのでここまで。

a=1, t0=2, v0=1/2 でグラフを描くとこんな感じです。t=t0で推力が不連続に変わりますので、グラフは滑らかになりません。x軸は0から10までに1/100します。これを描くのに使ったMATLABクローンのフリーソフトoctaveのソースをつけます。

a=1;
v0=1/2;
t0=2;
function y=v(x,a,v0,t0)
d=(sqrt(a)+v0)/(sqrt(a)-v0);
if( x < t0 )
y=(d*exp(2*x)-sqrt(a))/(d*exp(2*x)+sqrt(a));
else
y=1/(x-t0+1/((sqrt(a)*(d*exp(2*t0)-1))/(d*exp(2*t0)+1)));
endif
endfunction

z=[1:1000];

for x=[1:1000];
z(x)=v(x/100,1,1/2,2);
endfor


plot(z)


1 件のコメント:

  1. こんにちは! 解説ありがとうございます。JavaScript で試しにプログラミングしてみました。そうしたところいくつか、自分自身のコーディングのバグなのか、マイナスが表示されたりとドタバタしております(苦笑)。

    もしよろしければ v(t) の実例など一つご紹介頂けると助かります!

    返信削除