使用多维数组计算Fortran中的方差-未获得正确的值

使用多维数组计算Fortran中的方差-未获得正确的值,fortran,fortran90,Fortran,Fortran90,我没有得到标准偏差的正确值。我的方差公式正确吗 我应该得到风速、气压和温度的合理变化。风速变化应为.80,气压为.85,温度为1.10,标准偏差为: 但你在计算: 平方根下缺少一个1/N的因子,应该将求和的各个项的差平方,而不是求和本身。欢迎这样做!我为你编排了问题的格式。。。然而,仍然缺少一些重要的部分:您得到了什么输出?你期待什么?你是怎么解决的?是否启用了所有编译器警告和检查?另外,请提供可编译的内容。请阅读和。由于我们看不到输入数据文件,还请注意,inputstatus>0不足以检测

我没有得到标准偏差的正确值。我的方差公式正确吗

我应该得到风速、气压和温度的合理变化。风速变化应为.80,气压为.85,温度为1.10,标准偏差为:

但你在计算:


平方根下缺少一个1/N的因子,应该将求和的各个项的差平方,而不是求和本身。

欢迎这样做!我为你编排了问题的格式。。。然而,仍然缺少一些重要的部分:您得到了什么输出?你期待什么?你是怎么解决的?是否启用了所有编译器警告和检查?另外,请提供可编译的内容。请阅读和。由于我们看不到输入数据文件,还请注意,
inputstatus>0
不足以检测读取是否成功:负值出现在文件/记录结束条件下。方差方程是错误的:如果没有其他内容,则在求和之外求平方。
PROGRAM  Assignment_8 

IMPLICIT NONE

REAL,DIMENSION(1440,11) :: data
INTEGER :: inputstatus, openstatus, i, j 
REAL :: TempSum = 0.0, MaxVal, MinVal, MaxPrecip = 0.0, MinPrecip = 10000.00, &
TempSumsq = 0.0, TempVar, Tempsd, WindSum = 0.0, WindSumsq = 0.0, Windsd, WindVar, &
WindAvg, dailyprecip, MaxTemp, MinTemp, AvgWind, AvgTemp
REAL(8) :: Pressure, PressureSum = 0.0, PressureSumsq = 0.0, PressureAvg, Pressuresd, &
PressureVar 
INTEGER :: Count = 0
CHARACTER(20) :: filename


! Prompts the user to open the file
WRITE (*, '(1X, A)', ADVANCE = "NO") "Enter the name of the file:"
READ *, filename
! This statement will specify the unit number, and how the file will be
! opened
OPEN (UNIT = 35, FILE = filename, STATUS = "OLD", ACTION = "READ", IOSTAT = openstatus)
IF (openstatus > 0) STOP "FILE CAN'T BE OPEN" 

! Reads the opened file, places in an array, and calculates the output
DO i = 1,1440
    READ(35, *, iostat = inputstatus) data(i,:)
    if   (inputstatus > 0) STOP "Could not fill array"
ENDDO

! Calculates the output
AvgTemp = sum(data(:,6))/size(data(:,6))
AvgWind = sum(data(:,8))/size(data(:,8))
PressureAvg = sum(data(:,10))/size(data(:,10))
TempVar = (sum(data(:,6))-(sum(data(:,6))/size(data(:,6))))**2
Tempsd = (TempVar)**(.5)
WindVar = (sum(data(:,8))-(sum(data(:,8))/size(data(:,8))))**2
Windsd = (WindVar)**(.5)
PressureVar = (sum(data(:,10))-(sum(data(:,10))/size(data(:,10))))**2
Pressuresd = (PressureVar)**(.5)
MaxTemp = maxval(data(:,6))
MinTemp = minval(data(:,6))
dailyprecip = maxval(data(:,6)) - minval(data(:,6))

! Converts Pressure (Hg) to Pressure (mb)
PressureAvg = PressureAvg * 33.8639
Pressuresd = Pressuresd * 33.8639

! Displays formatted output of calculations from the data
PRINT '(1X,A30,F7.2,A20)', "Average Temperature=", AvgTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Temperature Variability=", Tempsd, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Maximum Daily Temperature=", MaxTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Minimum Daily Temperature=", MinTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A5)', "Average Wind Speed=", AvgWind, "mph"
PRINT '(1X,A30,F7.2,A5)', "Wind Speed Variability=", Windsd, "mph"
PRINT '(1X,A30,F7.2,A10)', "Average Pressure=", PressureAvg, "Millibars"
PRINT '(1X,A30,F7.2,A10)', "Pressure Variability=", Pressuresd, "Millibars"
PRINT '(1X,A40,F7.2,A10)', "Daily Accumulated Precipitation=", dailyprecip, "Inches"

CLOSE (35)

END PROGRAM assignment_8