+ All Categories
Transcript

OKE CODJO Selove Léger BEN KHALIFA Sabrine SALHI Sarah

PROJET D’ALGEBRE LINEAIRE NUMERIQUE

Phase 1

1. Analyse des données climatiques et des EOF

1.1. Résumé le texte A primer for EOF Analysis of Climate Data

Les données climatiques sont les résultats statistiques d’interactions complexes à grand degré de liberté. Le modèle mathématique afférant est donc non linéaire et de grandes dimensions. Dans le but de simplifier ce modèle, les scientifiques ont mis en place la méthode des EOF (décomposition orthogonale aux valeurs propres) qui consiste en la recherche de nouvelles variables, par combinaison linéaire des anciennes, traduisant le mieux les variations du système.

La simplicité de cette méthode lui a valu d’être très utilisée dans le domaine météorologique. Cependant, elle s'applique aussi au domaine stochastique ou elle est connue sous le nom de fonctions de Karhunen-Loève.

Les données climatiques sont données dans un tableau à trois dimensions discrètes (n*p*m) :

longitude, latitude et temps. Pour simplifier le traitement, on concatène les deux dimensions d'espace en une seule variable s (commande reshape de Matlab), on obtient donc une matrice à deux dimensions (n*p, m) de la forme X(t,s).Il s’agit d’une matrice de dimension n*p où chaque xij représente la donnée au temps ti et à l’endroit sj. La matrice sera représentée comme suit :

A partir de cette matrice on définit la climatologie comme un vecteur des moyennes temporelles. On note x.j la moyenne sur le domaine temporel de la jième colonne et on définit alors le champs des anomalies par :

On peut alors calculer la matrice d'écart à la climatologie (aussi appelée matrice d’anomalie) :

Dans la pratique, les données collectées sont généralement non uniforme, ce qui peut affecter

négativement le résultat de la méthode des EOF. Afin de limiter ces effets, on multiplie la matrice d'écart à la climatologie par la matrice diagonale formée des cosinus des latitudes. Cette matrice est :

Ce qui donne :

La méthode des EOF consiste en la recherche du vecteur « a » tel que var(X'a) soit maximale.

Pour cela, on calcule la matrice de covariance à partir de la matrice d'anomalie (ou celle d'anomalie pondérée) :

Puis ensuite, sachant que :

On cherche que le problème soit borné, on choisit alors ||a|| = 1 et ce même problème devient donc une simple rechercher de valeurs propres :

Par définition, cette matrice est symétrique et donc diagonalisable. La kième EOF correspond au kième vecteur propre de ∑ après que les valeurs propres aient été ordonnées dans l’ordre décroissant. La valeur propre λk correspond alors à la kième EOF et donne une mesure de la variance expliquée. On la note souvent sous forme d’un pourcentage :

La méthode des EOF est également connue sous le nom de l’analyse en composante principale

(PCA) qui est donc une méthode consistant à transformer des variables liées entre elles en nouvelles variables décorrélées. Ces nouvelles variables sont appelées « composantes principales » notées PC et on les obtient en projetant le champ des anomalies X' sur les vecteurs propres de ∑, le kième PC est donné par la formule suivante :

où les ak sont les vecteurs propres de ∑ Cependant, les EOF présentent certains problèmes principalement l'orthogonalité qui pose des

soucis d'interprétation physique, la multiplicité des valeurs propres et la perte d'information lorsqu'on utilise la méthode pour réduire la dimensionnalité. En réalité, on n'utilise pas la recherche de valeurs propres mais la décomposition en valeurs singulières car elle permet de récupérer les EOF, les PC et les valeurs propres.

La fiabilité des EOF étant remise en cause du fait des conditions d’application restrictives (orthogonalité des matrices, dégénérescence…), d’autres méthodes ont été développées comme les REOF (« rotated EOF ») afin de faciliter l'interprétation des résultats obtenus ou encore les EEOF (décomposition orthogonale étendue aux valeurs propres).

EOF ET METHODES DERIVEES

EOF - Méthode simple - Contraintes

d’orthogonalité, dégénérescence…

EEOF - Prend en compte des

paramètres temporels supplémentaires, méthode plus proche de la réalité

REOF - Cette méthode retire des

contraintes : les matrices ne sont pas forcément orthogonales

