プロが教える店舗&オフィスのセキュリティ対策術

下のように自由落下する物体の速度の変化を求めるプログラムをC言語で作成しました。これを応用して斜方投射された物体のx、y座標の「位置」の変化を求めるプログラムをルンゲクッタ法(RK4)で作成したいです。x,yについて2つの式を立てないといけないと思うのですがどのような式を立ててプログラムを組めかよいかよく分かりません。どなたか式とできればプログラムを教えて下さい。

k:空気抵抗、m:物体の質量 g:重力加速度としています。

#include <stdio.h>

double yd(double t,double y){
double k=0.1;
double m=0.1;
double g=9.8;
double r=g-((k*y)/m);
return r;
}


double runge(double t,double y,double h){
double k1,k2,k3,k4,r;
double h2=h/2.0;
k1=yd(t,y);
k2=yd(t+h2,y+(h2*k1));
k3=yd(t+h2,y+(h2*k2));
k4=yd(t+h,y+(h*k3));
r=y+(h/6.0)*((k1+(2.0*k2)+(2.0*k3)+k4));
return r;
}

void main(){
double y=0.0;
double h=0.001;
double t=0.0;
int i;
for(i=0;i<100;i++){
t+=h;
y=runge(t,y,h);
printf("%f %f\n",t,y);
}
}

A 回答 (1件)

「プログラムを作成したい」ということだから, どのような式をたてればよいか自分で調べてみてはどうでしょうか.



ちなみに式そのものは C や C++ とは無関係だね.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!