- 締切済み
コンパイルした時になぜ表示されないか
バネのつり合いから,オーバーシュートとその時の時間を求めるのですが,以下のようにプログラムを作り,オーバーシュートは出せましたが,一番下のprintf("t=\n%lf\n\n",(y1-y0)/(1+y1));の部分が画面に表示されません.わかる方ぜひ教えてください. #include<stdio.h> #define G 9.8 double m,K,H,A,N,t; double h=0.01; double f1(double y1,double y2){ return(y2); } double f2(double y1,double y2){ return(-K/m*y1+G-A*N/H/m*y2); } main(){ int i; double k[5][3]; double y0,y1,y2; y1=0; y2=0; printf("m,K,H,A,N="); scanf("%lf,%lf,%lf,%lf,%lf",&m,&K,&H,&A,&N); for(i=0;i<1000;i++){ k[1][1]=h*f1(y1,y2); k[1][2]=h*f2(y1,y2); k[2][1]=h*f1(y1+k[1][1]/2.0,y2+k[1][2]/2.0); k[2][2]=h*f2(y1+k[1][1]/2.0,y2+k[1][2]/2.0); k[3][1]=h*f1(y1+k[2][1]/2.0,y2+k[2][2]/2.0); k[3][2]=h*f2(y1+k[1][1]/2.0,y2+k[1][2]/2.0); k[4][1]=h*f1(y1+k[3][1],y2+k[3][2]); k[4][2]=h*f2(y1+k[3][1],y2+k[3][2]); if(k[1][1]+k[2][1]+k[3][1]+k[4][1]<0){ break; } y1=y1+k[1][1]/6.0+k[2][1]/3.0+k[3][1]/3.0+k[4][1]/6.0; y2=y2+k[1][2]/6.0+k[2][2]/3.0+k[3][2]/3.0+k[4][2]/6.0; } y0=m*G/K; printf("\n%lf\n\n",y1-y0); printf("t=\n%lf\n\n",(y1-y0)/(1+y1)); }
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
- titokani
- ベストアンサー率19% (341/1726)
- keikyu2101
- ベストアンサー率32% (65/202)
- asuncion
- ベストアンサー率33% (2127/6290)
- asuncion
- ベストアンサー率33% (2127/6290)
お礼
丁寧に何度もありがとうございました.今手元にlinuxが使えるパソコンがないので,大学に行き次第やってみます.