#include #include #include int main() { FILE *fp1; FILE *fp2; FILE *fp3; FILE *fp4; int n; double t=0.0,dt=0.01; double x1=0.0,v1=0.0; double x2=10.0,v2=0.0; double x3=20.0,v3=0.0; double x4=30.0,v4=0.0; double f1(double ,double ,double); double f2(double ,double ,double); double f3(double ,double ,double); double f4(double ,double ); fp1=fopen("c:\\test1r.dat","w"); fp2=fopen("c:\\test2r.dat","w"); fp3=fopen("c:\\test3r.dat","w"); fp4=fopen("c:\\test4r.dat","w"); /*ばね定数、質点の質量はすべて1*/ for (n=0;n<=10000;++n) { x4+=v4*dt; /*4個目*/ v4+=f4(x3,x4)*dt; x3+=v3*dt; /*3個目*/ v3+=f3(x2,x3,x4)*dt; x2+=v2*dt; /*2個目*/ v2+=f2(x1,x2,x3)*dt; x1+=v1*dt; /*1個目*/ v1+=f1(t,x1,x2)*dt; t+=dt; fprintf(fp1,"%lf %lf\n",t,x1); fprintf(fp2,"%lf %lf\n",t,x2); fprintf(fp3,"%lf %lf\n",t,x3); fprintf(fp4,"%lf %lf\n",t,x4); } fclose(fp1); fclose(fp2); fclose(fp3); fclose(fp4); return 0; } /*1個目*/ double f1(double t,double x1,double x2) { return cos(t)-1*(10-fabs(x1-x2)); } /*2個目*/ double f2(double x1,double x2,double x3) { return 1*(10-fabs(x1-x2))-1*(10-fabs(x2-x3)); } /*3個目*/ double f3(double x2,double x3,double x4) { return 1*(10-fabs(x2-x3))-1*(10-fabs(x3-x4)); } /*4個目*/ double f4(double x3,double x4) { return 1*(10-fabs(x3-x4)); }