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