我正在尝试使用泰勒级数公式计算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/

10-11 18:00