回 帖 发 新 帖 刷新版面

主题:[讨论](求助)新编程序出现的2001和1120错误

麻烦高手解读一下,编译没有错误,运行的时候出现错误提示
Linking...
sc.obj : error LNK2001: unresolved external symbol _EQUI@4
Debug/sc.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
试着搞了好久  谁能帮下忙 谢谢了 嘿嘿


修改后能运行了 但是又出现这个问题
不知道怎么回事
求教一下 呵呵

  拟合时间序列数N=**
 沉降时间序列总数S=**
 ********************
 DELT0=   2.122222
 沉降速率法

forrtl: severe (24): end-of-file during read, unit 9, file C:\Users\the one\Desk
top\FIT.TXT
Image              PC        Routine            Line        Source
sc.exe             0040D9F9  Unknown               Unknown  Unknown

Incrementally linked image--PC correlation disabled.
Press any key to continue
下面是代码


PROGRAM MAIN 
        PARAMETER NUM=1000 !数组元素个数 
        DIMENSION XEQUI(1:NUM),YEQUI(1:NUM),XCONV(1:NUM),YCONV(1:NUM)
        DIMENSION XTEST(1:NUM),YTEST(1:NUM),VTTEST(1:NUM),VTCONV(1:NUM)
        

        STATIC DELT0
        DATA YCONV/1000*0/
            !TEST 表示实测,X表示数组元素号数,T、Y分别表示方程中的变量、参变量,YFIT 拟合值
         OPEN(2,FILE='TEXT.TXT',STATUS='OLD') !存放实测数据X,Y
        OPEN(9,FILE='FIT.TXT',STATUS='UNKNOWN') !输出等时距后数据X,Y
        OPEN(10,FILE='FIT1.TXT',STATUS='UNKNOWN') !输出模型参数A,B及预测值X,Y
      
       READ(2,*)NDATA,SDATA !,NTYPE,NDAYS,NPREC
        ! 预测数据组数,总实测数据组数,线型类型数,预测天数,预测次数
        WRITE(*,16)NDATA
        WRITE(*,17)SDATA
     DO I=1,SDATA
     READ(2,*)XTEST(I),YTEST(I)
 !     WRITE(*,*)XTEST(I),YTEST(I)
     ENDDO

10  FORMAT(1X/,5F7.2)
16    FORMAT(2X,'拟合时间序列数N=',I2)
17    FORMAT(1X,'时间序列总数S=',I2)
20  FORMAT(3X/,'U='F7.6,'A=',F7.6,'B=',F7.6)
    NHEAD=1
     CALL EQUIV(NHEAD,NDATA,XTEST,YTEST,XEQUI,YEQUI)
    WRITE(*,*)'沉降速率法'
    
     CALL VTS(XTEST,YTEST,XEQUI,YEQUI,YCONV,NDATA,SDATA)
    DO I=1,SDATA
        W=ABS(YTEST(I)-YCONV(I))/YTEST(I) !相对误差
        WRITE(10,*)XTEST(I),YTEST(I),YCONV(I),VTCONV(I),W
    ENDDO
END




!      SUBROUTINE EQUIV将不等时距序列转换为等间距序列  
    SUBROUTINE EQUIV(NHEAD,NDATA,XTEST,YTEST,XEQUI,YEQUI)
        DIMENSION XTEST(1:1000),YTEST(1:1000)
        DIMENSION XEQUI(1:1000),YEQUI(1:1000)
        REAL DELT0
               write(*,*)'********************'
         DELT0=(XTEST(NDATA)-XTEST(NHEAD))/(NDATA-1)
                WRITE(*,*)'DELT0=',DELT0
        XEQUI(NHEAD)=XTEST(NHEAD)
        YEQUI(NHEAD)=YTEST(NHEAD)
        XEQUI(NDATA)=XTEST(NDATA)
        YEQUI(NDATA)=YTEST(NDATA)
        DO I=NHEAD+1,NDATA-1
            XEQUI(I)=XEQUI(NHEAD)+(I-NHEAD)*DELT0
            DO J=NHEAD+1,NDATA
            IF (XTEST(J-1).LE.XEQUI(I).AND.XTEST(J).GT.XEQUI(I)) THEN
            YEQUI(I)=YTEST(J-1)+(YTEST(J)-YTEST(J-1))*&
                     (XEQUI(I)-XTEST(J-1))/(XTEST(J)-XTEST(J-1))                
            ENDIF
            IF(XTEST(J).GT.XEQUI(I)) EXIT
            ENDDO
        ENDDO
        
        DO I=1,NDATA
               WRITE(9,*)XEQUI(I),YEQUI(I)
