前に質問してからしばらく考えてみた結果今だによくわからないままなので再質問します。
関数y=sin(x)のテイラー展開は次式で求められる。n番目の値が1*10^-8よりも小さくなるまでの級数を求め、任意のxに対するsin(x)を近似して求めよ。
y=sinx=Σ((-1)^n /(2n+1)!)*x^2n+1
というものをc言語を使って求めるという課題が出ました。コードを書いてみたのですが答えが0.000000000となってしまい正しい答えが出ません。直した方がいいところを教えていただきたいです。できるだけわかりやすく教えていただきたいです。
#include <stdio.h> #include <math.h> int main(void){ float n,x,sum,coeff_mole,coeff_deno,vari,series; printf("任意のxを入力>>"); scanf("%d",&x); n = 0.0; sum = 0.0; while(1){ //mole_計算 coeff_mole = pow(-1.0,n); //deno_計算 coeff_deno = 1; for(int i = 2*n+1;i>0;i--){ coeff_deno = coeff_deno+i; } //vari_計算 vari = pow(x,2*n+1); //series_計算 series = coeff_mole/coeff_deno*vari; if(series >= pow(10,-8)){ sum = sum + series; }else{ break; } n++; } printf("近似値は>>%.10f",sum); return 0; }
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/01 10:10
2018/07/01 11:59 編集
退会済みユーザー
2018/07/01 14:21