Perda de cifras significativas

Cando comparamos o resultado de operar dous números reais, x\odot y, coa mesma operación feita nun ordenador, estanse a facer dúas aproximacións:

  1. os números reais x e y cambiánse por fl(x) e fl(y);
  2. como o resultado de fl(x)\odot fl(y) non é sempre un número máquina, realmente se garda fl(fl(x)\odot fl(y)).

As dúas aproximacións consisten, básicamente, en desbotar as cifras decimais significativas de menor peso. Pero na resta de números semellantes, as cifras decimais de maior peso cancélanse, polo que a importancia das que foron desbotadas aumenta.

Imaxinemos que traballamos con 16 cifras decimais significativas e

  • pretendemos restar os números reais x=0.1\overset{(15}{\ldots}114999\ldots e y=0.1\overset{(15}{\ldots}10000\ldots
  • a resta exacta é x-y=0.0\overset{(15}{\ldots}014999\ldots = 0.15e-15
  • os números máquina máis próximos son fl(x)=0.1\overset{(15}{\ldots}11 e fl(y)=0.1\overset{(15}{\ldots}10
  • a súa resta tamén é un número máquina fl(x)-fl(y)=0.0\overset{(15}{\ldots}01 = 0.1e-15

O erro relativo cometido nunha sóa operación é extraordinario:

\left|\displaystyle \frac{(x-y) -fl(fl(x)- fl(y))}{x- y}\right|= 33\%.

Outro exemplo é o cálculo nun ordenador da función y=\sqrt{x^2+1}-1, que implica unha perda de cifras significativas cando x é próximo a 0. Pódese evitar este problema reescribíndoa na forma

\displaystyle y= (\sqrt{x^2+1}-1)\frac{\sqrt{x^2+1}+1}{\sqrt{x^2+1}+1} = \frac{x^2}{\sqrt{x^2+1}+1},.

Debuxamos en Sage o erro relativo en tanto por 1 entre ambas fórmulas, para distintos valores de x:

f(x) = sqrt(x^2+1)-1
g(x) = x^2/(sqrt(x^2+1)+1);
plot(abs(f-g)/abs(g),2e-8, 5e-8)

Aínda que as dúas fórmulas son matemáticamente idénticas, na gráfica anterior podemos ver que a súa avaliación nun ordenador pode dar diferenzas relativas dun 40%.

Por último, vexamos o caso da función \displaystyle y=(x-1)^7.  Se desenvolvemos a potencia sétima, obtemos

y = x^7-7x^6+21x^5-35x^4+35x^3-21x^2+7x-1,

que presenta perda de cifras significativas para x próximo a 1. A forma da gráfica, no intervalo centrado en 1 e radio 2e-8, pode diferir grandemente dependendo da expresión escollida:

x7a

Como xa comentamos, toda operación nun ordenador conleva un erro. Na seguinte entrada falaremos dos algoritmos estables e da súa importancia para evitar a transmisión destes erros de cálculo.

Advertisements
Esta entrada foi publicada en Cálculo numérico. Ligazón permanente.

One Response to Perda de cifras significativas

  1. Pingback: Os números máquina | fundmat

Deixar unha resposta

introduce os teu datos ou preme nunha das iconas:

Logotipo de WordPress.com

Estás a comentar desde a túa conta de WordPress.com. Sair / Cambiar )

Twitter picture

Estás a comentar desde a túa conta de Twitter. Sair / Cambiar )

Facebook photo

Estás a comentar desde a túa conta de Facebook. Sair / Cambiar )

Google+ photo

Estás a comentar desde a túa conta de Google+. Sair / Cambiar )

Conectando a %s