Main webpage addresses: |
ziade.net ziadeh.net |
Informatique : Pascal (Chap.II) et tous les langages ! LIMITATIONS DES CALCULS NUMERIQUES |
z = z = w = w |
Considérons
une calculette (ou un ordinateur), affichons le nombre 2,
effectuons N fois la racine carrée (de l'affichage),
effectuons ensuite N fois le carré (de l'affichage),
nous obtenons alors un nombre différent de 2 !!! Considérons les maths, prenons le nombre a=2, effectuons N fois la racine carrée, effectuons ensuite N fois le carré, nous obtenons alors évidemment le même nombre a=2 qu'au départ. -
Conclusion:
Considérons une calculette (ou un ordinateur), affichons le nombre 103 (=1000 ou 10^3 ou 1E3), ajoutons lui le nombre 10-3 (=0.001 ou 10^-3 ou 1E-3), le résultat de l'addition est égal à 1000.001 (=1000+0.001). Considérons la même calculette (ou ordinateur), affichons le nombre 1070 (=10^70 ou 1E70), ajoutons lui le nombre 1, le résultat numérique de l'addition est égal à 1070, c.-à-d. 1070+1=1070 !!! Donc la précision ne dépend pas directement du plus petit nombre positif affichable. Si ce nombre est par exemple 10-99 alors ceci ne signifie pas que la précision est 10-99. Considérons les maths, prenons le nombre a=1070, ajoutons lui le nombre b=1, nous obtenons c=a+b avec évidemment c=/=a. Donc mathématiquement: 1070+1 =/= 1070. -
Conclusion: la précision dépend
directement du nombre de chiffres significatifs Seule la précision relative a vraiment une signification pratique (comme en physique).
Considérons
une calculette (ou un ordinateur), affichons le nombre 10-99
(=10^-99 ou 1E-99), divisons le par 10, le résultat
obtenu est égal à 0 (au lieu de 10-100).
Cette erreur s'appelle erreur d'underflow, elle est
rarement (presque jamais!) signalée par la machine. -
Conclusion:
Considérons une calculette (ou un ordinateur), affichons le nombre 1099 (=10^99 ou 1E99), multiplions le par 10, nous obtenons une erreur (au lieu de 10100). Cette erreur s'appelle erreur d'overflow (ou erreur de "dépassement de capacité"), elle est toujours signalée par la machine. - Conclusion: l'erreur "overflow" dépend du plus grand nombre calculable ou affichable.
Considérons une calculette (ou un ordinateur), affichons le nombre 1, divisons le par 0, nous obtenons une erreur (au lieu de +infini ). Cette erreur s'appelle "division par zéro", elle est toujours signalée par la machine.
Nous avons déjà vu ce type d'erreur dans les paragraphes 1 et 2 ci-dessus. Cette erreur est due au fait que la calculatrice ou l'ordinateur utilisent un nombre fini de chiffres significatifs. Tandis que mathématiquement un réel peut avoir un nombre infini de chiffres après la virgule (comme c'est le cas pour le nombre transcendant pi=3,1415926...etc...). Considérons
une calculette (fictive) ayant 7 chiffres significatifs
alors pour cette calculette:
Considérons
une calculette ou un ordinateur, effectuons le calcul - Conclusion: il faut essayer de prevoir les ordres de grandeur des variables.
Souvent en informatique, la différentielle dx est remplacée par dx = pas (ou step en anglais). Mathématiquement: plus ce pas est petit, plus la précision est bonne (théoriquement dx=10-70 est meilleur que 10-3). Mais numériquement: ce pas (dx) est limité par le calcul et par le nombre de chiffres significatifs (pratiquement si nous calculons par exemple [x+dx] avec x=2 et dx=10-70, nous obtiendrons 2 au lieu de 2+10-70). - Attention: le choix du pas dépend à la fois du nombre de chiffres significatifs et du calcul effectué. Dans les
exemples suivants nous supposons que nous avons 7
chiffres significatifs. -
Conclusion:
Considérons,
par exemple, un programme de résolution d'équations du
second degré (ax²+bx+c=0) qui utilise directement le
discriminant D sans considérer le cas particulier où
a=0. Cet exemple (volontairement simple) ne fait qu'évoquer les erreurs dues aux cas particuliers. Pour cette raison, le programmeur doit toujours prévoir tout les cas possibles.
Nous sommes habitués au système décimal (base 10). Mais, quelle que soit la base, le principe est le même. (a) Base
décimale ou base 10 : (b) Base
binaire ou base 2 : (c) Base octale
ou base 8 : (d) Base
hexadécimale ou base 16 : (e) Un bit : (f) Un octet ou
byte : (g) Un
kilo-octet ou kilo : (h) Un
méga-octet ou Méga : (i) Un
giga-octet ou Giga : (j) Un
tera-octet ou Tera : |
ziade.net |
Main
webpage addresses: |
> > > |
< < < |
|||
= |
. |
+ |
. |
= |
> > > |
< < < |
*
Merci de votre visite. Le site Ziadeh.net est mis à jour chaque
mois.
Thank you for your visit. The site Ziade.net is updated every
month.