Aide Matlab
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Aide Matlab



  1. #1
    invited9d71a3e

    Aide Matlab


    ------

    Bonjour,
    je suis débutante en programmation, j'ai essayé de faire un petit programme (résolution d'un système linéaire avec la méthode de Dai-Yuan (gradient conjugué)), j'ai un problème dans la ligne 21, mais je ne vois pas...
    voici l'algorithme de cette méthode (format pdf), et le programme que j'ai fait.
    aidez moi s'il vous plait !!

    -----
    Fichiers attachés Fichiers attachés

  2. #2
    invited9d71a3e

    Re : Aide Matlab

    Bonjour,
    si y a quelqu'un qui s'interesse à mon programme, voici le programme :
    Code:
    function [x] = daiyuan(epsilon,maxiter)
    % Méthode de Dai Yuan pour la résolution d'un problème linéaire Ax=B
    % Entrée : A       = la matrice donnée
    %          B       = vecteur donné
    %          x1      = le point de départ
    %          epsilon = tolérance du test d'arret, valeur par défaut 1e-8
    %          maxiter = nombre maximum d'itérations, valeur par défaut 20
    % Sortie : x       = solution
    % Valeurs par défaut
    if nargin < 1, 
        epsilon = 1e-8; 
    end
    if nargin < 2,
        maxiter = 10000; 
    end
    A = input ('donner la matrice A =');
    B = input ('donner le vecteur b =');
    x1 = input ('donner le point du départ x1 =');
    % iter =1
    % Calcul du gradient en x1
    g = A*x1-B;
    % on pren la direction du gradient d1 = -g1
    d = -g;
    % Calucul du pas a1
    a = norm(g)^2/dot(A*d,d);
    % Première itération x2
    x_ = x1 + d*a;
    % calcul du gradient en x2
    g_ = A*x_- B;
    % Calcul de la variante p2 (de Dai Yuan)
    p = norm(g_)^2/dot(g_-g,d);
    % Calcul de la direction d2
    d_ = -g_+ d*p;
    x = x_;
    g = g_;
    d = d_;
    % Calcul des iétration à partir de iter =2
    for iter = 2:maxiter
        % test d'arret
        if norm(g) <= epsilon, 
            break, 
        end 
        % Calcul du pas ak
        a = norm(g)^2/dot(A*d,d);
        % Calcul de l'itération xk+1
        x_ = x + d*a;
        % Calcul du gradient en xk+1
        g_ = A*x_-B;
        % Calcul de la variante pk+1
         p = norm(g_)^2/dot(d,g_-g);
         % Calcul de la direction dk+1
        d_ = -g_+ d*p; 
        x = x_;
        g = g_;
        d = d_;
    end
    % Si le test d'arret n'est pa vérifié et ietr>  max
    if  norm(g) > epsilon,
        warning('nombre maximum d itération atteint'),
    end
    % afficher le nombre d'iteration
    fprintf('Le nombre d''itérations effectuée est : %d', iter);
    Je tiens à remercier caro95470 et ms_samurai...

Discussions similaires

  1. Aide MatLab
    Par invite9e95248d dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 30/11/2008, 15h22
  2. Aide Matlab
    Par invitebdee1222 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 18/04/2007, 22h38
  3. Aide en MATLAB
    Par invitef03e0ed1 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 25/05/2006, 22h14
  4. aide matlab
    Par inviteacf8b366 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/10/2004, 14h43
  5. aide matlab
    Par invited1c0956f dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 10/10/2004, 10h24
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...