簡體   English   中英

為什么通過添加無限級數的前 N 項來計算 sin(x) 總是返回 0.00000?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM