• ベストアンサー

sinのプログラム

#include<stdio.h> #include<math.h> #define NMAX 100 main(){ float eps,x,t,s; int n; printf("Taylor series\n"); scanf("%g",&eps); printf("eps=%g\n",&x); for(;scanf("%g",&x)!=EOF;){ printf("\nx=%g\n n\tt\t\ts\n",x); t=s=1; for(n=1;n<NMAX;n++){ t*=X/n; s+=t; printf("%2d %15.6e %15.6e\n",n,t,s); if(fabs(t)<eps) break; } if(n>=NMAX) printf("---not converged ---\n); printf("exp(%g)=%g\tn=%d\n",x,s,n); } return(0); } これはeの級数展開をもとめるプログラムなのでが、これをsinの級数展開のプログラムに改造しろという問題があります。 sinのn乗の項を求めてeの部分と置き換えてやってみたのですができません。 どなたかわかる方がいましたら、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

このプログラムだとそもそも走らない気がするのですが…。 考え方としては >t=s=1; >for(n=1;n<NMAX;n++){ >t*=X/n; s+=t; の部分を t=s=x; for(n=1;n<NMAX;n++) { t*=-x*x/((2*n+1)*(2*n)); s+=t; にすればいいでしょう。

karuu
質問者

お礼

ありがとう御座いました。返事が遅くなり、申し訳ありません。プログラムですが、ElectricGamoさんの回答のとおりやったら出来ました。

その他の回答 (1)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

・sの初期値を0にする。 ・nが偶数の時、sにtを足さない。 ・nを4で割った余りが3の時、sからtを引く でできないかな?