Sunteți pe pagina 1din 15

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
Temps de calcul
• Taille d’un problème : n
• Temps de calcul : temps de calcul = O ( f (n) )
– aspects liés au programme et à la machine
– aspects liés au problème ucl
acl
– Complexité d’un algorithme de
ps
m
• Complexité d’un problème et
)):

min f (A )
n( Algorithme 1
T( Algorithme 2
g
A ol
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(3 x ) + 9 x + 1324 = O x 3
Fusionner(x,y) O(n)
Exemples
n = taille(x)+taille(y)
pour i=1:n
….
Ab=c v(i) = …..
O(n2) …..
pour i=1:n fin
s = 0;
pour j=i:n Résoudre(P(n))
s =s+A(i,j)*b(i)
Fin Si n = 1 ,...c’est fini
c(i)=s Sinon
fin A=Résoudre(P(1:n/2))
B=Résoudre(P(n/2+1:n))
Fusionner(A,B)
O(nlog2n)
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
Un calcul simple
n = 100000; 1
≈ 0,33333333333333
s = 0; 3
erreur = .3333333...10 −17
for i=1:n
s = s+1/3; Représentation des nombres
end x ≈ s × m × B e− E = ± m × 2e
32 bits = 1 signe + 8 exposant + 23 mantisse
» s-n/3
Précision :
ans = -4.3576e-008
? log([eps realmax realmin])
-36.0437 709.7827 -708.3964

Maths de la continuité
maths calculables
Erreur de codage (binaire)
n = 100000; 1
≈ 0,33333333333333
s = 0; 3
erreur = .3333333...10 −17
for i=1:n
s = s+1/3; Représentation des nombres
end x ≈ (− 1)s × (1 + m) × B e− E
= ± (1 + m) × 2e−64
» s-n/3
32 bits = 1 signe + 8 exposant + 23 mantisse
ans = -4.3576e-008 Précision :
log([eps realmax realmin])
-36.0437 709.7827 -708.3964
eps n’est pas realmin 64 bits = 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 1 ≤ d1 ≤ 9; 0 ≤ d k ≤ 9
troncature t ( x) = 0, d1d 2 d 3 ...d k × 10 n
arrondi 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 significatives
si k est le plus grand entier positif tel que :
x-~x
< 5 ×10 −t
x
x-t(x) x-a(x)
Exercice : montez que : < 10 −k +1 et < 0,5 × 10 −k +1
x 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)
x x 2 x3
2! 3!
xi
e ≈ 1 + x + + + ... + + O x i +1
i!
( ) (ou tabulation)

• propagation des erreurs


p = pˆ + ε p pq − pˆ qˆ = qε p + pε q + ε pε q
q = qˆ + ε q pq − pˆ q ε p ε q
R pq = ≈ +
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
a0 = 1; an = an −1
3
 1  ≈ b = 1; b = 1 ; b = 4 b − 1 b
n
   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

a +
 0 1 2 a x (1)
+ ... + a x
j 2
( j)
+ ... + a x
m 2
(m)
= y2
 


a +
 0 1 i a x (1)
+ ... + a x
j i
( j)
+ ... + a x
m i
( m)
= yi
 
Une nouvelle 
 a0 + a1 xn(1) + ... + a j xn( j ) + ... + am xn( m ) = yn
expérience
(individu)
n équations et m+1 inconnues
Xa=y
Illustration : système de 2
équations à 2 inconnues
s olution unique pas de s olution

2 2
x x

x1 x1

– une solution unique


 a11 x1 + a12 x2 = b1 – pas de solution

a21 x1 + a22 x2 = b2 – 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
a
• on dispose d’une nouvelle variable
• m=n
• m<n
• m>m X = y
• on recopie deux individus
• on duplique une variable

S-ar putea să vă placă și