Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
1 Introdução 2
5 Algarismos Significativos 10
6 Análise de Erros 11
6.1 Erros Absolutos e Relativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.2 Erros de Cancelamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6.3 Erros de Arredondamento e Truncamento em um Sistema Ponto Flutuante . . . 13
6.4 Propagação dos Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Considerações Finais 17
Referências 17
1
1 Introdução
Na solução de problemas através de métodos numéricos, após as fases de definição, mode-
lagem, escolha e implementação, verifica-se algumas vezes que os resultados obtidos não apre-
sentam valores dentro de uma faixa esperada. Dentre outros fatores, os resultados dependem
da precisão dos dados de entrada, da forma como estes dados são representados no computador
e das operações numéricas efetuadas. Os dados de entrada apresentam imprecisões devido a,
por exemplo, falhas no processo de medição e na aquisição destes dados. Para a disciplina
de Cálculo Numérico, serão objeto de estudo os erros devido a modelagem e implementação
dos métodos numéricos e neste capı́tulo, em especial, dos erros causados pela representação e
operações envolvendo números no computador.
As informações contidas neste documento são notas de aula retiradas dos livros citados na
seção Referências [1, 2, 3].
2
Exemplo:
(36, 189)10 = 3 ∗ 101 + 6 ∗ 100 + 1 ∗ 10−1 + 8 ∗ 10−2 + 9 ∗ 10−3
(10, 11)2 = 1 ∗ 21 + 0 ∗ 20 + 1 ∗ 2−1 + 1 ∗ 2−2
(21, 03)4 = 2 ∗ 41 + 1 ∗ 40 + 0 ∗ 4−1 + 3 ∗ 4−2
40 2
0 20 2
0 10 2
0 5 2
1 2 2
0 1
-
3
Ao término da divisão, temos o número na base binária partindo do último quociente e
posteriormente os restos das divisões da parte inferior para a superior. Desta forma, o resultado
da transformação anterior é:
(40)10 = (101000)2
Para transformar números decimais com dı́gitos após a vı́rgula em números na base binária
devemos proceder de duas maneiras. A parte inteira deste número deve ser transformada como
citado anteriormente, através da aplicação de divisões sucessivas. Para transformar os dı́gitos
decimais a direita da vı́rgula para binário, deve-se multiplicá-los por 2. Do resultado, considera-
se a parte a esquerda da vı́rgula como resultado parcial da transformação e deve-se proceder
o processo de multiplicação da parte fracionária até que seja obtido o valor 0 após a vı́rgula,
ou até verificar que o número não pode ser armazenado de maneira exata. Seja o exemplo
de transformar o número (40, 1875)10 para binário. A transformação da parte inteira já foi
calculada, vejamos agora o cálculo da parte fracionária:
4
Nesta notação, o espaço reservado para armazenamento é dividido em três partes: o sinal do
número, a parte fracionária também chamada de mantissa e uma área para armazenar o expo-
ente. Como o espaço de armazenamento é limitado, não é possı́vel armazenar todos os números
reais e sim intervalos discretos. Quanto maior for o espaço disponı́vel para armazenamento,
ou seja, o tamanho da Palavra, maior será a faixa e a precisão dos números armazenados.
Os computadores atuais utilizam base binária com tamanho de palavra de 32 bits ou 64 bits.
Baseado no padrão IEEE754 que define a representação com tamanho de palavra de 32 bits,
chamado de precisão simples, e com palavra de 64 bits chamado de precisão dupla, a divisão
do tamanho da palavra é assim definido:
Precisão Simples: 32 bits ou 4 bytes
• 8 bits são utilizados para armazenar um número inteiro que é o expoente da base;
• 11 bits são utilizados para armazenar um número inteiro que é o expoente da base;
m = ±, d1 d2 d3 ...dt ∗ β e
Onde:
di0 s : dı́gitos da parte fracionária, d1 6= 0, 0 ≤ di ≤ β − 1
β: base (em geral 2, 10 ou 16),
t: número de dı́gitos na mantissa.
e: expoente inteiro.
Utilizando a forma de representação normalizada, o primeiro dı́gito d1 será sempre diferente
de zero.
5
subconjunto dos números reais. Vejamos os números representáveis em um dado sistema F.
Exemplo: Seja F(2,3,-1,2), quais os números na base decimal representáveis neste sistema?
A base utilizada é a binária, então, os dı́gitos da mantissa poderão ser 0 ou 1, sendo que na
forma normalizada o primeiro dı́gito da mantissa será obrigatoriamente 1.
Para a mantissa poderemos ter as seguintes variações: 0,100; 0,101; 0,110 e 0,111
Para o expoente, poderemos ter números variando de 2−1 até 22 .
Assim, os números representáveis nesses sistema são:
Vemos que para o sistema F(2,3,-1,2) podemos representar 33 números e que não há números
representáveis entre, por exemplo, [1; 1,25] ou entre [3.0; 3.5]. Uma forma de determinar a
quantidade de números representáveis é fazer a seguinte análise. Neste sistema temos três
6
dı́gitos na mantissa sendo que o primeiro dı́gito é obrigatoriamente 1, para os outros dois
dı́gitos temos 2 possibilidades para d2 e 2 possibilidades para d3 . Para o expoente temos 4
possibilidades ([-1,2]). Temos então 2 * 2 * 4 possibilidades o que implica em 16 números.
Como o zero é representável em qualquer sistema e também temos os números negativos, o
total de números representáveis será: 2 * 16 + 1 = 33 números.
Podemos também fazer uso da seguinte fórmula para calcular o total de números em um
sistema:
N = 2 ∗ (β − 1) ∗ β t−1 ∗ (M − m + 1) + 1
Onde: N = quantidade de números representáveis em F;
A primeira multiplicação por 2 se deve a possibilidade de representar números positivos e
negativos;
O acréscimo de 1 no final é devido a representação do número 0 (zero)
Com relação a representação dos números na notação de ponto flutuante, quanto maior o
número de dı́gitos utilizados na mantissa, maior será a precisão dos números representáveis e
menor será o intervalo entre dois números pertencentes a este sistema. Para o expoente, quanto
maior o número de bits disponı́veis nesta representação maior será os limites dos números.
Atenção: Em nosso estudo, alguns detalhes sobre a representação dos números definidos
pelo padrão IEEE 754 não estão sendo considerados. Alguns destes pontos são: a forma de
armazenar o expoente de um número considerando o sinal e considerar que o primeiro dı́gito
dos números normalizados (1), não precisa ser armazenado.
7
Figura 1: Região de Underflow e Overflow
Observe que entre os dois valores de x, não existe nenhum número que possa ser representado
no sistema e que a função muda de sinal nos extremos deste intervalo. Assim, esta máquina
não possui o número x tal que f (x) = 0 e obtemos apenas um valor aproximado para o x.
Realizados em um computador, os cálculos das expressões a seguir não resultam em zero,
você saberia descrever a razão? (resposta ≈ 0, 1 ∗ 10−15 )
1) 1 − 3 ∗ (4/3 − 3)
2) sen(pi)
Importante: Dois aspectos devem ser destacados nesse momento:
• A restrição dos bits disponı́veis para representar o expoente, limitam a magnitude dos
números representáveis.
8
Lembrete: Para realizar operações de adição ou subtração, os números devem ser multipli-
cados por potências de mesmo expoente.
Como exemplo, seja o sistema F(10,3,-5,5), vejamos o que ocorre nas seguintes operações:
a) (11, 4 + 3, 18) + 5, 05
Temos que:
(0, 114 ∗ 102 + 0, 0318 ∗ 102 ) + 0, 0505 ∗ 102
0, 146 ∗ 102 + 0, 0505 ∗ 102 = 0, 197 ∗ 102
c) 3, 18 ∗ (5, 05 + 11, 4)
Temos que:
0, 318 ∗ 101 ∗ (0, 0505 ∗ 102 + 0, 114 ∗ 102 )
0, 318 ∗ 101 ∗ 0, 165 ∗ 102 = 0, 525 ∗ 102
d)3, 18 ∗ 5, 05 + 3, 18 ∗ 11, 4
Temos que:
0, 318 ∗ 101 ∗, 505 ∗ 101 + 0, 318 ∗ 101 ∗ 0, 114 ∗ 102
0, 161 ∗ 102 + 0, 363 ∗ 102 = 0, 524 ∗ 102
O resultado das expressões a) e b), e das expressões c) e d) deveriam ser iguais mas, devido
o arredondamento após cada operação, apresentaram diferenças.
2. Compare o expoente dos dois números. Se forem diferentes, desloque o número com
menor expoente à direita até que seu expoente se iguale ao maior número.
3. Some/subtraia as mantissas.
9
7. Se não, arredonde ou faça o truncamento da mantissa para o número de bits corretos.
9. Se Sim. Fim
3. Multiplique/divida as mantissas.
10. sim, faça o sinal do produto positivo se ambos os sinais dos operandos originais são os
mesmos, caso contrário, sinal é negativo, Fim
5 Algarismos Significativos
Os Algarismos Significativos de um número são aqueles que podem ser usados com confiança
[1] e que correspondem ao número de algarismo corretos mais um algarismo estimado. Por
exemplo, seja o velocı́metro analógico de um carro que tem traços marcando os Km. Qual seria
a leitura de velocidade se o ponteiro estivesse entre os traços que representam 61 Km/h e 62
Km/h? Dependendo da posição do ponteiro entre os dois traços, uma pessoa poderia informar
que a velocidade é 61,7 Km/h e outra 61,8 Km/h. Nesta leitura terı́amos três algarismos
significativos. Convenciona-se tomar o algarismo estimado como a metade da menor divisão
da escala do aparelho utilizado. Portanto, a leitura da velocidade segundo esta convenção seria
61,5 Km/h. Para as definições de cálculo numérico, seja β a base de um sistema de números de
ponto flutuante. Dı́gitos Significativos de um número x são todos os algarismos de 0 a β − 1,
desde que x esteja representado na forma normalizada.
Algumas definições sobre algarismos significativos:
10
• Os algarismos significativos de um número são os dı́gitos diferentes de zero, contados a
partir da esquerda até o último dı́gito diferente de zero à direita, caso não haja vı́rgula,
ou até o último dı́gito, zero ou não, caso haja uma vı́rgula decimal. Ex.: 3, 2 ∗ 103 e
3, 200 ∗ 103 tem 2 e 4 algarismos significativos, respectivamente.
• Os zeros entre dı́gitos diferentes de zero são significativos. Ex: 303 e 1, 03 possuem 3
algarismos significativos.
• Se existir uma vı́rgula, todos os zeros à direita da vı́rgula decimal são significativos. Ex:
1, 000 e 33, 30 possuem 4 algarismos significativos.
6 Análise de Erros
O objetivo desta seção é descrever métodos que permitam reduzir ou determinar limites
para os erros numéricos. Nenhum resultado cientı́fico tem valor prático se não houver um
controle sobre os erros envolvidos. A análise dos erros é parte fundamental de um processo de
modelagem.
11
O erro relativo leva em consideração as dimensões dos valores em análise e pode ser calculado
através da expressão: ERx = EA x
x = x
x−x
Exemplo: Sejam x = 100, x = 100, 1, y = 0, 004, x = 0, 006. Qual número é representado
com maior precisão pela sua aproximação?
Para determinar a resposta é necessário calcular os erros relativos de x e y.
ERx = 100100,− 100, 1 = 0, 999 ∗ 10−3
1
√ √
9876 − 9875 = 0, 9937806599 ∗ 102 − 0, 9937303457 ∗ 102 = 0, 0000503142 ∗ 102
√ √
Normalizando o resultado temos que: 9876 − 9875 = 0, 5031420000 ∗ 10− 2.
Na prática, os quatro zeros no final do número não têm significado e perde-se quatro dı́gitos
de precisão na mantissa. O erro de cancelamento pode ser contornado utilizando manipulações
algébricas de forma a evitar a subtração destes números. Podemos reescrever a diferença desta
forma:
√ √
x − y = √x − √ y
x+ y
√ √ 1√
9876 − 9875 = √ = 0, 5031418679 ∗ 10−2
9876 + 9875
Outro exemplo:
Resolver a equação x2 − 1634 ∗ x + 2 = 0
√
Utilizando a fórmula de Bhaskara temos: x = −b ± b2 − 4ac
2a
12
√
Para a equação, x = 1634 ± 16342 − 4 ∗ 2 = 1634 ± 1633, 99755
2 2
Para evitar o erro de cancelamento no cálculo da diferença, basta lembrarmos que o produto
das raı́zes é igual ao termo independente do polinômio. Ou, x1 ∗ x2 = 2
A segunda raiz será calculada por x2 = x21
13
No arredondamento, fx é modificado, dependendo do valor de gx . No arredondamento
simétrico que é a forma mais utilizado:
1
fx ∗ 10e se |gx | < 2
x= 1
f ∗ 10e + 10e−t se |gx | ≥
x 2
Para |gx | < 12 e |EAx | < 12 ∗ 10e−t , o erro relativo é calculado por:
Se |gx | ≥ 21 , teremos:
1 1 1
|EAx | ∗ 10e−t ∗ 10e−t ∗ 10e−t
|ERx | = x ≤ 2 < 2 2
≤ 0, 1 −t+1
|fx ∗ 10e + 10e−t | |fx | ∗ 10e 1 ∗ 10e = 2 ∗ 10
Arredondamento Truncamento
1
|EAx | ≤ 2
∗ 10e−t < 10e−t
|ERx | ≤ 1
2
∗ 10−t+1 < 10−t+1
14
Adição: x + y = (x̄ + EAx ) + (ȳ + EAy ) = (x̄ + ȳ) + (EAx + EAy )
O erro absoluto da soma x+y, denotado por EAx+y é a soma dos erros absoluto das parcelas.
EAx+y = EAx + EAy
O erro relativo da soma, ERx+y é assim definido:
EA EAx x̄ EAy ȳ
ERx+y = x̄ +x+y
ȳ = x̄ ∗ x̄ + ȳ + ȳ ∗ x̄ + ȳ
x̄ + ER ∗ ȳ
ERx+y = ERx ∗ x̄ + ȳ y x̄ + ȳ
Pela expressão do cálculo do erro na soma, verifica-se que se os dois números são armaze-
nados de maneira exata, o resultado do erro será zero.
De forma análoga, o cálculo do erro na diferença entre dois números é dado por:
x̄ − ER ∗ ȳ
ERx−y = ERx ∗ x̄ − ȳ y x̄ − ȳ
Na multiplicação:
x ∗ y = (x̄ + EAx ) ∗ (ȳ + EAy ) = x̄ ∗ ȳ + x̄ ∗ EAy + ȳ ∗ EAx + EAx ∗ EAy
x = x̄ + EAx = x̄ + EAx ∗ 1
y ȳ + EAy ȳ EAy
1+
ȳ
Representando 1
EAy em termos de uma série infinita:
1+
ȳ
EA EAy 2 EAy 3
1 = 1 − y
+ − + ...
EAy y y y
1+
ȳ
e desprezando os termos da série com expoente maior que 1, podemos escrever a divisão
como:
x ≈ x̄ + EAx ∗ 1 − EAy = x̄ + EAx − x̄ ∗ EAy − EAx ∗ EAy
y ȳ ȳ ȳ ȳ ȳ 2 ȳ 2
15
Então
x ≈ x̄ + EAx − x̄ ∗ EAy
y ȳ ȳ ȳ 2
x̄ ∗ EAy ȳ ∗ EAx − x̄ ∗ EAy
Assim, EAx/y ≈ EA x
ȳ − =
ȳ 2 ȳ 2
A análise completa da propagação dos erro é realizada considerando a parcela de erro que
ocorre nas operações e pela parcela de erro do resultado descrita na seção anterior.
Vejamos um exemplo para o cálculo de erros absolutos, relativos e erros totais de operações
aritméticas.
Sejam os números x = 17534, y = 21178 e z = 75904, que devem ser armazenados em um
sistema com as seguintes caracterı́sticas F(10,4,-6,6).
a) Calcule os erros absolutos e relativos
EAx = |x − x̄| = |0, 17534 ∗ 105 − 0, 1753 ∗ 105 | = 0, 4000 ∗ 101
EAy = |y − ȳ| = |0, 21178 ∗ 105 − 0, 2118 ∗ 105 | = 0, 2000 ∗ 101
EAz = |y − ȳ| = |0, 75904 ∗ 105 − 0, 7590 ∗ 105 | = 0, 4000 ∗ 101
16
ERx+y = (0, 1033 ∗ 10−3 + 0, 5283 ∗ 10−4 ) + 0, 0005 = (0, 1561 + 0, 5) ∗ 10−3
7 Considerações Finais
O objetivo deste documento foi apenas introduzir alguns aspectos sobre erros numéricos.
É possı́vel verificar que mesmo com o avanço na tecnologia de construção de computadores e
máquinas digitais, os resultados finais podem sempre ser influenciados por erros como os de
arredondamento e restrições do armazenamento de números. Como leitura adicional recomenda-
se realizar uma busca na Internet por falhas e acidentes causados por erros numéricos. Sugestão
de pesquisa:disasters caused by numerical errors.
Referências
[1] S. C. Chapra and R. P Canale. Métodos Numéricos para Engenharia. Pearson, 2008.
17