c++ - 怎么了?如何更改 "sum1"顺序?

标签 c++

我正在尝试使用泰勒级数公式计算 cos x 的值

             infinity
             ----                  2k
             \            k      x
 cos(x) =    /        (-1)  * -------------
             ----                (2k)!
             k=0

图形显示在 http://ppt.cc/G,DC

这是我的程序。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    double sum=0.0,sum1=0.0;
 double x;
 cin>>x;
 for(int i=0 ; i<=10 ; i=i+1 )
 {
  for(int i=1 ; i<=20 ; i=i+1)
  {
   sum1=i*sum1+sum1;
  }
     sum=pow(-1,(double)i)*pow(x,(double)(2*i))/sum1+sum;
 }
 cout<<"Sum : "<<sum<<endl;
 system("pause");
 return 0;
}

输出是-1.#IND

为什么?

如何更改“sum1”的顺序以使其正常工作?

最佳答案

您正在使用 i 作为两个相互嵌套的 for 循环的控制变量的名称。这不会像您期望的那样工作。

接下来,sum1 为 0。无论您将零乘以事物多少次并在其中加零,它仍然是零。然后除以零,这就是为什么您的最终答案是 NaN(非数字)。

您需要修正阶乘的计算。为什么不写一个阶乘函数,先自己测试一下?

关于c++ - 怎么了?如何更改 "sum1"顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4446318/

相关文章:

c++ - 创建一个类以将摄氏度转换为华氏度,反之亦然

c++ - C++ 中体面的 SMTP 客户端

c++ - 位屏蔽结果不一致

c++ - Qt如何隐藏横条

c++ - 游戏中的屏幕滚动

c++ - 使用 .h 扩展名

c++ - OpenCV:Mat::reshape() 什么都不做

c++ - 在C++中是否可以具有自动变量的静态部分?

c++ - c++中的全局变量错误LNK2020

c++ - 在循环中更新 Qt GUI(将位图图像显示为电影)