c - 如何用 C 语言编写一个程序来估计正弦函数作为泰勒级数?

标签 c trigonometry taylor-series

我是编程新手,我无法弄清楚我的代码出了什么问题。如果有人可以通过任何方式帮助我了解我的程序出了什么问题,我将非常感激。我已经研究这个问题两个小时了,我知道我让它变得比需要的更加困难。这是我的新代码。我的新输出是 0.000000476837158。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
         double x, sinx, z, factorial, term;
         int j, n, i;
         x=0.5;
         n=10;
         i=0;
         z=sin(0.5);
         for(int i=0; i<=n; i++){
                      factorial = 1;
                      for(j=2*i +1; j<=i; j++)
                      {
                               factorial = factorial * j;
                               }
                      term=(pow(-1,i)*pow(x,2*i+1))/(factorial);
                      sinx=term++;
                      i=i++;
                                   }
                      printf("sin(0.5) is approximately %.15lf\n", sinx);
                      printf("sin(0.5) by default function is %.15lf\n", z);
                      system("pause");
                      return 0;
                      }

最佳答案

这个循环没有意义。

 for(j=0; j<=i; j++){
     factorial=2*j+1;
     }

它没有做任何不同的事情

factorial = 2*i+1;

如果您想计算阶乘(例如 i!),那么我会执行以下操作

// initialize `factorial`
factorial = 1;
for(j=1; j<=i; j++)
{
    //multiply `factorial` by `j`.  
    factorial = factorial * j;
}
<小时/>

您继续使用sinxterm,但它们从未初始化。这意味着它们将包含垃圾值。

<小时/>

i++ 本身就会增加,您不必使用任何额外的赋值运算符。

改变

i=i++;

简单

i++;

或者更好的是,使用 for 循环而不是 while 循环

for(int i=0; i<=n; i++)

关于c - 如何用 C 语言编写一个程序来估计正弦函数作为泰勒级数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19009653/

相关文章:

c - 有什么方法可以在规范模式下处理转义键吗?

C 将两位数字转换为一位整数

php - PHP中的坐标旋转

c# - 给定起点、终点和(圆的)中心点找到圆弧的中点

c - 在 C 中实现正弦和余弦的泰勒级数

c - 事件处理程序?

c - 定义全局变量来初始化结构数组

c - 如何改进sin/cos lut函数?

python - 针对小任意浮点值的 arcsin 函数的最快可能方法

java - 通过泰勒展开的高斯累积密度函数