Seja um sistema de aritmética de ponto flutuante de quatro dígitos, base decimal e com acumulador de precisão dupla. Dados os números: x=0.3979 \times 10^{2}, y= 0.1511 \times 10^{-3} e z=0.1234 \times 10^{1}, calcule (x-y) \div z e obtenha o limitante superior do erro relativo referente a este cálculo. Considere que x, y e z não são exatamente representados.

Passo 1

O enunciado pede duas coisas bem claras:
  • Calcular em aritmética de ponto flutuante de quatro dígitos (base decimal, com acumulador de precisão dupla) o valor de \displaystyle (x-y)\div z usando os números fornecidos.
  • Encontrar um limitante superior para o erro relativo desse cálculo, considerando que x, y e z não são representados exatamente na máquina (isto é, sofrem arredondamento ao serem armazenados).
Informações dadas (peguei estes valores do enunciado):
  • \displaystyle x = 0{,}3979\times10^{2} (ou seja \;x=39{,}79)
  • \displaystyle y = 0{,}1511\times10^{-3} (ou seja \;y=0{,}0001511)
  • \displaystyle z = 0{,}1234\times10^{1} (ou seja \;z=1{,}234)
  • A mantissa tem p=4 dígitos (base b=10).
  • Há um acumulador de precisão dupla (isso significa que a subtração pode ser feita com maior precisão evitando arredondamento imediato; eu vou explicar como isso entra no cálculo do erro).

Passo 2

Primeira lição rápida: como modelamos o arredondamento em ponto flutuante.
  • Em uma máquina com p dígitos decimais e arredondamento para o mais próximo, o erro relativo na representação de qualquer número é limitado por
u=\frac{1}{2}b^{1-p}.
Aqui b=10 e p=4. Calculando:
u=\frac{1}{2}\,10^{\,1-4}=\frac{1}{2}\,10^{-3}=5\times10^{-4}.
  • Modelo habitual: se \widehat{x} é a representação de x na máquina, então existe \varepsilon_x com |\varepsilon_x|\le u tal que
