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;
%subplot(2,1,1);
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');
%subplot(2,1,2);
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;
%subplot(2,1,1);
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');
%subplot(2,1,2);
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