Télécharger invere.eso

Retour à la liste

Numérotation des lignes :

invere
  1. C INVERE SOURCE GOUNAND 24/09/18 21:15:04 12011
  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. -INC CCREEL
  18. DIMENSION VP(IVP,IVP),K(N)
  19. DATA UN/1.D0/
  20. C******************************************************************************
  21. DET=UN
  22. DO 5 I=1,N
  23. K(I)=I
  24. 5 CONTINUE
  25. XNORM=XZERO
  26. DO J=1,N
  27. DO I=1,N
  28. XNORM=MAX(XNORM,ABS(VP(I,J)))
  29. ENDDO
  30. ENDDO
  31. XNORM=MAX(XNORM,XPETIT/XZPREC)*10.D0
  32. C****************DEBUT DE L'INVERSION
  33. DO 80 II=1,N
  34. C****************RECHERCHE D'UN PIVOT NON NUL SUR LA COLONNE II
  35. DO 10 I=II,N
  36. PIV=VP(I,II)
  37. IF(ABS(PIV).GT.XNORM*XZPREC) GOTO 20
  38. 10 CONTINUE
  39. DET=XZERO
  40. RETURN
  41.  
  42. C****************ECHANGER LA LIGNE II ET LA LIGNE I
  43. 20 CONTINUE
  44. DET=DET*PIV
  45. IF(I.EQ.II) GOTO 40
  46. I1=K(II)
  47. K(II)=K(I)
  48. K(I)=I1
  49. DO 30 J=1,N
  50. C=VP(I,J)
  51. VP(I,J)=VP(II,J)
  52. VP(II,J)=C
  53. 30 CONTINUE
  54. C****************NORMALISATION DE LA LIGNE DU PIVOT
  55. 40 CONTINUE
  56. C=UN/PIV
  57. VP(II,II)=UN
  58. DO 50 J=1,N
  59. VP(II,J)=VP(II,J)*C
  60. 50 CONTINUE
  61. C****************ELIMINATION
  62. DO 70 I=1,N
  63. IF(I.EQ.II) GOTO 70
  64. C=VP(I,II)
  65. VP(I,II)=XZERO
  66. DO 60 J=1,N
  67. VP(I,J)=VP(I,J)-C*VP(II,J)
  68. 60 CONTINUE
  69. 70 CONTINUE
  70. 80 CONTINUE
  71. C****************REORDONNER LES COLONNES DE L'INVERSE
  72. DO 120 J=1,N
  73. C****************CHERCHER J1 TEL QUE K(J1)=J
  74. DO 90 J1=J,N
  75. JJ=K(J1)
  76. IF(JJ.EQ.J) GOTO 100
  77. 90 CONTINUE
  78. 100 CONTINUE
  79. IF(J.EQ.J1) GOTO 120
  80. C****************ECHANGER LES COLONNES J ET J1
  81. K(J1)=K(J)
  82. DO 110 I=1,N
  83. C=VP(I,J)
  84. VP(I,J)=VP(I,J1)
  85. VP(I,J1)=C
  86. 110 CONTINUE
  87. 120 CONTINUE
  88. RETURN
  89. END
  90.  
  91.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales