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