デバッグはできるのですが数字が合いません。
どこが違うか教えてください。
問題
e^2xをマクローリン展開し、有効数字10桁まで求めよ。
この時の有効数字は、展開したk-1の項までの和と、k項までの和が10桁一致するまでループするということです。
k項までの和-k項までの和は、k項であると思ったので、k項×10^10が0以下になるまでループしました。
#define _CRT_SECURE_NO_WARNINGS 1
#define _USE_MATH_DEFINES
#include<stdio.h>
#include <math.h>
int main(void) {
double x;
int kai = 1;
int k;
int i;//階乗に使う
double bb;//2*x
double bb2;//分母
double kou;//k項
double ans;//2項からk項までの和
double sa;//最後の項
printf("e^2xのxをいくつにしますか?\n");//e^2xの入力
scanf("%lf", &x);
bb = 2 * x;
ans = 1.0;
for (k = 1;; k += 1)//kを増やす
{
bb2 = pow(bb, k);//2x^k
for (i = 1; i <= k; ++i) {//階乗
kai = kai * i;
};
kou = bb2 / kai;//k項
sa = kou * 10000000000;
if (sa <= 0)
break;//差が0以下になったらこのループを終わりにする。
ans = ans + kou;
}
printf("計算結果は%fです\n", ans);//出力⑨
return 0;
}
e^2のxを何にしますか?
5(入力)
計算結果は182.000927です