fortran valeurs propres

Download Fortran Valeurs Propres

If you can't read please download the document

Post on 06-Feb-2016

26 views

Category:

Documents

2 download

Embed Size (px)

DESCRIPTION

bon cours pour comprendre fortran

TRANSCRIPT

  • LES CAHIERS DE LANALYSE DES DONNES

    ALEXANDROSKARAKOSUn algorithme performant pour le calcul desvaleurs propres et des vecteurs propres enanalyse factorielle des correspondancesLes cahiers de lanalyse des donnes, tome 13, no 2 (1988),p. 205-222.

    Les cahiers de lanalyse des donnes, Dunod, 1988, tous droits rservs.

    Laccs aux archives de la revue Les cahiers de lanalyse des don-nes implique laccord avec les conditions gnrales dutilisation (http://www.numdam.org/legal.php). Toute utilisation commerciale ou impres-sion systmatique est constitutive dune infraction pnale. Toute copie ouimpression de ce fichier doit contenir la prsente mention de copyright.

    Article numris dans le cadre du programmeNumrisation de documents anciens mathmatiques

    http://www.numdam.org/

  • Les Cahiers de l'Analyse des Donnes Vol XIII 1988 - n2 - pp. 205-222

    UN ALGORITHME PERFORMANT POUR LE CALCUL DES VALEURS PROPRES

    ET DES VECTEURS PROPRES EN ANALYSE FACTORIELLE DES

    CORRESPONDANCES

    [ALG. V. V. PROPRES]

    Alexandros KARAKOS (*) 1. Introduction En gnral il y a deux manires de calculer les valeurs propres et les

    vecteurs propres. Ou bien on calcule une valeur propre et le vecteur correspondant (mthode de Golub et Reinsch [2]), ou bien on calcule toutes les valeurs propres et ensuite les vecteurs (mthode de Givens-Householder [3]). On sait qu'une fois connue la valeur propre Xa, le vecteur propre correspondant V a se calcule facilement.

    En analyse factorielle des correspondances (a.f.c), on travaille, ordinairement, sur les 4-5 premiers facteurs: il suffit donc d'obtenir les 4-5 premires valeurs propres, de calculer les vecteurs propres correspondants, de normaliser ces vecteurs et ensuite de calculer les facteurs. H est inutile de calculer toutes les valeurs propres afin d'avoir le taux d'inertie affrent chaque axe, car la somme des valeurs propres, ou trace, se calcule directement.

    Une autre remarque est qu'en a.f.c. on travaille sur un tableau carr symtrique. On garde donc en mmoire deux fois les mmes valeurs ou plutt on travaille sur la partie infrieure du tableau sans rien faire sur la partie suprieure. Or ces places mmoire inutilises sont quelquefois si importantes, notamment sur les ordinateurs de taille moyenne, que les utilisateurs sont incapables de traiter leurs donnes. Le sous-programme VVPROM ( Valeurs, Vecteurs, PROpres, version Mono-indic ) corrige dans la mesure du possible

    (*) Professeur l'Universit DEMOKRITOS de Thrace; Grce.

    Les cahiers de l'analyse des donnes - 0339-3097/88/02 205 18/$ 3.80/ Gauthier-Villars

  • 206 A. KARAKOS

    tous ces inconvnients en conomisant d'une part l'espace mmoire et de l'autre le temps total de calcul.

    2. Principes de l'algorithme 2.1. Comment conomiser l'espace mmoire En a.f.c. le tableau sur lequel on travaille pour trouver les valeurs propres et

    les vecteurs propres est un tableau carr symtrique. Ainsi on garde la diagonale et les lnents au-dessous de la diagonale et on ne fait de calculs que sur cette partie infrieure du tableau. Tous les programmes qui existent pour les calculs de valeurs propres et de vecteurs propres rservent aussi en mmoire la place de la partie suprieure du tableau. Il est vrai que dans ce mme tableau, la fin du calcul, on garde la totalit des vecteurs propres; mais puisque, en a.f.c. le nombre des facteurs demands par l'utilisateur dpasse trs rarement dix, nous pouvons conomiser la mmoire en gardant d'une part un tableau o on aura seulement les lments qui sont au-dessous de la diagonale; et d'autre part un deuxime tableau o seront gards les vecteurs propres ncessaires pour calculer les facteurs demands.

    Les lments d'un tableau carr NxN qui sont au-dessous de la diagonale avec les lnents de la diagonale sont au total N*(N+l)/2: je propose, ici, au lieu d'un tableau carr NxN , d'utiliser un tableau une dimension (mono-indic) de longueur N*(N+1)/2. La correspondance entre les lments du tableau carr et les lments de ce tableau mono-indic se fait trs facilement l'aide de la formule classique du numrotage des paires dans l'ordre lexicographique :

    rang(U,V) = inf(U,V) +((sup(U,V)-l)*sup(U,V)/2) Mais cette formule ncessite pour chaque lment les quatre oprations de base (addition, soustraction, multiplication et division). Nous pouvons donc, afin de rduire les oprations, utiliser un tableau auxiliaire de dimension N. Dans ce tableau on met les valeurs calcules par la suites des instructions (1) et qui rprsentent le nombre des lments qui se trouvent au-dessous et sur la diagonale avant chaque ligne du tableau carr initial.Ainsi on crit les trois instructions (1) en FORTRAN pour remplir ce tableau; soit IT de dimension N, qu'on appelle tableau des indices :

    IT(1)=0 DO 1 I=2,N (1)

    i nxi)=rr(i- i)+i-i Pour mettre maintenant les lments du tableau carr, soit T de dimension NxN, dans le tableau mono-indic, soit F de dimension (N*(N+l))/2, il suffit

  • [ALG. V. V. PROPRES] 207

    d'crire les quatre instructions (2) en FORTRAN. Chaque fois qu'on a besoin d'un lment du tableau carr symtrique T,il suffit de trouver l'indice II, par une addition, qui donne directement la position de cet lment dans le tableau F. Si on cherche, par exemple, l'lment t32 du tableau d'origine T, on trouve l'indice II = IT(3)+2 = 5 et on rcupre le 5-me lment du tableau F.

    Les instructions pour remplir le tableau F sont : DO 2 I=1,N DO 2 J=1,I H = IT(I)+J (2)

    2 F(II)=T(I,J) Un deuxime tableau est ncessaire pour garder les vecteurs propres: c'est

    un tableau deux dimensions; l'une est la longueur des composantes du vecteur et l'autre le nombre de facteurs demand par l'utilisateur.

    Ainsi on occupe le minimum possible de l'espace mmoire en fonction des paramtres d'analyse.

    2.2. Les tapes de l'algorithme L'algorithme propos est divis en trois tapes. Au dbut on rduit le

    tableau initial une forme tridiagonale et ensuite on spare la recherche des valeurs propres du calculs des vecteurs propres.On a donc les tapes suivantes :

    a. Tridiagonalisation Pour la tridiagonalisation de la matrice carre symtrique NxN on utilise la

    mthode de Householder modifie pour une matrice une dimension de longueur (N*(N+l)/2 qui est la disposition linaire des lments du tableau initial expose au 2.1. Les dtails de la mthode de Householder se trouvent dans [3], [4] et [5].

    b. Recherche des valeurs propres Contrairement aux mthodes dcrites dans [2] et [7], o aprs le calcul de

    chaque valeur propre on calcule le vecteur propre correspondant, on adopte ici une suggestion de Givens [8]. On calcule d'abord toutes les valeurs propres, puisque l'quation aux valeurs propres de la matrice tridiagonale revt une forme simple, et que les racines se calculent rapidement.

    c. Calcul des vecteurs propres On calcule autant de vecteurs propres qu'il y a de facteurs demands. La

    mthode adopte est celle dcrite en dtail dans [3] et [9], mais modifie pour

  • 208 A. KARAKOS

    une matrice une dimension et l'orthonormalisation de la suite des vecteurs calculs s'obtient par l'algorithme de Schmidt et Hilbert [1] ( p.p. 273-276).

    3. Prsentation du sous-programme VVPROM En entre on trouve :

    a. Le tableau A, une dimension, qui contient les lmentsdu tableau carr initial b. Le tableau des indices IT, une dimension c. La variable N, qui exprime le nombre des variables du tableau carr initial d. La variable NVEC, qui est gale au nombre des vecteurs propres calculer e. La variable IQ, qui est une variable auxiliaire pour l'impression des rsultats

    En sortie on obtient : a. Le tableau E, une dimension, qui contient les valeurs propres calcules b. Le tableau VEC, deux dimensions, qui contient les vecteurs propres orthonorms c. La variable TEST, qui est gale la somme de valeurs propres, moins la premire valeur propre triviale gale 1.

    Les tableaux B,C,P,Q,R,W,Y, chacun une dimension de longueur N, sauf le tableau Y qui est de longueur N+2 , sont des tableaux auxiliaires pour les calculs intermdiaires. Les lments de la diagonale sont dans le tableau C, et le tableau B contient les N-l lments de la sous-diagonale tandisque le dernier, le B(N), est mis zro. Les lments de la sur-diagonale sont par symtrie gaux ceux de la sous-diagonale.Les valeurs propres sont gardes dans le tableau E.

    En a.f.c. les valeurs propres se trouvent entre 1 et 0 mais on ne cherche pas de valeurs plus petites que 1.0*10-5. En ralit dans tous les programmes de calcul des valeurs propres [11] ,on trouve quelques valeurs infrieures ce seuil et quelques valeurs ngatives du mme ordre en valeur absolue, faute de prcision dans les calculs. Ainsi, dans ce sous-programme il y a un seuil EPS=1.0* 10-6 et on ne cherche pas de valeurs propres infrieures EPS.

    la suite on calcule les NVEC vecteurs propres. Puisqu'on calcule en plus le premier vecteur trivial, NVEC prend une valeur gale NF+1, o NF=nombre des facteurs demands pour l'analyse.

    Pour la rsolution des systmes obtenus on utilise la mthode de CROUT [10]. Les vecteurs calculs sont gards dans le tableau VEC en colonnes et dans la mme ordre que les valeurs propres. Les vecteurs orthonorms se trouvent rangs dans le mme tableau VEC en colonnes.

  • [ALG. V. V. PROPRES] 209

    4. Rsultats de tests - Performances Toutes les comparaisons faites dans ce paragraphe sont entre le nouveau

    sous-programme VVPROM et le sous-programme SYMQR comme il est prsent dans le programme BENTAB2 ( 1978 ) [1], et sont effectues sur une machine UNIVAC 90/30.

    4.1 Comparaisons de taille La formule qui donne la taille de l'espace mmoire en mots machine

    qu'occupent les tableaux utiliss dans le sous-programme SYMQR est : 4*NJ+NJ*NJ ; o NJ = nombre des variables

    La formule pour le sous-progra