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

MATLAB Discussion :

Méthode des gradients conjugués


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Méthode des gradients conjugués
    Bonjour, j'ai implémenté récemment l'algorithme des gradients conjugués sur matlab pour résoudre des systèmes d'équations Ax = b où la matrice A est symétrique et définie positive.

    Code MATLAB : 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
    function [sol,k] = gradientsConjugues_2(A,b,x0,tol)
        r = A*x0-b;
        p = -r;
        k = 0;
        x = x0;
        n = length(x0);
        rr = r'*r;
        while norm(r) > tol && k < n
            Ap = A*p;
            alpha = rr/(p'*Ap);
            x = x + alpha.*p;
            r = r + alpha.*Ap;
            rrtemp = r'*r;
            beta = rrtemp/rr;
            rr = rrtemp;
            p = -r + beta.*p;
            k = k + 1;
        end
        sol = x;
    end

    La théorie dit que la méthode doit converger vers la solution en aux plus n étapes. n étant la dimensions de la matrice A : n*n. Seulement, j'ai essayer l'algorithme sur la matrice d'Hilbert : a_{ij} = 1/(i+j-1) et B = (1,1,...,1). J'ai donc appliqué l'algo sur les matrices d'Hilbert de différentes tailles n. J'ai remarqué que pour certaines valeurs de n, le résultat était erroné (grande erreur), pour les autres valeur de n, la solution étaient aussi erronées mais moindres. Voici un graphique représentant en abscisses la taille de la matrice d'Hilbert et en ordonnées, la valeur de l'erreur sur la solution après n itérations de l'algorithme. (regarder la courbe rouge seulement).

    Nom : plus_grand_ecart_erreur_hilbert_par_algo_1_et_2.png
Affichages : 2293
Taille : 37,6 Ko

    J'aimerais savoir pourquoi dans ces cas là, la méthode des gradients conjugués ne trouve pas la solution en au plus n étapes (prédit par la théorie). Est-ce à cause d'erreurs d'arrondis qui se propagent dans le calcul par l'ordinateur, ... Existe t-il des solutions pour éviter ces erreurs, ...

    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Points : 8 705
    Points
    8 705
    Billets dans le blog
    43
    Par défaut
    Si l'algorithme des gradients conjugués fonctionne mal avec les matrices de Hilbert, c'est que ces dernières se prêtent assez mal en général à la la résolution numérique (mal conditionnées).
    Cela ne remet pas en cause l'algorithme, simplement qu'il ne fonctionne pas dans certains cas, dont celui des matrices de Hilbert.
    Tutoriels et FAQ TypeScript

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    ok merci mais du coup si j'ai bien compris, les erreurs sont du au fait que la méthode des gradients conjugués propagent assez facilement (dans le cas mal conditionné d'Hilbert) les erreurs d'arrondis,... commise par l'ordinateur pendant les différentes itérations ?

Discussions similaires

  1. Méthode du Gradient Conjugué
    Par Carew dans le forum Mathématiques
    Réponses: 10
    Dernier message: 15/01/2013, 12h51
  2. [Optimisation] Méthodes des gradients
    Par plegat dans le forum Mathématiques
    Réponses: 0
    Dernier message: 22/08/2008, 09h16
  3. [PHPTAL] gestion des méthodes des Objets
    Par ronio dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 06/03/2006, 14h29
  4. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48
  5. Réponses: 4
    Dernier message: 02/07/2004, 10h31

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