Buscar

Calculo Numerico aposila Erros UFSJ

Prévia do material em texto

Universidade Federal de Sa˜o Joa˜o Del Rei - UFSJ
Institu´ıda pela Lei 10.425, de 19/04/2002 - D.O.U. de 22/04/2002
Pro´-Reitoria de Ensino de Graduac¸a˜o - PROEN
Disciplina: Ca´lculo Nume´rico Ano: 2013
Prof: Nata˜ Goulart da Silva Versa˜o Documento 0.91
Ana´lise de Erros Nume´ricos
Suma´rio
1 Introduc¸a˜o 2
2 Representac¸a˜o dos Nu´meros 2
2.1 Decomposic¸a˜o de nu´meros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Conversa˜o de nu´meros entre bases 3
3.1 Bina´rio para decimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Decimal para bina´rio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 Notac¸a˜o de Ponto Flutuante 4
4.1 Representac¸a˜o de Nu´meros em Ponto Flutuante . . . . . . . . . . . . . . . . . . 4
4.2 Aritme´tica de Nu´meros em Ponto Flutuante . . . . . . . . . . . . . . . . . . . . 5
4.3 Erros na representac¸a˜o dos Nu´meros . . . . . . . . . . . . . . . . . . . . . . . . 7
4.4 Operac¸o˜es Aritme´ticas em Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . 8
5 Algarismos Significativos 10
6 Ana´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 Propagac¸a˜o dos Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7 Considerac¸o˜es Finais 17
Refereˆncias 17
1
1 Introduc¸a˜o
Na soluc¸a˜o de problemas atrave´s de me´todos nume´ricos, apo´s as fases de definic¸a˜o, mode-
lagem, escolha e implementac¸a˜o, verifica-se algumas vezes que os resultados obtidos na˜o apre-
sentam valores dentro de uma faixa esperada. Dentre outros fatores, os resultados dependem
da precisa˜o dos dados de entrada, da forma como estes dados sa˜o representados no computador
e das operac¸o˜es nume´ricas efetuadas. Os dados de entrada apresentam impreciso˜es devido a,
por exemplo, falhas no processo de medic¸a˜o e na aquisic¸a˜o destes dados. Para a disciplina
de Ca´lculo Nume´rico, sera˜o objeto de estudo os erros devido a modelagem e implementac¸a˜o
dos me´todos nume´ricos e neste cap´ıtulo, em especial, dos erros causados pela representac¸a˜o e
operac¸o˜es envolvendo nu´meros no computador.
As informac¸o˜es contidas neste documento sa˜o notas de aula retiradas dos livros citados na
sec¸a˜o Refereˆncias [1, 2, 3].
2 Representac¸a˜o dos Nu´meros
A representac¸a˜o de um nu´mero depende da base escolhida e do nu´mero de d´ıgitos utilizados
nesta representac¸a˜o [3]. As bases mais utilizadas sa˜o a bina´ria, a decimal e a hexadecimal.
Existem nu´meros como o pi que na˜o podem ser representados por um nu´mero finito de d´ıgitos
na base decimal. Enta˜o, independente do nu´mero de d´ıgitos utilizados em ca´lculos com o pi,
o resultado desta operac¸a˜o nunca sera´ exato. Quanto maior o nu´mero de d´ıgitos utilizados,
maior sera´ a precisa˜o obtida.
Quando sa˜o realizados ca´lculos nume´ricos em um computador, os valores de entrada sa˜o
normalmente fornecidos pelo usua´rio na base decimal. Toda informac¸a˜o e´ convertida para
a base bina´ria, sa˜o realizadas as operac¸o˜es e o resultado e´ convertido para a base decimal
e apresentado para o usua´rio. As transformac¸o˜es entre as bases podem ser fontes de erros,
porque um nu´mero pode ter representac¸a˜o finita em uma base e na˜o ter representac¸a˜o finita
em outra. Esta caracter´ıstica gera erros nume´ricos no processo de transformac¸o˜es entre bases
e sera´ apresentada melhor na sec¸a˜o com exemplos de operac¸o˜es de mudanc¸as de base.
2.1 Decomposic¸a˜o de nu´meros
Em geral, um nu´mero qualquer formado por n algarismos pode ser decomposto por uma
soma de cada um de seus algarismos multiplicado por uma poteˆncia. A poteˆncia depende da
base em que o nu´mero e´ representado. Como exemplo, seja o nu´mero 1537 representado na
base decimal. Para identificar a base, iremos escrever o nu´mero entre pareˆnteses indexado pela
sua base.
Exemplo: (1537)10 = 1 ∗ 103 + 5 ∗ 102 + 3 ∗ 101 + 7 ∗ 100
O mesmo procedimento pode ser realizado para nu´meros em outras bases e nu´meros com
parte fraciona´ria.
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
3 Conversa˜o de nu´meros entre bases
3.1 Bina´rio para decimal
Para realizarmos a conversa˜o de um nu´mero em qualquer base para um nu´mero na base
decimal devemos usar a multiplicac¸a˜o de cada um de seus algarismos pela poteˆncia igual a
base. Considerando nu´meros inteiros, o primeiro algarismo a direita, deve ser multiplicado
pela base elevada a zero. O pro´ximo algarismo, o segundo da direita para a esquerda, deve
ser multiplicado pela base elevada a um, e assim por diante. Nu´meros fraciona´rios tera˜o suas
poteˆncias elevadas a -1, -2, -3, ..., a partir do algarismo a` direita da v´ırgula.
De um modo geral, um nu´mero na base β, (ajaj−1...a2a1a0)β, 0 ≤ ak ≤ (β − 1), k =
0, 1, 2, ..., j, pode ser escrito na forma polinomial
ajβ
j + aj−1βj−1 + ...+ a2β2 + a1β1 + a0β0
No exemplo a seguir, temos inicialmente a transformac¸a˜o de um nu´mero inteiro na base
bina´ria para a base decimal e posteriormente transformac¸o˜es de nu´meros na base 2 e 4 fra-
ciona´rios para a base decimal.
Exemplo: (10111)2 = 1 ∗ 24 + 0 ∗ 23 + 1 ∗ 22 + 1 ∗ 21 + 1 ∗ 20 = (23)10
(10, 11)2 = 1 ∗ 21 + 0 ∗ 20 + 1 ∗ 2−1 + 1 ∗ 2−2 = 2 + 0 + 0, 5 + 0, 25 = 2, 75
(21, 03)4 = 2 ∗ 41 + 1 ∗ 40 + 0 ∗ 4−1 + 3 ∗ 4−2
3.2 Decimal para bina´rio
A transformac¸a˜o de um nu´mero inteiro na base decimal para um nu´mero na base bina´ria
e´ realizada dividindo-se este nu´mero sucessivamente por dois ate´ que o quociente da divisa˜o
seja menor que 2. Como exemplo, consideremos a transformac¸a˜o do nu´mero (40)10 para a base
bina´ria.
Exemplo:
40
0
2
20
0
2
10
0
2
5
1
2
2
0
2
1
↖
3
Ao te´rmino da divisa˜o, temos o nu´mero na base bina´ria partindo do u´ltimo quociente e
posteriormente os restos das diviso˜es da parte inferior para a superior. Desta forma, o resultado
da transformac¸a˜o anterior e´:
(40)10 = (101000)2
Para transformar nu´meros decimais com d´ıgitos apo´s a v´ırgula em nu´meros na base bina´ria
devemos proceder de duas maneiras. A parte inteira deste nu´mero deve ser transformada como
citado anteriormente, atrave´s da aplicac¸a˜o de diviso˜es sucessivas. Para transformar os d´ıgitos
decimais a direita da v´ırgula para bina´rio, deve-se multiplica´-los por 2. Do resultado, considera-
se a parte a esquerda da v´ırgula como resultado parcial da transformac¸a˜o e deve-se proceder
o processo de multiplicac¸a˜o da parte fraciona´ria ate´ que seja obtido o valor 0 apo´s a v´ırgula,
ou ate´ verificar que o nu´mero na˜o pode ser armazenado de maneira exata. Seja o exemplo
de transformar o nu´mero (40, 1875)10 para bina´rio. A transformac¸a˜o da parte inteira ja´ foi
calculada, vejamos agora o ca´lculo da parte fraciona´ria:
0, 1875 0, 375 0.75 0.50
∗2 ∗2 ∗2 ∗2
0, 3750 0, 75 1, 50 1, 00
Assim, (40, 1875)10 = (101000, 0011)2
Infelizmente, a necessidade de transformar nu´meros entre bases pode implicar na inserc¸a˜o
de erros nume´ricos porque um nu´mero pode ter representac¸a˜o exata em uma base e na˜o ter
representac¸a˜o exata em outra. Seja o exemplo do nu´mero (0, 1)10 que tem representac¸a˜o exata
na base decimal. Veremos que na˜o e´ poss´ıvel representa´-lo de forma exata na base bina´ria:
0, 10 0, 20 0.40 0.80 0.60 0.20 0.40 ...
∗2 ∗2 ∗2 ∗2 ∗2 ∗2 ∗2 ...
0, 20 0, 40 0, 80 1, 60 1, 20 0, 40 0, 80 ...
Na transformac¸a˜o realizada no exemplo, vemos que na˜oe´ poss´ıvel obter um resultado da
multiplicac¸a˜o igual a zero e o processo de transformac¸a˜o entra em um ciclo infinito. Neste
caso, o nu´mero (0, 1)10 sera´ representado de forma aproximada na base bina´ria com precisa˜o
dependente do nu´mero de algarismos significativos definido.
(0, 1)10 ' (0, 00011)2
4 Notac¸a˜o de Ponto Flutuante
4.1 Representac¸a˜o de Nu´meros em Ponto Flutuante
Nos computadores e ma´quinas digitais em geral, para a realizac¸a˜o de operac¸o˜es, cada nu´mero
e´ armazenado em uma a´rea de memo´ria chamada Palavra que tem tamanho limitado. A repre-
sentac¸a˜o utilizada nas ma´quinas digitais modernas e´ a chamada Notac¸a˜o de Ponto Flutuante.
4
Nesta notac¸a˜o, o espac¸o reservado para armazenamento e´ dividido em treˆs partes: o sinal do
nu´mero, a parte fraciona´ria tambe´m chamada de mantissa e uma a´rea para armazenar o expo-
ente. Como o espac¸o de armazenamento e´ limitado, na˜o e´ poss´ıvel armazenar todos os nu´meros
reais e sim intervalos discretos. Quanto maior for o espac¸o dispon´ıvel para armazenamento,
ou seja, o tamanho da Palavra, maior sera´ a faixa e a precisa˜o dos nu´meros armazenados.
Os computadores atuais utilizam base bina´ria com tamanho de palavra de 32 bits ou 64 bits.
Baseado no padra˜o IEEE754 que define a representac¸a˜o com tamanho de palavra de 32 bits,
chamado de precisa˜o simples, e com palavra de 64 bits chamado de precisa˜o dupla, a divisa˜o
do tamanho da palavra e´ assim definido:
Precisa˜o Simples: 32 bits ou 4 bytes
• 1 bit e´ reservado para o sinal do nu´mero (positivo ou negativo);
• 8 bits sa˜o utilizados para armazenar um nu´mero inteiro que e´ o expoente da base;
• 23 bits sa˜o utilizados para a mantissa.
Precisa˜o Dupla: 64 bits ou 8 bytes
• 1 bit e´ reservado para o sinal do nu´mero (positivo ou negativo);
• 11 bits sa˜o utilizados para armazenar um nu´mero inteiro que e´ o expoente da base;
• 52 bits sa˜o utilizados para a mantissa.
Enta˜o, na Notac¸a˜o de Ponto Flutuante, o nu´mero m pode ser assim representado:
m = ±, d1d2d3...dt ∗ βe
Onde:
di′s : d´ıgitos da parte fraciona´ria, d1 6= 0, 0 ≤ di ≤ β − 1
β: base (em geral 2, 10 ou 16),
t: nu´mero de d´ıgitos na mantissa.
e: expoente inteiro.
Utilizando a forma de representac¸a˜o normalizada, o primeiro d´ıgito d1 sera´ sempre diferente
de zero.
4.2 Aritme´tica de Nu´meros em Ponto Flutuante
Na aritme´tica de ponto flutuante, um sistema de numerac¸a˜o e´ representado por 4 nu´meros
F(β,t,m,M). Nesta representac¸a˜o, β sera´ a base utilizada, t o tamanho ou nu´mero de d´ıgitos
da mantissa, m o menor expoente poss´ıvel para a notac¸a˜o e M o maior expoente. Enta˜o, de-
vido ao tamanho finito da Palavra em uma ma´quina, F(β,t,m,M) sera´ sempre um
5
subconjunto dos nu´meros reais. Vejamos os nu´meros representa´veis em um dado sistema F.
Exemplo: Seja F(2,3,-1,2), quais os nu´meros na base decimal representa´veis neste sistema?
A base utilizada e´ a bina´ria, enta˜o, os d´ıgitos da mantissa podera˜o ser 0 ou 1, sendo que na
forma normalizada o primeiro d´ıgito da mantissa sera´ obrigatoriamente 1.
Para a mantissa poderemos ter as seguintes variac¸o˜es: 0,100; 0,101; 0,110 e 0,111
Para o expoente, poderemos ter nu´meros variando de 2−1 ate´ 22.
Assim, os nu´meros representa´veis nesses sistema sa˜o:
O zero e´ representado em todos os sistemas.
0, 100 ∗ 2−1 = (1 ∗ 2−1 + 0 ∗ 2−2 + 0 ∗ 2−3) ∗ 1
2
= 1
2
∗ 1
2
= 1
4
= 0, 25
0, 101 ∗ 2−1 = (1 ∗ 2−1 + 0 ∗ 2−2 + 1 ∗ 2−3) ∗ 1
2
= (1
2
+ 1
8
) ∗ 1
2
= 5
8
∗ 1
2
= 5
16
= 0, 3125
0, 110 ∗ 2−1 = (1 ∗ 2−1 + 1 ∗ 2−2 + 0 ∗ 2−3) ∗ 1
2
= (1
2
+ 1
4
) ∗ 1
2
= 3
4
∗ 1
2
= 3
8
= 0, 375
0, 111 ∗ 2−1 = (1 ∗ 2−1 + 1 ∗ 2−2 + 1 ∗ 2−3) ∗ 1
2
= (1
2
+ 1
4
+ 1
8
) ∗ 1
2
= 7
8
∗ 1
2
= 7
16
= 0, 4375
0, 100 ∗ 20 = 1 ∗ 2−1 + 0 ∗ 2−2 + 0 ∗ 2−3 = 1
2
= 1
4
= 0, 5
0, 101 ∗ 20 = 1 ∗ 2−1 + 0 ∗ 2−2 + 1 ∗ 2−3 = 1
2
+ 1
8
) ∗ 1
2
= 5
8
= 0, 625
0, 110 ∗ 20 = 1 ∗ 2−1 + 1 ∗ 2−2 + 0 ∗ 2−3 = 1
2
+ 1
4
= 3
4
= 0, 750
0, 111 ∗ 20 = 1 ∗ 2−1 + 1 ∗ 2−2 + 1 ∗ 2−3 = 1
2
+ 1
4
+ 1
8
= 7
8
= 0, 875
0, 100 ∗ 21 = (1 ∗ 2−1 + 0 ∗ 2−2 + 0 ∗ 2−3) ∗ 2 = 1
2
∗ 2 = 1
0, 101 ∗ 21 = (1 ∗ 2−1 + 0 ∗ 2−2 + 1 ∗ 2−3) ∗ 2 = (1
2
+ 1
8
) ∗ 2 = 5
8
∗ 2 = 5
4
= 1, 25
0, 110 ∗ 21 = (1 ∗ 2−1 + 1 ∗ 2−2 + 0 ∗ 2−3) ∗ 2 = (1
2
+ 1
4
) ∗ 2 = 3
4
∗ 2 = 3
2
= 1, 5
0, 111 ∗ 21 = (1 ∗ 2−1 + 1 ∗ 2−2 + 1 ∗ 2−3) ∗ 2 = (1
2
+ 1
4
+ 1
8
) ∗ 2 = 7
8
∗ 2 = 7
4
= 1, 75
0, 100 ∗ 22 = (1 ∗ 2−1 + 0 ∗ 2−2 + 0 ∗ 2−3) ∗ 22 = 1
2
∗ 4 = 2
0, 101 ∗ 22 = (1 ∗ 2−1 + 0 ∗ 2−2 + 1 ∗ 2−3) ∗ 22 = (1
2
+ 1
8
) ∗ 4 = 5
8
∗ 4 = 5
2
= 2, 5
0, 110 ∗ 22 = (1 ∗ 2−1 + 1 ∗ 2−2 + 0 ∗ 2−3) ∗ 22 = (1
2
+ 1
4
) ∗ 4 = 3
4
∗ 4 = 3, 0
0, 111 ∗ 22 = (1 ∗ 2−1 + 1 ∗ 2−2 + 1 ∗ 2−3) ∗ 22 = (1
2
+ 1
4
+ 1
8
) ∗ 4 = 7
8
∗ 4 = 7
2
= 3, 5
Os nu´meros representa´veis neste sistema sa˜o:
-3,5; -3,0; -2,5; -2; -1,75; -1,5; -1,25; -1; -0,875; -0,750; -0,625; -0,5; -0,4375; -0,375; -0,3125;
-0,25; 0 ;0,25; 0,3125; 0,375; 0,4375; 0,5; 0,625; 0,750; 0,875; 1; 1,25; 1,5; 1,75; 2; 2,5; 3,0; 3,5
Vemos que para o sistema F(2,3,-1,2) podemos representar 33 nu´meros e que na˜o ha´ nu´meros
representa´veis entre, por exemplo, [1; 1,25] ou entre [3.0; 3.5]. Uma forma de determinar a
quantidade de nu´meros representa´veis e´ fazer a seguinte ana´lise. Neste sistema temos treˆs
6
d´ıgitos na mantissa sendo que o primeiro d´ıgito e´ 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 enta˜o 2 * 2 * 4 possibilidades o que implica em 16 nu´meros.
Como o zero e´ representa´vel em qualquer sistema e tambe´m temos os nu´meros negativos, o
total de nu´meros representa´veis sera´: 2 * 16 + 1 = 33 nu´meros.
Podemos tambe´m fazer uso da seguinte fo´rmula para calcular o total de nu´meros em um
sistema:
N = 2 ∗ (β − 1) ∗ βt−1 ∗ (M −m+ 1) + 1
Onde: N = quantidade de nu´meros representa´veis em F;
A primeira multiplicac¸a˜o por 2 se deve a possibilidade de representar nu´meros positivos e
negativos;
O acre´scimo de 1 no final e´ devido a representac¸a˜o do nu´mero 0 (zero)
Com relac¸a˜o a representac¸a˜o dos nu´meros na notac¸a˜o de ponto flutuante, quanto maior o
nu´mero de d´ıgitos utilizados na mantissa, maior sera´ a precisa˜o dos nu´meros representa´veis e
menor sera´ o intervalo entre dois nu´meros pertencentes a este sistema. Para o expoente, quanto
maior o nu´mero de bits dispon´ıveis nesta representac¸a˜o maior sera´ os limites dos nu´meros.
Atenc¸a˜o: Em nosso estudo, alguns detalhes sobre a representac¸a˜o dos nu´meros definidos
pelo padra˜o IEEE 754 na˜o esta˜o sendo considerados. Alguns destes pontos sa˜o: a forma de
armazenar o expoente de um nu´mero considerando o sinal e considerar que o primeiro d´ıgito
dos nu´meros normalizados (1), na˜o precisa ser armazenado.
4.3 Erros na representac¸a˜o dos Nu´meros
Enta˜o, devido a representac¸a˜o de nu´meros do formato de ponto flutuante, pode ocorrer dois
tipos de erros: um relacionado ao nu´mero de bits dispon´ıveis para representar o expoente e
outro erro relacionado a tamanho da mantissa. Quanto ao limite do expoente, sempre que
uma operac¸a˜o aritme´tica produz um nu´mero com expoente maior que o expoente ma´ximo M,
ocorre um erro no armazenamento do nu´mero e e´ gerada uma excec¸a˜o chamada overflow. De
forma semelhante, operac¸o˜es que resultem em expoente menores que o expoente mı´nimo m
geram uma excec¸a˜o chamada underflow. No caso do exemplo apresentado na Figura 1, pode-se
observar que para operac¸o˜es que gerem valores entre o intervalo (−1
4
, 1
4
) ocorre underflowe em
valores menores que −3 e maiores que 3 ira´ ocorrer um overflow.
Quanto a erros relacionados com o tamanho da mantissa, mesmo o melhor computador
dispon´ıvel na˜o consegue armazenar em um intervalo, todo o conjunto de valores reais poss´ıveis.
Na pra´tica sa˜o armazenados apenas pontos discretos e a distaˆncia entre estes pontos esta´
diretamente relacionada com o nu´mero de bits da mantissa. O seguinte exemplo apresenta um
erro devido a limitac¸a˜o do tamanho da mantissa em um dado sistema de ponto flutuante.
Seja f(x) uma func¸a˜o cont´ınua real definida no intervalo [a,b], a < b, e sejam f(a) < 0 e
f(b) > 0. Enta˜o, pelo Teorema do Valor Me´dio, existe um x, a < x < b, tal que f(x) = 0. Seja
7
Figura 1: Regia˜o de Underflow e Overflow
f(x) = x3 − 3, determinar x tal que f(x) = 0.
Soluc¸a˜o: Para a func¸a˜o dada, consideremos t = 10 e β = 10.
Obtemos enta˜o:
f(0, 1442249570 ∗ 101) = −0, 2 ∗ 10−8
f(0, 1442249571 ∗ 101) = 0, 4 ∗ 10−8
Observe que entre os dois valores de x, na˜o existe nenhum nu´mero que possa ser representado
no sistema e que a func¸a˜o muda de sinal nos extremos deste intervalo. Assim, esta ma´quina
na˜o possui o nu´mero x tal que f(x) = 0 e obtemos apenas um valor aproximado para o x.
Realizados em um computador, os ca´lculos das expresso˜es a seguir na˜o resultam em zero,
voceˆ saberia descrever a raza˜o? (resposta ≈ 0, 1 ∗ 10−15)
1) 1− 3 ∗ (4/3− 3)
2) sen(pi)
Importante: Dois aspectos devem ser destacados nesse momento:
• A representac¸a˜o dos nu´meros em sistemas digitais, diferentemente do que acontece no
conjunto dos nu´meros reais, ocorre atrave´s de valores discretos. Quanto menor o nu´meros
de bits dispon´ıveis para representar a mantissa, maior sera´ o intervalo entre os nu´meros
representa´veis. O Matlab tem um func¸a˜o chamada eps que retorna qual a distaˆncia entre
o valor passado para a func¸a˜o e o pro´ximo nu´mero representa´vel.
• A restric¸a˜o dos bits dispon´ıveis para representar o expoente, limitam a magnitude dos
nu´meros representa´veis.
4.4 Operac¸o˜es Aritme´ticas em Ponto Flutuante
Seja uma ma´quina onde sa˜o realizadas uma se´rie de operac¸o˜es aritme´ticas. Apo´s cada
operac¸a˜o, o resultado e´ colocado no formato do sistema, aplicando o procedimento de arredon-
damento ou de truncamento. Se a quantidade de d´ıgitos do nu´mero for maior que o tamanho
da mantissa. Por este motivo, as operac¸o˜es aritme´ticas nem sempre sa˜o associativas e nem
distributivas. ( Associativa: (a + b) + c = a + (b + c). Distributiva: a * ( b + c) = a * b +
a * c).
8
Lembrete: Para realizar operac¸o˜es de adic¸a˜o ou subtrac¸a˜o, os nu´meros devem ser multipli-
cados por poteˆncias de mesmo expoente.
Como exemplo, seja o sistema F(10,3,-5,5), vejamos o que ocorre nas seguintes operac¸o˜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
b) 11, 4 + (3, 18 + 5, 05)
Temos que:
0, 114 ∗ 102 + (0, 0318 ∗ 102 + 0, 0505 ∗ 102)
0, 114 ∗ 102 + 0, 0823 ∗ 102 = 0, 196 ∗ 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 expresso˜es a) e b), e das expresso˜es c) e d) deveriam ser iguais mas, devido
o arredondamento apo´s cada operac¸a˜o, apresentaram diferenc¸as.
Algoritmo da adic¸a˜o/subtrac¸a˜o em ponto flutuante
1. Se na˜o estiver formatado, escreva os nu´meros no formato de ponto flutuante.
2. Compare o expoente dos dois nu´meros. Se forem diferentes, desloque o nu´mero com
menor expoente a` direita ate´ que seu expoente se iguale ao maior nu´mero.
3. Some/subtraia as mantissas.
4. Normalize a soma, deslocando a` direita e incrementando o expoente ou deslocando a`
esquerda e decrementando o expoente.
5. Teste se ocorre overflow ou underflow.
6. Se sim, gera excec¸a˜o.
9
7. Se na˜o, arredonde ou fac¸a o truncamento da mantissa para o nu´mero de bits corretos.
8. Verifica se o resultado esta´ normalizado.
9. Se Sim. Fim
10. Se Na˜o, retorna ao passo 4
Algoritmo da multiplicac¸a˜o/divisa˜o em ponto flutuante
1. Se na˜o estiver formatado, escreva os nu´meros no formato de ponto flutuante.
2. Somar os expoentes das duas poteˆncias
3. Multiplique/divida as mantissas.
4. Normalize o produto se necessa´rio.
5. Teste se ocorre overflow ou underflow.
6. Caso sim, gera excec¸a˜o.
7. Caso na˜o, escreva a mantissa com o nu´mero de bits apropriado.
8. Verificar se resultado esta´ normalizado.
9. Na˜o, retorna ao passo 4.
10. sim, fac¸a o sinal do produto positivo se ambos os sinais dos operandos originais sa˜o os
mesmos, caso contra´rio, sinal e´ negativo, Fim
5 Algarismos Significativos
Os Algarismos Significativos de um nu´mero sa˜o aqueles que podem ser usados com confianc¸a
[1] e que correspondem ao nu´mero de algarismo corretos mais um algarismo estimado. Por
exemplo, seja o veloc´ımetro analo´gico de um carro que tem trac¸os marcando os Km. Qual seria
a leitura de velocidade se o ponteiro estivesse entre os trac¸os que representam 61 Km/h e 62
Km/h? Dependendo da posic¸a˜o do ponteiro entre os dois trac¸os, uma pessoa poderia informar
que a velocidade e´ 61,7 Km/h e outra 61,8 Km/h. Nesta leitura ter´ıamos treˆs algarismos
significativos. Convenciona-se tomar o algarismo estimado como a metade da menor divisa˜o
da escala do aparelho utilizado. Portanto, a leitura da velocidade segundo esta convenc¸a˜o seria
61,5 Km/h. Para as definic¸o˜es de ca´lculo nume´rico, seja β a base de um sistema de nu´meros de
ponto flutuante. Dı´gitos Significativos de um nu´mero x sa˜o todos os algarismos de 0 a β − 1,
desde que x esteja representado na forma normalizada.
Algumas definic¸o˜es sobre algarismos significativos:
10
• Os algarismos significativos de um nu´mero sa˜o os d´ıgitos diferentes de zero, contados a
partir da esquerda ate´ o u´ltimo d´ıgito diferente de zero a` direita, caso na˜o haja v´ırgula,
ou ate´ o u´ltimo d´ıgito, zero ou na˜o, caso haja uma v´ırgula decimal. Ex.: 3, 2 ∗ 103 e
3, 200 ∗ 103 tem 2 e 4 algarismos significativos, respectivamente.
• Os d´ıgitos diferentes de zero sa˜o todos significativos. Ex.: 7, 3; 32 e 210 possuem 2
algarismos significativos.
• Os zeros entre d´ıgitos diferentes de zero sa˜o significativos. Ex: 303 e 1, 03 possuem 3
algarismos significativos.
• Se existir uma v´ırgula, todos os zeros a` direita da v´ırgula decimal sa˜o significativos. Ex:
1, 000 e 33, 30 possuem 4 algarismos significativos.
Os me´todos nume´ricos fornecem resultados aproximados, sendo necessa´rio enta˜o, desenvol-
ver crite´rios para especificar quanta confianc¸a se tem no resultado aproximado. Isto e´ realizado
atrave´s da definic¸a˜o de algarismos significativos. Por exemplo, pode-se decidir que uma apro-
ximac¸a˜o e´ aceita´vel se ela for correta ate´ 4 algarismos significativos.
6 Ana´lise de Erros
O objetivo desta sec¸a˜o e´ descrever me´todos que permitam reduzir ou determinar limites
para os erros nume´ricos. Nenhum resultado cient´ıfico tem valor pra´tico se na˜o houver um
controle sobre os erros envolvidos. A ana´lise dos erros e´ parte fundamental de um processo de
modelagem.
6.1 Erros Absolutos e Relativos
Erro absoluto e´ a diferenc¸a entre o valor exato de um nu´mero x e seu valor aproximado x.
EAx = x− x.
Em geral, na˜o se conhece o valor exato x, o que impossibilita o ca´lculo do erro absoluto.
Nestes casos, avalia-se um limitante superior ou uma aproximac¸a˜o para o mo´dulo do erro. Por
exemplo, sabemos que o valor de pi ∈ (3, 14; 3, 15). Considera-se enta˜o o limitante para o erro
absoluto como sendo |EAx| < 0,01. Ao longo da disciplina, sera˜o apresentadas outras formas
de verificac¸a˜o para erros aproximados e limitantes para erros.
O erro absoluto na˜o permite uma avaliac¸a˜o da precisa˜o entre dois resultados de forma correta
porque na˜o leva em considerac¸a˜o a grandeza destes nu´meros. Por exemplo, se for identificado
que o comprimento de uma sala de aula tem um limitante superior de erro da ordem de 1mm,
considera-se que a sala tem medidas precisas e que este erro na˜o altera a sua qualidade. Pore´m,
se considerarmos o mesmo limitante de 1mm para a confecc¸a˜o de um eixo de um sistema de
transmissa˜o de um automo´vel. Provavelmente, um eixo com erro de 1mm em seu diaˆmetro na˜o
seria montado com sucesso neste sistema de transmissa˜o.
11
O erro relativo leva em considerac¸a˜o as dimenso˜es dos valores em ana´lise e pode ser calculado
atrave´s da expressa˜o: ERx =
EAx
x =
x− x
x
Exemplo: Sejam x = 100, x = 100, 1, y = 0, 004, x = 0, 006. Qual nu´mero e´ representado
com maior precisa˜o pela sua aproximac¸a˜o?
Para determinar a resposta e´ necessa´rio calcular os erros relativos de x e y.
ERx = 100− 100, 1100, 1 = 0, 999 ∗ 10−3
ERy = 0, 004− 0, 0060, 006 = 0, 333 ∗ 100
Logo, verifica-se que o nu´mero x e´ representado com melhor precisa˜o.
6.2 Erros de Cancelamento
Ocorrem durante a subtrac¸a˜o de dois nu´meros com valores pro´ximos. Nesta operac¸a˜o, se
subtrairmos estes dois nu´mero na forma normalizada, havera´ no resultado alguns zeros na˜o
significativos. Enta˜o sera´ necessa´rio normalizar o resultado e preencher a` direita com zeros que
sa˜o necessa´rios para a normalizac¸a˜o. Veja o exemplo da subtrac¸a˜o dos nu´meros
√
9876−√9875
em um sistema F(10,10,-10,10).
√
9876−√9875 = 0, 9937806599 ∗ 102 − 0, 9937303457 ∗ 102 = 0, 0000503142 ∗ 102
Normalizando o resultado temos que:
√
9876−√9875 = 0, 5031420000 ∗ 10−2.
Na pra´tica, os quatro zeros no final do nu´mero na˜o teˆm significado e perde-se quatro d´ıgitos
de precisa˜o na mantissa. O erro de cancelamento pode ser contornado utilizando manipulac¸o˜es
alge´bricas de forma a evitar a subtrac¸a˜o destes nu´meros. Podemos reescrever a diferenc¸a desta
forma:√
x−√y = x− y√
x+
√
y
Neste caso a diferenc¸a torna-se:
√
9876−√9875 = 1√
9876 +
√
9875
= 0, 5031418679 ∗ 10−2
Que tem todos os d´ıgitos da mantissa preenchidos.
Outro exemplo:
Resolver a equac¸a˜o x2 − 1634 ∗ x+ 2 = 0
Utilizando a fo´rmula de Bhaskara temos: x = −b±
√
b2 − 4ac
2a
12
Para a equac¸a˜o, x = 1634±
√
16342 − 4 ∗ 2
2 =
1634± 1633, 99755
2
Para evitar o erro de cancelamento no ca´lculo da diferenc¸a, basta lembrarmos que o produto
das ra´ızes e´ igual ao termo independente do polinoˆmio. Ou, x1 ∗ x2 = 2
A segunda raiz sera´ calculada por x2 =
2
x1
x1 = 0, 1633998776 ∗ 103 e x2 = 0, 1223991125 ∗ 10−2
Nem sempre havera´ uma maneira trivial de resolver o problema de cancelamento.
6.3 Erros de Arredondamento e Truncamento em um Sistema Ponto
Flutuante
A representac¸a˜o de um nu´mero em uma ma´quina depende do tamanho da palavra ou
da quantidade de bits dispon´ıveis para o seu armazenamento. De acordo com o tamanho da
palavra, sera´ definido o nu´mero t de bits da mantissa e do expoente. Apo´s uma operac¸a˜o
realizada em ponto flutuante, o resultado e´ normalizado e pode ser necessa´rio arrendondar ou
truncar este nu´mero. O erro relativo gerado por este truncamento ou arrendondamento
no resultado sera´ definido nesta sec¸a˜o.
Seja um sistema que opera em aritme´tica de ponto flutuante com t d´ıgitos na mantissa e
β = 10 e seja o nu´mero x escrito na forma:
x = fx ∗ 10e + gx ∗ 10e−t, onde 0, 1 ≤ fx < 1 e 0 ≤ gx < 1
Por exemplo, se t = 4 e x = 234, 57, enta˜o
x = 0, 2345 ∗ 103 + 0, 7 ∗ 10−1
Assim, fx = 0, 2345 e gx = 0, 7
Verifica-se que no exemplo proposto, o valor de gx na˜o pode ser incorporado a mantissa de
x. Pode-se adotar dois crite´rios na definic¸a˜o dos nu´meros em casos como o do exemplo. Pode-se
realizar o truncamento ou o arredondamento dos d´ıgitos restantes na mantissa.
No truncamento, gx ∗ 10e−t e´ desprezado e x = fx ∗ 10e. Assim, obtemos o erro absoluto
devido ao truncamento:
|EAx| = |x− x| = |gx| ∗ 10e−t < 10e−t, visto que gx < 1
Da mesma forma, podemos calcular o erro relativo:
|ERx| = |EAx||x| =
|gx| ∗ 10e−t
|fx| ∗ 10e <
10e−t
0,1∗10e = 10
−t+1, visto que 0, 1 e´ o menor valor poss´ıvel
para fx,
ou, |ERx| < 10−t+1
13
No arredondamento, fx e´ modificado, dependendo do valor de gx. No arredondamento
sime´trico que e´ a forma mais utilizado:
x =
 fx ∗ 10
e se |gx| < 12
fx ∗ 10e + 10e−t se |gx| ≥ 12
Enta˜o, despreza-se gx se |gx| < 12, caso contra´rio, soma-se 1 ao u´ltimo d´ıgito de fx.
Para |gx| < 12 e |EAx| < 12 ∗ 10e−t, o erro relativo e´ calculado por:
|ERx| = |EAx|x =
|gx| ∗ 10e−t
|fx| ∗ 10e <
0, 5 ∗ 10e−t
0, 1 ∗ 10e =
1
2 ∗ 10−t+1
Ou seja, |ERx| < 12 ∗ 10−t+1
Se |gx| ≥ 12, teremos:
|EAx| = |x− x| = |(fx ∗ 10e + gx ∗ 10e−t)− (fx ∗ 10e + 10e−t)| =
= |gx ∗ 10e−t − 10e−t| = |gx − 1| ∗ 10e−t ≤ 12 ∗ 10e−t
Ou seja, |EAx| ≤ 12 ∗ 10e−t
|ERx| = |EAx|x ≤
1
2
∗ 10e−t
|fx ∗ 10e + 10e−t| <
1
2
∗ 10e−t
|fx| ∗ 10e ≤
1
2
∗ 10e−t
0, 1 ∗ 10e =
1
2 ∗ 10−t+1
Ou seja, |ERx| ≤ 12 ∗ 10−t+1
Enta˜o, em qualquer caso para o arredondamento, teremos: |EAx| ≤ 12 ∗ 10e−t e |ERx| ≤
1
2
∗ 10−t+1, e os erros gerados no armazenamento de um resultado em ponto flutuante sa˜o
definidos por:
Arredondamento Truncamento
|EAx| ≤ 12 ∗ 10e−t < 10e−t
|ERx| ≤ 12 ∗ 10−t+1 < 10−t+1
6.4 Propagac¸a˜o dos Erros
O erro total em uma operac¸a˜o e´ composto pelo erro das parcelas mais o erro no resultado.
O ca´lculo da estimativa do erro no resultado foi definido na sec¸a˜o anterior. A seguir sera˜o
definidas fo´rmulas para o ca´lculo dos erros absolutos e relativos nas operac¸o˜es com erros nas
parcelas. Supomos que o erro final e´ arrendondado.
Seja x e y tais que: x = x¯+ EAx e y = y¯ + EAy
14
Adic¸a˜o: x+ y = (x¯+ EAx) + (y¯ + EAy) = (x¯+ y¯) + (EAx + EAy)
O erro absoluto da soma x+y, denotado por EAx+y e´ a soma dos erros absoluto das parcelas.
EAx+y = EAx + EAy
O erro relativo da soma, ERx+y e´ assim definido:
ERx+y =
EAx+y
x¯+ y¯ =
EAx
x¯ ∗ x¯x¯+ y¯ +
EAy
y¯ ∗ y¯x¯+ y¯
ERx+y = ERx ∗ x¯x¯+ y¯ + ERy ∗
y¯
x¯+ y¯
Pela expressa˜o do ca´lculo do erro na soma, verifica-se que se os dois nu´meros sa˜o armaze-
nados de maneira exata, o resultado do erro sera´ zero.
De forma ana´loga, o ca´lculo do erro na diferenc¸a entre dois nu´meros e´ dado por:
ERx−y = ERx ∗ x¯x¯− y¯ − ERy ∗
y¯
x¯− y¯
Na multiplicac¸a˜o:
x ∗ y = (x¯+ EAx) ∗ (y¯ + EAy) = x¯ ∗ y¯ + x¯ ∗ EAy + y¯ ∗ EAx + EAx ∗ EAy
Considerando a u´ltima parcela, EAx ∗ EAy como um nu´mero pequeno, fazemos:
EAx ≈ x¯ ∗ EAy + y¯ ∗ EAx
O erro relativo do produto pode ser calculado por:
ERx∗y =
x¯ ∗ EAy + y¯ ∗ EAx
x¯ ∗ y¯ = EAxx¯ +
EAy
y¯ = ERx + ERy
E finalmente, para a divisa˜o de xy
x
y =
x¯+ EAx
y¯ + EAy
= x¯+ EAxy¯ ∗ 1
1 +
EAy
y¯
Representando 1
1 +
EAy
y¯
em termos de uma se´rie infinita:
1
1 +
EAy
y¯
= 1− EAyy +
(
EAy
y
)2
−
(
EAy
y
)3
+ ...
e desprezando os termos da se´rie com expoente maior que 1, podemos escrever a divisa˜o
como:
x
y ≈ x¯+ EAxy¯ ∗
(
1− EAyy¯
)
= x¯y¯ +
EAx
y¯ −
x¯ ∗ EAy
y¯2
− EAx ∗ EAy
y¯2
15
Enta˜o
x
y ≈ x¯y¯ + EAxy¯ −
x¯ ∗ EAy
y¯2
Assim, EAx/y ≈ EAxy¯ −
x¯ ∗ EAy
y¯2
=
y¯ ∗ EAx − x¯ ∗ EAy
y¯2
e
ERx/y ≈
(
y¯ ∗ EAx − x¯ ∗ EAy
y¯2
)
/x¯y¯ =
EAx
x¯ −
EAy
y¯ = ERx − ERy
A ana´lise completa da propagac¸a˜o dos erro e´ realizada considerando a parcela de erro que
ocorre nas operac¸o˜es e pela parcela de erro do resultado descrita na sec¸a˜o anterior.
Vejamos um exemplopara o ca´lculo de erros absolutos, relativos e erros totais de operac¸o˜es
aritme´ticas.
Sejam os nu´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 − y¯| = |0, 21178 ∗ 105 − 0, 2118 ∗ 105| = 0, 2000 ∗ 101
EAz = |y − y¯| = |0, 75904 ∗ 105 − 0, 7590 ∗ 105| = 0, 4000 ∗ 101
ERx = |x− x¯|/|x¯| = 0, 4000 ∗ 101/0, 1753 ∗ 105 = 0, 2282 ∗ 10−3
ERy = |y − y¯|/|y¯| = 0, 2000 ∗ 101/0, 2118 ∗ 105 = 0, 9447 ∗ 10−4
ERz = |z − z¯|/|z¯| = 0, 4000 ∗ 101/0, 7590 ∗ 105 = 0, 5270 ∗ 10−4
Neste exemplo, os valores de erros esta˜o no formato do sistema mas isto na˜o e´ estritamente
necessa´rio.
b) Calcular o valor da expressa˜o (x+ y)/z e o erro relativo final da operac¸a˜o.
x+ y = (0, 1753 + 0, 2118) ∗ 105 = 0, 3871 ∗ 105
O erro relativo da soma mais o erro do resultado e´ definido por:
ERx+y =
(
ERx ∗ x¯x¯+ y¯ + ERy ∗
y¯
x¯+ y¯
)
+ 12 ∗ 10−t+1
=
(
0, 2282 ∗ 10−3 ∗ 0, 1753 ∗ 10
5
(0, 1753 + 0, 2118) ∗ 105 + 0, 9447 ∗ 10
−4 ∗ 0, 2118 ∗ 10
5
(0, 1753 + 0, 2118) ∗ 105
)
+
1
2 ∗ 10−3
ERx+y =
(
0, 2282 ∗ 10−3 ∗ 0, 1753 ∗ 10
5
0, 3871 ∗ 105 + 0, 9447 ∗ 10
−4 ∗ 0, 2118 ∗ 10
5
0, 3871 ∗ 105
)
+ 0, 0005
16
ERx+y = (0, 1033 ∗ 10−3 + 0, 5283 ∗ 10−4) + 0, 0005 = (0, 1561 + 0, 5) ∗ 10−3
ERx+y = 0, 6561 ∗ 10−3
O resultado final da operac¸a˜o e´ dado por:
(x+ y)/z = (0, 3871 ∗ 105)/(0, 7590 ∗ 105) = 0, 5100 ∗ 100
O ca´lculo do erro relativo final de toda expressa˜o e´ calculado da seguinte forma:
ER(x+y)/z = ERx+y − ERz + 12 ∗ 10−t+1
ER(x+y)/z = 0, 6561 ∗ 10−3 − 0, 5270 ∗ 10−4 + 0, 5 ∗ 10−3 = 0, 1103 ∗ 10−2
7 Considerac¸o˜es Finais
O objetivo deste documento foi apenas introduzir alguns aspectos sobre erros nume´ricos.
E´ poss´ıvel verificar que mesmo com o avanc¸o na tecnologia de construc¸a˜o de computadores e
ma´quinas digitais, os resultados finais podem sempre ser influenciados por erros como os de
arredondamento e restric¸o˜es do armazenamento de nu´meros. Como leitura adicional recomenda-
se realizar uma busca na Internet por falhas e acidentes causados por erros nume´ricos. Sugesta˜o
de pesquisa:disasters caused by numerical errors.
Refereˆncias
[1] S. C. Chapra and R. P Canale. Me´todos Nume´ricos para Engenharia. Pearson, 2008.
[2] N. B. Franco. Ca´lculo Nume´rico. Pearson, 2006.
[3] M. A. G . Ruggiero and V. L. R. Lopes. Ca´lculo Nume´rico - Aspectos Teo´ricos e
Computacionais. Pearson, 2006.
17
	Introdução
	Representação dos Números
	Decomposição de números
	Conversão de números entre bases
	Binário para decimal
	Decimal para binário
	Notação de Ponto Flutuante
	Representação de Números em Ponto Flutuante
	Aritmética de Números em Ponto Flutuante
	Erros na representação dos Números
	Operações Aritméticas em Ponto Flutuante
	Algarismos Significativos
	Análise de Erros
	Erros Absolutos e Relativos
	Erros de Cancelamento
	Erros de Arredondamento e Truncamento em um Sistema Ponto Flutuante
	Propagação dos Erros
	Considerações Finais
	Referências

Outros materiais