Fortran 95中如何对循环生成的数组形式计算结果求和
解决方案:循环内累加求和,无需输出单个FV值
你完全可以通过在循环内累加求和的方式实现需求,不需要输出每一个FV值。下面是针对你原代码的具体修改:
修改后的代码
!.......vapor fraction.............. Real :: total_fv ! 声明存储总和的实型变量 total_fv = 0.0 ! 初始化总和为0(Fortran局部变量默认未初始化,必须手动赋值) do i=1,6 FV = Z(I)*(K(i)-1)/(VOLD*(K(i)-1)+1) total_fv = total_fv + FV ! 将当前计算的FV累加到总和中 ! 移除原有的write语句,不再输出单个FV值 END DO ! 后续可以直接使用total_fv,它就是6次循环中所有FV的总和
核心思路说明
这个方法和你看到的示例代码里的FNV累加逻辑完全一致:
- 先定义一个专门的变量(比如
total_fv)用来存储所有FV的总和,一定要先初始化(Fortran中未初始化的变量会包含随机值,直接累加会得到错误结果) - 每次循环计算出单个
FV后,立刻把它加到总和变量里 - 删除原代码中的
write(*,99001)FV语句,避免输出单个迭代结果
这样循环结束后,total_fv就直接存储了所有FV的总和,完全不需要输出中间结果。
内容的提问来源于stack exchange,提问作者priest
相关产品推荐
相关产品推荐

