一系列的总结
Summation of a series
这是我的代码,我正在尝试计算这个系列:((-1)^n)*n/(n+1)
n 从 1
开始到 5
,代码无法正常工作,有人可以帮忙吗?
int main(){
int i,n;
double sum1;
for (i=1; i<6; i++)
sum1 += (pow(-1,i))*((i)/(i+1));
cout<<sum1;
return 0;
}
最后的正确答案必须等于-0.6166666666666667
,代码无法正确计算。
我从 here 计算了序列。有什么特殊的函数可以做求和吗?
试试这个
for (i = 0; i <= 5; i++) // from 0 to 5 inclusively
sum1 += (pow(-1, i)) * (static_cast<double>(i) / (i + 1));
总是在使用前初始化变量。 double sum1 = 0;
((i) / (i + 1))
执行 整数 除法,对于任何 i
.
结果为 0
- 用
pow
函数求-1
的幂极不合理
int main() {
int i;
double sum1 = 0;
double sign = -1;
for (i = 1; i < 6; i++)
{
sum1 += sign * i / (i + 1);
sign *= -1.0;
}
std::cout << sum1;
return 0;
}
确保在使用变量之前对其进行初始化。你之后初始化 i
这样就可以了,但是 sum1
需要初始化:
double sum1 = 0.0;
对于求和,即使将结果赋值给double
,中间结果也可能不是,整数相除会导致截断值。出于这个原因,应该使用双文字(例如 2.0
而不是 2
)并且应该在适用的地方转换 i
:
sum1 += (pow(-1, i))*(((double)i) / ((double)i + 1.0));
最后,为了得到想要的精度,可以在打印中使用std::setprecision
。最终结果可能如下所示:
int main() {
int i;
double sum1 = 0.0;
for (i = 1; i < 6; i++)
sum1 += (pow(-1, i))*(((double)i) / ((double)i + 1.0));
std::cout << std::setprecision(15) << sum1 << std::endl;
return 0;
}
输出:
-0.616666666666667
这是我的代码,我正在尝试计算这个系列:((-1)^n)*n/(n+1)
n 从 1
开始到 5
,代码无法正常工作,有人可以帮忙吗?
int main(){
int i,n;
double sum1;
for (i=1; i<6; i++)
sum1 += (pow(-1,i))*((i)/(i+1));
cout<<sum1;
return 0;
}
最后的正确答案必须等于-0.6166666666666667
,代码无法正确计算。
我从 here 计算了序列。有什么特殊的函数可以做求和吗?
试试这个
for (i = 0; i <= 5; i++) // from 0 to 5 inclusively
sum1 += (pow(-1, i)) * (static_cast<double>(i) / (i + 1));
总是在使用前初始化变量。
double sum1 = 0;
结果为((i) / (i + 1))
执行 整数 除法,对于任何i
.0
- 用
pow
函数求-1
的幂极不合理
int main() {
int i;
double sum1 = 0;
double sign = -1;
for (i = 1; i < 6; i++)
{
sum1 += sign * i / (i + 1);
sign *= -1.0;
}
std::cout << sum1;
return 0;
}
确保在使用变量之前对其进行初始化。你之后初始化 i
这样就可以了,但是 sum1
需要初始化:
double sum1 = 0.0;
对于求和,即使将结果赋值给double
,中间结果也可能不是,整数相除会导致截断值。出于这个原因,应该使用双文字(例如 2.0
而不是 2
)并且应该在适用的地方转换 i
:
sum1 += (pow(-1, i))*(((double)i) / ((double)i + 1.0));
最后,为了得到想要的精度,可以在打印中使用std::setprecision
。最终结果可能如下所示:
int main() {
int i;
double sum1 = 0.0;
for (i = 1; i < 6; i++)
sum1 += (pow(-1, i))*(((double)i) / ((double)i + 1.0));
std::cout << std::setprecision(15) << sum1 << std::endl;
return 0;
}
输出:
-0.616666666666667