Un recente compito a casa che ho ricevuto ci chiede di prendere espressioni che potrebbero creare una perdita di precisione quando eseguite sul computer e modificarle in modo da evitare questa perdita.Miglior algoritmo per evitare perdita di precisione?
Sfortunatamente, le istruzioni per farlo non sono state rese molto chiare. Dall'osservare vari esempi che vengono eseguiti, so che ci sono alcuni metodi per farlo: usare la serie di Taylor, usare i coniugati se le radici quadrate sono coinvolte, o trovare un denominatore comune quando si sottraggono due frazioni.
Tuttavia, ho qualche problema a notare esattamente quando si verificherà una perdita di precisione. Finora l'unica cosa che so per certo è che quando si sottraggono due numeri che sono vicini ad essere uguali, si verifica una perdita di precisione poiché le cifre di ordine elevato sono significative e si perdono quelle da arrotondare.
La mia domanda è quali sono alcune altre situazioni comuni che dovrei cercare e quali sono considerati metodi "buoni" per avvicinarli?
Per esempio, qui è un problema:
f(x) = tan(x) − sin(x) when x ~ 0
Qual è l'algoritmo meglio e il peggio per valutare questo fuori di queste tre scelte:
(a) (1/ cos(x) − 1) sin(x),
(b) (x^3)/2
(c) tan(x)*(sin(x)^2)/(cos(x) + 1).
Capisco che quando x è vicino a zero, tan (x) e sin (x) sono quasi la stessa cosa. Non capisco come o perché uno di questi algoritmi sia migliore o peggiore per risolvere il problema.