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
| function [xinf, fval, iter, nbf] = minglobal5(fonc1D, xmin, xmax, eps)
% Recherche du minimum global d'une fonction à l'aide de la fonction
% fminbdn de MATLAB.
%
% xinf est l'abscisse du minimum.
% fval est la valeur du minimum.
% iter est le nombre d'itérations nécessaires pour obtenir le minimum.
% nbf est le nombre d'appels à la fonction nécessaires pour obtenir le
% minimum.
%
% fonc1D est le nom de la fonction à minimiser.
% xmin est la borne inférieure du domaine de définition de x.
% xmax est la borne supérieure du domaine de définition de x.
% eps est la précision souhaitée.
iter = 0; % initialisation du compteur d'itérations
nbf = 0; % initialisation du compteur d'appel à la fonction
% recherche d'un premier minimum
[x1,fval1,exitflag,output] = fminbnd(fonc1D,xmin,xmax,optimset('TolX',eps));
iter = iter + output.iterations ;
nbf = nbf + output.funcCount ;
% recherche d'un deuxième minimum
[x,fval2,exitflag,ouput] = fminbnd(fonc1D,x1,xmax,optimset('TolX',eps));
iter = iter + output.iterations;
nbf = nbf + output.funcCount ;
if (fval1 > fval2)
while (fval1 > fval2)
fval1 = fval2;
xdeb = x;
[x,fval2,exitflag,output] = fminbnd(fonc1D,xdeb,xmax,optimset('TolX',eps));
iter = iter + output.iterations;
nbf = nbf + output.funcCount ;
end
xinf = xdeb;
else
xinf = x1;
end
fval = fval1; |
Partager