Você está na página 1de 62

Representacao de Numeros e Nocoes Basicas de Erro

Prof. Rafael Alves Bonfim de Queiroz


rafael.bonfim@ice.ufjf.br

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 1 / 62
Conteudo

1 Sistema de numeracao

2 Conversao de sistema de numeracao


N
umero inteiro
N
umero real

3 Representacao de n
umeros inteiros no computador

4 Representacao de n
umeros reais no computador

5 Formato ponto flutuante IEEE 754

6 Nocoes basicas sobre erros

7 Referencias

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 2 / 62
Sistema de numerac
ao

Sistema de numeracao

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 3 / 62
Sistema de numerac
ao

Sistema Decimal
No dia a dia usamos n
umeros baseados no sistema decimal.
O n
umero 257, por exemplo, pode ser escrito como
257 = 2 100 + 5 10 + 7 1
= 2 102 + 5 101 + 7 100
Chamamos de 10 de base deste sistema (decimal). Qualquer n
umero
inteiro pode ser expresso por um polin
omio na base 10 com
coeficientes entre 0 e 9.
Usaremos a notacao
N = (an an1 . . . a0 )10
= an 10n + an1 10n1 + . . . + a0 100
para representar qualquer inteiro no sistema decimal, onde os
coeficientes sao tais que 0 ai 9.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 4 / 62
Sistema de numerac
ao

Sistema Binario

No passado outras civilizac


oes usaram sistemas de numeracao com
bases diferentes como 12, 20 e 60.
Nos computadores modernos, os componentes eletricos possuem
apenas dois estados on e off. Portanto e mais conveniente representar
umeros no computador usando o sistema binario, cuja base e 2.
n
Neste sistema um n
umero nao-negativo e representado por

N = (an an1 . . . a0 )2
= an 2n + an1 2n1 + . . . + a0 20

com ak assumindo os valores 0 ou 1.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 5 / 62
Sistema de numerac
ao

Sistema Hexadecimal
O sistema hexadecimal usa base 16 e portanto temos 16 dgitos
diferentes.
As vezes programadores usam o sistema hexadecimal pois o sistema
binario pode ser cansativo e longo para representar algum valor.
Exemplo:
(1234)16 = 1 163 + 2 162 + 3 161 + 4 160
= 4096 + 512 + 48 + 4
A representacao hexadecimal usa as letras de A ate F para os seis
dgitos adicionais (10, 11, 12, 13, 14, 15). Outros exemplos:
(234)16 (BEEF )16 (DEAD)16 (0AFB)16
A conversao entre os sistemas binario e hexadecimal e simples, uma
vez que trabalhamos com grupos de 4 bits para cada dgito do
sistema hexadecimal.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 6 / 62
Convers
ao de sistema de numerac
ao N
umero inteiro

Sistema Binario para Hexadecimal

Binario Hexadecimal Binario Hexadecimal


0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 7 / 62
Convers
ao de sistema de numerac
ao N
umero inteiro

Conversao binario para decimal

Exemplo:

(11)2 = 1 21 + 1 20
=2+1=3

(1101)2 = 1 23 + 1 22 + 0 21 + 1 20
= 8 + 4 + 0 + 1 = 13

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 8 / 62
Convers
ao de sistema de numerac
ao N
umero inteiro

Conversao decimal para binario


O procedimento e dividir o n
umero por 2, a seguir continuar dividindo
o quociente por 2, ate que o quociente seja igual a 0. O numero na
base 2 e obtido tomando-se o resto das divisoes anteriores.
Exemplo
Converter (13)10 para binario.

13 2 = 6, resto=1
6 2 = 3, resto=0
3 2 = 1, resto=1
1 2 = 0, resto=1

(13)10 = (1101)2

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 9 / 62
Convers
ao de sistema de numerac
ao N
umero real

Parte fracionaria de um numero real

Se x e um n
umero real positivo, sua parte integral xi e o maior inteiro
menor ou igual a x, enquanto

xf = x xi

e a sua parte fracionaria.


A parte fracionaria sempre pode ser escrita como uma fracao decimal

X
xf = bk 10k
k=1

onde cada bk e um inteiro nao-negativo menor que 10.


Se bk = 0 para todo k maior do que algum inteiro, dizemos entao que
a fracao termina. Caso contrario, dizemos que a fracao n
ao termina.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 10 / 62
Convers
ao de sistema de numerac
ao N
umero real