1.2. Analyse de la partie 3 et algorithme associé

Analyse des données

A0 : on suppose qu'on a une on matrice F de taille nt*ns, et une variable PercentTrace (dans le code Matlab elle est notée threshold) qui correspondra à la valeur de la « variance expliquée » qu'on veut atteindre à la fin. A1 : afficher la matrice (animated plot donné dans le code) A2: Z=detrend (F, 0) => matrice des anomalies. A3 : S=ZT * Z => matrice de covariance. A4 : A41 : calcul des vecteurs propres et valeurs propres de S avec la fonction eig : [E,D]=eig(S) (E est la matrice des vecteurs propres et D le vecteur des valeurs propres sans rentrer dans les détails) A42 : on boucle pour ne prendre que les nd premières valeurs propres vérifiant la condition nd = 0; somme = 0; tant que (somme<(PercentTrace/100))&(nd<length(D)) faire nd = nd+1; somme = somme + (D(nd)/tr(S)); Fin tanque A43 : matrice des EOF conservées : V = EOF (:,1:nd); A44 : vecteur des valeurs propres conservées : DC= D(1:nd, 1:nd) A5 : A51 : afficher les nd EOF A52 : calculer le composant principal : PC=Z*V A53 : les afficher. A6: calcul du facteur de qualité :

Reconstruction et prédiction

A0: on suppose que nous avons une matrice F contenant les données pour ny années dont ny-1 années de données totalement connues et la ny

ième partiellement connue. A1 : on considère les ny-1 années « connues » et on leur applique l'algorithme décrit dans la partie précédente. A2 : on s'intéresse à la ny

iéme année que l'on nomme Fy : A21 : détermination du domaine Di des données connues (dans notre travail nous avons choisi de le définir arbitrairement, nous aurions pu le prendre fixe et on suppose par exemple qu'on connaît les données jusqu'à un certain mois etc....). A22 : résoudre le système d’inconnu alpha qui suit : V(Di ,:)α=Fy( :,Di)

A24 : construction de la matrice de prédiction : Fp= (V.α)T

A25 : calcul du facteur de qualité :

1.3. Lien entre le résidu ||Z.V.V'-Z||/||Z|| et l'efficacité de la méthode

L’écart relatif ||Z.V.V'-Z||/||Z|| est le conditionnement du problème de calcul des EOF, et comme par définition cette quantité caractérise la dépendance de la solution d'un problème numérique par rapport aux données du problème dans le but de quantifier la validité de la solution par rapport à ces données, et l'on en a besoin car généralement les problèmes numériques sont basés sur des mesures expérimentales donc souvent sujets à erreurs. Dans cette optique, un problème qui un conditionnement faible est résolu efficacement et vice versa. Ainsi, dans notre cas, dans le calcul des EOF, l’écart ||Z.V.V'-Z||/||Z|| caractérise donc la qualité de la solution, son « taux » de rapprochement de la réalité et sa fidélité au modèle de base.

1.4. Code Matlab

1.5. Commentaires

Malheureusement, nous avons eu quelques contretemps et nous n'avons pas pu compiler et tester notre code, c'est pour cela que nous avons décidé de consacrer cette partie à la prédiction des résultats que nous aurions obtenus.

a) partie analyse des données :

La valeur du conditionnement donnée par la base des EOF c'est-à-dire ||V.V'Z-Z||/||Z|| doit être

inférieure à celle donnée par ||Q.Q'.Z-Z||/||Z|| avec Q une matrice orthogonale générée arbitrairement car, c'est justement le but des EOF : optimiser ce rapport et fournir un bon modèle.

b) partie prédiction et reconstruction :

Le but de cette partie étant l'application du procédé de calcul des EOF à la prédiction de la température dans certains mois où les données sont indisponibles et ceci en extrayant un « pattern » des années précédentes et des autres mois donnés de cette même année Fy et donc on crée la matrice Fp de données prédites sur toute l'année et qui dépend de V la base des EOF et de α (cf. code). Et ici aussi, nous pensons que le conditionnement calculé à partir des la méthode des EOF c'est-à-dire ||Fp-Fy||/||Fy|| sera, de même, plus faible que pour les bases générées aléatoirement. En effet, la matrice Fp (des EOF) est construite de manière à se rapprocher le plus possible de Fy ou plutôt de combler les « trous » qui s'y trouvent, contrairement à celle aléatoire qui est construite à partir d'une base qui ne prend pas compte des « patterns » de la matrice de départ d'où son inefficacité.

