- 締切済み
C言語 正弦関数の級数展開
はじめまして。 sinxの級数展開を7項まで取った場合と組み込み関数で求めたsinxの値の差を,0度から360度まで,プログラムを作成して求めよ、という問題があるのですが、300度まででとまってしまいます。 どなたか、わかる方がいまいたら、教えてください。 以下リストです。 #include <stdio.h> #include<conio.h> #include <math.h> const double pi=atan(1.0)*4; double kaijyo(int n) { double ret=1; for (int i=2;i<=n;i++) { ret*=i; } return ret; } double polSin(double theta,int order) { int i; double ret=theta; for (i=1;i<order;i++) { if (i%2==1) { ret-=pow(theta,(i*2+1))/kaijyo(i*2+1); } else { ret+=pow(theta,(i*2+1))/kaijyo(i*2+1); } } return ret; } int main() { int order=7; double rad,theta,trueVal,polVal; for (theta=0;theta<360;theta+=1.0) { rad=theta/180*pi; trueVal=sin(rad); polVal=polSin(rad,order); printf("%e\n",polVal-trueVal); } getch(); return 0; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hidebun
- ベストアンサー率50% (92/181)
printf("theta=%f, %e\n", theta, polVal-trueVal); などとしてthetaの値も表示してみましょう。 コマンドプロンプトを開き、バー上で右クリック、既定値を選択し、レイアウトタブを選択したら、画面バッファのサイズ(高さ)が300あたりになってるのではないですか? これを大きくしてみましょう。
- php504
- ベストアンサー率42% (926/2160)
300というのはどうやって確認しましたか ファイルにリダイレクトして確認しないと画面がスクロールして確認できませんよ または出力にカウンタも表示するようにするとか
補足
回答ありがとうございます。 すみません補足です。 300度というのは間違いで、300個目の答え(sinxの級数展開と組み込み関数で求めたsinxの値の差)が出て終了しています。 確認はDOS画面(コマンドプロンプトみたいな画面?)が出てきたのをエクセルに移して数えただけです。
お礼
ありがとうございます。きちんと表示されました。 途中から右上がりのグラフになったのですがこれで良いのでしょうか?