Exemplos: parte fracionaria de um numero real

Exemplos

1
= 0.25 = 2 101 + 5 102 (termina)
4
1
= 0.333 . . . = 3 101 + 3 102 + 3 103 (nao termina)
3
Se a parte integral de x e um inteiro no sistema decimal da forma

xi = (an an1 . . . a0 )10

enquanto a parte fracionaria e dada por (1), e comum escrever

x = (an an1 . . . a0 b1 b2 b3 . . .)10

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 11 / 62
Convers
ao de sistema de numerac
ao N
umero real

Conversao de um numero real para binario


De forma analoga para o sistema binario podemos escrever

X
xf = bk 2k , xi = (an an1 . . . a0 )2
k=1

entao x = (an an1 . . . a0 b1 b2 b2 . . .)2 .


A fracao binaria (b1 b2 b2 . . .)2 para um dado xf entre 0 e 1 pode ser
calculada da seguinte forma: dado x entre 0 e 1, gere b1 , b2 , b3
fazendo:
c0 = x
b1 = (2 c0 )i , c1 = (2 c0 )f
b2 = (2 c1 )i , c2 = (2 c1 )f
b3 = (2 c2 )i , c3 = (2 c2 )f , ...
onde (.)i representa a parte integral e (.)f a parte fracionaria do
n
umero.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 12 / 62
Convers
ao de sistema de numerac
ao N
umero real

Exemplo 1
Qual a representacao binaria de (0.625)10 ?

Solucao do Exemplo

2 0.625 = 1.25 b1 = 1
2 0.25 = 0.50 b2 = 0
2 0.5 = 1.00 b3 = 1
2 0.0 = 0.00 b4 = b5 = . . . = 0

Portanto (0.625)10 = (0.101)2 .

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 13 / 62
Convers
ao de sistema de numerac
ao N
umero real

Exemplo 2
Qual a representacao binaria de (0.1)10 ?

Solucao do Exemplo 2
Temos x = 0.1.

2 0.1 = 0.2 b1 = 0
2 0.2 = 0.4 b2 = 0
2 0.4 = 0.8 b3 = 0
2 0.8 = 1.6 b4 = 1
2 0.6 = 1.2 b5 = 1
2 0.2 = 0.4 b6 = 0
2 0.4 = 0.8 ...

Portanto (0.1)10 = (0.000110011 . . .)2 = (0.00011)2 .

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 14 / 62
Convers
ao de sistema de numerac
ao N
umero real

Conversao da base 2 para a base 10

Exemplo
Converter da base 2 para a base 10.

(11.0101)2 = 1 20 + 1 21 + 0 21 + 1 22 + 0 23 + 1 24
= (3.3125)10

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 15 / 62
Representac
ao de n
umeros inteiros no computador

Representacao de n
umeros inteiros no computador

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 16 / 62
Representac
ao de n
umeros inteiros no computador

Representacao de numeros inteiros

Inteiros sao armazenados usando uma palavra de 32 bits no computador.


Se estamos interessados em n
umeros n
ao negativos, a representacao
e simples:
(71)10 00000000 00000000 00000000 01000111

Os valores que podemos representar vao de 0 a 232 1.


Para numeros inteiros com sinal, uma possibilidade, e reservar 1 bit
para indicar qual o sinal do n
umero. Exemplo com palavra de 8 bits
para simplificar.
(13)10 0 0 0 0 1 1 0 1
bits 7 6 5 4 3 2 1 0
Bit de sinal:
0 positivo
1 negativo

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 17 / 62
Representac
ao de n
umeros inteiros no computador

Complemento a dois

Existe uma forma de representacao mais esperta para n


umeros
inteiros com sinal chamada de complemento a dois.
O bit mais significativo ainda e usado para o sinal.
Um n umero x positivo, tal que 0 x 231 1 e representado
normalmente pela representacao binaria deste n
umero, com bit de
sinal 0.
umero negativo y , onde 1 y 231 e
Entretanto, um n
armazenado como a representacao binaria do inteiro positivo:

232 y

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 18 / 62
Representac
ao de n
umeros inteiros no computador

Exemplo: Complemento a dois


Para ilustrar considere uma palavra de 4 bits. Podemos representar os
seguintes numeros de 0 a 7 e de -8 a -1. Veja a tabela.

