我想操纵一个大代码。我想计算主程序中计算结果的rmse。我添加了以下子程序来计算rmse
subroutine rmse(A,B,nmax,rmseans)
Integer nmax
Double Precision A(nmax),B(nmax),C(nmax),d(nmax)
Real e,f,rmseans
COMMON /PAR7/ XTIME,STAGE,RECH,OBS
e = 0
do 103 i=1,nmax
c(i)= (a(i)-b(i))
d(i)= (c(i))**2
e = e+d(i)
103 enddo
rmseans = sqrt(e/nmax)
End`
它需要两个数组A和B,并将rmse设为rmseans
,而nmax
为术语总数。
然后我在主程序结束时调用这个子程序为
Call rmse(OBS,H,NT,rmseans)
Write(*,*) rmseans
但这给了我一个非常错误的答案。我已经确保在调用子例程之前通过在文件中写入这两个值来计算值OBS和H.