/*放物の方程式(抵抗力あり) dx/dt=vx dz/dt=vz dvx/dt=-A/M*vx*sqrt(vx*vx+vz*vz) dvz/dt=-A/M*vz*sqrt(vx*vx+vz*vz)-G x0=0 z0=0 v0x=v0*cos(th) v0z=v0*sin(th) をルンゲクッタ法で解く */ #include #include #define TMAX 200.0 #define TH 60 #define V0 35 #define M 1 #define A 0.01 #define G 9.8 double f1(double t,double x,double vx); double f2(double t,double z,double vz); double f3(double t,double vx,double vz); double f4(double t,double vx,double vz); int main(void) { double x,z,vx,vz,t,dt; double k0[4],k1[4],k2[4],k3[4]; FILE *output; dt=0.02; x=z=0.0; vx=V0*cos(TH*3.1415926/180); vz=V0*sin(TH*3.1415926/180); /* 初期値 */ output=fopen("deg60.data","w"); for(t=0.0;t