Contents
En faisant varier la taille du problème...
function variation(f,epsilon,maxiter)
global NB_EVAL_FONC;
global NB_EVAL_GRAD;
vals = 2:4:102;
for i=1:length(vals)
x = randn(1,vals(i));
NB_EVAL_FONC = 0;
NB_EVAL_GRAD = 0;
lineaire = @dichotomic;
tic;
[xD,kDicho(i)] = bfgs(f,x,epsilon,maxiter,lineaire);
tempsDicho(i) = toc;
nbEvalFoncDicho(i) = NB_EVAL_FONC;
nbEvalGradDicho(i) = NB_EVAL_GRAD;
NB_EVAL_FONC = 0;
NB_EVAL_GRAD = 0;
lineaire = @armijo;
tic;
[xA,kArmijo(i)] = bfgs(f,x,epsilon,maxiter,lineaire);
tempsArmijo(i) = toc;
Prec(i) = (norm(xD-xA)<epsilon);
nbEvalFoncArmijo(i) = NB_EVAL_FONC;
nbEvalGradArmijo(i) = NB_EVAL_GRAD;
end
figure;
plot(vals,tempsDicho);
hold on;
plot(vals,tempsArmijo,'r');
title('Temps d''execution');
legend('Dicho','Armijo',0);
xlabel('Taille du problème');
ylabel('Temps en sec');
figure;
plot(vals,kDicho);
hold on;
plot(vals,kArmijo,'r');
title('Nombre d''itérations');
legend('Dicho','Armijo',0);
xlabel('Taille du problème');
ylabel('Nombre d''itérations');
figure;
plot(vals,nbEvalFoncDicho);
hold on;
plot(vals,nbEvalFoncArmijo,'r');
title('Nb Evaluations de la fonction');
legend('Dicho','Armijo',0);
xlabel('Taille du problème');
ylabel('Nombre d''évaluations');
figure;
plot(vals,nbEvalGradDicho);
hold on;
plot(vals,nbEvalGradArmijo,'r');
title('Nb Evaluations du gradient');
legend('Dicho','Armijo',0);
xlabel('Taille du problème');
ylabel('Nombre d''évaluations');
end