Buscar

cn_representacao_ponto_flutuante

Prévia do material em texto

Ca´lculo Nume´rico – Representac¸a˜o e Erros
Nume´ricos
Joa˜o Paulo Gois
Universidade Federal do ABC
Adaptac¸a˜o
Prof. Harlen C. Batagelo (UFABC), do livro Ca´lculo Nume´rico (N.B. Franco, 2006) e dos Slides da Marina Andret-
ta/Franklina Toledo (ICMC-USP)
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
A aritme´tica usada em nosso mundo matema´tico tradicional
diferente da usada em computadores.
Por exemplo, operamos com nu´meros irracionais e frac¸o˜es.
Por exemplo 1 = pi√
pi
2 .
Supomos que temos precisa˜o infinita;
Contudo representac¸o˜es no computador e´ finita, o que limita a
representac¸a˜o de nu´meros racionais e irracionais.
Na pra´tica substitu´ımos um nu´mero que na˜o e´ representa´vel
no computador por um pro´ximo dele.
Resolvendo Problemas no Computador
Considere o seguinte co´digo em Matlab:
1 x = 0;
2 for i = 1:1000000
3 x = x + exp(1)/pi;
4 end
5 format long;
6 display(x);
7 y = 1000000* exp(1)/pi;
8 display(y);
9 dif = abs(x - y);
10 display(dif);
Aparemtemente ambos os ca´lculos de x e y fazem a mesma coisa,
contudo as respostas no computador sa˜o diferentes.
Sa´ıda
x =
8.652559794435985e+05
y =
8.652559794322652e+05
dif =
1.133338082581758e-05
Resolvendo Problemas no Computador
Considere o seguinte co´digo em Matlab:
1 x = 0;
2 for i = 1:1000000
3 x = x + 1/( sqrt (88139) - sqrt (88137));
4 end
5 format long;
6 display(x);
7 y = 1000000*(1/( sqrt (88139) - sqrt (88137) ));
8 display(y);
9 dif = abs(x - y);
10 display(dif);
Aparemtemente ambos os ca´lculos de x e y fazem a mesma coisa,
contudo as respostas no computador sa˜o diferentes.
Sa´ıda
x =
2.968804473078792e+08
y =
2.968804473130453e+08
dif =
0.005166113376617
Representac¸a˜o de nu´meros inteiros
Todo computador trabalha internamente com uma base fixa
β, onde β e´ um inteiro ≥ 2, geralmente escolhido como uma
poteˆncia de 2.
Assim, dado um nu´mero inteiro n 6= 0, ele possui uma u´nica
representac¸a˜o:
n = ±(nk . . . n1n0) = ±(n0β0 + n1β1 + . . .+ nkβk),
onde os ni (i = 0, 1, . . . , k) sa˜o inteiros satisfazendo
0 ≤ ni < β e nk 6= 0.
Representac¸a˜o de nu´meros inteiros
Todo computador trabalha internamente com uma base fixa
β, onde β e´ um inteiro ≥ 2, geralmente escolhido como uma
poteˆncia de 2.
Assim, dado um nu´mero inteiro n 6= 0, ele possui uma u´nica
representac¸a˜o:
n = ±(nk . . . n1n0) = ±(n0β0 + n1β1 + . . .+ nkβk),
onde os ni (i = 0, 1, . . . , k) sa˜o inteiros satisfazendo
0 ≤ ni < β e nk 6= 0.
Representac¸a˜o de nu´meros inteiros
Todo computador trabalha internamente com uma base fixa
β, onde β e´ um inteiro ≥ 2, geralmente escolhido como uma
poteˆncia de 2.
Assim, dado um nu´mero inteiro n 6= 0, ele possui uma u´nica
representac¸a˜o:
n = ±(nk . . . n1n0) = ±(n0β0 + n1β1 + . . .+ nkβk),
onde os ni (i = 0, 1, . . . , k) sa˜o inteiros satisfazendo
0 ≤ ni < β e nk 6= 0.
Exemplo 1
Na base β = 10, o nu´mero 1997 e´ representado por
1997 = 7× 100 + 9× 101 + 9× 102 + 1× 103,
e e´ armazenado como n3n2n1n0.
Exerc´ıcio 1.1
Represente os seguintes nu´meros inteiros nas bases dadas:
(a) 28 em β = 10. (d) 1 em β = 2.
(b) 306 em β = 10. (e) 2 em β = 2.
(c) 9 em β = 3. (f) 3 em β = 2.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros.
/ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel.
/ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o de nu´meros reais
Representac¸a˜o em ponto fixo (fixed point):
, Ca´lculos muito ra´pidos; mesmos circuitos utilizados para
nu´meros inteiros./ Pouco flex´ıvel.
Representac¸a˜o em ponto flutuante (floating point):
, Bastante flex´ıvel./ Ca´lculos mais lentos; requer circuitos especializados.
Representac¸a˜o em ponto fixo
Definic¸a˜o (ponto fixo)
Dado um nu´mero x 6= 0, ele e´ representadoem ponto fixo por:
x = ±
n∑
i=k
xiβ
−i,
onde k e n sa˜o inteiros satisfazendo k < n e, em geral, k ≤ 0,
n > 0, e os xi sa˜o inteiros satisfazendo 0 ≤ xi < β.
Exemplo 2
Na base β = 10, o nu´mero 1997,16 e´ representado por:
1997,16 =
2∑
i=−3
xiβ
−i
= 1× 103 + 9× 102 + 9× 101 + 7× 100 + 1× 10−1 + 6× 10−2
= 1× 1000 + 9× 100 + 9× 10 + 7× 1 + 1× 0, 1 + 6× 0, 01.
e e´ armazenado como x−3x−2x−1x0,x1x2.
Exerc´ıcio 2.1
Represente os seguintes nu´meros em notac¸a˜o de ponto fixo:
(a) 1,5 em β = 10 e n = 1. (c) 32,32 em β = 10 e n = 2.
(b) 32 em β = 10 e n = 2. (d) 300,123 em β = 10 e n = 1.
Representac¸a˜o em ponto flutuante
Definic¸a˜o (ponto flutuante)
Dado um x 6= 0, ele e´ representado em ponto flutuante por
x = ±d× βe,
onde β e´ a base, d e´ a mantissa (ou significando) e e e´ o expoente.
A mantissa e´ um nu´mero em ponto fixo, isto e´,
d =
t∑
i=1
diβ
−i,
tal que, se x 6= 0, enta˜o d1 6= 0. t e´ a quantidade de d´ıgitos
significativos, β−1 ≤ d < 1 e −m ≤ e ≤M .
Exemplo 3
Na base β = 10, o nu´mero 0,35 e´ representado por:
0,35 = (3× 10−1 + 5× 10−2)× 100
= 0,35× 100.
x = ±d× βe, d =
t∑
i=1
diβ
−i
Exemplo 4
Na base β = 10, o nu´mero −5,172 e´ representado por:
−5,172 = −(5× 10−1 + 1× 10−2 + 7× 10−3
+2× 10−4)× 101
= −0,5712× 101.
x = ±d× βe, d =
t∑
i=1
diβ
−i
Exemplo 5
Na base β = 10, o nu´mero 0,0123 e´ representado por:
0,0123 = (1× 10−1 + 2× 10−2 + 3× 10−3)× 10−1
= 0,123× 10−1.
x = ±d× βe, d =
t∑
i=1
diβ
−i
Exemplo 6
Na base β = 10, o nu´mero 5391,3 e´ representado por:
5391,3 = (5× 10−1 + 3× 10−2 + 9× 10−3
+1× 10−4 + 3× 10−5)× 104
= 0,53913× 104.
x = ±d× βe, d =
t∑
i=1
diβ
−i
Exemplo 7
Na base β = 10, o nu´mero 0,0003 e´ representado por:
0,0003 = (3× 10−1)× 10−3
= 0,3× 10−3.
x = ±d× βe, d =
t∑
i=1
diβ
−i
Definic¸a˜o [Sistema F (β, t,m,M)]
Para representarmos um sistema de nu´meros em ponto flutuante
na base β, com t d´ıgitos significativos e com limites do expoentes
m e M , usaremos a notac¸a˜o F (β, t,m,M).
Assim, um nu´mero em F (β, t,m,M) sera´ representado por
±0,d1d2 . . . dt × βe,
onde d1 6= 0 e −m ≤ e ≤M .
Exemplo 8
No sistema F (10, 3, 2, 2), os nu´meros sa˜o representados por
±0,d1d2d3 × 10e, onde − 2 ≤ e ≤ 2.
Os nu´meros dos exemplos anteriores sa˜o representados como
0,35 = 0,350× 100,
−5,172 = −0,517× 101,
0,0123 = 0,123× 10−1,
5391,3 = 0,539× 104 = overflow,
0,0003 = 0,300× 10−3 = underflow.
Exerc´ıcio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes nu´meros:
(a) 43,21. (d) 125,64.
(b) 5, 748. (e) 0,000034.
(c) −0,001352. (f) −1.
Exerc´ıcio 3.2
Represente no sistema F (10, 3, 1, 2) os nu´meros do exerc´ıcio
anterior. Neste caso, alguns nu´meros resultara˜o em erro de
underflow ou overflow. Se isso acontecer, explique o motivo.
Exerc´ıcio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes nu´meros:
(a) 43,21. (d) 125,64.
(b) 5, 748. (e) 0,000034.
(c) −0,001352. (f) −1.
Exerc´ıcio 3.2
Represente no sistema F (10, 3, 1, 2) os nu´meros do exerc´ıcio
anterior. Neste caso, alguns nu´meros resultara˜o em erro de
underflow ou overflow. Se isso acontecer, explique o motivo.
Mudanc¸a de base (β = 10)
A maioria dos computadores trabalha na base β, onde β e´ um
inteiro ≥ 2, e e´ normalmente escolhido como uma poteˆncia de
2.
Assim, um mesmo nu´mero pode ser representado em mais de
uma base.
Atrave´s de uma mudanc¸a de base, e´ poss´ıvel determinar a
representac¸a˜o em uma nova base.
Mudanc¸a de base (β = 10)
A maioria dos computadores trabalha na base β, onde β e´ um
inteiro ≥ 2, e e´ normalmente escolhido como uma poteˆncia de
2.
Assim, um mesmo nu´mero pode ser representado em mais de
uma base.
Atrave´s de uma mudanc¸a de base, e´ poss´ıvel determinar a
representac¸a˜o em uma nova base.
Mudanc¸a de base (β = 10)
A maioria dos computadores trabalha na base β, onde β e´ um
inteiro ≥ 2, e e´ normalmente escolhido como uma poteˆncia de
2.
Assim, um mesmo nu´mero pode ser representado em mais de
uma base.
Atrave´s de uma mudanc¸a de base, e´ poss´ıvel determinar a
representac¸a˜o em uma nova base.
Mudanc¸a de base (β = 10)
A maioria dos computadores trabalha na base β, onde β e´ um
inteiro ≥ 2, e e´ normalmente escolhido como uma poteˆncia de
2.
Assim, um mesmo nu´mero pode ser representado em mais de
uma base.
Atrave´s de uma mudanc¸a de base, e´ poss´ıvel determinar a
representac¸a˜o em uma nova base.
Exemplo 9
Converter 1101 que esta´ na base 2, para a base 10.
Neste caso, o procedimento e´ multiplicar cada algarismo do
nu´mero na base 2 por poteˆncias crescentes de 2, da direita para a
esquerda, e somar todas as parcelas. Desse modo,
1101 = 1× 20 + 0× 21 + 1× 22 + 1× 23 = 1 + 0 + 4 + 8 = 13.
Logo, (1101)2 = (13)10.
Exemplo 10
Converter 0,110 que esta´ na base 2, para a base 10.
Neste caso, o procedimento e´ multiplicar cada algarismo do
nu´mero na base 2, apo´s a v´ırgula, por poteˆncias decrescentes de 2,
da esquerda para a direita, e somar todas as parcelas. Desse modo,
0,110 = 1× 2−1 + 1× 2−2 + 0× 2−3 = 1
2
+
1
4
+ 0 = 0,75.
Logo, (0,110)2 = (0,75)10.
Exemplo 11
Converter 13 que esta´ na base 10, para a base 2.
Neste caso, o procedimento e´ dividir o nu´mero por 2. A seguir,
continuamos dividindo o quociente por 2, ate´ que o u´ltimo
quociente seja igual a 1. O nu´mero na base 2 sera´ enta˜o obtido
tomando-se o u´ltimo quociente e todos os restos das diviso˜es
anteriores. Assim,
13 2
1 6 2
0 3 2
1 1
Logo, (13)10 = (1101)2.
Exemplo 12
Converter 0,75 que esta´ na base 10, para a base 2.
Neste caso, o procedimento e´ multiplicar a parte decimal por 2. A
seguir, continuamos multiplicando por 2 a parte decimal do
resultado obtido. O nu´mero na base 2 sera´ enta˜o obtido
tomando-se a parte inteira do resultado de cada multiplicac¸a˜o.
Desse modo,
0,75× 2 = 1,50
0,50× 2 = 1,00
0,00× 2 = 0,00
Logo, (0,75)10 = (0,110)2.
Exemplo 13
Converter 3,8 que esta´ na base 10, para a base 2.
Neste caso, o procedimento e´ transformar a parte inteira, o que
nos fornece (3)10 = (11)2, e a parte decimal. Assim, obtemos
0,8× 2 = 1,6
0,6× 2 = 1,2
0,2× 2 = 0,4
0,4× 2 = 0,8
0,8× 2 = . . .
Logo, (3, 8)10 = (11,11001100 . . .)2. Portanto, o nu´mero (3,8)10
na˜o tem representac¸a˜o exata na base 2.
Exemplo 13
Converter 3,8 que esta´ na base 10, para a base 2.
Neste caso, o procedimento e´ transformar a parte inteira, o que
nos fornece (3)10 = (11)2, e a parte decimal. Assim, obtemos
0,8× 2 = 1,6
0,6× 2 = 1,2
0,2× 2 = 0,4
0,4× 2 = 0,8
0,8× 2 = . . .
Logo, (3, 8)10 = (11,11001100 . . .)2. Portanto, o nu´mero (3,8)10
na˜o tem representac¸a˜o exata na base 2.
Mudanc¸a de base (caso geral)
Vimos como mudar nu´meros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um nu´mero que esta´ numa dada base β1
em uma outra base β2, onde β1 6= β2 6= 10?
Neste caso, a regra e´ a seguinte:
Primeiro representamos o nu´mero que esta´ na base β1, na
base 10 e, a seguir, representamos esse nu´mero na base
β2.
Mudanc¸a de base (caso geral)
Vimos como mudar nu´meros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um nu´mero que esta´ numa dada base β1
em uma outra base β2, onde β1 6= β2 6= 10?
Neste caso, a regra e´ a seguinte:
Primeiro representamos o nu´mero que esta´ na base β1, na
base 10 e, a seguir, representamos esse nu´mero na base
β2.
Mudanc¸a de base (caso geral)
Vimos como mudar nu´meros na base 10 para a base 2 e
vice-versa. O mesmoprocedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um nu´mero que esta´ numa dada base β1
em uma outra base β2, onde β1 6= β2 6= 10?
Neste caso, a regra e´ a seguinte:
Primeiro representamos o nu´mero que esta´ na base β1, na
base 10 e, a seguir, representamos esse nu´mero na base
β2.
Mudanc¸a de base (caso geral)
Vimos como mudar nu´meros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um nu´mero que esta´ numa dada base β1
em uma outra base β2, onde β1 6= β2 6= 10?
Neste caso, a regra e´ a seguinte:
Primeiro representamos o nu´mero que esta´ na base β1, na
base 10 e, a seguir, representamos esse nu´mero na base
β2.
Exemplo 14
Converter 12,20 que esta´ na base 4, para a base 3.
12 = 2× 40 + 1× 41 = 6,
0,20 = 2× 4−1 + 0× 4−2 = 2
4
= 0,5.
Portanto, (12,20)4 = (6,5)10.
(continua...)
Exemplo 14 (continuac¸a˜o)
Agora, convertemos 6,5 que esta´ na base 10, para a base 3.
6 3
0 2
0,5× 3 = 1,5
0,5× 3 = 1,5
...
Assim, (6,5)10 = (20,111 . . .)3. Logo, (12,20)4 = (20,111 . . .)3.
Observe que o nu´mero dado na base 4 tem representac¸a˜o exata na
base 10, mas na˜o na base 3.
Exerc´ıcio 4.1
Os nu´meros x1 = 34, x2 = 0,125 e x3 = 33,023 esta˜o em β = 10.
Escreva-os em β = 2 com ate´ 7 d´ıgitos na parte fraciona´ria.
Exerc´ıcio 4.2
Os nu´meros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 esta˜o em
β = 2. Escreva-os em β = 10.
Exerc´ıcio 4.3
Os nu´meros: x1 = 34, x2 = 0,132 e x3 = 32,013 esta˜o em β = 4.
Escreva-os em β = 5, com ate´ 5 d´ıgitos na parte fraciona´ria.
Exerc´ıcio 4.1
Os nu´meros x1 = 34, x2 = 0,125 e x3 = 33,023 esta˜o em β = 10.
Escreva-os em β = 2 com ate´ 7 d´ıgitos na parte fraciona´ria.
Exerc´ıcio 4.2
Os nu´meros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 esta˜o em
β = 2. Escreva-os em β = 10.
Exerc´ıcio 4.3
Os nu´meros: x1 = 34, x2 = 0,132 e x3 = 32,013 esta˜o em β = 4.
Escreva-os em β = 5, com ate´ 5 d´ıgitos na parte fraciona´ria.
Exerc´ıcio 4.1
Os nu´meros x1 = 34, x2 = 0,125 e x3 = 33,023 esta˜o em β = 10.
Escreva-os em β = 2 com ate´ 7 d´ıgitos na parte fraciona´ria.
Exerc´ıcio 4.2
Os nu´meros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 esta˜o em
β = 2. Escreva-os em β = 10.
Exerc´ıcio 4.3
Os nu´meros: x1 = 34, x2 = 0,132 e x3 = 32,013 esta˜o em β = 4.
Escreva-os em β = 5, com ate´ 5 d´ıgitos na parte fraciona´ria.
Nu´meros em F (β, t,m,M)
Atrave´s de um exemplo, vamos ver como podemos calcular, para
qualquer sistema F (β, t,m,M):
Quantos nu´meros podem ser representados em F .
Quais nu´meros podem ser representados em F .
Nu´meros em F (β, t,m,M)
Atrave´s de um exemplo, vamos ver como podemos calcular, para
qualquer sistema F (β, t,m,M):
Quantos nu´meros podem ser representados em F .
Quais nu´meros podem ser representados em F .
Nu´meros em F (β, t,m,M)
Atrave´s de um exemplo, vamos ver como podemos calcular, para
qualquer sistema F (β, t,m,M):
Quantos nu´meros podem ser representados em F .
Quais nu´meros podem ser representados em F .
Exemplo 15
Quantos nu´meros podem ser representados no sistema
F (2, 3, 1, 2)?
Temos que β = 2, enta˜o os d´ıgitos podem ser 0 ou 1; m = 1 e
M = 2, enta˜o −1 ≤ e ≤ 2 e t = 3. Assim, os nu´meros sa˜o da
forma:
±0,d1d2d3 × βe.
Logo, temos duas possibilidades para o sinal, uma possibilidade
para d1, duas para d2, duas para d3 e quatro para as formas de β
e.
Fazendo o produto 2× 1× 2× 2× 4, obtemos 32. Assim, neste
sistema podemos representar 33 nu´meros, visto que o zero faz
parte de qualquer sistema.
Exemplo 16
Quais nu´meros podem ser representados em F (2, 3, 1, 2)?
Note que as formas da mantissa sa˜o: 0,100; 0,101; 0,110 e 0,111;
e as formas de βe sa˜o: 2−1, 20, 21, 22. Assim, para 0,100 temos:
0,100×