2. Estimation des sous-espaces propres

2.1. Décrire les difficultés d'étendre la méthode de la puissance itéré pour le

calcul d'un bloc de m pair propres (m<<n) de A associé à la plus grande valeur

propre de A (en module)

L'algorithme de la puissance itérée est une méthode relativement efficace donnant la plus grande valeur propre (en module) d'une matrice et le vecteur propre associé. Elle présente toutefois quelques défauts lorsqu'il s'agit de déterminer les m plus grandes valeurs propres (en module) et les vecteurs propres associés. De prime abord, les m vecteurs initiaux tendront, au fil des itérations à devenir colinéaires au vecteur propre associé à la plus grande valeur propre alors que l'on souhaiterait qu'ils soient linéairement indépendants. En effet, ce serait comme appliquer l'algorithme m fois à m vecteurs différents. Un autre problème réside dans le critère d'arrêt qui, dans l'algorithme initial, réside dans la stabilité de la valeur propre qui ne garantit pas celle du vecteur propre qui constitue notre principal intérêt.

2.2. Questions concernant l’algorithme 2

2.2.1. Expliquer pourquoi m vecteurs indépendants sont générés

Si les vecteurs en entrée ne sont pas linéairement indépendants, on en perdra certains durant l'orthonormalisation. La matrice orthonormée comprendra des vecteurs colonnes nuls, ce qui est sans intérêt. Pour obtenir les m vecteurs propres, il faut que les m vecteurs donnés en entrée soient linéairement indépendants.

2.2.2. Expliquer pourquoi les colonnes de Y sont orthonormalisées à chaque

itération

La méthode du quotient de Rayleigh nécessite que la matrice V (H= VT.A.V ) soit orthogonale, d'où le besoin d'orthonormaliser la matrice à chaque itération. En effet, rien ne garantit que le produit A.V nous donne une matrice orthogonale. Un exemple simple serait de faire le produit d'une matrice symétrique non-orthogale M par la matrice identité qui est orthogonale pour le produit scalaire usuel, on obtient bien M qui est non orthogonale.

2.2.3. Justifier la présence du critère d’arrêt et commenter au sujet de son coût

Les données importantes étant les vecteurs propres associés aux plus grandes valeurs propres (en module), il est important de s'assurer que l'approximation qu'on en fait soit aussi bonne que l'on veut. Dans l'algorithme de la puissance itérée, le critère d'arrêt est basé sur la stabilité de la valeur propre. Ce qui, comme on l'a dit précédemment, ne garantit pas la convergence du vecteur propre associé, du moins pas de façon satisfaisante. Il faut donc trouver un nouveau critère d'arrêt qui reposera sur la convergence du vecteur propre lui même, ici, ce sera d'un ensemble de vecteurs propres.

Un vecteur propre x associée à une valeur propre (λ) d'une matrice A doit vérifier A.x = λ.x, ce qui nous fait penser au système linéaire A.x = b donc le critère d'arrêt de l'algorithme de résolution reposait sur la valeur de :

Par analogie (il suffit de remplacer b par λ.x), on obtient :

Grace à l'orthonormalisation ||x||=1, et le fait que l’on puisse négliger |λ|par rapport à la norme

de la matrice, on a finalement :

Il faut désormais l'étendre à un ensemble de vecteur avec AV=V(diag(...))=VH. On obtient donc :

Concernant la complexité du calcul de ce critère d'arrêt, si A est de taille n*n et V de taille n*m

alors on a : -deux produits matriciels, l'un en n*n*m et l'autre en m*m*n ; -une différence matricielle en n*m -et deux calculs de norme l'un en n*m et l'autre en n*n

La complexité est donc supérieure à n2 (m<<n), on est en face d'un critère relativement coûteux car on aura à manipuler des grosses matrices.

2.3. Questions concernant l’algorithme 4

2.3.1. Proposer un algorithme utilisant l’approche par blocs et commenter au

sujet de sa précision et de son efficacité

