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

标签 c taylor-series

我想用它的泰勒级数打印 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;

关于c - 使用泰勒级数逼近 sin(x) 直到项的绝对值低于某个实值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58613135/

相关文章:

c - C 中的字母数字字符串生成

c++ - C 预处理器防护?

c - 重定位被截断以适合 : R_X86_64_PC32 against undefined symbol `cfree'

c++ - 如何计算 Haskell 中的正弦函数?

c++ - exp() 函数的浮点实现是否等同于截断的泰勒级数展开?

c - 为什么返回指向局部变量或参数的指针是不好的做法?

我不能在 char 数组上设置空终止吗?

Python:计算泰勒级数的误差

wolfram-mathematica - Mathematica 中的多元泰勒级数展开

java - 使用java进行麦克劳林级数arccos计算有什么问题?