!            WRITE(*,*)XEQUI(I),YEQUI(I)
        ENDDO
        RETURN
      END

! 最小二乘法计算参数u和b的估计,求参数U,b
     SUBROUTINE VTS(XTEST,YTEST,XEQUI,YEQUI,YCONV,NDATA,SDATA)
        DIMENSION XTEST(1:1000),YTEST(1:1000),VTEQUI(1:1000),VTCONV(1:1000)
        DIMENSION XEQUI(1:1000),YEQUI(1:1000),YCONV(1:1000)
        REAL*8 LXX,LYY,LXY,U,B,XSUM,VTSUM,XMEAN,VTMEAN
         A=8/(3.14**2) 
         XSUM = 0
         VTSUM = 0
         lxx = 0
         lyy = 0
         lxy = 0 
         NHEAD = 1
        DO I =NHEAD,SDATA
            VTEQUI(i)=LOG(YEQUI(i)/XEQUI(i))
            XSUM =XSUM + XEQUI(i)
            VTSUM =VTSUM + VTEQUI(i)
!        WRITE(10,*)'XCONV(I)=',XCONV(I),'   YCONV(I)=',YCONV(I)
        
        XMEAN =XSUM / SDATA    
        VTMEAN =VTSUM / SDATA
        
        LXX = LXX + (XEQUI(i) - XMEAN) * (XEQUI(i) - XMEAN)
        LYY = LYY + (VTEQUI(i) - VTMEAN) * (VTEQUI(i) - VTMEAN)
        LXY = LXY + (XEQUI(i) - XMEAN) * (VTEQUI(i) - VTMEAN)
        ENDDO
        B = -(LXY / LXX)
        U= VTMEAN + B * XMEAN
        R = LXY / SQRT(LXX * LYY)
        WRITE(*,*)'U=',U,'A=',A,'B=',B
        WRITE(10,20) U,A,B
        WRITE(*,*)'沉降速率曲线为''VT=','EXP(',-B,'*t)','+',U,')'
        DO I=1,SDATA
        VTCONV(I)=EXP(-B*XTEST(I)+U)
!        WRITE(*,*)XTEST(I),YTEST(I),YCONV(I)
        ENDDO
20     FORMAT(1X/,'U=',1E14.7,1X/,'A=',1E14.7,1X/,'B=',1E14.7)
     END

回复列表 (共5个回复)

沙发

subroutine VTS 中,第一个循环语句中,
DO I =NHEAD,SDATA
            VTEQUI(i)=LOG(YEQUI(i)/XEQUI(i)) --> 估计是这样的。

板凳


呵呵初学者来学习了,谢谢啊  太马虎了  看了半天没看到 
我试试看运行结果怎么样   
有问题再来请教啊 呵呵

3 楼


修改后运行
出现这个问题
不知道怎么回事
求教一下 呵呵


  拟合时间序列数N=**
 沉降时间序列总数S=**
 ********************
 DELT0=   2.122222
 沉降速率法

forrtl: severe (24): end-of-file during read, unit 9, file C:\Users\the one\Desk
top\FIT.TXT
Image              PC        Routine            Line        Source
sc.exe             0040D9F9  Unknown               Unknown  Unknown

Incrementally linked image--PC correlation disabled.
Press any key to continue

4 楼

Compiler 告诉你,读取文件出错了。

5 楼

forrtl: severe (24): end-of-file during read, unit 9, file C:\Users\the one\Desk
top\FIT.TXT

在读入文件(你标识为9的文件)的过程中到了文件末尾,需要检查你的FIT.TXT文件。

我来回复

您尚未登录,请登录后再回复。点此登录或注册