求助
REAL KK, MUS
INTEGER ENDD
DIMENSION H0(15,6), H(15,6)
ENDD=0
NI=15
NJ=6
NI01=NI-1
NJ01=NJ-1
NI02=NI-2
NJ02=NJ-2
DX=100.0
KK=1.0
MUS=0.00001
DT=0.25
LAMDA=KK*DT/(MUS*DX*DX)
DO 5 I=2,NI01
DO 5 J=2,NJ01
5 H0(I,J)=0.0
DO 10 I=2,7
H0(I,1)=10.0
10 H(I,1)=10.0
DO 12 I=9,NI01
12 H(I,1)=0.0
MDT=0
TIME=0.
IPRINT=50
ICOUNT=0
20 MDT=MDT+1
TIME=TIME+DT
DFMAX=0.0
ICOUNT=ICOUNT+1
DO 25 J=2,NJ01
H0(1,J)=H0(3,J)
25 H0(NI,J)=H0(NI02,J)
DO 27 I=2,NJ01
27 H0(I,NJ)=H0(I,NJ02)
DO 30 I=2,NI01
DO 30 J=2,NJ01
30 H(I,J)=(H0(I-1,J)+H0(I+1,J)+H0(I,J-1)+H0(I,J+1))/4
H(8,1)=(H0(7,1)+H0(9,1)+2*H0(8,2))/4
IF (ICOUNT.NE.IPRINT) GO TO 40
OPEN(1,FILE=’DATA2.EXL’)
35 WRITE(*,36) TIME
36 FORMAT(/,5X,'TIME=',F11.6)
WRITE(*,37) ((H(I,J), I=2, NI01), J=1, NJ01)
37 FORMAT(1X,'H(NI,NJ)=', / , (13F6.2,1X))
IF(ENDD.EQ.1) GO TO 100
ICOUNT=0
40 DO 45 I=2, NI01
DO 45 J=1, NJ01
DF=ABS(H(I,J)-H0(I,J))
IF(DF.GT.DFMAX)DFMAX=DF
45 CONTINUE
IF(DFMAX.LT.0.001)GOTO 80
DO 50 I=2,NI01
DO 50 J=2,NJ01
50 H0(I,J)=H(I,J)
H0(8,1)=H(8,1)
GO TO 20
80 ENDD=1
GO TO 35
100 CONTINUE
STOP
END
为什么这个程序运行出来和课本上的结果不一样,课本上的结果time=12.5, 25 37.5 37.75
INTEGER ENDD
DIMENSION H0(15,6), H(15,6)
ENDD=0
NI=15
NJ=6
NI01=NI-1
NJ01=NJ-1
NI02=NI-2
NJ02=NJ-2
DX=100.0
KK=1.0
MUS=0.00001
DT=0.25
LAMDA=KK*DT/(MUS*DX*DX)
DO 5 I=2,NI01
DO 5 J=2,NJ01
5 H0(I,J)=0.0
DO 10 I=2,7
H0(I,1)=10.0
10 H(I,1)=10.0
DO 12 I=9,NI01
12 H(I,1)=0.0
MDT=0
TIME=0.
IPRINT=50
ICOUNT=0
20 MDT=MDT+1
TIME=TIME+DT
DFMAX=0.0
ICOUNT=ICOUNT+1
DO 25 J=2,NJ01
H0(1,J)=H0(3,J)
25 H0(NI,J)=H0(NI02,J)
DO 27 I=2,NJ01
27 H0(I,NJ)=H0(I,NJ02)
DO 30 I=2,NI01
DO 30 J=2,NJ01
30 H(I,J)=(H0(I-1,J)+H0(I+1,J)+H0(I,J-1)+H0(I,J+1))/4
H(8,1)=(H0(7,1)+H0(9,1)+2*H0(8,2))/4
IF (ICOUNT.NE.IPRINT) GO TO 40
OPEN(1,FILE=’DATA2.EXL’)
35 WRITE(*,36) TIME
36 FORMAT(/,5X,'TIME=',F11.6)
WRITE(*,37) ((H(I,J), I=2, NI01), J=1, NJ01)
37 FORMAT(1X,'H(NI,NJ)=', / , (13F6.2,1X))
IF(ENDD.EQ.1) GO TO 100
ICOUNT=0
40 DO 45 I=2, NI01
DO 45 J=1, NJ01
DF=ABS(H(I,J)-H0(I,J))
IF(DF.GT.DFMAX)DFMAX=DF
45 CONTINUE
IF(DFMAX.LT.0.001)GOTO 80
DO 50 I=2,NI01
DO 50 J=2,NJ01
50 H0(I,J)=H(I,J)
H0(8,1)=H(8,1)
GO TO 20
80 ENDD=1
GO TO 35
100 CONTINUE
STOP
END
为什么这个程序运行出来和课本上的结果不一样,课本上的结果time=12.5, 25 37.5 37.75