Download invere.eso

Back to the list

   1 : C INVERE    SOURCE    CHAT      05/01/13    00:42:45     5004           
   2 :         SUBROUTINE INVERE(VP,N,IVP,K,DET)
   3 : C******************************************************************************
   4 : C       INVERSION D'UNE MATRICE NON SYMETRIQUE AVEC RECHERCHE DE PIVOT NON NUL
   5 : C       SUR UNE COLONNE
   6 : C       ENTREES
   7 : C       VP      MATRICE A INVERSER
   8 : C       N       ORDRE DE LA MATRICE A INVERSER
   9 : C       IVP     DIMENSION DE LA MATRICE DANS LE PROGRAMME D'APPEL
  10 : C       K       VECTEUR DE TRAVAIL ENTIER DE LONGUEUR N
  11 : C       SORTIES
  12 : C       VP      MATRICE INVERSEE
  13 : C       DET     DETERMINANT
  14 : C******************************************************************************
  15 :       IMPLICIT INTEGER(I-N)
  16 :         IMPLICIT REAL*8 (A-H,O-Z)
  17 :         DIMENSION VP(IVP,IVP),K(N)
  18 :         DATA ZERO/0.D0/,UN/1.D0/,EPS/1.D-13/
  19 : C******************************************************************************
  20 :         DET=UN
  21 :         DO 5 I=1,N
  22 : 5       K(I)=I
  23 : C****************DEBUT DE L'INVERSION
  24 :         DO 80 II=1,N
  25 : C****************RECHERCHE D'UN PIVOT NON NUL SUR LA COLONNE II
  26 :         DO 10 I=II,N
  27 :         PIV=VP(I,II)
  28 :         IF(ABS(PIV).GT.EPS) GOTO 20
  29 : 10      CONTINUE
  30 :         DET=ZERO
  31 :         RETURN
  32 : C****************ECHANGER LA LIGNE II ET LA LIGNE I
  33 : 20      DET=DET*PIV
  34 :         IF(I.EQ.II) GOTO 40
  35 :         I1=K(II)
  36 :         K(II)=K(I)
  37 :         K(I)=I1
  38 :         DO 30 J=1,N
  39 :         C=VP(I,J)
  40 :         VP(I,J)=VP(II,J)
  41 : 30      VP(II,J)=C
  42 :         DET=-DET
  43 : C****************NORMALISATION DE LA LIGNE DU PIVOT
  44 : 40      C=UN/PIV
  45 :         VP(II,II)=UN
  46 :         DO 50 J=1,N
  47 : 50      VP(II,J)=VP(II,J)*C
  48 : C****************ELIMINATION
  49 :         DO 70 I=1,N
  50 :         IF(I.EQ.II) GOTO 70
  51 :         C=VP(I,II)
  52 :         VP(I,II)=ZERO
  53 :         DO 60 J=1,N
  54 : 60      VP(I,J)=VP(I,J)-C*VP(II,J)
  55 : 70      CONTINUE
  56 : 80      CONTINUE
  57 : C****************REORDONNER LES COLONNES DE L'INVERSE
  58 :         DO 120 J=1,N
  59 : C****************CHERCHER J1 TEL QUE K(J1)=J
  60 :         DO 90 J1=J,N
  61 :         JJ=K(J1)
  62 :         IF(JJ.EQ.J) GOTO 100
  63 : 90      CONTINUE
  64 : 100     IF(J.EQ.J1) GOTO 120
  65 : C****************ECHANGER LES COLONNES J ET J1
  66 :         K(J1)=K(J)
  67 :         DO 110 I=1,N
  68 :         C=VP(I,J)
  69 :         VP(I,J)=VP(I,J1)
  70 : 110     VP(I,J1)=C
  71 : 120     CONTINUE
  72 :         RETURN
  73 :         END
  74 :  
  75 :  

© Cast3M 2003 - All rights reserved.
Disclaimer