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 :

Méthode de Gauss optimisée


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut Méthode de Gauss optimisée
    Salut tous,

    j'ai vu sur un document que pour optimiser la methode de Gauss (minimiser les erreur d'arrondis) il faut choisir le plus grand pivot possible (et donc permurter les lignes).

    je n'ai pas compris pourquoi, pourriez vous m'expliquer svp ?

    => ce que je comprends pas c'est que si on raisonne comme cela on peut se dire: je dois ajouter à chaque ligne un nombre enorme pour avoir le pivot maximal ! je comprends que ce raisonnement est faux mais j'aimerai comprendre c'est quoi cet histoire de pivot max...

    merci d'avance pour votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Sur ce site, il y a des cours, en particulier un que j'ai écrit: "Résolution des systèmes linéaires", où tu trouveras la réponse à ta question.
    Jean-Marc Blanc

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    merci je vais regarder

  4. #4
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    tu liras dans beaucoup de documents qu'il faut pivoter pour améliorer la précision de tes calculs mais en fait on sait théoriquement que ça ne sert pas à grand chose. Quand on résout un système linéaire Ax=b à l'aide de la méthode de Gauss, on sait que l'erreur sur la solution vérifie
    ||x-y|| <= C(n)*k(A)*rho(A)*||x||,
    où ||.|| est une norme vectorielle, y désigne la solution approchée calculée, C(n)>1 est une constante ne dépendant que de la taille n du problème, k(A)>=1 est le conditionnement de la matrice A pour la norme matricielle subordonnée à ||.||, et rho(A)>=1 un terme de croissance. Il s'avère que ce dernier terme n'est pas borné en général, c'est-à-dire que l'erreur ||x-y|| peut être arbitrairement grande. Concrètement, cela veut dire qu'en utilisant la méthode de Gauss tu peut calculer n'importe quoi si ton système linéaire possède des propriétés particulièrement défavorables. Les techniques de pivotage permettent de borner le terme de croissance. Par exemple, en permutant les lignes pour maximiser chaque pivot en valeur absolue, on obtient
    rho(A) <= 2^n.
    Certes, on sait que l'erreur est bornée, mais par un terme qui est très élevé si la taille n de ton système est grande.

    La vraie raison pour laquelle on pivote est que l'on s'assure de ne pas avoir de pivot nul lorsque la matrice est inversible, c'est-à-dire qu'on s'assure de ne jamais diviser par un terme nul. Dit autrement, la factorisation LU d'une matrice inversible existe toujours à une permutation par ligne ou par colonne près . Sans permutation, une matrice inversible n'admet pas nécessairement de factorisation LU.

    Pour approfondir le sujet, tu peux lire le livre de Higham intitulé "Accuracy and stability of numerical algorithms".

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonjour,

    tu liras dans beaucoup de documents qu'il faut pivoter pour améliorer la précision de tes calculs mais en fait on sait théoriquement que ça ne sert pas à grand chose. Quand on résout un système linéaire Ax=b à l'aide de la méthode de Gauss, on sait que l'erreur sur la solution vérifie

    où ||.|| est une norme vectorielle, y désigne la solution approchée calculée, C(n)>1 est une constante ne dépendant que de la taille n du problème, k(A)>=1 est le conditionnement de la matrice A pour la norme matricielle subordonnée à ||.||, et rho(A)>=1 un terme de croissance. Il s'avère que ce dernier terme n'est pas borné en général, c'est-à-dire que l'erreur ||x-y|| peut être arbitrairement grande. Concrètement, cela veut dire qu'en utilisant la méthode de Gauss tu peut calculer n'importe quoi si ton système linéaire possède des propriétés particulièrement défavorables. Les techniques de pivotage permettent de borner le terme de croissance. Par exemple, en permutant les lignes pour maximiser chaque pivot en valeur absolue, on obtient

    Certes, on sait que l'erreur est bornée, mais par un terme qui est très élevé si la taille n de ton système est grande.

    La vraie raison pour laquelle on pivote est que l'on s'assure de ne pas avoir de pivot nul lorsque la matrice est inversible, c'est-à-dire qu'on s'assure de ne jamais diviser par un terme nul. Dit autrement, la factorisation LU d'une matrice inversible existe toujours à une permutation par ligne ou par colonne près . Sans permutation, une matrice inversible n'admet pas nécessairement de factorisation LU.

    Pour approfondir le sujet, tu peux lire le livre de Higham intitulé "Accuracy and stability of numerical algorithms".

    merci alex pour cette reponse !

    en gros ce que tu veux me dire c'est que si la matrice est mal conditionnée je peux prendre n'importe quel pivot la solution sera pourrie ?

    si j'ai une matrice très bien conditionnée la solution de changer de pivot ameliore grandement les resultats où c'est negligeable ? (c'est solution porte de nom de pivot partiel, c'est bien ça ?)

  6. #6
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Le pivotage est dit partiel si on ne permute que des lignes (pivotage partiel par ligne) ou que des colonnes (pivotage partiel par colonne). Il est dit total lorsqu'on permute à la fois des lignes et des colonnes.

    Il faut bien comprendre que la norme de l'erreur est bornée par un terme de conditionnement ET un terme de croissance, c'est-à-dire que :
    1. il s'agit bien d'une borne supérieure qui ne donne qu'une estimation du pire cas possible. Un problème mal conditionné ne conduit pas nécessairement à de grandes erreurs de calcul.
    2. les influences du préconditionnement et du pivotage ne sont pas liées (on n'agit pas sur le même terme).

    Ceci permet de répondre à tes questions.
    si la matrice est mal conditionnée je peux prendre n'importe quel pivot la solution sera pourrie ?
    Non, pas forcément à cause de 1.

    si j'ai une matrice très bien conditionnée la solution de changer de pivot ameliore grandement les resultats où c'est negligeable ?
    A cause de 2., il n'y a pas de rapport direct entre le pivotage et le conditionnement (sauf cas particulier).

    EDIT : je vais te donner une réponse plus frappante pour que tu comprennes bien. Je résous des systèmes linéaires inversibles de conditionnement en 10^8 et de terme de croissance en 10^9 et j'obtiens quand même une solution à 10^{-9} près. Seulement, je ne peux vérifier cela qu'après calcul de la solution. Par conséquent, pour éviter les problèmes, on préfère préconditionner et faire du pivotage pour éviter d'avoir des problèmes d'imprécisions et/ou d'inexistence de la factorisation LU.

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

Discussions similaires

  1. Méthodes de Gauss-Seidel et de Jacobi
    Par fayendanane dans le forum Mathématiques
    Réponses: 2
    Dernier message: 16/06/2014, 10h22
  2. Réponses: 0
    Dernier message: 28/02/2014, 12h16
  3. Demande Méthode de Jacobi et Méthode de Gauss
    Par Ghoust dans le forum Fortran
    Réponses: 2
    Dernier message: 23/11/2012, 21h48
  4. Réponses: 0
    Dernier message: 27/12/2011, 01h59
  5. [maths] Méthode de Gauss-Seidel
    Par al85 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 20/05/2006, 20h24

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