Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 计算标准偏差的程序给出了不正确的值_Fortran_Gfortran_Fortran90 - Fatal编程技术网

Fortran 计算标准偏差的程序给出了不正确的值

Fortran 计算标准偏差的程序给出了不正确的值,fortran,gfortran,fortran90,Fortran,Gfortran,Fortran90,我正试图编写一个程序,从两个不同的文件中读取数据,并分别计算这两个文件的平均值、标准偏差和标准误差。每个文件包含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

我正试图编写一个程序,从两个不同的文件中读取数据,并分别计算这两个文件的平均值、标准偏差和标准误差。每个文件包含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

我看不出我的方差公式有任何错误,那么是什么原因造成的呢


谢谢

您的程序使用x和y的最后读取值,即:x=7.6和y=2。计算sdv和sdv2。您应该使用数组。您的程序使用x和y的最后读取值,即:x=7.6和y=2。计算sdv和sdv2。您应该使用数组。