【发布时间】:2015-03-23 20:51:22
【问题描述】:
首先,我是 fortran 的新手。我试图在 0.0000005 的容差范围内找到 1/e 的值。我使用了 1/e 的求和表示,即 (epsilon) n 从零到无穷大 ((-1)^n)/n!。我从n=2开始,当值为1/n!小于我的容差,程序将停止并打印计算出的总值。但是我的程序只进入 n=3 并且只打印 1/3 的值!这是 1.666666。 !程序被编辑。编辑后的表格是计算我想要的。在外部while的条件是(num3
program Ecalculator
implicit none
integer :: mult,num1,n,num4,num5
real :: summ,num3,fact
mult=1
n=2.0
fact=1.0
summ=0.0
DO WHiLE(n<13)
fact=n
num1=n-1
DO WHiLE(num1>0)
fact=fact*num1;
num1=num1-1;
END DO
fact=fact*mult;
num3=1.0/fact;
mult=mult*(-1);
summ=summ+num3;
n=n+1;
END DO
print *, summ
read *, num5
end program Ecalculator
【问题讨论】:
-
您似乎没有将
num3初始化为任何内容。即使保证它是零初始化的,也很有可能你甚至没有进入你的外循环...... -
num1是一个整数,所以n-1也将是一个整数,尽管n是一个实数。这是故意的吗? -
另外,
REAL没有您需要的精度。你需要一个双精度类型。
标签: while-loop fortran nested-loops