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 : • Complexité d’un problème min f A A log(T(n)) : temps de calcul temps de calcul O f (n) – aspects liés au programme et à la machine – aspects liés au problème – Complexité d’un algorithme Algorithme 1 Algorithme 2 n : taille du 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 n n0 T (n) C f (n) Exemple : 14 x 2 log3x 9 x 1324 O x 3 Exemples 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 Fusionner(x,y) O(n) n = taille(x)+taille(y) pour i=1:n …. v(i) = ….. ….. 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 : – – – – ; 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 • Complexité d’un algorithme : – 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 min O A (n) A 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 1 0,33333333333333 3 erreur .3333333...1017 Représentation des nombres x s m B e E m 2e 32 bits 1 signe 8 exposant 23 mantisse Précision : log([eps realmax realmin]) -36.0437 709.7827 -708.3964 Maths de la continuité maths calculables Erreur de codage (binaire) n = 100000; s = 0; for i=1:n s = s+1/3; end » s-n/3 ans = -4.3576e-008 eps n’est pas realmin 1 0,33333333333333 3 erreur .3333333...1017 Représentation des nombres x 1s (1 m) B e E (1 m) 2e64 32 bits 1 signe 8 exposant 23 mantisse Précision : log([eps realmax realmin]) -36.0437 709.7827 -708.3964 64bits 1 signe 11 exposant 52 mantisse Maths de la continuité / calculables Arithmétique calculatoire (décimale) • Nombre en virgule flottante (décimale pour simplifier) normalisée (normalisation IEEE, 1985) x 0, d1d 2 d 3 ...d k d k 1... 10 n troncature arrondi 1 d1 9; 0 d k 9 t ( x) 0, d1d 2 d 3 ...d k 10 n a( x) t ( x' ) 0, 1 2 3 ... k 10 n avec x' x 5 10 n( k 1) 0, 1 2 3 ... k k 1... 10 n Définition : ~ x approche le réel x avec t décimales significat ives si k est le plus grand entier positif tel que : x-~ x 5 10 t x x-t(x) 10 k 1 Exercice : montez que : x et x-a(x) 0,5 10 k 1 x 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 x 2 62,10 x 1 0 (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) 2 3 i x x x e x 1 x ... O x i 1 2! 3! i! (ou tabulation) • propagation des erreurs p pˆ p q qˆ q pq pˆ qˆ q p p q p q R pq pq pˆ q p q pq p q • Stabilité d’un algorithme Définition : soit (n) l’erreur d’un algorithme après n étapes avec | (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 . (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 1 an an 1 a0 1; 3 n 1 b 1; b 1 ; b 4 b 1 b 0 1 n n 1 n2 3 3 3 3 c0 1; c1 1 ; cn 10 cn 1 cn 2 3 3 – é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 Un problème de base Une nouvelle variable explicative a0 a1 x1(1) ... a j x1( j ) ... am x1( m ) y1 (1) ( j) (m) a a x ... a x ... a x y2 j 2 m 2 0 1 2 (1) ( j) (m) a a x ... a x ... a x yi 0 1 i j i m i Une nouvelle a a x (1) ... a x ( j ) ... a x ( m ) y 0 1 n j n m n n expérience (individu) n équations et m+1 inconnues Xa=y Illustration : système de 2 équations à 2 inconnues 2 pas de solution x x 2 solution unique x1 x1 a11x1 a12 x2 b1 a21x1 a22 x2 b2 – 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 X on recopie deux individus on duplique une variable a = y