Le but du sujet est de trouver une estimation de la valeur propre de plus grand module et un

vecteur propre associé d'une matrice réelle A. La méthode qui a été proposée initialement est la

méthode de la puissance itérée. On propose une amélioration de cet algorithme en utilisant, cette

fois-ci, la procédure de Raleigh-Ritz.

On se propose alors de choisir un paramètre m dont la dimension est plus grande que la valeur de

la plus grande valeur propre en module. La matrice A est symétrique et définie positive et on

cherchera à déterminer le plus petit sous-espace propre tel que la somme des valeurs propres soit

plus grande que la variable PercentTrace. La procédure de Raleigh-Ritz nous permettra donc de

trouver ce sous-espace propre et de s’arrêter une fois que la valeur PercenTtrace est atteinte.

Cependant, cette méthode peut être encore plus optimisée. La première idée consistera à utiliser

l’approche par blocs.

Algorithme utilisant l'approche par blocs

Entrées :

- matrice symétrique réelle A de taille n*n - MaxIter, nombre maximum d'itérations - PercentTrace : le pourcentage voulu pour la trace A - p, la vitesse voulue pour l'algorithme

Sorties : - les m plus grandes valeurs propres (en module) et les vecteurs propres correspondants Début On génère la matrice orthonormale réelle V de taille n*m niter = 0 PercentReached = 0 Répéter

Y = Ap.V V matrice orthonormale issue de Y

Projection de Raleigh-Ritz appliquée à V et A on obtient D=diag(valeurs propres)

j = 0 Tant que (||A.Vj – VjDj|| <= ||A||*ε) faire On sauvegarde Vj et D(j,j) On met PercentReached à jour j = j + 1 Fin tant que Jusqu'à (PercentReached > PercentTrace ou niter > MaxIter ) Fin

L'algorithme se veut plus rapide car en fonction de la valeur de p, il permet de réaliser p fois une

boucle de l'algorithme 4, ce qui, en foction de la valeur de p peut être plus ou moins avantageux. Cependant vu que l'on récupère les vecteur propres de façon régulière, il serait indiquer de ne pas donner une trop grande valeur à p.

Il est aussi possible qu'il nous donne un résultat plus précis que ce qu'on espère vu que l'on « saute » certaines itérations, ce qui ne peut être que bénéfique.

Un autre point fort de l'approche par blocs est qu'elle peut être utilisée dans n'importe quel version de l'algorithme de « puissance itérée étendu ». Il a l'avantage d'être à la fois très simple et d'accélérer le traitement des données.

2.3.2. Proposer un algorithme détaillé qui implémente la méthode de déflation (méthode

de la puissance itérée) et commenter au sujet de sa précision et de son efficacité.

Pour améliorer l’efficacité de l’algorithme, nous pouvons aussi sauvegarder les colonnes de V qui

convergent au fur et à mesure.

On peut alors supposer que les l premières colonnes de V sont convergentes et ainsi la matrice V

pourra être mise sous la forme : V= [V1, V2] où V1 correspond au l premières colonnes de V. Ainsi, on

pourra former la matrice [V1, A*V2]. Cela revient au même que de multiplier A par V mais l’efficacité

est meilleure puisque l’on ne fait plus de calcul inutile. Ensuite, il nous reste encore à orthogonaliser

la matrice V2. Enfin, on pourra appliquer la procédure de Raleigh-Ritz aux colonnes de V qui ne

convergent pas (colonnes l+1 à m).

Algorithme

Entrée : - matrice symétrique réelle A de taille n*n - MaxIter, nombre maximum d'itérations - PercentTrace : le pourcentage voulu pour la trace A - paramètre ε

Sortie : - les m plus grandes valeurs propres (en module) et les vecteurs propres correspondants

Début On génère la matrice orthonormale réelle V de taille n*m niter = 0 PercentReached = 0

Y=A*V Tant que (PercentReached > PercentTrace ou niter>MaxIter) faire

V <- orthonormaliser les colonnes de Y On applique la procédure de Raleigh-Ritz aux matrices V et A On teste la convergence des vecteurs propres constituant la matrice V l <- le nombre de colonnes ayant convergé Pour i entre 1+l et m faire Yi = A* Vi

Fin pour niter = niter+1

Fin tant que Fin


Top Related