Aucun titre de diapositive

publicité
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 log3x   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...1017
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...1017
Représentation des nombres
x   1s  (1  m)  B e E
 (1  m)  2e64
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
n2
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
Téléchargement