bits n
umero bits n
umero 2B y
0000 0 1000 -8 24 8=8
0001 1 1001 -7 24 7 = 9
0010 2 1010 -6 24 6 = 10
0011 3 1011 -5 24 5 = 11
0100 4 1100 -4 24 4 = 12
0101 5 1101 -3 24 3 = 13
0110 6 1110 -2 24 2 = 14
0111 7 1111 -1 24 1 = 15

Para negar um numero em complemento a dois, use o seguinte algoritmo:


umero (0 1 e 1 0).
1 Inverta todos os bits do n

2 Some 1 ao resultado invertido.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 19 / 62
Representac
ao de n
umeros inteiros no computador

Exemplo: Complemento a dois


Exemplo
Para simplificar, considere uma palavra de 4 bits. Seja x = 2 e y = 2.
Qual a representacao em complemento a dois de y ?

Solucao do exemplo
Temos que (2)10 = (0010)2 . Pelos passos do algoritmo temos:
1 Invertendo os bits 0010 1101
2 Somando 1
1101
+0001
1110

Ou seja, y = 2 e representado por 24 2 = 16 2 = 14, cuja


representacao binaria e (14)10 = (1110)2 .
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 20 / 62
Representac
ao de n
umeros reais no computador

Representacao de n
umeros reais no computador

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 21 / 62
Representac
ao de n
umeros reais no computador

Representacao de numeros reais

Numeros reais sao armazenados usando o sistema binario e a


representacao destes n
umeros e finita.
Por exemplo, os n
umeros

= 3.1415 . . .
e = 2.71828 . . .

nao podem ser representados perfeitamente no computador. O que e


armazenado entao e uma versao aproximada destes numeros.
De forma geral, existem duas possibilidades para essa representacao:
Representacao em Ponto Fixo
Representacao em Ponto Flutuante (*)

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 22 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto fixo

Neste esquema de representacao, a palavra do computador de usualmente


32 bits e dividida em 3 campos:
1 bit para o sinal
campo de bits para a parte integral
campo de bits para a parte fracionaria

Exemplo
Sistema com 1 bit para sinal, 15 bits para parte integral e 16 bits para a
parte fracionaria. Neste sistema (11/2)10 = (5.5)10 e representado da
seguinte forma:

0 000000000000101 1000000000000000

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 23 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

A representacao de ponto flutuante e baseada na notacao cientfica.


Nessa notacao um numero real nao-zero e expresso por

x = d e

onde e a base do sistema de numeracao, d e a mantissa e e e o


expoente.
A mantissa e um n
umero da forma

(0 d1 d2 d3 . . . dt )

representada por t dgitos, onde 0 di ( 1), para i = 1, . . . , t


com d1 6= 0. O expoente e esta no intervalo [L, U]. Ao exigir que
d1 6= 0, dizemos que o n umero esta normalizado.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 24 / 62
Representac
ao de n
umeros reais no computador

Sistema de ponto flutuante

Iremos denotar um sistema de ponto flutuante por

F (, t, L, U)

onde
e a base do sistema
t n
umero de dgitos da mantissa
L menor valor para o expoente
U maior valor para o expoente

Em qualquer maquina apenas um subconjunto dos n umeros reais e


representado exatamente, e portanto nesse processo a representacao de
um numero real sera feita com arredondamento ou truncamento.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 25 / 62
Representac
ao de n
umeros reais no computador

Arredondamento em ponto flutuante

Imagine que so dispomos de quatro dgitos para representar os


numeros em uma maquina. Como seria a melhor forma de representar
15
7 = 2.142857 = x? Usando 2.142 ou talvez 2.143?
Se calcularmos o erro vemos que

|2.142 x| = 0.000857
|2.143 x| = 0.000143

Como o erro e menor para 2.143 conclumos que essa e a melhor


forma de representar esse n umero. Este numero foi arredondado.
O que significa arredondar um n umero?
Para arredondar um n umero na base 10, devemos apenas observar o
primeiro dgito a ser descartado. Se este dgito e menor que 5
deixamos os dgitos inalterados; e se e maior ou igual a 5 devemos
somar 1 ao u ltimo dgito remanescente.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 26 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Exemplo
Considere o seguinte sistema: F (10, 3, 3, 3). Neste sistema o n
umero
12.5 e representado por
+0.125 102
O n
umero de Euler
e = 2.718281 . . .
e representado por

+ 0.271 101 (com truncamento)


1
+ 0.272 10 (com arredondamento)

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 27 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Exemplo
Considere o seguinte sistema: F (10, 3, 5, 5). Os n
umeros
representados neste sistema terao a forma

