Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2463 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Programme pour lire une matrice triangulaire inférieure à partir

n°1424373
Amonchakai
Posté le 11-08-2006 à 14:06:43  profilanswer
 

Reprise du message précédent :

Citation :


Il existe plein de méthodes numériques pour déterminer des valeurs approchées des valeurs propres d'une matrice (par exemple l'algorithme de Jacobi pour les matrices symétriques)


 
ha tien je connais pas.... Merci pour l'info je vais voir ça pour ma culture.... :)

mood
Publicité
Posté le 11-08-2006 à 14:06:43  profilanswer
 

n°1424410
iamora
Posté le 11-08-2006 à 14:51:03  profilanswer
 

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 :
  1. ReturnMatrix chol(const SymmetricMatrix& correlation)
  2. {
  3. //renvoie la dimension de la matrice de corrélation
  4. ArrayLengthSpecifier dimension(correlation.Nrows());
  5. int dimension1 = correlation.Nrows();
  6. //initialise le test de défini positivité à faux
  7. bool test=false;
  8. //diagonalise la matrice de corrélation
  9. DiagonalMatrix D(dimension);
  10. Matrix V(dimension1,dimension1);
  11. LowerTriangularMatrix L(dimension);
  12. Matrix resultat;
  13. //renvoie les valeurs propres
  14. EigenValues(correlation,D,V);
  15. //
  16. if (D(1)<=0) test=true;
  17. if (test=false)
  18. {
  19.  L = Cholesky(correlation);
  20.  resultat=L;
  21. }
  22. else
  23. {
  24.  for (int i = 1; i <= dimension1; i++)
  25.  {
  26.   D(i)=sqrt(max(D(i),0)); /* on transforme D en D+ puis en (D+)^1/2  
  27.         pour prendre la racine carrée */
  28.  }
  29.   resultat = V*D*V.t();
  30. }


 
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

Message cité 1 fois
Message édité par iamora le 11-08-2006 à 14:52:15
n°1424427
franceso
Posté le 11-08-2006 à 15:11:20  profilanswer
 

iamora a écrit :

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

Pas besoin de regarder Jacobi : je pense que tu peux faire confiance à ta fonction EigenValues  
 

iamora a écrit :

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.

Je ne suis pas spécialiste, mais je pensais que dans le cas où tes vecteurs aléatoires n'étaient pas tous indépendants, tu pouvais récupérer des valeurs propres nulles, mais pas négatives. Donc à mon avis, tu devrais toujours avoir une matrice symétrique positive (mais pas forcément définie)


---------------
TriScale innov
n°1424441
iamora
Posté le 11-08-2006 à 15:28:38  profilanswer
 

franceso a écrit :

Pas besoin de regarder Jacobi : je pense que tu peux faire confiance à ta fonction EigenValues  
 
Je ne suis pas spécialiste, mais je pensais que dans le cas où tes vecteurs aléatoires n'étaient pas tous indépendants, tu pouvais récupérer des valeurs propres nulles, mais pas négatives. Donc à mon avis, tu devrais toujours avoir une matrice symétrique positive (mais pas forcément définie)


 
Oui c'est ça, en réalité je ne peux pas avoir de valeurs propres négatives, t'as bien raison. De plus je voudrai plus m'informer sur la méthode de Jacobi qui est une méthode d'optimisation (voir cours de l'ENSTA d'optimisation) ça doit te dire des choses:
http://www.ensta.fr/~zidani/AO101/seance4.pdf
J'ai l'impression que cet algorithme est un algorithme numérique optimisé pour le calcul de valeurs propres pas un algorithme pour transformer une matrice symétrique positive en une matrice définie positive?

n°1424490
franceso
Posté le 11-08-2006 à 16:02:41  profilanswer
 

iamora a écrit :

Oui c'est ça, en réalité je ne peux pas avoir de valeurs propres négatives, t'as bien raison. De plus je voudrai plus m'informer sur la méthode de Jacobi qui est une méthode d'optimisation (voir cours de l'ENSTA d'optimisation) ça doit te dire des choses:
http://www.ensta.fr/~zidani/AO101/seance4.pdf


Je comprends pas trop : tu veux t'intéresser à Jacobi pour calculer des valeurs propres, ou à l'algorithme de Jacobi très général qui permet de résoudre un système linéaire ? Le cours d'AO101 de l'ENSTA traite de Jacobi uniquement sous ce deuxième aspect (qui n'a pas l'air d'avoir grand chose à voir avec ton problème). Si tu cherches des renseignements sur l'algorithme de Jacobi pour déterminer les valeurs propres d'une matrice symétrique, tu ferais mieux de chercher sur le net : tu y trouveras des informations beaucoup plus détaillées et spécifiques à cette utilisation.
 

iamora a écrit :

J'ai l'impression que cet algorithme est un algorithme numérique optimisé pour le calcul de valeurs propres pas un algorithme pour transformer une matrice symétrique positive en une matrice définie positive?

Oui, Jacobi est un algorithme permettant de déterminer les valeurs propres d'une matrice symétrique. Il ne sert pas à "transformer une matrice SP en matrice SDP" (ce qui d'ailleurs n'a pas trop de sens à mon avis). C'est pour cela qu'il me semble qu'il est inutile (à part pour élargir ta culture, ce qui est fort recommandable) de te documenter là dessus. Je n'ai mentionné cet algo que pour répondre à la remarque d'Amonchakai qui se demandait comment on pouvait calculer numériquement les valeurs propres d'une matrice.
 
Juste par curiosité : c'est pour quoi que tu fais ce travail ? (un stage d'école d'ingé ?)
comment tu connais l'ENSTA ? (à part par ma signature...)


---------------
TriScale innov
n°1424514
iamora
Posté le 11-08-2006 à 16:27:03  profilanswer
 

C vrai j'ai parcouru le poly rapidement de l'ENSTA c'est plutôt un algo général, d'ailleurs il est pas mal le cours je crois que je vais le parcourir rapidement. Mon cours d'optimisation était vraiment centré sur l'optimisation en physique.
Le travail que je fais c'est pour un stage (il s'agit de developper un outil de VaR).  
Je ne connais pas trop l'ensta c'est par simple coincidence que je suis tombé sur le poly d'optimisation en recherchant sur google et puis j'ai un ou deux amis qui y sont mais je n'ai jamais visité l'école.
Moi je suis à l'INSA de Lyon (je sais pas si tu connais bein ou pas cet école)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Résolu] Lire les 10 dernières lignes d'un fichierProblème sur un flux de lecture à partir d'un fichier .txt
Transformer une matrice à une imageLire un fichier de properties
recharger une page à partir d'une autre[Résolu] [C#] Mettre à jour une List à partir d'une autre
Création d'un Word ou Excel à partir d'une page ASPInserser et lire fichier word dans base de donnees SQL
[Fortran] Renommer un fichier à partir d'une variable[OpenGL && FMOD] Lire un mp3
Plus de sujets relatifs à : Programme pour lire une matrice triangulaire inférieure à partir


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)