C++ 什么';怎么了?我怎样才能更改“的”;sum1“;点菜?
我试图用泰勒级数公式计算cos x的值C++ 什么';怎么了?我怎样才能更改“的”;sum1“;点菜?,c++,C++,我试图用泰勒级数公式计算cos x的值 infinity ---- 2k \ k x cos(x) = / (-1) * ------------- ---- (2k)! k=0 以图形方式显示在 这是我的节目 #include "stdafx.h
infinity
---- 2k
\ k x
cos(x) = / (-1) * -------------
---- (2k)!
k=0
以图形方式显示在
这是我的节目
#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;
}
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]
{
双和=0.0,sum1=0.0;
双x;
cin>>x;
for(int i=0;i您正在使用i
作为嵌套在彼此内部的两个for循环的控制变量的名称。这不会按您预期的方式工作
接下来,sum1
是0。不管你用零乘以多少次,再加上零,它仍然是零。然后你除以零,这就是为什么你的最终答案是NaN
(不是数字)
您需要修复阶乘的计算。为什么不先编写一个阶乘函数并自己测试它呢?您正在使用i
作为嵌套在彼此内部的两个for循环的控制变量的名称。这不会按您预期的方式工作
接下来,sum1
是0。不管你用零乘以多少次,再加上零,它仍然是零。然后你除以零,这就是为什么你的最终答案是NaN
(不是数字)
您需要修复阶乘的计算。为什么不先编写一个阶乘函数并自己测试它呢?您正在重新定义内部循环中的i
for(int i=0 ; i<=10 ; i=i+1 )
{
for(int i=1 ; i<=20 ; i=i+1)
for(inti=0;i您正在内部循环中重新定义i
for(int i=0 ; i<=10 ; i=i+1 )
{
for(int i=1 ; i<=20 ; i=i+1)
for(int i=0;i您似乎没有正确计算阶乘。应该是
sum1 = 1.0;
for(int k=1 ; k<=i*2 ; k=k+1)
{
sum1 *= k;
}
sum1=1.0;
对于(int k=1;k来说,您似乎没有正确计算阶乘。应该是
sum1 = 1.0;
for(int k=1 ; k<=i*2 ; k=k+1)
{
sum1 *= k;
}
sum1=1.0;
对于(intk=1;k许多事情都有点奇怪。
首先:请写ANSI C++,尽量不要采用微软的东西,我不知道,但我想那些是为专业的。让我们坚持基本的东西。
以下是您应该做的:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
double factorial(double fac)
{
if(fac == 0)
return 1;
return fac * factorial(fac - 1);
}
int main(int argc, char* argv[])
{
double sum=0.0;
double x;
cin >> x;
for ( int i = 0 ; i <= 10 ; i++ )
{
double divisor = factorial ( 2 * i );
if(divisor != 0.0)
{
sum += (double)( (pow( -1 , i ) * pow (x , 2*i )) / divisor );
}
}
cout<<"Sum : "<<sum<<endl;
//system("pause");
return 0;
}
#包括
#包括
#包括
使用名称空间std;
双阶乘(双fac)
{
如果(fac==0)
返回1;
返回fac*阶乘(fac-1);
}
int main(int argc,char*argv[])
{
双和=0.0;
双x;
cin>>x;
对于(inti=0;i许多事情都有点奇怪。
首先:请写ANSI C++,尽量不要采用微软的东西,我不知道,但我想那些是为专业的。让我们坚持基本的东西。
以下是您应该做的:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
double factorial(double fac)
{
if(fac == 0)
return 1;
return fac * factorial(fac - 1);
}
int main(int argc, char* argv[])
{
double sum=0.0;
double x;
cin >> x;
for ( int i = 0 ; i <= 10 ; i++ )
{
double divisor = factorial ( 2 * i );
if(divisor != 0.0)
{
sum += (double)( (pow( -1 , i ) * pow (x , 2*i )) / divisor );
}
}
cout<<"Sum : "<<sum<<endl;
//system("pause");
return 0;
}
#包括
#包括
#包括
使用名称空间std;
双阶乘(双fac)
{
如果(fac==0)
返回1;
返回fac*阶乘(fac-1);
}
int main(int argc,char*argv[])
{
双和=0.0;
双x;
cin>>x;
对于(int i=0;i当除以0时,结果变成无穷大(打印为-1.#IND
)
给出了一个很好的简单方法,每次重新计算整个阶乘,并使用pow
函数来计算公式中的交替符号。但是,您可以更快地对该代码进行改进
循环的一次迭代中的阶乘函数可以利用这样一个事实:在循环的先前迭代中,您已经将所需的大部分项相乘
指数(-1)^k
只是一种在加法和减法之间交替的方法——你可以用一个变量来代替它,这个变量在循环中的每次迭代中都会改变它的符号。(除了我在这里介绍的方法外,还有其他方法可以做到这一点,关键是你不需要调用pow()
函数来实现它。)
另一个幂函数x^(2k)
也可以以相同的方式展开
我消除了循环的第一次迭代,因为我可以在头脑中计算它(对于任何x
,它都是1.0),并将sum
的初始值设置为1.0
。这样阶乘
就永远不会乘以0
试试这个
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
double x;
cin>>x;
double sum=1.0, factorial=1.0, sign=-1.0, power=1.0;
for(int i=1 ; i<=10 ; i=i+1 )
{
factorial*= (2*i-1) * 2*i;
power *= x * x;
sum += sign * power/factorial;
sign = -sign;
}
cout<<"Sum : "<<sum<<endl;
system("pause");
return 0;
}
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]
{
双x;
cin>>x;
双和=1.0,阶乘=1.0,符号=1.0,幂=1.0;
对于(int i=1;i当除以0时,结果变成无穷大(打印为-1.#IND
)
给出了一个很好的简单方法,每次重新计算整个阶乘,并使用pow
函数来计算公式中的交替符号。但是,您可以更快地对该代码进行改进
循环的一次迭代中的阶乘函数可以利用这样一个事实:在循环的先前迭代中,您已经将所需的大部分项相乘
指数(-1)^k
只是一种在加法和减法之间交替的方法——你可以用一个变量来代替它,这个变量在循环中的每次迭代中都会改变它的符号。(除了我在这里介绍的方法外,还有其他方法可以做到这一点,关键是你不需要调用pow()
函数来实现它。)
另一个幂函数x^(2k)
也可以以相同的方式展开
我消除了循环的第一次迭代,因为我可以在头脑中计算它(对于任何x
,它都是1.0),并将sum
的初始值设置为1.0
。这样阶乘
就永远不会乘以0
试试这个
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
double x;
cin>>x;
double sum=1.0, factorial=1.0, sign=-1.0, power=1.0;
for(int i=1 ; i<=10 ; i=i+1 )
{
factorial*= (2*i-1) * 2*i;
power *= x * x;
sum += sign * power/factorial;
sign = -sign;
}
cout<<"Sum : "<<sum<<endl;
system("pause");
return 0;
}
#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]
{
双x;
cin>>x;
双和=1.0,阶乘=1.0,符号=1.0,幂=1.0;
对于(int i=1;i您希望我们先下载资料,以了解您试图解决的问题到底是什么?您真的需要所有Windows-y资料来做家庭作业吗?您能向我们展示您的输出吗?请详细说明