ASI 3 Méthodes numériques pour l’ingénieur Performance des solutions numériques : complexité, erreur, précision et stabilité.
Download
Report
Transcript ASI 3 Méthodes numériques pour l’ingénieur Performance des solutions numériques : complexité, erreur, précision et stabilité.
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 : 14x 2 log3x 9 x 1324 O x3
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
s
x 1 (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... 10n
troncature
arrondi
1 d1 9; 0 d k 9
t ( x) 0, d1d 2 d 3 ...d k 10n
a ( x) t ( x' ) 0, 1 2 3 ... k 10n
avec x' x 5 10n ( k 1)
0, 1 2 3 ... k k 1... 10n
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 10t
x
x-t(x)
10k 1
Exercice : montez que :
x
et
x-a(x)
0,5 10k 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 xi 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 an1
a0 1;
3
n
1
4
1
1
b0 1; b1 ; bn bn1 bn2
3
3
3
3
c0 1; c1 1 ; cn 10 cn1 cn2
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)
a0 a1 xi ... a j xi ... am xi yi
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
a11 x1 a12 x2 b1
a21 x1 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