序列的求和
Summation of a series
本文关键字:求和 更新时间:2023-10-16
这是我的代码,我正在尝试计算这个系列:((-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
哪个代码无法正确计算它。 我从这里计算了系列。有什么特殊功能可以做求和吗?
确保在使用变量之前对其进行初始化。之后你初始化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
-
使用前始终初始化变量。
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;
}
试试这个
for (i = 0; i <= 5; i++) // from 0 to 5 inclusively
sum1 += (pow(-1, i)) * (static_cast<double>(i) / (i + 1));
相关文章:
- 求和 int 乘以双倍时的欠/过近似
- 给定一个类型,如何派生一个泛型更广泛的类型(例如,用于溢出安全求和)?
- 递归求和任务的错误答案
- 向量值(字符串和整数)求和C++
- 通过 RCPP 中的索引求和
- 矩阵行求和与 RowMajor 和 ColMajor 数据排列的奇怪性能差异
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 如何使用循环对所有数字求和?
- 循环中的线程 Runnin 用于对 c++ 中的数字求和
- 使用动态数组求和和和求平均值
- 找到所有与自己求和的数字X的快速方法,去掉一个数字得到N
- 如何对堆栈中的所有项目求和?Postfix计算器
- MPI 归约操作中的求和顺序
- 在高通六边形处理器的word32上执行水平求和的最快方法是什么
- 模板化求和(参数...)可变参数函数无法编译
- 平衡数组索引,同时从左和右对数组求和
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- 简单的计数和求和函数没有按照我预期的方式工作
- C++ 如何从文本文件中扫描二维数组并对行求和?
- C++ 犰狳和OpenMp:外积求和的并行化 - 定义犰狳矩阵的约简