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 :

L´Algorithme de Gauss


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2012
    Messages : 2
    Par défaut L´Algorithme de Gauss
    Salut,
    je suis un débutant en MATLAB. Au fait j´aimerais bien comprendre en détail ce que ce code MATLAB à chaque ligne.


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    det = 1;
     
    for k = 1:n-1  ;    % On fait ici la recherche du pivot?
        max = 0;
        p(k) = 0;
        for i = k:n %
            s = 0;
            for j = k:n
                s = s + abs(a(i,j)); %
            end
            q = abs(a(i,k))/s;
            if  q > max
                max = q;
                p(k) = i;
            end
        end
        if  max == 0
            det = 0;     %Matrix singulier?
            break;
        end
        if  p(k) ~= k    %
            det = -det
            for j = 1:n
                h = a(k,j);
                a(k,j) = a(p(k),j);
                a(p(k),j) = h;
            end
        end
        det = det * a(k,k);
        for i = k+1:n    %
            a(i,k) = a(i,k)/a(k,k);
            for j = k+1:n
                a(i,j) = a(i,j)- a(i,k)* a(k,j);
            end
        end
    end
    det = det*a(n,n);
    if  det == 0
        'Matrix singulier'
    else
        %
        for k = 1:n-1
            if  p(k) ~= k
                h = b(k);
                b(k) = b(p(k));
                b(p(k)) = h;
            end
        end
        for i = 2:n
            for j = 1:i-1
                b(i) = b(i)- a(i,j)* b(j); %
            end
        end
        %
        for i = n:-1:1
            s = b(i);
            for k = i+1:n
                s = s - a(i,k)* b(k); %
            end
            b(i) = s/a(i,i);
        end
    end

  2. #2
    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
    Bonsoir,

    c'est très mal codé, je te déconseille de prendre cette source pour référence.

    Si le code n'est pas bogué, il est censé résoudre un système linéaire a*x=b, où a est une matrice inversible et b un second membre, tous les deux donnés, à l'aide du procédé d'élimination de Gauss avec pivotage partiel par ligne. La première boucle en 'k' correspond à l'étape de triangularisation de a qui calcule une matrice de permutation p, une matrice triangulaire inférieure à diagonale unité l et une matrice triangulaire supérieure u telles que p*a=l*u. Les autres boucles en 'k', 'j' et 'i qui se trouvent dans un 'else' calculent la solution x par remontée et descente de u et l respectivement, en tenant compte de la permutation p : p*a*x=p*b <=> l*u*x=p*b <=> x = inv(u)*inv(l)*p*b.

Discussions similaires

  1. Résolution d'une équation par Gauss
    Par rahmani01 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/11/2006, 22h15
  2. decomposition LU, gauss-seidel, implementation lorsqu il y a des 0 sur la diagonale
    Par le_voisin dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/09/2006, 23h12
  3. Réponses: 2
    Dernier message: 23/08/2006, 15h47
  4. [maths] Méthode de Gauss-Seidel
    Par al85 dans le forum Mathématiques
    Réponses: 5
    Dernier message: 20/05/2006, 20h24
  5. [LG]Matrice et pivot de Gauss
    Par Loopingus dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2005, 17h26

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