我正在为LU分解编写代码,我不知道如何修复第8行指向的“意外数据声明语句”(我在这里声明了一个数组。请参阅代码片段)。为什么会出乎意料?
!Decomposição LU
!-----------------------------------------------------------
PROGRAM LUdecomp
IMPLICIT INTEGER (I-K,N), REAL (A-H, L-M,O-Z)
INTEGER, PARAMETER :: N=3
REAL, DIMENSION (N,N) :: A,L,U
A = reshape((/3.,1.,4.,4.,2.,0.,3.,2.,3./),(/3,3/)) !exemplo do Bortoli*******
REAL, DIMENSION(3) :: B=(/9.,3.,-2./),Z,X
OPEN(1,file = 'LUFACTOR.out')
!
! FORALL (I = 1:N, J = 1:N) A(I,J) = 1.0/REAL(I+J-1)
!-------Fazendo a fatoração A = LU-----------------------------
CALL LU(N, A, L, U)
DO I=1,N
WRITE(*,10)(L(I,J), J=1,N), (U(I,J), J=1,N)
END DO
10 FORMAT(3(F8.4), 7x, 3(F8.4))
!
答案 0 :(得分:10)
本声明
REAL, DIMENSION(3) :: B=(/9.,3.,-2./),Z,X
是在错误的地方。在Fortran程序单元(程序,子程序,函数)中 - 当然没有新的ASSOCIATE和BLOCK结构 - 所有声明都必须在所有可执行语句之前。
将错放的语句移到第一个可执行语句之前。