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).

Répondre

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)?
soixante seize moins dix-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.

Retour

Résumé de la discussion (messages les plus récents en premier)

juheba
01-12-2009 06:23:56

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

Merci tout de même.

Julien.

juheba
01-12-2009 05:56:41

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.

Pied de page des forums