2−1 = (0,25)10
20 = (0,5)10
21 = (1,0)10
22 = (2,0)10,
(continua...)
Exemplo 16 (continuac¸a˜o)
Para 0,101 temos:
0,101×

2−1 = (0,3125)10
20 = (0,625)10
21 = (1,25)10
22 = (2,5)10,
Para 0,110 temos:
0,110×

2−1 = (0,375)10
20 = (0,75)10
21 = (1,5)10
22 = (3,0)10,
(continua...)
Exemplo 16 (continuac¸a˜o)
Para 0,111 temos:
0,111×

2−1 = (0,4375)10
20 = (0,875)10
21 = (1,75)10
22 = (3,5)10,
Isso totaliza 16 nu´meros. Considerando os 16 nu´meros negativos
correspondentes, e mais o zero, temos 33 nu´meros, como calculado
no exemplo anterior.
Exerc´ıcio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos nu´meros podemos representar neste sistema?
(b) Represente no sistema os nu´meros x1 = (0,40)10 e
x2 = (2,8)10.
Exerc´ıcio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos nu´meros podemos representar neste sistema?
(b) Represente no sistema os nu´meros x1 = (0,40)10 e
x2 = (2,8)10.
Exerc´ıcio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos nu´meros podemos representar neste sistema?
(b) Represente no sistema os nu´meros x1 = (0,40)10 e
x2 = (2,8)10.
Padra˜o IEEE
O que acontece na pra´tica e´ que substitu´ımos um nu´mero na˜o
representa´vel por um nu´mero pro´ximo dele. Isso pode ser
satisfato´rio em algumas situac¸o˜es;
Mas e´ preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritme´tica diferente quando fazemos contas
no computador (por ex. soma na˜o e´ comutativa nem
associatiava no computador)
O erro produzido pelo computador para realizar ca´lculos com
nu´meros reais e´ chamado de erro de arredondamento.
Padra˜o IEEE
O que acontece na pra´tica e´ que substitu´ımos um nu´mero na˜o
representa´vel por um nu´mero pro´ximo dele. Isso pode ser
satisfato´rio em algumas situac¸o˜es;
Mas e´ preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritme´tica diferente quando fazemos contas
no computador (por ex. soma na˜o e´ comutativa nem
associatiava no computador)
O erro produzido pelo computador para realizar ca´lculos com
nu´meros reais e´ chamado de erro de arredondamento.
Padra˜o IEEE
O que acontece na pra´tica e´ que substitu´ımos um nu´mero na˜o
representa´vel por um nu´mero pro´ximo dele. Isso pode ser
satisfato´rio em algumas situac¸o˜es;
Mas e´ preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritme´tica diferente quando fazemos contas
no computador (por ex. soma na˜o e´ comutativa nem
associatiava no computador)
O erro produzido pelo computador para realizar ca´lculos com
nu´meros reais e´ chamado de erro de arredondamento.
Padra˜o IEEE
O que acontece na pra´tica e´ que substitu´ımos um nu´mero na˜o
representa´vel por um nu´mero pro´ximo dele. Isso pode ser
satisfato´rio em algumas situac¸o˜es;
Mas e´ preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritme´tica diferente quando fazemos contas
no computador (por ex. soma na˜o e´ comutativa nem
associatiava no computador)
O erro produzido pelo computador para realizar ca´lculos com
nu´meros reais e´ chamado de erro de arredondamento.
Padra˜o IEEE
Em 1985, o IEEE (Instituto de Engenheiros Ele´tricos e
Eletroˆnicos) publicou um relato´rio chamado Binary Floating
Point Arithmetic Standard
Neste relato´rio foram especificados formatos de precisa˜o
simples, dupla e estendida, que geralmente sa˜o seguidos pelos
fabricantes de computadores
Padra˜o IEEE
Em 1985, o IEEE (Instituto de Engenheiros Ele´tricos e
Eletroˆnicos) publicou um relato´rio chamado Binary Floating
Point Arithmetic Standard
Neste relato´rio foram especificados formatos de precisa˜o
simples, dupla e estendida, que geralmente sa˜o seguidos pelos
fabricantes de computadores
Padra˜o IEEE
Em 1985, o IEEE (Instituto de Engenheiros Ele´tricos e
Eletroˆnicos) publicou um relato´riochamado Binary Floating
Point Arithmetic Standard
Neste relato´rio foram especificados formatos de precisa˜o
simples, dupla e estendida, que geralmente sa˜o seguidos pelos
fabricantes de computadores
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Por exemplo, em um sistema de 64 bits para representar um real longo, os
64 bits sa˜o distribu´ıdos da seguinte maneira:
O primeiro bit, denotado por s, e´ um indicador de sinal (0 para
positivo e 1 para negativo).
Em seguida, ha´ 11 bits para um expoente, chamados de caracter´ıstica
(denotada por c). Base do sistema e´ 2.
Os 52 bits restantes representam a mantissa (denotada por f ), que e´
uma frac¸a˜o bina´ria.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 11 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Como 52 algarismos bina´rios correspondem a 15 ou 16 algarismos
decimais, podemos dizer que este sistema tem pelo menos 15 algarismos
decimais de precisa˜o.
O exponte, com 11 algarismos bina´rios, fornece uma faixa de 0 a
211 � 1 = 2047. Mas, para permitir expoentes negativos e uma melhor
representac¸a˜o de nu´meros de mo´dulo pequeno, e´ subtra´ıdo 1023 do
expoente. Desta forma, na realidade, a faixa de valores para o expoente
vai de -1023 a 1024.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 12 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Para economizar armazenamento e obter uma representac¸a˜o u´nica dos
nu´meros em ponto flutuante, e´ imposta uma normalizac¸a˜o.
A utilizac¸a˜o deste sistema fornece um nu´mero em ponto flutuante da forma
(�1)s2c�1023(1 + f )
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 13 / 37
Padra˜o IEEE-754
Figura: Representac¸a˜o de precisa˜o simples float e dupla double no
padra˜o IEEE-754
Valor Sinal Expoente Mantissa
Zero 0 0s 0s
+ Infinito 0 1s 1s
- Infinito 1 1s 1s
NaN 0 1s Diferente de 0s
Tabela: Nu´meros especiais no Padra˜o IEEE-754
Padra˜o IEEE-754
Figura: Representac¸a˜o de precisa˜o simples float e dupla double no
padra˜o IEEE-754
Valor Sinal Expoente Mantissa
Zero 0 0s 0s
+ Infinito 0 1s 1s
- Infinito 1 1s 1s
NaN 0 1s Diferente de 0s
Tabela: Nu´meros especiais no Padra˜o IEEE-754
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante - exemplo
Considere o seguinte nu´mero, representado no sistema mencionado:
0 10000000011 1011100100010000000000000000000000000000000000000000
O primeiro bit representa o sinal s. Neste caso, 0 ou positivo.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 14 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante - exemplo
Os 11 bits seguintes, 10000000011, fornecem a caracter´ıstica. Este
nu´mero, no sistema decimal, e´
c = 1⇥ 210 + 1⇥ 21 + 1⇥ 20 = 1027.
Portanto, a parte exponencial do nu´mero e´ dada por
21027�1023 = 24.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 15 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante - exemplo
Os u´ltimos 52 bits representam a mantissa
f = 1⇥ 2�1 + 1⇥ 2�3 + 1⇥ 2�4 + 1⇥ 2�5 + 1⇥ 2�8 + 1⇥ 2�12.
Assim, o nu´mero representado e´
(�1)s2c�1023(1 + f ) =
(�1)021027�1023
✓
1 +
1
2
+
1
8
+
1
16
+
1
32
+
1
256
+
1
4096
◆
= 27, 56640625.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 16 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante - exemplo
Note que o nu´mero de ma´quina anterior a este e´ dado por
0 10000000011 1011100100001111111111111111111111111111111111111111
E o nu´mero de ma´quina posterior e´ dado por
0 10000000011 1011100100010000000000000000000000000000000000000001
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 17 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante - exemplo
Isso significa que o nu´mero de ma´quina original representa na˜o somente o
nu´mero 27,56640625, mas tambe´m metade dos nu´meros reais que esta˜o
entre ele e seus nu´meros de ma´quina mais pro´ximos.
Ou seja, ele representa qualquer nu´mero real no intervalo
[27,5664062499999982236431605997495353221893310546875,
27,5664062500000017763568394002504646778106689453125)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 18 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
O menor nu´mero em mo´dulo que pode ser representado neste sistema e´
dado por s = 0, c = 1 e f = 0.
Ou seja,
(�1)021�1023(1 + 0) ⇡ 0, 2225⇥ 10�307.
Nu´meros que ocorrem em ca´lculos com mo´dulos menores do que este valor
resultam em underflow, e sa˜o, geralmente, arredondados para 0.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 19 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
O maior nu´mero em mo´dulo que pode ser representado neste sistema e´
dado por s = 0, c = 2046 e f = 1� 2�52.
Ou seja,
(�1)022046�1023(1 + 1� 2�52) ⇡ 0, 17977⇥ 10309.
Nu´meros que ocorrem em ca´lculos com mo´dulos maiores do que este valor
resultam em overflow. Isso geralmente acarreta em parada do ca´lculo, a
menos que o programa tenha sido projetado para detectar este tipo de erro.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 20 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Note que ha´ duas representac¸o˜es poss´ıveis para o zero:
uma positiva, com s = 0, c = 0 e f = 0;
e uma negativa, com s = 1, c = 0 e f = 0.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 21 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Para facilitar os ca´lculo daqui em diante, usaremos a forma normalizada de
ponto flutuante decimal
± 0, d1d2...dk ⇥ 10n,
com 1  d1  9 e 0  di  9, para i = 2, ..., k .
Os nu´meros desta forma sa˜o chamados de nu´meros de ma´quina decimais
de k algarismos.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 22 / 37
Padra˜o IEEE-754
Representac¸a˜o em ponto flutuante
Qualquer nu´mero real positivo dentro do intervalo nume´rico da ma´quina
pode ser normalizado na forma
y = 0, d1d2...dkdk+1dk+2 ⇥ 10n.
A forma em ponto flutuante y , denotada por fl(y), e´ obtida terminando a
mantissa de y em k algarismos decimais.
Ha´ duas maneiras disto ser realizado: truncamento e arredondamento.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 23 / 37
Padra˜o IEEE-754
Truncamento
O truncamento consiste em, simplesmente, descartar os dois u´ltimos
algarismos dk+1dk+2 de y .
Isso produz a forma em ponto flutuante de y
fl(y) = 0, d1d2...dk ⇥ 10n.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 24 / 37
Padra˜o IEEE-754
Arredondamento
O arredondamento consiste em somar 5⇥ 10n�(k+1) a y e, enta˜o, truncar
o resultado.
Isso produz a forma em ponto flutuante de y
fl(y) = 0, �1�2...�k ⇥ 10n.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 25 / 37
Padra˜o IEEE-754
Arredondamento
Deste modo, se dk+1 � 5, adicionamos 1 a dk para obter fl(y).
Isto e´ o que chamamos arredondamento para cima.
Mas, se dk+1 < 5, simplesmente truncamos o nu´mero.
Isto e´ o que chamamos arredondamento para baixo.
Note que, quando arredondamos para baixo, di = �i para todo 1  i  k ,
mas isso na˜o acontece quando arredondamos para cima.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculoNume´rico I 03 de Agosto de 2012 26 / 37
Padra˜o IEEE-754
Erros absoluto e relativo
Existem duas maneiras muito usadas para medir erros de aproximac¸a˜o.
Sa˜o elas: erro absoluto e erro relativo.
Se p¯ e´ uma aproximac¸a˜o de p, o erro absoluto e´ dado por |p¯ � p|.
O erro relativo e´ dado por |p¯�p||p| , contanto que p 6= 0.
Como medida de precisa˜o, o erro absoluto pode ser enganoso, ja´ que na˜o
leva em considerac¸a˜o o tamanho do nu´mero que esta´ sendo usado. Neste
caso, o erro relativo pode ser mais significativo.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 27 / 37
Padra˜o IEEE-754
Algarismos significativos
Diz-se que o nu´mero p¯ aproxima p ate´ t algarismos significativos se t for o
maior inteiro na˜o-negativo para o qual
|p¯�p|
|p|  5⇥ 10�t .
E´ poss´ıvel mostrar que, usando a representac¸a˜o em ponto flutuante fl(y)
para um nu´mero y , com k algarismos decimais, o nu´mero de d´ıgitos
significativos e´:
k � 1, quando o truncamento e´ usado e
k , quando o arredondamento e´ usado.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 28 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante
Ja´ vimos que, somente a representac¸a˜o de nu´meros reais no computador ja´
introduz erros de arredondamento.
Ale´m disso, as contas feitas pelo computador introduzem mais alguns
erros.
A aritme´tica feita pelo computador pode ser aproximada com as 4
operac¸o˜es ba´sicas definidas da seguinte maneira:
x � y = fl(fl(x) + fl(y))
x y = fl(fl(x)� fl(y))
x ⌦ y = fl(fl(x)⇥ fl(y))
x ↵ y = fl(fl(x)/fl(y))
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 29 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante
Com esta aritme´tica, muitos erros podem ser introduzidos.
Os mais comuns aparecem quando os nu´meros envolvidos tem ordem de
grandeza muito diferentes.
Ou o cancelamento de d´ıgitos significativos quando sa˜o subtra´ıdos
nu´meros muito parecidos.
E algumas coisas estranhas acontecem, como, por exemplo, uma conta
(a� b)� c 6= a� (b � c).
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 30 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
Suponha que x = 57 e y =
1
3 com truncamento em cinco d´ıgitos. Enta˜o,
fl(x) = 0, 71428x100 e fl(y) = 0, 33333x100.
Operac¸a˜o Resultado Valor real Erro absoluto Erro relativo
x � y 0, 10476x101 2221 0, 190x10�4 0, 182x10�4
x y 0, 38095x100 821 0, 238x10�5 0, 625x10�5
x ⌦ y 0, 23809x100 521 0, 524x10�5 0, 220x10�4
x ↵ y 0, 214286x101 157 0, 571x10�4 0, 267x10�4
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 31 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
Suponha que a = 3, 25, b = 6, 34 e c = 6, 05 com arredondamento em
treˆs d´ıgitos. Enta˜o, fl(a) = 0, 325x101, fl(b) = 0, 634x101 e
fl(c) = 0, 605x101.
Operac¸a˜o Resultado
(a� b)� c 0, 156x102
a� (b � c) 0, 157x102
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 32 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
A fo´rmula quadra´tica afirma que as ra´ızes de ax2 + bx + c = 0, quando
a 6= 0, sa˜o
x1 =
�b +pb2 � 4ac
2a
e x2 =
�b �pb2 � 4ac
2a
.
Usando a aritme´tica de arredondamento com quatro algarismos, considere
esta fo´rmula aplicada a` equac¸a˜o x2 + 62, 1x + 1 = 0, cujas ra´ızes sa˜o,
aproximadamente,
x1 = �0, 01610723 e x2 = �62, 0839.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 33 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
Nesta equac¸a˜o, b2 e´ muito maior do que 4ac . Enta˜o, o numerador no
ca´lculo de x1 envolve a subtrac¸a˜o de dois nu´meros quase iguais.
Como
p
b2 � 4ac =
q
(62, 1)2 � 4⇥ 1⇥ 1 = p3856� 4 =
p
3852 = 62, 06,
temos
fl(x1) =
�62, 10 + 62, 06
2
=
�0, 04
2
= �0, 02.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 34 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
Esta e´ uma aproximac¸a˜o insatisfato´ria para x1 = �0, 01611, com grande
erro relativo
|� 0, 02 + 0, 01611|
|� 0, 01611| ⇡ 2, 4⇥ 10
�1.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 35 / 37
Padra˜o IEEE-754
Aritme´tica de ponto flutuante - exemplo
No entanto, se racionalizarmos o numerador da fo´rmula para ca´lculo de x1,
obtemos
x1 =
�2c
b +
p
b2 � 4ac .
Usando esta reformulac¸a˜o, temos
fl(x1) =
�2
62, 10 + 62, 06
=
�2
124, 2
= �0, 01610,
com pequeno erro relativo 6, 2⇥ 10�4 pequeno.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Ca´lculo Nume´rico I 03 de Agosto de 2012 36 / 37
	Números inteiros
	Números reais em ponto fixo e ponto flutuante
	Mudança de base
	Números em F(,t,m,M)

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes