5

我正在编写用于 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))
!
4

1 回答 1

16

这个说法

  REAL, DIMENSION(3) :: B=(/9.,3.,-2./),Z,X     

是在错误的地方。在 Fortran 程序单元(程序、子例程、函数)中——当然是没有新的 ASSOCIATE 和 BLOCK 结构的程序单元——所有声明都必须在所有可执行语句之前。

将放错位置的语句移到第一个可执行语句之前。

于 2013-05-16T16:18:38.427 回答