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