[03] Verdadeiro ou falso? Justifique.
Num sistema de aritmética de ponto flutuante se satisfaz a propriedade distributiva

Passo 1

O enunciado pergunta se, num sistema de aritmética de ponto flutuante, vale sempre a propriedade distributiva
(a + b)\,c = a\,c + b\,c.
O conteúdo aqui é aritmética de ponto flutuante (formato IEEE ou similar), que introduz arredondamentos a cada operação, o que pode violar identidades algébricas válidas nos reais.

Passo 2

Em ponto flutuante representamos cada número em base \beta, com t dígitos na mantissa e expoente ajustado, e após cada soma, subtração, multiplicação ou divisão aplicamos uma função de arredondamento (por exemplo, “round to nearest”). Esses arredondamentos introduzem erros de unidade de máquina, de modo que nem sempre
\operatorname{fl}(x \oplus y) = x + y,
nem
\operatorname{fl}(x \otimes y) = x\,y,
são exatas no sentido matemático. Consequentemente a distributiva pode falhar:

Passo 3

Mostramos um contraexemplo em ponto flutuante decimal com \beta=10, t=4 dígitos de mantissa e arredondamento para o mais próximo:
Escolhemos
a = 1.000\times 10^4,\quad b = 3.142\times 10^0,\quad c = 3.142\times 10^0.
  1. Calculemos \operatorname{fl}(a+b):
    Alinhando expoentes,
b = 0.0003142\times 10^4,\quad a+b = 1.0003142\times 10^4.
Arredondando a 4 dígitos:
\operatorname{fl}(a+b) = 1.000\times 10^4.
  1. Agora \operatorname{fl}\bigl[(a+b)\times c\bigr]:
\operatorname{fl}(a+b)\times c = (1.000\times 10^4)\times (3.142\times 10^0) = 3.142\times 10^4
(já tem 4 dígitos, sem mais arredondamento).
  1. Por outro lado, façamos a\times c e b\times c separadamente:
a\times c = (1.000\times 10^4)\times (3.142\times 10^0) = 3.142\times 10^4,
b\times c = (3.142\times 10^0)\times (3.142\times 10^0) = 9.869964\times 10^0 \longrightarrow \text{arredonda a }9.870\times 10^0.
Somando e arredondando a 4 dígitos:
\operatorname{fl}(a\,c) + \operatorname{fl}(b\,c) = 3.142000\times 10^4 + 0.0009870\times 10^4 = 3.1429870\times 10^4 \longrightarrow 3.143\times 10^4.
  1. Conclusão do contraexemplo:
\operatorname{fl}\bigl[(a+b)\,c\bigr] = 3.142\times 10^4 \quad\neq\quad \operatorname{fl}(a\,c) + \operatorname{fl}(b\,c) = 3.143\times 10^4.
Logo a distributiva falha.

Resposta

Falso.

Exercícios relacionados