1 : C ELPDR2 SOURCE CHAT 05/01/12 23:37:20 5004 2 : SUBROUTINE ELPDR2(CA1,CV,CX,N,IPIVO,JPIVO,IAUX) 3 : C 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8(A-B,D-H,O-Z) 6 : IMPLICIT COMPLEX*16(C) 7 : C 8 : C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 9 : C 10 : C 11 : C RESOLUTION D'UN SYSTEME LINEAIRE COMPLEXE CA1 * CX = CV 12 : C 13 : C PAR LA METHODE DE GAUSS EN UTILISATION LE STOCKAGE DE LA 14 : C 15 : C TRIANGULARISATION FAITE PAR ELPDR1 (IPIV, JPIV, IAUX) 16 : C 17 : C 18 : C PARAMETRES : 19 : C 20 : C CA1(N*N) : MATRICE (N*N) REPRESENTANT LE SYSTEME LINEAIRE 21 : C CV(N) : SECOND MEMBRE 22 : C IAUX(N) : TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES 23 : C 24 : C SORTIE : 25 : C 26 : C CX : SOLUTION 27 : C 28 : C AUTEUR : SAINT-DIZIER 29 : C DATE : 08 DEC 1989 30 : C 31 : C ==================================================================== 32 : C 33 : COMPLEX*16 CA1(N,*),CV(*),CX(*) 34 : INTEGER IAUX(*),IPIVO(*),JPIVO(*) 35 : EPS = 1.D-12 36 : C 37 : DO 100 ILIG =1,N 38 : C 39 : C 40 : DO 120 J=ILIG,N 41 : CAUX = CA1(IPIVO(ILIG),J) 42 : CA1(IPIVO(ILIG),J)= CA1(ILIG,J) 43 : CA1(ILIG,J)= CAUX 44 : 120 CONTINUE 45 : C 46 : CAUX = CV(IPIVO(ILIG)) 47 : CV(IPIVO(ILIG))= CV(ILIG) 48 : CV(ILIG)= CAUX 49 : C 50 : C 1.3 ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG 51 : C ET ON NOTE CELA DANS LE TABLEAU IAUX 52 : C * ERREUR SUR BORNES 130 CORRIGEE 53 : C 54 : JLIG=ILIG 55 : DO 130 I=1 ,N 56 : CAUX = CA1(I,JPIVO(JLIG)) 57 : CA1(I,JPIVO(JLIG))= CA1(I,JLIG) 58 : CA1(I,JLIG)= CAUX 59 : 130 CONTINUE 60 : C 61 : DO 140 I= ILIG + 1 ,N 62 : CAUX = CA1(I,ILIG) / CA1(ILIG,ILIG) 63 : DO 141 J=ILIG ,N 64 : CA1(I,J)= CA1(I,J)- CAUX * CA1 (ILIG,J) 65 : 141 CONTINUE 66 : CV(I) = CV(I)- CAUX * CV(ILIG) 67 : 140 CONTINUE 68 : C 69 : C FIN BOUCLE SUR LES MATRICES EMBOITEES 70 : 100 CONTINUE 71 : C 72 : C 2. SUBSTITUTION EN REMONTANT 73 : C 74 : CV(N) = CV(N) / CA1 (N,N) 75 : DO 200 I= 2,N 76 : IN = N + 1 - I 77 : DO 210 K= 1,I-1 78 : KN = N + 1 - K 79 : CV(IN) = CV(IN) - CA1 (IN,KN)* CV(KN) 80 : 210 CONTINUE 81 : CV(IN) = CV(IN) / CA1 (IN,IN) 82 : 200 CONTINUE 83 : C 84 : C 3. ON REMET LES INCONNUES A LA BONNE PLACE 85 : C 86 : DO 300 I= 1,N 87 : CX(IAUX(I)) = CV(I) 88 : 300 CONTINUE 89 : C 90 : RETURN 91 : END 92 :
© Cast3M 2003 - All rights reserved.
Disclaimer