2 Vérification de la complexité de l’algorithme
de remontée.
Vous utiliserez les instructions de chronométrage de temps CPU fournie par
Matlab
tic; instructions ; duree=toc; qui compte en secondes le temps CPU pour
effectuer les instructions comprises entre tic et duree=toc et range ce nombre
réel dans la variable duree.2
Exécuter le programme précédent pour des matrices de taille nvariant entre 2et
1000 et chronométrez le temps d’exécution de la remontée. Il faut placer tic et
duree=toc aux bons endroits pour mesurer uniquement la durée de l’algorithme
de remontée et non la génération des matrices et des second membres.
%% Estimation du temps cpu par rapport à n
% trace la complexité en fonction de n
nmax=1000;
for n=2:nmax
%initialisation
t=zeros(1,nmax);
%A COMPLETER
tic;
%A COMPLETER
t(n)=toc;
end
Vous tracerez ensuite la courbe n7→ t(n)en coordonnées cartésiennes, ainsi
qu’en échelle logarithmique. Comparez sur les mêmes graphes avec la courbe
n7→ n2. Que constatez vous? Quelle est la pente commune de ces courbes?
Quelle est la complexité de l’algorithme? Comme les npetits ne sont pas
représentatifs, on peut tracer à partir de n= 10:
plot((10:nmax), t(10:nmax))
%% Trace l’allure de la courbe des durées de calcul
%
plot(t);xlabel(’taille n du système’);ylabel(’durée t de résolution’);
title(’durée elimination vs taille du systeme’);
display(’taper un caractère pour continuer’);
pause;
%% C’est mieux en coordonnées logarithmiques.
%
clf;loglog(t);
title(’échelle log-log’);
hold on
%%A COMPLETER POUR TRACER n->n^2 en echelle log-log
%% afficher la pente
NB : Vous trouverez une introduction à Matlab ainsi qu’un aide-mémoire
des principales commandes sur l’ENT (fichiers pdf)
2En fait ces instructions lisent l’horloge interne de la machine et donc la performance peut
être modifiée selon les applications qui tournent en même temps que Matlab.
2