爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3940|回复: 2

[求助] mk检验求助多时次的循环程序

[复制链接]

新浪微博达人勋

发表于 2018-12-11 11:18:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
在家园下载了mk检验的程序,求单个时次成功运行并画出图,但是现在需要求多时次的mk检验,在源程序中尝试写循环,改的结果不对,希望家园里熟悉fortran的大神帮帮我,有偿请教。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-12-11 12:05:02 | 显示全部楼层
!        THIS IS A PROGRAM FOR DETECTING ABRUPT CLIMATIC CHANGE
!        BY USING MANN-KENDALL TECHNIQUE
        PROGRAM MK
        DIMENSION Y(1000,1000),YY(1000,1000),U(1000,1000),UF(1000),UB(1000),&
     &        M(1000,1000),MD(1000,1000)
        WRITE(*,10)
  10        FORMAT(2X,'N=37,n=70,NYEAR=1980')
        READ(*,*)N,NYEAR
!        ***************************************************
!        * N:     SAMPLE SIZE                              *
!        * NYEAR: FIRST YEAR OF THE TIME SERIES            *
!        * Y(N):  ORIGINAL TIME SERIES                     *
!        * UF(N): ORIGINAL SERIES OF U(LN)                 *
!        * UB(N): COUNTER SERIES OF U(LN)                  *
!        * A,B:   CRITICAL VALUE 1.96 AND -1.96            *
!        *************************************************** V/data/37/v37-mam.txt')          
        OPEN(2,FILE='E:/1/mk/data/37-70/ts70-37-son.txt')
        READ(2,*)((Y(j,i),j=1,n),I=1,N)
        write(*,*)((Y(j,i),j=1,n),I=1,N)
        !stop

        CALL SMK(Y,M,MD,UF,N)
        do 20 j=1,n
        DO 20 I=1,N
  20        YY(j,I)=Y(j,N+1-I)
        CALL SMK(YY,M,MD,U,N)
        do 30 j=1,n
        DO 30 I=1,N
  30        UB(I)=-U(j,N+1-I)
        OPEN(3,FILE='E:/1/mk/data/37-70/ts70-37-son-mk.txt')
        A=1.96
        B=-1.96
        do 40 j=1,n
        DO 40 I=1,N
        WRITE(3,50)NYEAR+I-1,UF(I),UB(I),A,B
  50        FORMAT(1X,I4,4F8.2)
  40        CONTINUE
        CLOSE(3)
        STOP
        END
!***********************************************************
        SUBROUTINE SMK(Y,M,MD,U,N)
        DIMENSION Y(N),M(N),MD(N),U(N)
        M(1)=0
        DO 10 I=2,N
        M(I)=0
        MD(I)=0
         DO 20 J=1,I-1
        IF(Y(I).GT.Y(J))then        
            M(I)=M(I)+1                        
        end if               
  20        CONTINUE
        MD(I)=MD(I-1)+M(I)
  10        CONTINUE
        U(1)=0.0
        DO 30 I=2,N
        E=I*(I-1)/4.00
        VAR=I*(I-1)*(2*I+5)/72.00
        U(I)=(MD(I)-E)/SQRT(VAR)
  30        CONTINUE
        RETURN
        END
这是自己尝试的程序
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-4-18 11:05:08 | 显示全部楼层
N和n有区别吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表