[英]Why does calculating sin(x) by adding the first N terms of an infinite series always return 0.00000?
在下面的代碼中,我嘗試通過添加無限級數的前N
項來計算sin(x)
。
#include <stdlib.h>
#include <math.h>
#define pi 3.14
int main()
{
float sign=-1,d,x,n,k,factorial=1,y;
printf("Enter the degree ");
scanf("%f", &d);
printf("Enter num of terms ");
scanf("%f", &n);
x = d * pi / 180 ;
for(int i=0,j=1 ; (i==n) && (j<=y) ; i++,j++){
y = 2*i + 1 ;
factorial *= j ;
sign = - 1 * sign ;
k += sign * pow(x,y) / factorial ;
}
printf("%f",k);
}
問題是 output 總是0.00000
。
問:為什么通過添加無窮級數的前 N 項來計算 sin(x) 總是返回 0.00000?
(i==n) && (j<=y)
行始終為假,因此循環永遠不會運行。
#include <stdio.h>
#include <math.h>
#define pi 3.1415926536
int main()
{
float d, x, estimate=0.0, factorial=1.0, sign=1.0;
int i, n;
printf("Enter the degree ");
scanf("%f", &d);
printf("Enter num of terms ");
scanf("%d", &n);
x = d * pi / 180;
for (i=1 ; i<=2*n ; i+=2) {
estimate += sign * pow(x, i) / factorial;
factorial *= (i+1) * (i+2);
sign = -sign;
printf("%f\n", estimate);
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.