Fortran 计算标准偏差的程序给出了不正确的值
我正试图编写一个程序,从两个不同的文件中读取数据,并分别计算这两个文件的平均值、标准偏差和标准误差。每个文件包含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 这是我的密码: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
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。您应该使用数组。