主题:[讨论](求助)新编程序出现的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
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