Télécharger ella51.eso

Retour à la liste

Numérotation des lignes :

  1. C ELLA51 SOURCE CHAT 05/01/12 23:34:34 5004
  2. SUBROUTINE ELLA51(ZA1,ZV,ZX,N,IPIVO,JPIVO,IAUX)
  3. C
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Y)
  6. IMPLICIT COMPLEX*16(Z)
  7. C
  8. C OPERATEUR ELFE LAPLACE ACOU
  9. C
  10. C RESOLUTION D'UN SYSTEME LINEAIRE COMPLEXE ZA1 * ZX = ZV
  11. C
  12. C PAR LA METHODE DE GAUSS AVEC CALCUL DE LA TRIANGULARISATION
  13. C
  14. C ET STOCKAGE DE CELLE CI DANS LES VECTEURS IPIVO, JPIVO ET IAUX
  15. C
  16. C
  17. C PARAMETRES :
  18. C
  19. C ZA1(N*N) : MATRICE (N*N) REPRESENTANT LE SYSTEME LINEAIRE
  20. C ZV(N) : SECOND MEMBRE
  21. C IAUX(N) : TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES
  22. C
  23. C SORTIE :
  24. C
  25. C ZX : SOLUTION
  26. C
  27. C AUTEUR : DE LANGRE
  28. C DATE : 08 DEC 1989
  29. C
  30. C ====================================================================
  31. C
  32. COMPLEX*16 ZA1(N,*),ZV(*),ZX(*)
  33. INTEGER IAUX(*),IPIVO(*),JPIVO(*)
  34. EPS = 1.D-35
  35. C
  36. DO 10 I=1,N
  37. IAUX(I) = I
  38. 10 CONTINUE
  39. C 1. TRIANGULARISATION
  40. C BOUCLE SUR LES MATRICES EMBOITEES
  41. C
  42. DO 100 ILIG =1,N
  43. C
  44. C 1.1 RECHERCHE DU PIVOT
  45. C
  46. XPIV =0.D0
  47. IPIV =0
  48. JPIV =0
  49. DO 110 I = ILIG,N
  50. DO 111 J = ILIG,N
  51. IF( ABS(ZA1(I,J)) .GT.XPIV ) THEN
  52. IPIV= I
  53. JPIV= J
  54. XPIV = ABS(ZA1(I,J))
  55. ENDIF
  56. 111 CONTINUE
  57. 110 CONTINUE
  58. C
  59. IPIVO(ILIG) = IPIV
  60. JPIVO(ILIG) = JPIV
  61. C
  62. IF(XPIV .LE.EPS) THEN
  63. WRITE(6,*)'RETURN DANS ELLP51',XPIV,ILIG
  64. RETURN
  65. ENDIF
  66. C
  67. C 1.2 ON MET LA LIGNE NUMERO IPIV EN ILIG
  68. C ET MEME CHOSE AU SECOND MEMBRE
  69. C
  70. DO 120 J=ILIG,N
  71. ZAUX = ZA1(IPIV,J)
  72. ZA1(IPIV,J)= ZA1(ILIG,J)
  73. ZA1(ILIG,J)= ZAUX
  74. 120 CONTINUE
  75. C
  76. ZAUX = ZV(IPIV)
  77. ZV(IPIV)= ZV(ILIG)
  78. ZV(ILIG)= ZAUX
  79. C
  80. C 1.3 ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG
  81. C ET ON NOTE CELA DANS LE TABLEAU IAUX
  82. C * ERREUR SUR BORNES 130 CORRIGEE
  83. C
  84. JLIG=ILIG
  85. DO 130 I=1 ,N
  86. ZAUX = ZA1(I,JPIV)
  87. ZA1(I,JPIV)= ZA1(I,JLIG)
  88. ZA1(I,JLIG)= ZAUX
  89. 130 CONTINUE
  90. I0 = IAUX (JPIV)
  91. IAUX(JPIV) = IAUX (JLIG)
  92. IAUX(JLIG) = I0
  93. C
  94. C 1.4 REDUCTION PAR SOUSTRACTION DES LIGNES ENTRE-ELLES
  95. C ET MEME CHOSE AU SECOND MEMBRE
  96. C
  97. DO 140 I= ILIG + 1 ,N
  98. ZAUX = ZA1(I,ILIG) / ZA1(ILIG,ILIG)
  99. DO 141 J=ILIG ,N
  100. ZA1(I,J)= ZA1(I,J)- ZAUX * ZA1 (ILIG,J)
  101. 141 CONTINUE
  102. ZV(I) = ZV(I)- ZAUX * ZV(ILIG)
  103. 140 CONTINUE
  104. C
  105. C FIN BOUCLE SUR LES MATRICES EMBOITEES
  106. 100 CONTINUE
  107. C
  108. C 2. SUBSTITUTION EN REMONTANT
  109. C
  110. ZV(N) = ZV(N) / ZA1 (N,N)
  111. DO 200 I= 2,N
  112. IN = N + 1 - I
  113. DO 210 K= 1,I-1
  114. KN = N + 1 - K
  115. ZV(IN) = ZV(IN) - ZA1 (IN,KN)* ZV(KN)
  116. 210 CONTINUE
  117. ZV(IN) = ZV(IN) / ZA1 (IN,IN)
  118. 200 CONTINUE
  119. C
  120. C 3. ON REMET LES INCONNUES A LA BONNE PLACE
  121. C
  122. DO 300 I= 1,N
  123. ZX(IAUX(I)) = ZV(I)
  124. 300 CONTINUE
  125. C
  126. RETURN
  127. END
  128.  
  129.  
  130.  

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