Arithmétique des ordinateurs
Pour x très grand, le calcul de √(x + 1) − √x en virgule flottante subit une annulation catastrophique. Quelle réécriture permet d'obtenir un résultat précis ?
- ACalculer 1 ÷ (√(x + 1) + √x)
- BCalculer √(x + 1 − x)
- CConvertir √(x + 1) et √x en double précision puis soustraire avec la même expression
Afficher la réponse et l'explication
Réponse : A. Calculer 1 ÷ (√(x + 1) + √x)
√(x + 1) et √x étant presque égaux, leur soustraction directe annule les chiffres de tête. En multipliant numérateur et dénominateur par √(x + 1) + √x, on obtient (x + 1 − x) ÷ (√(x + 1) + √x) = 1 ÷ (√(x + 1) + √x), qui supprime la soustraction de nombres voisins et se calcule précisément. √(x + 1 − x) vaut 1 et constitue une expression fausse. La double précision améliore la situation, mais le même problème réapparaît pour x encore plus grand ; ce n'est pas un remède de fond.
Continuer : 9 autres questions sur Arithmétique des ordinateurs