c - 尝试使用泰勒公式生成 cos x 的值

标签 c trigonometry taylor-series

用户需要给出“x”和“n”的值,以便使用泰勒级数近似计算 cos x(您可以在此处查看其公式:http://campusdematematicas.com/wp-content/uploads/2012/05/serie-taylor-funcion-coseno.gif),其中“k”值是下面代码中的“i”。

问题是我不知道我做错了什么,因为它没有给我正确的 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);
}

最佳答案

m 的初始化错误。代码求和 x 的奇次幂,而不是偶次幂。

// m = x;
m = 1.0;

输出

cos(0.00) = 1.000000
cos(1.05) = 0.500460   // cos(60 degrees) --> 0.5
cos(1.57) = 0.000796   // cos(90 degrees) --> 0.0
cos(3.14) = -0.999899

关于c - 尝试使用泰勒公式生成 cos x 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217169/

相关文章:

c# - Mathf.Atan2 返回不正确的结果

algorithm - 计算圆周围的点

python - 用sympy计算多元函数的泰勒级数

c - pb用C程序: double free or corruption (! prev)

c - 使用 malloc() 和 sizeof() 函数时出错

c - 扫描 C 编程时向字符串添加零

javascript寻找旋转矩形的中心

c# - 在 C# 中生成并使用泰勒多项式

c - 为什么使用 arcsin 的泰勒级数公式在 x = 1 时收敛得如此之快

用C语言创建用户名