- ベストアンサー
C++を使ってのテイラー展開
C++を使って,sinとcosのテイラー展開をしたいのです。 プログラムを作ってはみたのですが,こんな感じでよろしいのでしょうか? #include<stdio.h> int main(void) { int i,n; double xb,x,sinx=0,cosx=0,hu; xb=1.0; hu=1.0; printf("どこまで計算しますか?"); scanf("%d",&n); printf("xはいくらですか?(1以下!)"); scanf("%lf",&x); for(i=1;i<n;i++) { xb=xb*(x/i); if(i%2==0) { sinx=sinx+(hu*xb); hu=hu*(-1.0); } else { cosx=cosx+(hu*xb); hu=hu*(-1.0); } } if(i%2==0) { printf("答え:%f\n",sinx); } else { printf("答え:%f\n",cosx); } return 0; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#include<stdio.h> int main(void) { int i,n; double xb,x,sinx=0,cosx=1.0,hu; xb=1.0; hu=1.0; printf("どこまで計算しますか?"); scanf("%d",&n); printf("xはいくらですか?(1以下!)"); scanf("%lf",&x); for(i=1;i<n;i++){ xb=xb*(x/i); if(i%2!=0){ sinx=sinx+(hu*xb); hu=hu*(-1.0); } else { cosx=cosx+(hu*xb); } } if(i%2==0) { printf("答えsinx:%10.9f\n",sinx); } else { printf("答えcosx:%10.9f\n",cosx); } return 0; }
その他の回答 (2)
- tatsu99
- ベストアンサー率52% (391/751)
すみません。 どこまで計算しますかで、100 xはいくらですかで、 0.5 を入力すると 答え:-0.127626 となるのですが、この答えは、なにを意味しているのでしょうか? sin(0.5)の値でしょうか?
お礼
回答ありがとうございます。 ここでのxはラジアンで,sin(0.5)は0.479・・・になるみたいなんです(T_T) う~ん。。。 どこが違うのやら・・・
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
こんな感じとは? 期待する値が返ってきてるなら、いいんじゃないかしら。
お礼
回答ありがとうございます(^^) Cがさっぱり分からない + そもそも数学が分からない こんな私ですのでちょっと(というかかなり)不安だったので(^_^;) 多分期待する値が返ってきていたはず・・・
お礼
これです(^^) ちゃんと答えになりました。 ありがとうございました。 助かりました(^^ゞ