计算标准差的程序会给出不正确的值

时间:2017-08-19 21:04:09

标签: fortran gfortran fortran90

我试图编写一个从2个不同文件中读取数据的程序,并分别计算两者的平均值,标准差和标准误差。每个文件包含12个值(月降雨量),这里是值:

5.0, 6.6, 9.3, 10.4, 14.0, 18.0, 16.9, 18.6, 15.4, 13.1, 5.4, 7.6,

3.2, 4.3, 9.5, 13.0, 14.5, 19.2, 20.8, 19.0, 17.2, 12.9, 7.2, 2.0。

这是我的代码:

program data
implicit none

integer             :: R, F
double precision    :: x, sum = 0, mean, y, mean2, sum2 = 0, var =0, sdv, 
var2 = 0, sdv2


open(unit = 100, file = 'tmax_1910.txt', status = 'old', action = 'read')
 do R = 1,  12
 read(100,*) x
 sum = sum + x

end do

mean = (sum)/12

 do R = 1, 12
  var = var + (((x - mean)**2.0)/12)
  sdv = var**0.5

end do
open(unit = 200, file = 'tmax_2010.txt', status = 'old', action = 'read')
 do F = 1, 12
 read(200,*) y
 sum2 = sum2 + y

end do

mean2 = (sum2)/12

 do F = 1, 12
  var2 = var2 + (((y - mean2)**2.0)/12)
  sdv2 = var2**0.5
end do

print *, 'mean=', mean, 'mean2=', mean2, 'sdv=', sdv, 'sdv2=', sdv2

end program data

比较我得到的在线计算器,我得到正确的平均值(分别为11.69和11.89),但我的标准偏差值是关闭的。我得到的第一个值是4.09 ......,第二个值是9.9 ......而第一个值是4.9 ......,第二个值是6.6 ......

我的方差公式无法看到任何错误,所以导致这种情况的原因是什么?

感谢。

0 个答案:

没有答案