Excusez mon retard !
Bon je pense effetcivement que je n'ai pas fait trés attention à pas mal de points:
1) Le spectre (ensembles des valeurs propres) doit vraiment appartenir à R*+, ce qui n'est pas mon cas en effet!
Pour ce premier point il faut que je revoie ça (peut être avec autre méthode (je prends en compet ta suggestion franseco)
2)
Code :
- ReturnMatrix chol(const SymmetricMatrix& correlation)
- {
- //renvoie la dimension de la matrice de corrélation
- ArrayLengthSpecifier dimension(correlation.Nrows());
- int dimension1 = correlation.Nrows();
- //initialise le test de défini positivité à faux
- bool test=false;
- //diagonalise la matrice de corrélation
- DiagonalMatrix D(dimension);
- Matrix V(dimension1,dimension1);
- LowerTriangularMatrix L(dimension);
- Matrix resultat;
- //renvoie les valeurs propres
- EigenValues(correlation,D,V);
- //
- if (D(1)<=0) test=true;
- if (test=false)
- {
- L = Cholesky(correlation);
- resultat=L;
- }
- else
- {
- for (int i = 1; i <= dimension1; i++)
- {
- D(i)=sqrt(max(D(i),0)); /* on transforme D en D+ puis en (D+)^1/2
- pour prendre la racine carrée */
- }
- resultat = V*D*V.t();
- }
|
Dans le code ci-dessus, c'est La bibliothèque Newmat qui permet de définir la fonction EigenValues qui calcules les valeurs propores à partir d'une matrice rélle symètrique (toujours par définition daigonalisable). Cela je pense répond à la question sur la façon de calculer des valeurs propores
3) La matrice de varaince-covariance que j'ai en input n'est pas tout le temps symétrqiue définie positive mais elle peut contenir des fois des relations affines entre les composantes du vecteur aléatoire (vecteurs dépendants)ce qui la rend que définie symétrique (pas toutes les valeurs propres appartiennnet à R*+), dans ce cas là je dois la transformer.
Même si le resultat bien sûr à la sortie est différent, l'important c'est d'avoir une vraie matrice de variance-covariance représentant une matrice symétrqiue définie positive
J'espère que c'est un peu plus clair de votre côte sur mon objectof je m'informe de l'algorithme de Jacobi et je vous tiens au courant