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 :

Résolution de système linéaire par la méthode de Jacobi


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut Résolution de système linéaire par la méthode de Jacobi
    Bonjour,

    Je voudrai résoudre un système linéaire par la méthode de Jacobi.

    Seulement, le problème est que la solution diverge et je ne sais pas du tout pourquoi. La programmation me semble correcte, et je ne sais pas où je me plante.
    Pourriez-vous m'aider ?

    Voici le programme :

    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
    clear;
    b=[1 4 -2]';
    A=[1 1 1;2 -1 3;3 3 -3] ;
    x=[1;1;1];
     
    D=zeros(3,3);
    I=eye(3);
    n=100;
    for i=1:3
        for j=1:3
            if i==j
                D(i,j)=A(i,j);
            else
                D(i,j)=0;
            end
        end
    end
     for i=1:n
         x=(inv(D)*b)+(I-inv(D)*A)*x;
     end
     x
    Merci à vous

  2. #2
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    quelque remarques : dans un souci d'optimisation, tu ne devrais pas construire D comme ca vu que tu ne veux que changer les valeurs de la diagonale, tu peux le faire en une seule boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i=1:3
      D(i,i)=A(i,i)
    end
    et hop, on passe d'une complexité en n^2 a une en n

    dans la meme veine, tu devrais calculer l'inverse de D une fois pour toute


    ca fera gagner pas mal de vitesse ! voir meme calculer d'avance Dinv*b, et Dinv*A.

    enfin, pour ce qui est de ton probleme, en regardant sur wikiedia, il me semble que la formule est fausse : il me semble que tu devrais definir une matrice N=M-A, et ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x=(Dinv*b)+(Dinv*N)*x;
    non ?

  3. #3
    Membre confirmé Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Par défaut
    Salut,
    pour résoudre une équation linéaire par jacobi (ou Gauss-seidel), il y'a des conditions à vérifier pour être sur que la méthode converge, dont l'une est sur les éléments de la diagonale.Et dans ton cas cette condition n'est pas vérifiée.
    En prenant un autre système (qui converge), ton programme fonctionne parfaitement.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A =
     
         2    -1     1
         1     2    -1
         1     1     3
    b =
     
        -2
         3
        -2
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Par défaut
    merci pour vos réponses.

    Merci jobherzt pour l'amélioration de la vitesse du programme

  5. #5
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    de rien sur une matrice 3x3 la difference est minime, mas bon, il faut faire "comme si" tu avais des matrices enormes

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/12/2011, 01h59
  2. Résolution des systèmes linéaires
    Par FR119492 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 24/12/2010, 20h15
  3. Résolution des systèmes linéaires
    Par Rniamo dans le forum Mathématiques
    Réponses: 18
    Dernier message: 28/02/2009, 00h55
  4. Résolution de systèmes linéaires : une erreur
    Par delphidebutant dans le forum Mathématiques
    Réponses: 7
    Dernier message: 21/02/2009, 15h00

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