#include #include #include FILE *fout; int main(void){ // fout=fopen("output1.txt","w"); int i; double x1[20001],dx1[20001],x2[20001],dx2[20001]; double t,DELTA_T=0.0005; double k1=10000.0,k2=10000.0,c1=500.0,c2=500.0,m1=10.0,m2=10.0; double w11=sqrt(k1/m1),w21=sqrt(k1/m2),w22=sqrt(k2/m2); double Amp=0.001,Fre=20.0; //初期条件 x1[0]=0.0; dx1[0]=0.0; x2[0]=0.0; dx2[0]=0.0; //計算開始 for(i=0;i<20000;i++){ t = i*DELTA_T; x1[i+1]=x1[i]+DELTA_T*dx1[i]; dx1[i+1]=dx1[i]-DELTA_T*(c1/m1*(dx1[i]-dx2[i])+w11*w11*(x1[i]-x2[i])); x2[i+1]=x2[i]+DELTA_T*dx2[i]; dx2[i+1]=dx2[i]-DELTA_T*((w21*w21+w22*w22)*x2[i]-w21*w21*x1[i]+w22*w22*Amp*(1-cos(2*M_PI*Fre*t))) -DELTA_T*((c1/m2+c2/m2)*dx2[i]-c1/m2*dx1[i]+c2/m2*2*M_PI*Fre*Amp*sin(2*M_PI*Fre*t)); //計算結果の出力 fprintf(fout,"%lf %lf %lf %lf %lf %lf\n",t,x1[i],dx1[i],x2[i],dx2[i],Amp*(1-cos(2*M_PI*Fre*t))); } return 0; }