1 : C SYCHOM SOURCE CHAT 05/01/13 03:28:37 5004 2 : SUBROUTINE SYCHOM(ZMAT,IMAX) 3 : C 4 : C Résolution de l'équation matricielle C = L D LT 5 : C par la méthode de CHOlesky Modifiée 6 : C C : Matrice symétrique définie positive 7 : C L : Matrice triangulaire inférieure de diagonale unité 8 : C D : Matrice diagonale 9 : C LT : Matrice transposée de L 10 : C 11 : IMPLICIT INTEGER(I-N) 12 : IMPLICIT REAL*8 (A-H,O-Z) 13 : C 14 : DIMENSION ZMAT(IMAX,IMAX) 15 : C 16 : C Calcul de ZMAT 17 : C factorisation de C sous la forme Z LT 18 : C avec Z = L D 19 : C On récupère en sortie dans le tableau ZMAT modifié 20 : C la matrice M = L SQRT(D) telle que M MT = C 21 : C 22 : DIV = ZMAT(2,1) / ZMAT(1,1) 23 : ZMAT(2,2) = ZMAT(2,2) - DIV*ZMAT(2,1) 24 : ZMAT(2,1) = DIV 25 : DIV = 0.D0 26 : C 27 : DO 1 I=3,IMAX 28 : C 29 : DO 2 J=2,(I-1) 30 : DO 3 K=1,(J-1) 31 : ZMAT(I,J) = ZMAT(I,J) - ZMAT(I,K) * ZMAT(J,K) 32 : 3 CONTINUE 33 : 2 CONTINUE 34 : C 35 : DO 4 J=1,(I-1) 36 : DIV = ZMAT(I,J) / ZMAT(J,J) 37 : ZMAT(I,I) = ZMAT(I,I) - DIV*ZMAT(I,J) 38 : ZMAT(I,J) = DIV 39 : 4 CONTINUE 40 : 1 CONTINUE 41 : C 42 : DO 5 J=1,(IMAX-1) 43 : ZMAT(J,J) = SQRT(ZMAT(J,J)) 44 : DO 6 I=J+1,IMAX 45 : ZMAT(I,J) = ZMAT(I,J) * ZMAT(J,J) 46 : 6 CONTINUE 47 : 5 CONTINUE 48 : ZMAT(IMAX,IMAX) = SQRT(ZMAT(IMAX,IMAX)) 49 : C 50 : END 51 : 52 :
© Cast3M 2003 - All rights reserved.
Disclaimer