1 : C ELLP53 SOURCE CHAT 05/01/12 23:35:47 5004 2 : SUBROUTINE ELLP53(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 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 9 : C 10 : C OPERATEUR ELFE LAPLACE POUTRE 11 : C 12 : C RESOLUTION D'UN SYSTEME LINEAIRE COMPLEXE ZA1 * ZX = ZV 13 : C 14 : C PAR LA METHODE DE GAUSS EN UTILISATION LE STOCKAGE DE LA 15 : C 16 : C TRIANGULARISATION FAITE PAR ELLP51 (IPIV, JPIV, IAUX) 17 : C 18 : C 19 : C PARAMETRES : 20 : C 21 : C ZA1(N*N) : MATRICE (N*N) REPRESENTANT LE SYSTEME LINEAIRE 22 : C ZV(N) : SECOND MEMBRE 23 : C IAUX(N) : TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES 24 : C 25 : C SORTIE : 26 : C 27 : C ZX : SOLUTION 28 : C 29 : C AUTEUR : DE LANGRE 30 : C DATE : 08 DEC 1989 31 : C 32 : C ==================================================================== 33 : C 34 : COMPLEX*16 ZA1(N,*),ZV(*),ZX(*) 35 : INTEGER IAUX(*),IPIVO(*),JPIVO(*) 36 : EPS = 1.D-10 37 : C 38 : C DO 10 I=1,N 39 : C IAUX(I) = I 40 : C 10 CONTINUE 41 : C 1. TRIANGULARISATION 42 : C BOUCLE SUR LES MATRICES EMBOITEES 43 : C 44 : DO 100 ILIG =1,N 45 : C 46 : C 1.1 RECHERCHE DU PIVOT 47 : C 48 : C XPIV =0.D0 49 : C IPIV =0 50 : C JPIV =0 51 : C DO 110 I = ILIG,N 52 : C DO 111 J = ILIG,N 53 : C IF( ABS ( ZA1(I,J)) .GT.XPIV ) THEN 54 : C IPIV= I 55 : C JPIV= J 56 : C XPIV =ABS ( ZA1(I,J)) 57 : C ENDIF 58 : C111 CONTINUE 59 : C110 CONTINUE 60 : C 61 : C 62 : C IF(XPIV .LE.EPS) THEN 63 : C WRITE(6,*)'RETURN DANS ELLP51',XPIV,ILIG 64 : C RETURN 65 : C 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(IPIVO(ILIG),J) 72 : ZA1(IPIVO(ILIG),J)= ZA1(ILIG,J) 73 : ZA1(ILIG,J)= ZAUX 74 : 120 CONTINUE 75 : C 76 : ZAUX = ZV(IPIVO(ILIG)) 77 : ZV(IPIVO(ILIG))= 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,JPIVO(JLIG)) 87 : ZA1(I,JPIVO(JLIG))= ZA1(I,JLIG) 88 : ZA1(I,JLIG)= ZAUX 89 : 130 CONTINUE 90 : C I0 = IAUX (JPIVO(JLIG)) 91 : C IAUX(JPIVO(JLIG)) = IAUX (JLIG) 92 : C 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 :
© Cast3M 2003 - All rights reserved.
Disclaimer