Ambas funciones (idénticas) tienen la serie de Taylor en 0
$$f(x) = \frac{1}{2}x^2-\frac{1}{8}x^4+O(x^6)$$
Imagina lo que ocurre, si quieres calcular $f(x)$ para $x^2 < \frac{1}{2}\epsilon$ , donde $\epsilon$ es el épsilon de la máquina para su aritmética de punto flotante (es decir $1+\epsilon \approx 1$ ) y $\approx$ denota el resultado de las operaciones en coma flotante:
Usted obtiene $$f(x) = \sqrt{x^2+1}-1 \approx \sqrt{1}-1 \approx 0$$ y para $$g(x) = \frac{x^2}{\sqrt{x^2+1}+1} \approx \frac{x^2}{\sqrt{1}+1} \approx \frac{x^2}{2}$$ es decir, recuperamos el término principal de la serie de Taylor.
Para resumir: $f(x)$ sufre de redondeo y cancelación (alias pérdida de importancia ) y es inútil para los argumentos pequeños, $g(x)$ se redondea también pero no hay cancelación y dará un resultado fiel cercano a cero.
Actualización: He aquí algunas cifras reales. Primero para $f(x)$ con $t=\sqrt{x^2+1}, y=t-1$
x= 0.001000000000000 t= 1.000000499999880 y= 4.99999875058777E-007
x= 0.000100000000000 t= 1.000000005000000 y= 4.99999996961265E-009
x= 0.000010000000000 t= 1.000000000050000 y= 5.00000041370186E-011
x= 0.000001000000000 t= 1.000000000000500 y= 5.00044450291171E-013
x= 0.000000100000000 t= 1.000000000000000 y= 4.88498130835069E-015
x= 0.000000010000000 t= 1.000000000000000 y= 0.00000000000000E+000
x= 0.000000001000000 t= 1.000000000000000 y= 0.00000000000000E+000
x= 0.000000000100000 t= 1.000000000000000 y= 0.00000000000000E+000
se puede ver que si $x$ se hace pequeño, el $t$ se acercan a 1 y para $x \le 0.00000001$ la diferencia en coma flotante $t-1$ es cero (todos los dígitos significativos se pierden).
Para $g(x)$ con $d=\sqrt{x^2+1}+1, y=x^2/d$ parece que
x= 0.000100000000000 d= 2.000000005000000 y= 4.99999998750000E-009
x= 0.000010000000000 d= 2.000000000050000 y= 4.99999999987500E-011
x= 0.000001000000000 d= 2.000000000000500 y= 4.99999999999875E-013
x= 0.000000100000000 d= 2.000000000000000 y= 4.99999999999999E-015
x= 0.000000010000000 d= 2.000000000000000 y= 5.00000000000000E-017
x= 0.000000001000000 d= 2.000000000000000 y= 5.00000000000000E-019
x= 0.000000000100000 d= 2.000000000000000 y= 5.00000000000000E-021
Aquí el $d$ se redondea a 2 para $x \le 0.00000001$ pero en este caso no se pierden dígitos significativos ( $d\approx 2$ con muy buena precisión).
0 votos
Tal vez estudiando el número de condición de cada función básica que hay que componer para conseguir $f$ y los de $g$ . Pero eso parece mucho trabajo