借助级数函数c++计算指定函数
Calculate a specified function with the help of a series function c++
函数 f(x) 和级数需要以相同的答案结束
这是我对这个任务的尝试,但它给了我不同的结果,我不完全理解 C++ 中系列的概念
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
int main()
{
float x, y1, y2, a;
int n;
cout<<"Enter x: ";
cin>>x;
cout<<"Enter n: ";
cin>>n;
if (x == 0) x = 3.0;
y1 = 1.0/(2.0*x+5.0);
a = 1.0/11;
y2 = a;
cout<<"f(x) = "<<y1<<endl;
if(x > -5.0/2.0 && x < 17.0/2.0){
for (int k = 0; k <= n; k++){
a = (a*(-1)*pow(2.0/11.0,k))/pow(11.0,k);
y2 = y2 + a;
}
}
else{
return 1;
}
cout<<"Sum = "<<y2<<endl;
system("pause");
return 0;
}
我使用了从 -2,5 到 8,5 的任何 x 和 n 到 100
结果总是不同的...
该系列的功能和总和应该非常接近,如果不是相等的答案,但它不是我的情况..
我应该怎么做?很乐意得到解释)
您应该只使用正确的术语来表示您的总和:
a = pow(-2.0 / 11.0 * (x - 3), k) / 11.0;
请注意,我合并了幂中的术语。除法11
也可以移到末尾,省去一些操作。但是你需要一个不同的初始化。但是,这也允许您增量计算 a
。像这样:
//Initialization
a = 1.0;
y2 = a;
double factor = -2.0 / 11.0 * (x - 3);
//...
for (int k = 1; k <= n; k++)
{
a *= factor;
y2 += a;
}
//Finally
cout << "Sum = " << y2 / 11.0f << endl;
函数 f(x) 和级数需要以相同的答案结束 这是我对这个任务的尝试,但它给了我不同的结果,我不完全理解 C++ 中系列的概念
#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
int main()
{
float x, y1, y2, a;
int n;
cout<<"Enter x: ";
cin>>x;
cout<<"Enter n: ";
cin>>n;
if (x == 0) x = 3.0;
y1 = 1.0/(2.0*x+5.0);
a = 1.0/11;
y2 = a;
cout<<"f(x) = "<<y1<<endl;
if(x > -5.0/2.0 && x < 17.0/2.0){
for (int k = 0; k <= n; k++){
a = (a*(-1)*pow(2.0/11.0,k))/pow(11.0,k);
y2 = y2 + a;
}
}
else{
return 1;
}
cout<<"Sum = "<<y2<<endl;
system("pause");
return 0;
}
我使用了从 -2,5 到 8,5 的任何 x 和 n 到 100 结果总是不同的... 该系列的功能和总和应该非常接近,如果不是相等的答案,但它不是我的情况..
我应该怎么做?很乐意得到解释)
您应该只使用正确的术语来表示您的总和:
a = pow(-2.0 / 11.0 * (x - 3), k) / 11.0;
请注意,我合并了幂中的术语。除法11
也可以移到末尾,省去一些操作。但是你需要一个不同的初始化。但是,这也允许您增量计算 a
。像这样:
//Initialization
a = 1.0;
y2 = a;
double factor = -2.0 / 11.0 * (x - 3);
//...
for (int k = 1; k <= n; k++)
{
a *= factor;
y2 += a;
}
//Finally
cout << "Sum = " << y2 / 11.0f << endl;