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