elpdr2
C ELPDR2 SOURCE CHAT 05/01/12 23:37:20 5004 C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-B,D-H,O-Z) IMPLICIT COMPLEX*16(C) C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C RESOLUTION D'UN SYSTEME LINEAIRE COMPLEXE CA1 * CX = CV C C PAR LA METHODE DE GAUSS EN UTILISATION LE STOCKAGE DE LA C C TRIANGULARISATION FAITE PAR ELPDR1 (IPIV, JPIV, IAUX) C C C PARAMETRES : C C CA1(N*N) : MATRICE (N*N) REPRESENTANT LE SYSTEME LINEAIRE C CV(N) : SECOND MEMBRE C IAUX(N) : TABLEAU DE TRAVAIL QUI DONNE L'ORDRE DES INCONNUES C C SORTIE : C C CX : SOLUTION C C AUTEUR : SAINT-DIZIER C DATE : 08 DEC 1989 C C ==================================================================== C COMPLEX*16 CA1(N,*),CV(*),CX(*) INTEGER IAUX(*),IPIVO(*),JPIVO(*) EPS = 1.D-12 C DO 100 ILIG =1,N C C DO 120 J=ILIG,N CAUX = CA1(IPIVO(ILIG),J) CA1(IPIVO(ILIG),J)= CA1(ILIG,J) CA1(ILIG,J)= CAUX 120 CONTINUE C CAUX = CV(IPIVO(ILIG)) CV(IPIVO(ILIG))= CV(ILIG) CV(ILIG)= CAUX C C 1.3 ON MET LA COLONNE NUMERO JPIV EN JLIG= ILIG C ET ON NOTE CELA DANS LE TABLEAU IAUX C * ERREUR SUR BORNES 130 CORRIGEE C JLIG=ILIG DO 130 I=1 ,N CAUX = CA1(I,JPIVO(JLIG)) CA1(I,JPIVO(JLIG))= CA1(I,JLIG) CA1(I,JLIG)= CAUX 130 CONTINUE C DO 140 I= ILIG + 1 ,N CAUX = CA1(I,ILIG) / CA1(ILIG,ILIG) DO 141 J=ILIG ,N CA1(I,J)= CA1(I,J)- CAUX * CA1 (ILIG,J) 141 CONTINUE CV(I) = CV(I)- CAUX * CV(ILIG) 140 CONTINUE C C FIN BOUCLE SUR LES MATRICES EMBOITEES 100 CONTINUE C C 2. SUBSTITUTION EN REMONTANT C CV(N) = CV(N) / CA1 (N,N) DO 200 I= 2,N IN = N + 1 - I DO 210 K= 1,I-1 KN = N + 1 - K CV(IN) = CV(IN) - CA1 (IN,KN)* CV(KN) 210 CONTINUE CV(IN) = CV(IN) / CA1 (IN,IN) 200 CONTINUE C C 3. ON REMET LES INCONNUES A LA BONNE PLACE C DO 300 I= 1,N CX(IAUX(I)) = CV(I) 300 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales