使用泰勒级数逼近 sin(x) 直到项的绝对值低于某个实值

Approximating sin(x) using Taylor series until absolute value of a term goes below a certain real value

我想用它的泰勒级数打印 sin(x) 的值。

我必须添加项,直到项的绝对值变为 < 10e-06

#include <stdio.h>
#include <math.h>
double val(double, double);
int main(void){

    double x,eps=10e-06;

    printf("\nEnter value of x: ");
    scanf("%lf",&x);

    printf("\nCalculated value: %lf\n",val(x, eps));

    return 0;

}

double val(double x, double eps){

    int i;
    double t=x, sum=0;
    if(fabs(x)<= eps) return 0;

    for(i=1;i<=20; i++){

        sum+=t;
        t*=-(x*x)/((2*i+1)*(2*i));
        if(fabs(t)>=eps) break;
    }
    return sum;
}

但我得到的输出与我的输入相同(即我在输出中得到 x)。

谁能告诉我哪里出了问题。

问题在这里:

if(fabs(t)>=eps) break;

如果项 大于 epsilon 值,您将跳出循环。你想检查它是否更少:

if(fabs(t)<eps) break;