用戶打算給出「x」和「n」的值以便使用taylors系列近似計算cos x(您可以在此處查看其公式:http://campusdematematicas.com/wp-content/uploads/2012/05/serie-taylor-funcion-coseno.gif )其中「k」值是下面代碼中的「i」。嘗試使用泰勒公式生成cos x的值
事情是,我不知道我做錯了什麼,因爲它沒有給我cos x的正確值。
我剛剛嘗試的輸入是x = 3.14,n = 6。 它應該給我的結果是cosx = -1.00 相反,它給了我:1.14
順便說一句,它不會爲0的工作,因爲它應該讓COS(X)= 1.00, 並且它給出0.000000而不是
#include <stdio.h>
int main(){
double x, n, m;
int i = 0, j, l, k = -1;
double g = 0.0;
unsigned long long p = 1;
printf("Introduce the value of x (real): ");
scanf("%lf%*c", &x);
m = x;
printf("\nIIntroduce the value of n (natural): ");
scanf("%lf%*c", &n);
while (i <=n){
for (l=1; l < (i*2); l++){
m *= x;
}
for (j=1; j <= (2*i); j++){
p *=j;
}
if (i%2 == 0){
k = 1;
}
g += (double) (m/p)*(k);
p = 1;
k = -1;
m = x;
i++;
}
printf("\ncos(%.2lf) = %lf\n", x, g);
}
「它不給我了,因爲x的應有的價值。」是一個糟糕的問題陳述。什麼是投入,產出和預期產出?它是否適用於0?爲什麼代碼混合'float/double'? - 這只是使分析變得複雜 - 建議只使用「雙」。 – chux
提供[MCVE]。請注意'factorial(2 * i)'會爲'i> 10'溢出一個64位的'unsigned long long'。 – EOF