(0.d1 d2 d3 ) 10e , 0 di 9, d1 6= 0, e [5, 5]

O menor n
umero em valor absoluto representado nessa maquina e

m = 0.100 105 = 101 105 = 106

O maior n
umero em valor absoluto e

M = 0.999 105 = 99900

De forma geral, o menor e o maior n


umero sao dados por
m = L1 , M = U (1 t )
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 28 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Seja um sistema F (, t, L, U) onde o menor e maior n


umero sao
denotados por m e M, respectivamente. Dado um n umero real x,
entao temos as seguintes situac
oes:
1 m |x| M
O n
umero pode ser representado no sistema.
Exemplo: 235.89 = 0.23589 103 . No sistema F (10, 3, 3, 3) temos

0.235 103 com truncamento


0.236 103 com arredondamento
2 |x| m
O numero nao pode ser representado no sistema. Neste caso dizemos
que ocorreu underflow. Ex: 0.517 108 .
3 |x| M
O numero nao pode ser representado no sistema. Neste caso dizemos
que ocorreu overflow. Ex: 0.725 109 .

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 29 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Exemplo
Considere o sistema F (2, 3, 3, 3). Para simplificar, considere uma palavra
com 7 bits, onde temos 1 bit para o sinal do n umero, 3 bits para o
expoente (incluindo seu sinal) e 3 bits para a mantissa. Vamos representar
xmin = (0.100)2 23 .

sinal do n
umero 0
sinal do expoente 1
expoente (3)10 = (11)2
mantissa (0.100)2

Sendo assim temos a seguinte representacao para (0.0625)10 neste sistema

0 111 100

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 30 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Exemplo
Considere o sistema F (2, 3, 1, 2). Quantos e quais n
umeros podem ser
representados neste sistema?

Solucao:
umeros sao da forma: 0.d1 d2 d3 2e
Neste sistema os n
2 possibilidades para o sinal
(1 2 2) = 4 possibilidades para a mantissa
4 possibilidades para o expoente (1, 0, 1, 2)
Portanto, temos 2 4 4 = 32, e considerando que o zero tambem faz parte
do sistema, conclumos que podemos representar 33 n umeros distintos.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 31 / 62
Representac
ao de n
umeros reais no computador

Representacao em ponto flutuante

Continuacao da solucao
Para responder quais sao os numeros, notemos que as possveis formas da
mantissa sao 0.100, 0.101, 0.110 e 0.111 e as formas do expoente sao 21 ,
20 , 21 e 22 . Assim obtemos:
(0.100)2 21 = (0.25)10 (0.101)2 21 = (0.3125)10
(0.100)2 20 = (0.5)10 (0.101)2 20 = (0.625)10
(0.100)2 21 = (1.0)10 (0.101)2 21 = (1.25)10
(0.100)2 22 = (2.0)10 (0.101)2 22 = (2.5)10
(0.110)2 21 = (0.375)10 (0.111)2 21 = (0.4375)10
(0.110)2 20 = (0.75)10 (0.111)2 20 = (0.875)10
(0.110)2 21 = (1.5)10 (0.111)2 21 = (1.75)10
(0.110)2 22 = (3.0)10 (0.111)2 22 = (3.5)10

O zero e representado de uma forma especial: todos os dgitos di da


mantissa e do expoente sao nulos.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 32 / 62
Representac
ao de n
umeros reais no computador

Formato ponto flutuante IEEE 754

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 33 / 62
Formato ponto flutuante IEEE 754

Ponto flutuante IEEE 754

O padrao usa o sistema binario e dois formatos para representacao de


umeros podem ser adotados: precisao simples e precisao dupla.
n
Neste formato um n umero e representado de forma normalizada por

1.d1 d2 . . . dn 2e