\widehat{x}=x(1+\varepsilon_x).
Mesma coisa para \widehat{y} e \widehat{z}.
Comentário sobre acumulador de precisão dupla:
  • A subtração x-y será feita em acumulador de precisão dupla (mantissa com 2p=8 dígitos). Isso reduz muito o erro de arredondamento nessa operação intermédia; portanto podemos considerar que a subtração entre os valores já armazenados \widehat{x}-\widehat{y} não introduz um erro de arredondamento relevante (ou seja, o erro de arredondamento dessa etapa é da ordem do u correspondente a p'=8, que é desprezível comparado a u de p=4). O arredondamento que interessa ao final é o da operação inteira (na forma final que a máquina dá), que será novamente com p=4. Vou usar esse fato para simplificar a estimativa do limitante superior.

Passo 3

Escrevendo algebraicamente o que a máquina de fato calcula.
  • Seja r o resultado exato desejado:
r=\frac{x-y}{z}.
  • A máquina armazena \widehat{x}=x(1+\varepsilon_x), \widehat{y}=y(1+\varepsilon_y), \widehat{z}=z(1+\varepsilon_z), com |\varepsilon_x|,|\varepsilon_y|,|\varepsilon_z|\le u.
  • A subtração é feita em dupla precisão sem arredondamento relevante, então tomamos
t=\widehat{x}-\widehat{y}=x(1+\varepsilon_x)-y(1+\varepsilon_y).
  • A divisão é feita por \widehat{z} e o resultado final é arredondado a p=4 dígitos; assim o valor final computado pela máquina pode ser representado como
\widehat{r}=\Big(\frac{t}{\widehat{z}}\Big)(1+\varepsilon_{\rm op}), \qquad |\varepsilon_{\rm op}|\le u,
onde \varepsilon_{\rm op} representa o arredondamento final da operação de divisão (ou do armazenamento do resultado).

Passo 4

Derivando um limitante para o erro relativo (passo a passo, sem pular etapas).
Começamos por escrever \dfrac{t}{\widehat{z}} em termos de r:
\frac{t}{\widehat{z}} =\frac{x(1+\varepsilon_x)-y(1+\varepsilon_y)}{z(1+\varepsilon_z)} =\frac{x-y}{z}\cdot\frac{1+\dfrac{x\varepsilon_x-y\varepsilon_y}{x-y}}{1+\varepsilon_z}.
Logo (usando r=(x-y)/z):
\frac{t}{\widehat{z}}=r\cdot\Big(1+\frac{x\varepsilon_x-y\varepsilon_y}{x-y}\Big)\cdot(1+\varepsilon_z)^{-1}.
Multiplicando pelo fator de arredondamento final (1+\varepsilon_{\rm op}) obtemos
\widehat{r}=r\cdot\Big(1+\frac{x\varepsilon_x-y\varepsilon_y}{x-y}\Big)\cdot(1+\varepsilon_z)^{-1}\cdot(1+\varepsilon_{\rm op}).
Agora queremos um limitante para o erro relativo \dfrac{|\widehat{r}-r|}{|r|}. É conveniente linearizar (primeira ordem) porque todos os \varepsilon são pequenos ( |\varepsilon|\le u\ll1). Usando a aproximação de primeira ordem (1+\alpha)^{-1}\approx 1-\alpha e desprezando termos de ordem \varepsilon^2, temos
\frac{\widehat{r}-r}{r}\approx \frac{x\varepsilon_x-y\varepsilon_y}{x-y}-\varepsilon_z+\varepsilon_{\rm op}.
Tomando módulo e usando desigualdade triangular:
\left|\frac{\widehat{r}-r}{r}\right| \le \left|\frac{x\varepsilon_x-y\varepsilon_y}{x-y}\right|+|\varepsilon_z|+|\varepsilon_{\rm op}|.
Agora aplicamos |\varepsilon_x|,|\varepsilon_y|,|\varepsilon_z|,|\varepsilon_{\rm op}|\le u:
\left|\frac{\widehat{r}-r}{r}\right| \le \frac{|x|\,|\varepsilon_x|+|y|\,|\varepsilon_y|}{|x-y|}+u+u \le u\cdot\frac{|x|+|y|}{|x-y|}+2u.
Portanto um limitante superior simples e útil é
\boxed{\;\left|\frac{\widehat{r}-r}{r}\right|\le u\Big(\frac{|x|+|y|}{|x-y|}+2\Big).\;}

Passo 5

Agora aplicamos a fórmula numérica com os valores dados.
  • Primeiro repetindo os valores:
x=39{,}79,\qquad y=0{,}0001511,\qquad z=1{,}234.
  • Calculamos x-y:
x-y=39{,}79-0{,}0001511=39{,}7898489.
  • Calculamos |x|+|y|=39{,}79+0{,}0001511=39{,}7901511.
  • A razão:
\frac{|x|+|y|}{|x-y|} =\frac{39{,}7901511}{39{,}7898489}\approx 1{,}0000076.
  • Lembrando u=5\times10^{-4}, substituímos na fórmula:
\left|\frac{\widehat{r}-r}{r}\right| \le 5\times10^{-4}\big(1{,}0000076+2\big) =5\times10^{-4}\cdot 3{,}0000076.
  • Isso dá numericamente
\left|\frac{\widehat{r}-r}{r}\right|\le 1{,}5000038\times10^{-3}\approx 1{,}500004\times10^{-3}.
Assim um limitante superior para o erro relativo é aproximadamente \;1{,}500004\times10^{-3} (ou, arredondando razoavelmente, 1{,}5\times10^{-3}).

Passo 6

Vamos também mostrar o valor que a máquina efetivamente retorna quando fazemos as contas com as regras de arredondamento de quatro dígitos (isso ajuda a entender o sentido do limitante).
  • As representações dadas já têm quatro dígitos, então \widehat{x}=0{,}3979\times10^{2}, \widehat{y}=0{,}1511\times10^{-3}, \widehat{z}=0{,}1234\times10^{1}.
  • Subtração em dupla precisão (sem arredondamento relevante):
t=\widehat{x}-\widehat{y}=39{,}79-0{,}0001511=39{,}7898489.
  • Dividindo por \widehat{z}=1{,}234 (fazendo a divisão com precisão suficiente) obtemos
\frac{t}{\widehat{z}}\approx 32{,}24461013\ldots
  • Agora arredondamos o resultado para quatro dígitos de mantissa (normalização decimal). Em forma normalizada essa quantidade é 0{,}3224461013\times10^{2}. Com quatro dígitos o mantissa fica 0{,}3224 (o quinto dígito é 4, então arredonda para baixo), logo a máquina entrega
\widehat{r}=0{,}3224\times10^{2}=32{,}24.
  • O valor exato r (sem considerar arredondamentos de armazenamento) é aproximadamente r\approx32{,}24461013. A diferença absoluta é 32{,}24461013-32{,}24=0{,}00461013 e o erro relativo observado é
\frac{|\widehat{r}-r|}{|r|}\approx\frac{0{,}00461013}{32{,}24461013}\approx1{,}43\times10^{-4},
que é bem menor que o limitante teórico 1{,}500004\times10^{-3} obtido acima (isso é normal: o limitante é conservador).

Resposta

\widehat{r}=\mathrm{fl}\!\left(\dfrac{x-y}{z}\right)=0{,}3224\times10^{2}=32{,}24
\displaystyle \left|\dfrac{\widehat{r}-r}{r}\right| \le 1{,}500004\times10^{-3}

Exercícios relacionados