Livre_silo 30 août 2013 16:32 Page 178
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
178
Informatique pour tous
Avec des flottants, il n’ en va pas de même, comme on l’a vu au chapitre 2.
Exercice 7.4 Que vaut 12
( 1
3
−
1
4
)
− 1 ? Et qu’en pense Python ?
In [1]: 12*(1./3-1./4)-1
Out[1]: -2.220446049250313e-16
En pratique :
• Les calculs approchés peuvent faire apparaître des termes petits, mais non nuls... censés
pourtant représenter le réel nul. Ceci va transformer en système de Cramer des systèmes
qui n’ en étaient pas, ou conduire (même pour un système de Cramer) à prendre comme
pivot une quantité très faible issue de l’accumulation d’approximations. Même pour un
système de Cramer, le résultat annoncé n’aura alors plus aucun sens ³.
• Ces termes infinitésimaux risquent en outre d’être utilisés comme pivots : on prendra
leur inverse, ce qui produira de grands flottants, eux-mêmes évidemment sans signification.
• A contrario, on peut voir apparaître des coefficients nuls, alors que les objets mathématiques qu’ils représentent ne le sont pas.
Ainsi, le système suivant n’a pas de solution :
x + 1/4y + z
= 0
x + 1/3y + 2z = 0
y
+ 12z = 1
Pourtant, sa résolution numérique fournira un résultat, présenté à tort comme une solution. De même, la matrice
1 1/4 1
1 1/3 2
0 1
12
est de rang 2, mais son calcul numérique par
pivot risque de donner 3 comme résultat :
In [2]: resolution([[1,1./4,1],[1,1./3,2],[0,1,12]],[[0],[0],[1]])
Out[2]: [-750599937895082.8, 4503599627370496.0, -375299968947541.25]
Inversement, le système suivant, lui, est de Cramer :
x + (10
15 + 1)y + z = 1
x + (1 + 10
−15 )y + 2z = 0
10
15 y
+ z = 0
3. La méthode du pivot partiel permettra néanmoins de pallier ce problème.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
178
Informatique pour tous
Avec des flottants, il n’ en va pas de même, comme on l’a vu au chapitre 2.
Exercice 7.4 Que vaut 12
( 1
3
−
1
4
)
− 1 ? Et qu’en pense Python ?
In [1]: 12*(1./3-1./4)-1
Out[1]: -2.220446049250313e-16
En pratique :
• Les calculs approchés peuvent faire apparaître des termes petits, mais non nuls... censés
pourtant représenter le réel nul. Ceci va transformer en système de Cramer des systèmes
qui n’ en étaient pas, ou conduire (même pour un système de Cramer) à prendre comme
pivot une quantité très faible issue de l’accumulation d’approximations. Même pour un
système de Cramer, le résultat annoncé n’aura alors plus aucun sens ³.
• Ces termes infinitésimaux risquent en outre d’être utilisés comme pivots : on prendra
leur inverse, ce qui produira de grands flottants, eux-mêmes évidemment sans signification.
• A contrario, on peut voir apparaître des coefficients nuls, alors que les objets mathématiques qu’ils représentent ne le sont pas.
Ainsi, le système suivant n’a pas de solution :
x + 1/4y + z
= 0
x + 1/3y + 2z = 0
y
+ 12z = 1
Pourtant, sa résolution numérique fournira un résultat, présenté à tort comme une solution. De même, la matrice
1 1/4 1
1 1/3 2
0 1
12
est de rang 2, mais son calcul numérique par
pivot risque de donner 3 comme résultat :
In [2]: resolution([[1,1./4,1],[1,1./3,2],[0,1,12]],[[0],[0],[1]])
Out[2]: [-750599937895082.8, 4503599627370496.0, -375299968947541.25]
Inversement, le système suivant, lui, est de Cramer :
x + (10
15 + 1)y + z = 1
x + (1 + 10
−15 )y + 2z = 0
10
15 y
+ z = 0
3. La méthode du pivot partiel permettra néanmoins de pallier ce problème.
