Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 01-12-2009 05:56:41

juheba
Membre
Inscription : 14-11-2009
Messages : 9

Question - Matlab

Bonjour à tous,

J'ai une autre question que je n'arrive pas à résoudre.
Lorsque je roule le code matlab ci-dessous, la seconde boucle while ne semble pas être prise en compte.

Après certains tests, j'ai pu valider que la condition que j'ai écrit en était la cause, mais je ne sais comment remédier à ce point (probablement que l'évaluation de la condition ne se fait pas bien).


J'ai beau tester plusieurs approches, je n'arrive pas à faire rouler cette seconde boucle. Lorsque j'essai le code à la main, (ligne après ligne) j'obtiens toutefois les réponses désirées.

Pourriez vous m'expliquer pourquoi cette boucle n'est pas prise en compte?

Voici le code:

x=[2.5 3]'            % Valeur initiale de x

alpha = .001;       % Paramètres d'Armijo
beta = .5;            % Paramètres d'Armijo
 
obj=func(x);         % Fonction objectif
g=grad(x);           % Gradient de la fonction
 
k=0;                    % k = # iterations


% Début de l'algorithme de recherche linéaire

  while  k < 35   
    d = -g;                     % Direction de descente
    t = 1;                      % Paramètre t
    newobj = func(x + t*d)      % Évalue f(x+t*d)
   
        while newobj <= (obj + alpha*t*g'*d)      % Évalue le critère d'arrêt d'Armijo LE PROBLÈME EST ICI
            t = t*beta                                          % Incrémente t(k+1)
            newobj = func(x + t*d);                     % Remplace la fonction
        end
       
    x = x + t*d         % Réevaluation de x(k+1)
    obj=newobj;         % Réevaluation de la nouvelle valeur de la fonction
    g=grad(x);          % Réevaluation du gradient
    k = k + 1;          % Incrémente le compteur k
  end

% Output x and k
  x, k, obj


Merci encore à vous tous pour votre aide!

J.

Hors ligne

#2 01-12-2009 06:23:56

juheba
Membre
Inscription : 14-11-2009
Messages : 9

Re : Question - Matlab

J'ai trouvé la réponse (par hasard)

Merci tout de même.

Julien.

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
dix plus vingt sept
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums