IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

[decomposition LU] resultat bon avant la fin de l algorithme ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Points : 45
    Points
    45
    Par défaut [decomposition LU] resultat bon avant la fin de l algorithme ?
    salut,

    je suis pas tout a fait certain de poster le message sur le bon forum (j hesitais avec le forum c++), enfin si c est pas le bon il sera deplace !

    J ai donc fait un algorithme de decomposition LU et j observe un drole de truc (à mes yeux en tout cas) :

    mon algorithme me sort une matrice triangulaire superieure avant que l algorithme arrive au bout (je veux dire par la avant d avoir fait la multiplication par L associe à la derniere colonne par exemple)

    J ai mis mon code, si jamais ca peut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    matrix<float> decomp_lu(matrix<float> m)
    {
    	matrix<float> l(m.size1(), m.size1());
    	cout << "dimension de la matrice soumise au LU :"<<m.size1()<<"\n";
     
    	for(int i=0; i<=m.size1()-2; i=i+1)//calcul de L
    	{
    		//coef à 0 de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		for(int d=0; d<m.size2(); ++ d)
    		l(c,d)=0;
    		//coef à 1 sur la diagonale de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		l(c,c)=1;
     
    		//calcul des coef non nuls de la matrice L
    		for(int j=i; j<=m.size1()-2; ++ j)
    		l(j+1,i)=-m(j+1,i)/m(i,i);
     
    		cout << "operation numero "<< i <<", L : "<< l <<"\n";
    		m=prod(l, m);
    		cout << "operation numero "<< i <<", U : "<< m <<"\n";
    	}
    	return(m);
    }
    bon il est fini, je pense notamment stocke L et U dans un tableau de matricepour pouvoir les sortir de la fonction et les manipuler eventuellement apres...enfin ca c est autre chose....

    Merci, j attend vos remarques !

  2. #2
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 45
    Points
    45
    Par défaut C'est quoi ??
    C'est quoi un algorithme de décomposition LU ??

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Citation Envoyé par Mike85
    C'est quoi un algorithme de décomposition LU ??
    Décomposition d'une matrice inversible en un produit de deux matrices triangulaires, une triangulaire inférieure L (pour "low") et une triangulaire supérieure U (pour "up").

    Voir wikipedia pour les détails.

    Je suis en train de me faire une classe Java pour la manipulation de matrice, mais je n'ai pas attaqué la décomposition LU. Je regarde ça dès que j'y suis.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ca peut arriver, je ne vois pas le problème

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Points : 45
    Points
    45
    Par défaut
    ok, c est ce que je pensais mais je me demandais si il n y avait pas de probleme avec mon algorithme,mais finalement j ai trouve des matrices ou il faut utiliser l algorithme jusqu'au bout !
    Merci

  6. #6
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 45
    Points
    45
    Par défaut
    Dans quels applications peut servir cet algorithme ??
    Car moi, j'ai rien pigé.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Calculer un déterminant, par exemple.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 45
    Points
    45
    Par défaut
    Mais, pour un simple déterminant je crois qu'une seule formule suffit, pas tout un algorithme.

  9. #9
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par Mike85
    Mais, pour un simple déterminant je crois qu'une seule formule suffit, pas tout un algorithme.
    Oui, mais l'algorithme avec la formule du développement par exemple... il est super lent.

    Si tu as une matrice triangulaire, tu as juste à faire le produit des termes diagonaux.

  10. #10
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    En + de la lenteur, un calcul du det par récursion présente d'énormes problèmes numériques de par toutes ses * et +-.
    La méthode LU est parmi les + efficaces. Pour son implémentation et sa comparaison avec d'autres technique voir l'excellent livre de Numerical recipes

    voir http://www.library.cornell.edu/nr/cbookcpdf.html
    et + spécifiquement le chapitre 2 ( LU sous 2.3 )

  11. #11
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 45
    Points
    45
    Par défaut
    Donc, cet algorithme permet d'optimiser le temp d'exécution.

  12. #12
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par Mike85
    Donc, cet algorithme permet d'optimiser le temp d'exécution.
    Et d'éviter les problèmes de précision du fait des calculs avec des flottants, comme a dit j.p.mignot.

    Tu peux avoir des algorithmes super rapides, mais niveau perte de précision du calcul, ça pourra être inadapté, c'est important comme aspect aussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/10/2023, 17h14
  2. Démission: quitter la boite avant la fin du préavis
    Par catwalk dans le forum Démission
    Réponses: 4
    Dernier message: 29/08/2006, 17h20
  3. [Suisse] Partir avant la fin du préavis de licenciement.
    Par goony dans le forum Licenciement
    Réponses: 3
    Dernier message: 06/07/2006, 11h06
  4. [XML][XSL] Forcer l'affichage sur le navigateur avant la fin
    Par FreddyP dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 08/05/2006, 13h36
  5. Réponses: 6
    Dernier message: 27/10/2005, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo