Exemple de fonction à minimiser

Cette méthode calcule systématiquement le gradient de la fonction au point donné en paramètre, et optionnellement la valeur de la fonction (si le nombre de paramètres en sortie est égal à 2). Deux variables globales permettent le comptage de ces opérations et doivent être initialisées dans le programme principal.

Contents

function [dx,f] = f5(x)

global NB_EVAL_FONC;
global NB_EVAL_GRAD;

n = length(x);
if nargout==2

    f = 1-cos(x(1))-sin(x(2));
    for i=2:n-1
        f = f+i*((1-cos(x(i)))+sin(x(i-1))-sin(x(i+1)));
    end
    f = f+n*((1-cos(x(n)))+sin(x(n-1)));
    NB_EVAL_FONC = NB_EVAL_FONC+1;
end

dx = zeros(1,n);
dx(1) = sin(x(1))+2*cos(x(1));
dx(n) = (1-n)*cos(x(n))+n*sin(x(n));
for i=2:n-1
    dx(i)=2*cos(x(i))+i*sin(x(i));
end
NB_EVAL_GRAD=NB_EVAL_GRAD+1;
end

Retour au sujet