ASI 3 Méthodes numériques pour l’ingénieur Performance des solutions numériques : complexité, erreur, précision et stabilité
Les enjeux de l’analyse numérique Résoudre des problèmes que l’on ne sait pas résoudre autrement « mieux » qu’on ne le faisait avant plus précisément, moins cher... Étique de l’analyse numérique plus vite : complexité des algorithmes (et des problèmes) plus précis erreur d’arrondi (liées à la machine) erreur d’approximation (liées à l’algorithme) plus fiable stabilité d’un algorithme facile à programmer : comprendre pour mieux réutiliser
Temps de calcul Taille d’un problème : n Temps de calcul : aspects liés au programme et à la machine aspects liés au problème Complexité d’un algorithme Complexité d’un problème Définition : la fonction T(n) est dite « grand O » de f(n) que l’on note T(n)=O(f(n)), s’il existe deux constantes C et n0 telles que Exemple :
Exemples O(n) Fusionner(x,y) n = taille(x)+taille(y) pour i=1:n …. v(i) = ….. ….. fin Ab=c O(n2) pour i=1:n s = 0; pour j=i:n s =s+A(i,j)*b(i) Fin c(i)=s fin Résoudre(P(n)) Si n = 1 ,...c’est fini Sinon A=Résoudre(P(1:n/2)) B=Résoudre(P(n/2+1:n)) Fusionner(A,B) O(nlog2n)
Règles de calcul Algorithmes : T : Ensemble des algorithmes R ; si-alors-sinon Pour i=1:n faire – fait Appeler un sous programme T : Ensemble des algorithmes R T(A;B)= T(A) + T(B) T(si C alors A sinon B) = T(C)+max(T(A),T(B)) T(pour i = 1,n faire A(i) fait) = somme T(A(i)) T(appeler A) = T(A)
Complexité d’un algorithme, complexité d’un problème temps : ordre du temps de calcul taille : place mémoire nécessaire complexité d’un problème de taille n soit A un algorithme résolvant le problème Intéressant seulement lorsque n est grand
Un calcul simple n = 100000; s = 0; for i=1:n s = s+1/3; end » s-n/3 ans = -4.3576e-008 Représentation des nombres Précision : log([eps realmax realmin]) -36.0437 709.7827 -708.3964 Maths de la continuité maths calculables ?
Erreur de codage (binaire) s = 0; for i=1:n s = s+1/3; end » s-n/3 ans = -4.3576e-008 Représentation des nombres Précision : log([eps realmax realmin]) -36.0437 709.7827 -708.3964 Maths de la continuité / calculables eps n’est pas realmin
Arithmétique calculatoire (décimale) Nombre en virgule flottante (décimale pour simplifier) normalisée (normalisation IEEE, 1985) Définition : Exercice : montez que :
Forme normalisée x = 1, y = 2, y-x ??? z=10^30; (z+x)-(z+y) ??? Exercice : écrire un programme résolvant l’équation suivante (avec 4 chiffres significatifs) Il faut faire attention à l’ordre suivant lequel sont effectuées des opérations
Erreur d’approximation Erreur de troncature (indépendante de la machine) (ou tabulation) propagation des erreurs Stabilité d’un algorithme Définition : soit e (n) l’erreur d’un algorithme après n étapes avec |e (n)|=O(f(n)), la croissance de l’erreur est dite polynomiale si f est un polynôme. Elle est dite exponentielle si f(n)=Kn e. (f est appelée le taux de convergence de l’algorithme)
Conclusion Complexité : pour comparer les algorithmes O(f(n)) : polynomial vs exponentiel erreur d’arrondi précision - ordre de grandeur erreur d’approximation algorithmique : ordre de l’approximation procédures stables propagation des erreurs
Exercices pratiques : complexité et erreur d’arrondi Quelle est la complexité des programmes de la semaine dernière ? Quel algorithme choisir ? Vérifier que les trois programmes donnent le bon résultat étudier la stabilité de ces algorithmes vis à vis des conditions initiales comment évaluer efficacement un polynôme ? Le problème vient du calcul de xn
n équations et m+1 inconnues Un problème de base Une nouvelle variable explicative Une nouvelle expérience (individu) n équations et m+1 inconnues Xa=y
Illustration : système de 2 équations à 2 inconnues x = 0:1; y = x; y2 = .5*x+.25; subplot(2,2,1);plot(x,y);hold on;plot(x,y2);hold off; xlabel('x_1') ylabel('x_2') title('solution unique') set(gca,'FontSize',14,'FontName','Times','XTick',[],'YTick',[],'Box','on'); y3 = x+.2; subplot(2,2,2);plot(x,y);hold on;plot(x,y3);hold off; title('pas de solution') une solution unique pas de solution une infinité de solution solution « triviale » : x1= x2 = 0 Les différents cas
Que se passe t’il si… ? On dispose d’un nouvel individu on dispose d’une nouvelle variable m=n m<n m>m on recopie deux individus on duplique une variable a X y =