Télécharger ella53.eso

Retour à la liste

Numérotation des lignes :

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

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