Код:
PROGRAM HEAT
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
INTEGER,PARAMETER::NJ=100
INTEGER,PARAMETER::NN=100
DIMENSION U(NJ,NN)
DIMENSION A(NJ),B(NJ)
OPEN(UNIT=1,FILE='DATA.DAT')
! ВВОД КОНСТАНТ
HH=0.5*3.14/(NJ-1)
TT=0.1/(NN-1)
AA=0.2
GG=0.2*0.2*TT/HH/HH
! НАЧАЛЬНЫЕ УСЛОВИЯ
DO J=1,NJ
X=HH*(J-1)
U(J,1)=15.0*SIN(5*X)+5.0
ENDDO
! ГРАНИЧНЫЕ УСЛОЫИЯ
A(2)=0.0
B(2)=5.0 ! MU
A(NJ)=1.0
B(NJ)=0.0
! РАСЧЕТ
DO I=2,NN
U(1,I)=5.0 !MU
U(NJ,I)=U(NJ,I-1) !???????
! ПРЯМОЙ ХОД ПРОГОНКИ
DO J=3,NJ-1
A(J)=GG/(1.0+2.0*GG-GG*A(J-1))
B(J)=(U(J,I-1)+GG*B(J-1))/(1.0+2.0*GG-GG*A(J-1))
!PRINT*,I,J,A(J),B(J)
!PAUSE
ENDDO
! ОБРАТНЫЙ ХОД ПРОГОНКИ
DO J=1,NJ-2
U(NJ-J,I)=A(NJ+1-J)*U(NJ+1-J,I)+B(NJ+1-J)
ENDDO
ENDDO
! ВЫВОД ДАННЫХ
DO I=1,NN
TIME=TT*(I-1)
DO J=1,NJ
X=HH*(J-1)
WRITE(1,*)TIME,X,U(J,I)
ENDDO
ENDDO
CLOSE(101)
END PROGRAM