Em precisao simples um n
umero real e representado por 32 bits,
sendo que:
1 bit para o sinal
8 bits para o expoente
23 bits para a mantissa
formato binario
e1 e2 . . . e8 d1 d2 . . . d23
O primeiro bit `a esquerda do ponto binario, isto e d0 = 1, e chamado
de bit escondido (hidden bit).
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 34 / 62
Formato ponto flutuante IEEE 754

Expoente

Nesse formato, o expoente nao e representado como um inteiro via


complemento a dois. Os oito bits do expoente armazenam o n umero
s = e + 127.
Exemplos:

e=1 s = 1 + 127 = (128)10 = (10000000)2


e = 3 s = 3 + 127 = (124)10 = (01111100)2
e = 52 s = 52 + 127 = (179)10 = (10110011)2

Em particular as sequencias de bits (00000000) e (11111111) para o


expoente, sao usadas para representar, respectivamente, o zero e
infinito ou ocorrencia de erro, que e denotado por NaN (Not a
Number ).

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 35 / 62
Formato ponto flutuante IEEE 754

Mantissa

Como o sistema e normalizado temos d0 6= 0. Dado que a base e


dois, a u
nica possibilidade para o primeiro dgito sera sempre igual a
1, e portanto este bit nao precisa ser armazenado, por isso e chamado
de bit escondido.
Com o uso desta normalizacao temos um ganho na precisao, pois a
mantissa passa a ser representada com 24 bits (23 + 1 bit escondido).
Exemplo: (0.125)10 = (0.001)2 = 1.0 23 e armazenado como:
0 01111100 0000000 00000000 00000000
A mantissa so possui um dgito significativo, que e justamente o bit
escondido, e portanto os demais 23 bits sao representados com 0.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 36 / 62
Formato ponto flutuante IEEE 754

Ponto flutuante IEEE 754

O zero e representado com zeros para expoente e mantissa


0 00000000 0000000 00000000 00000000
Os valores + e sao representados por
0 11111111 0000000 00000000 00000000
1 11111111 0000000 00000000 00000000
Se a sequencia de bits para o expoente for composta por todos dgitos
iguais a um e a da mantissa for nao nula, isto e:
1 11111111 xxxxxxx xxxxxxxx xxxxxxxx
temos a ocorrencia de NaN: Not a Number, que representam
expressoes invalidas como:

0 , 0/0, /,

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 37 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas em ponto flutuante

Adic
ao/subtrac
ao: quando dois n umeros em ponto flutuante sao
somados (ou subtrados), e preciso alinhar as casas decimais do
numero de menor expoente para a direita ate que os expoentes
fiquem iguais.
Multiplicacao/divis
ao: nessa operacao realizamos o produto (ou
divisao) das mantissas e o expoente final da base e obtido, somando
(subtraindo) os expoentes de cada parcela.
Os resultados devem ser truncados ou arredondados.
Truncamento ou arredondamento depende da maquina.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 38 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas

Exemplo: Adicao
Adicionar 4.32 e 0.064 em uma maquina com mantissa t = 2 e base 10.

Solucao do Exemplo

4.32 + 0.064 = 0.43 101 + 0.64 101 = 0.4300 101


+ 0.0064 101
= 0.4364 101

Truncamento 0.43 101


Arredondamento 0.44 101

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 39 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas

Exemplo: Subtracao
Subtrair 371 de 372 em uma maquina com mantissa t = 2 e base 10.

Solucao do Exemplo

372 371 = 0.37 103 + 0.37 103 = 0.37 103


0.37 103
= 0.00 103

A subtracao deu 0 em vez de 1. Problema na subtracao de dois n


umeros
aproximadamente iguais.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 40 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas

Exemplo: Multiplicacao
Multiplicar 1234 por 0.016 em uma maquina com mantissa t = 2 e base
10.

Solucao do Exemplo

1234 0.016 = 0.12 104 0.16 101 = 0.12 104


0.16 101
= 0.0192 103
= 0.19 102

Neste caso usando arredondamento ou truncamento, o resultado e 19, em


vez de 19.744 que e o resultado exato.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 41 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas

Exemplo: Divisao
Dividir 0.00183 por 492 em uma maquina com mantissa t = 2 e base 10.

Solucao do Exemplo

0.00183 492 = 0.18 102 0.49 103 = 0.18 102


0.49 103
= 0.3673 105

Arredondamento 0.37 105


Truncamento 0.36 105

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 42 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas em ponto flutuante


importante observar que algumas propriedades aritmeticas como
E

associatividade: (a + b) + c = a + (b + c)
distributividade: a(b + c) = ab + ac

nao sao validas em sistemas de ponto flutuante. Para os exemplos a


seguir, considere um sistema com base e tres dgitos na mantissa, ou
seja, F (10, 3, L, U). Considere ainda que o sistema trabalha com
arredondamento apos cada uma das operac oes efetuadas.
Exemplo
a) (11.4 + 3.18) + 5.05 e 11.4 + (3.18 + 5.05)
b) 5.55(4.45 4.35) e 5.55 4.45 5.55 4.35

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 43 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas em ponto flutuante

Solucao do Exemplo
a) (11.4 + 3.18) + 5.05 a) 11.4 + (3.18 + 5.05)

0.1140 102 0.318 101


+ 0.0318 102 + 0.505 101
= 0.1458 102 = 0.823 101
= 0.146 102 (arr.)

0.1460 102 0.0823 102


+ 0.0505 102 + 0.1140 102
= 0.1965 102 = 0.1963 102
= 0.197 102 (arr.) = 0.196 102 (arr.)
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 44 / 62
Formato ponto flutuante IEEE 754

Operacoes aritmeticas em ponto flutuante

Solucao do Exemplo (cont.)


b) 5.55 4.45 5.55 4.35

0.555 101
b) 5.55(4.45 4.35) 0.445 101
= 0.246975 102
0.445 101 = 0.247 102
1
0.435 10
0.555 101
= 0.010 101
0.435 101
= 0.241425 102
1
0.555 10 = 0.241 102
0
0.100 10
0.247 102
= 0.055500 101 0.241 102
= 0.555 = 0.006 102 = 0.6
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 45 / 62
Noc
oes b
asicas sobre erros

Noc
oes basicas sobre erros

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 46 / 62
Noc
oes b
asicas sobre erros

Erro absoluto
Se x e uma aproximacao de x, o erro absoluto e definido por

x ) = x x
EA(

Exemplo
Seja x = 1428.756. Em uma maquina com mantissa t = 4, usando
arredondamento e truncamento, respectivamente, temos

xt = 0.1428 104 EA(xt ) = 0.756 100


xa = 0.1429 104 EA(xa ) = 0.244 100

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 47 / 62
Noc
oes b
asicas sobre erros

Erro relativo

Erro relativo
O erro relativo e definido por

x x EA( x)
ER(
x) = =
x x
dado que x 6= 0.
Exemplos:
x1 = 1000.5, x1 = 1000.6
x2 = 10.5, x2 = 10.6 EA(xi ) = 0.1, i = 1, 2

0.1
ER(x1 ) = 0.00009994 = 0.9994 104
1000.6
0.1
ER(x2 ) = 0.009433 = 0.9433 102
10.6
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 48 / 62
Noc
oes b
asicas sobre erros

Efeitos numericos

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 49 / 62
Noc
oes b
asicas sobre erros

Erros

Alem dos erros causados pela representacao no computador e pelas


operacoes aritmeticas, existem certos efeitos numericos que
contribuem para aumentar os erros introduzidos.
A seguir iremos estudar alguns casos importantes como a adicao ou
subtracao entre um n
umero grande e um pequeno, subtracao de dois
n
umeros quase iguais, propagacao do erro, etc.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 50 / 62
Noc
oes b
asicas sobre erros

Exemplo: Somar ou subtrair um numero pequeno e um


grande

Para exemplificar considere um sistema F (10, 4, L, U).


Exemplo
Somar 0.1 e 5000.

0.1 + 5000 = 0.1000 100 + 0.5000 104


= 0.00001 104
+ 0.50000 104
= 0.50001 104

Usando arredondamento (ou truncamento), obtemos 0.5 104 .

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 51 / 62
Noc
oes b
asicas sobre erros

Cancelamento

Subtraimos dois n
umeros quase iguais, ou quando somamos n
umeros de
sinais opostos mas de magnitudes semelhantes
Exemplo

Calcular 37 36 em uma maquina F (10, 4, L, U) usando
arredondamento.

Solucao do Exemplo
Para efeitos de comparacao, apresentamos a resposta exata aqui:

37 36 = 6.08276253 6 = 0.08276253.

Nessa maquina temos



37 = 6.08276253 0.6083 101

36 = 6.0 0.6000 101
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 52 / 62
Noc
oes b
asicas sobre erros

Cancelamento

Solucao do Exemplo - (cont.)


Efetuando a subtracao temos

0.6083 101
0.6000 101
= 0.0083 101 = 0.8300 101

A resposta exata e 0.8277 101 perda de dgitos significativos!


possvel obter um resultado mais preciso? Sim, basta considerar que
E

( x + y) x y
x y= x y =
x+ y x+ y

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 53 / 62
Noc
oes b
asicas sobre erros

Cancelamento

Solucao do Exemplo - (cont.)


Portanto para
37 36
temos
x y 37 36 1
= =
x+ y 37 + 36 0.6083 10 + 0.6000 101
1

1
=
0.1208 102
= 0.08278145 = 0.8278 101

que e um resultado mais preciso que o anterior.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 54 / 62
Noc
oes b
asicas sobre erros

Propagacao do erro

Problemas numericos nao ocorrem apenas quando dois n umeros quase


iguais sao subtrados. Tambem ocorrem no calculo de uma soma, quando
uma soma parcial e muito grande se comparada com o resultado final.
Considere que:
X n
s= ak
k=1

seja a soma a ser computada e que os ak podem ser positivos ou negativos


e de diferentes magnitudes. O calculo e usualmente feito da seguinte
forma:
s1 = ak , sk = sk1 + ak , k = 2, 3, . . . , n
tal que s = sn .

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 55 / 62
Noc
oes b
asicas sobre erros

Propagacao do erro

Exemplo
Considere uma maquina F (10, 4, L, U) com truncamento. Vamos efetuar a
seguinte operacao:
4
X
S= (xi + yi ) com xi = 0.46709, e yi = 3.5678
i=1

Para i = 1, temos

(x1 + y1 ) = 0.4034 101

E o erro absoluto e
= |4.03569 4.034| = 0.00169
EA(S)

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 56 / 62
Noc
oes b
asicas sobre erros

Propagacao do erro
Exemplo (cont.)
Para i = 2, temos
(x1 + y1 ) + (x2 + y2 ) = 0.8068 101
EA(S) = |8.07138 8.068| = 0.00338

Para i = 3, temos
(x1 + y1 ) + (x2 + y2 ) + (x3 + y3 ) = 0.1210 102
= |12.10707 12.10| = 0.00707
EA(S)

Para i = 4, temos
(x1 + y1 ) + (x2 + y2 ) + (x3 + y3 ) + (x4 + y4 ) = 0.1613 102
= |16.14267 16.13| = 0.01276
EA(S)

De onde pode-se observar que o erro absoluto aumenta `a medida em que


