Computerarithmetiek
Als x zeer groot is, treedt bij de berekening van √(x + 1) − √x in drijvende komma cancellation op. Welke herschrijving levert het resultaat nauwkeurig op?
- ABerekenen als 1 ÷ (√(x + 1) + √x)
- BBerekenen als √(x + 1 − x)
- C√(x + 1) en √x eerst elk naar dubbele precisie omzetten en dan met dezelfde formule aftrekken
Antwoord en toelichting tonen
Antwoord: A. Berekenen als 1 ÷ (√(x + 1) + √x)
√(x + 1) en √x zijn bijna gelijk, dus bij rechtstreeks aftrekken heffen de hoogste cijfers elkaar op. Vermenigvuldigt men teller en noemer met √(x + 1) + √x, dan geldt (x + 1 − x) ÷ (√(x + 1) + √x) = 1 ÷ (√(x + 1) + √x); het aftrekken van bijna gelijke getallen verdwijnt en de berekening wordt nauwkeurig. √(x + 1 − x) is 1 en dus als formule onjuist. Overstappen op dubbele precisie verbetert de situatie, maar bij nog grotere x treedt hetzelfde probleem op, zodat het geen fundamentele oplossing is.