Download ella53.eso

Back to the list

   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 :  

© Cast3M 2003 - All rights reserved.
Disclaimer