as operacoes aritmeticas sao realizadas.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 57 / 62
Noc
oes b
asicas sobre erros

A implementacao incorreta ou o uso incorreto de algoritmos e/ou


softwares cientficos ja foi responsavel por alguns desastres reais.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 58 / 62
Noc
oes b
asicas sobre erros

Patriot missile failure - Guerra do Golfo (1991)

O mssil Scud acertou o


acampamento americano, matou 28
soldados e feriu centenas.
Relat
orio tecnico apontou uma falha
no software.
Palavra do computador 24 bits.
Tempo era medido em decimos de
segundo (1/10).
O valor (1/10) ao ser representado
Uma bateria de msseis Patriot em binario nao termina.
(Phased Array TRacking
Acumulo do erro no software apos
Intercept Of Target) americano,
longo tempo do sistema rodando
falhou ao rastrear e interceptar
levou a falha.
um mssil Scud do Iraque.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 59 / 62
Noc
oes b
asicas sobre erros

Ariane 5

Foguete da European Space Agency


explode 40s ap
os o lancamento.
Milh
oes de dolares foram investidos no
seu desenvolvimento e equipamento.
Relatorio acusou um erro do programa
no sistema de referencia inercial.
Problema: n umero de 64 bits de ponto
flutuante era convertido em um inteiro
de 16 bits com sinal. Falha na
conversao para n
umeros maiores que
32767, que e o maior inteiro
representavel com 16 bits.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 60 / 62
Noc
oes b
asicas sobre erros

Sleipnir offshore

Plataforma de petroleo Sleipnir


afunda.
Ap os o acidente a empresa da
plataforma, Statoil, uma
empresa norueguesa solicita a
empresa SINTEF um relatorio
tecnico.
Falha em uma parede,
resultando em uma rachadura e
vazamento.
Motivo: combinacao de erros no
programa de analise de
elementos finitos, que
subestimou a tensao na parede.
Rafael Bonfim (DCC-ICE-UFJF) Curso de C
alculo Num
erico UFJF 61 / 62
Refer
encias

Referencias

Slides das aulas do Prof. Dr. Bernardo Martins Rocha,


DCC-ICE-UFJF.
Calculo Numerico, Neide B. Franco, Pearson, 2007.

Rafael Bonfim (DCC-ICE-UFJF) Curso de C


alculo Num
erico UFJF 62 / 62

Você também pode gostar