Cálculo Numérico
-
Upload
luiz-fernando-da-rocha -
Category
Documents
-
view
27 -
download
1
description
Transcript of Cálculo Numérico
-
Calculo Numerico Representacao e ErrosNumericos
Joao Paulo Gois
Universidade Federal do ABC
Adaptacao
Prof. Harlen C. Batagelo (UFABC), do livro Calculo Numerico (N.B. Franco, 2006) e dos Slides da Marina Andret-ta/Franklina Toledo (ICMC-USP)
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
A aritmetica usada em nosso mundo matematico tradicionaldiferente da usada em computadores.
Por exemplo, operamos com numeros irracionais e fracoes.Por exemplo 1 = pi
pi2 .
Supomos que temos precisao infinita;
Contudo representacoes no computador e finita, o que limita arepresentacao de numeros racionais e irracionais.
Na pratica substitumos um numero que nao e representavelno computador por um proximo dele.
-
Resolvendo Problemas no Computador
Considere o seguinte codigo em Matlab:
1 x = 0;2 for i = 1:10000003 x = x + exp(1)/pi;4 end5 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 calculos de x e y fazem a mesma coisa,contudo as respostas no computador sao diferentes.
-
Sada
x =
8.652559794435985e+05
y =
8.652559794322652e+05
dif =
1.133338082581758e-05
-
Resolvendo Problemas no Computador
Considere o seguinte codigo em Matlab:
1 x = 0;2 for i = 1:10000003 x = x + 1/( sqrt (88139) - sqrt (88137));4 end5 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 calculos de x e y fazem a mesma coisa,contudo as respostas no computador sao diferentes.
-
Sada
x =
2.968804473078792e+08
y =
2.968804473130453e+08
dif =
0.005166113376617
-
Representacao de numeros inteiros
Todo computador trabalha internamente com uma base fixa, onde e um inteiro 2, geralmente escolhido como umapotencia de 2.
Assim, dado um numero inteiro n 6= 0, ele possui uma unicarepresentacao:
n = (nk . . . n1n0) = (n00 + n11 + . . .+ nkk),
onde os ni (i = 0, 1, . . . , k) sao inteiros satisfazendo0 ni < e nk 6= 0.
-
Representacao de numeros inteiros
Todo computador trabalha internamente com uma base fixa, onde e um inteiro 2, geralmente escolhido como umapotencia de 2.
Assim, dado um numero inteiro n 6= 0, ele possui uma unicarepresentacao:
n = (nk . . . n1n0) = (n00 + n11 + . . .+ nkk),
onde os ni (i = 0, 1, . . . , k) sao inteiros satisfazendo0 ni < e nk 6= 0.
-
Representacao de numeros inteiros
Todo computador trabalha internamente com uma base fixa, onde e um inteiro 2, geralmente escolhido como umapotencia de 2.
Assim, dado um numero inteiro n 6= 0, ele possui uma unicarepresentacao:
n = (nk . . . n1n0) = (n00 + n11 + . . .+ nkk),
onde os ni (i = 0, 1, . . . , k) sao inteiros satisfazendo0 ni < e nk 6= 0.
-
Exemplo 1
Na base = 10, o numero 1997 e representado por
1997 = 7 100 + 9 101 + 9 102 + 1 103,
e e armazenado como n3n2n1n0.
-
Exerccio 1.1
Represente os seguintes numeros 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.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros.
/ Pouco flexvel.Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel.
/ Calculos mais lentos; requer circuitos especializados.
-
Representacao de numeros reais
Representacao em ponto fixo (fixed point):
, Calculos muito rapidos; mesmos circuitos utilizados paranumeros inteiros./ Pouco flexvel.
Representacao em ponto flutuante (floating point):
, Bastante flexvel./ Calculos mais lentos; requer circuitos especializados.
-
Representacao em ponto fixo
Definicao (ponto fixo)
Dado um numero x 6= 0, ele e representado em ponto fixo por:
x = ni=k
xii,
onde k e n sao inteiros satisfazendo k < n e, em geral, k 0,n > 0, e os xi sao inteiros satisfazendo 0 xi < .
-
Exemplo 2
Na base = 10, o numero 1997,16 e representado por:
1997,16 =
2i=3
xii
= 1 103 + 9 102 + 9 101 + 7 100 + 1 101 + 6 102= 1 1000 + 9 100 + 9 10 + 7 1 + 1 0, 1 + 6 0, 01.
e e armazenado como x3x2x1x0,x1x2.
-
Exerccio 2.1
Represente os seguintes numeros em notacao 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.
-
Representacao em ponto flutuante
Definicao (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 numero em ponto fixo, isto e,
d =
ti=1
dii,
tal que, se x 6= 0, entao d1 6= 0. t e a quantidade de dgitossignificativos, 1 d < 1 e m e M .
-
Exemplo 3
Na base = 10, o numero 0,35 e representado por:
0,35 = (3 101 + 5 102) 100= 0,35 100.
x = d e, d =ti=1
dii
-
Exemplo 4
Na base = 10, o numero 5,172 e representado por:
5,172 = (5 101 + 1 102 + 7 103+2 104) 101
= 0,5712 101.
x = d e, d =ti=1
dii
-
Exemplo 5
Na base = 10, o numero 0,0123 e representado por:
0,0123 = (1 101 + 2 102 + 3 103) 101= 0,123 101.
x = d e, d =ti=1
dii
-
Exemplo 6
Na base = 10, o numero 5391,3 e representado por:
5391,3 = (5 101 + 3 102 + 9 103+1 104 + 3 105) 104
= 0,53913 104.
x = d e, d =ti=1
dii
-
Exemplo 7
Na base = 10, o numero 0,0003 e representado por:
0,0003 = (3 101) 103= 0,3 103.
x = d e, d =ti=1
dii
-
Definicao [Sistema F (, t,m,M)]
Para representarmos um sistema de numeros em ponto flutuantena base , com t dgitos significativos e com limites do expoentesm e M , usaremos a notacao F (, t,m,M).
Assim, um numero 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 numeros sao representados por
0,d1d2d3 10e, onde 2 e 2.
Os numeros dos exemplos anteriores sao representados como
0,35 = 0,350 100,5,172 = 0,517 101,0,0123 = 0,123 101,5391,3 = 0,539 104 = overflow,0,0003 = 0,300 103 = underflow.
-
Exerccio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes numeros:
(a) 43,21. (d) 125,64.(b) 5, 748. (e) 0,000034.(c) 0,001352. (f) 1.
Exerccio 3.2
Represente no sistema F (10, 3, 1, 2) os numeros do exerccioanterior. Neste caso, alguns numeros resultarao em erro deunderflow ou overflow. Se isso acontecer, explique o motivo.
-
Exerccio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes numeros:
(a) 43,21. (d) 125,64.(b) 5, 748. (e) 0,000034.(c) 0,001352. (f) 1.
Exerccio 3.2
Represente no sistema F (10, 3, 1, 2) os numeros do exerccioanterior. Neste caso, alguns numeros resultarao em erro deunderflow ou overflow. Se isso acontecer, explique o motivo.
-
Mudanca de base ( = 10)
A maioria dos computadores trabalha na base , onde e uminteiro 2, e e normalmente escolhido como uma potencia de2.
Assim, um mesmo numero pode ser representado em mais deuma base.
Atraves de uma mudanca de base, e possvel determinar arepresentacao em uma nova base.
-
Mudanca de base ( = 10)
A maioria dos computadores trabalha na base , onde e uminteiro 2, e e normalmente escolhido como uma potencia de2.
Assim, um mesmo numero pode ser representado em mais deuma base.
Atraves de uma mudanca de base, e possvel determinar arepresentacao em uma nova base.
-
Mudanca de base ( = 10)
A maioria dos computadores trabalha na base , onde e uminteiro 2, e e normalmente escolhido como uma potencia de2.
Assim, um mesmo numero pode ser representado em mais deuma base.
Atraves de uma mudanca de base, e possvel determinar arepresentacao em uma nova base.
-
Mudanca de base ( = 10)
A maioria dos computadores trabalha na base , onde e uminteiro 2, e e normalmente escolhido como uma potencia de2.
Assim, um mesmo numero pode ser representado em mais deuma base.
Atraves de uma mudanca de base, e possvel determinar arepresentacao 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 donumero na base 2 por potencias crescentes de 2, da direita para aesquerda, 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 donumero na base 2, apos a vrgula, por potencias decrescentes de 2,da esquerda para a direita, e somar todas as parcelas. Desse modo,
0,110 = 1 21 + 1 22 + 0 23 = 12+
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 numero por 2. A seguir,continuamos dividindo o quociente por 2, ate que o ultimoquociente seja igual a 1. O numero na base 2 sera entao obtidotomando-se o ultimo quociente e todos os restos das divisoesanteriores. Assim,
13 21 6 2
0 3 21 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. Aseguir, continuamos multiplicando por 2 a parte decimal doresultado obtido. O numero na base 2 sera entao obtidotomando-se a parte inteira do resultado de cada multiplicacao.Desse modo,
0,75 2 = 1,500,50 2 = 1,000,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 quenos fornece (3)10 = (11)2, e a parte decimal. Assim, obtemos
0,8 2 = 1,60,6 2 = 1,20,2 2 = 0,40,4 2 = 0,80,8 2 = . . .
Logo, (3, 8)10 = (11,11001100 . . .)2. Portanto, o numero (3,8)10nao tem representacao 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 quenos fornece (3)10 = (11)2, e a parte decimal. Assim, obtemos
0,8 2 = 1,60,6 2 = 1,20,2 2 = 0,40,4 2 = 0,80,8 2 = . . .
Logo, (3, 8)10 = (11,11001100 . . .)2. Portanto, o numero (3,8)10nao tem representacao exata na base 2.
-
Mudanca de base (caso geral)
Vimos como mudar numeros na base 10 para a base 2 evice-versa. O mesmo procedimento pode ser utilizado paramudar da base 10 para outra base qualquer e vice-versa.
Como representar um numero que esta numa dada base 1em uma outra base 2, onde 1 6= 2 6= 10?Neste caso, a regra e a seguinte:
Primeiro representamos o numero que esta na base 1, nabase 10 e, a seguir, representamos esse numero na base2.
-
Mudanca de base (caso geral)
Vimos como mudar numeros na base 10 para a base 2 evice-versa. O mesmo procedimento pode ser utilizado paramudar da base 10 para outra base qualquer e vice-versa.
Como representar um numero que esta numa dada base 1em uma outra base 2, onde 1 6= 2 6= 10?Neste caso, a regra e a seguinte:
Primeiro representamos o numero que esta na base 1, nabase 10 e, a seguir, representamos esse numero na base2.
-
Mudanca de base (caso geral)
Vimos como mudar numeros na base 10 para a base 2 evice-versa. O mesmo procedimento pode ser utilizado paramudar da base 10 para outra base qualquer e vice-versa.
Como representar um numero que esta numa dada base 1em uma outra base 2, onde 1 6= 2 6= 10?
Neste caso, a regra e a seguinte:
Primeiro representamos o numero que esta na base 1, nabase 10 e, a seguir, representamos esse numero na base2.
-
Mudanca de base (caso geral)
Vimos como mudar numeros na base 10 para a base 2 evice-versa. O mesmo procedimento pode ser utilizado paramudar da base 10 para outra base qualquer e vice-versa.
Como representar um numero que esta numa dada base 1em uma outra base 2, onde 1 6= 2 6= 10?Neste caso, a regra e a seguinte:
Primeiro representamos o numero que esta na base 1, nabase 10 e, a seguir, representamos esse numero na base2.
-
Exemplo 14
Converter 12,20 que esta na base 4, para a base 3.
12 = 2 40 + 1 41 = 6,
0,20 = 2 41 + 0 42 = 24= 0,5.
Portanto, (12,20)4 = (6,5)10.
(continua...)
-
Exemplo 14 (continuacao)
Agora, convertemos 6,5 que esta na base 10, para a base 3.
6 30 2
0,5 3 = 1,50,5 3 = 1,5
...
Assim, (6,5)10 = (20,111 . . .)3. Logo, (12,20)4 = (20,111 . . .)3.Observe que o numero dado na base 4 tem representacao exata nabase 10, mas nao na base 3.
-
Exerccio 4.1
Os numeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.
Exerccio 4.2
Os numeros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 estao em = 2. Escreva-os em = 10.
Exerccio 4.3
Os numeros: x1 = 34, x2 = 0,132 e x3 = 32,013 estao em = 4.Escreva-os em = 5, com ate 5 dgitos na parte fracionaria.
-
Exerccio 4.1
Os numeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.
Exerccio 4.2
Os numeros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 estao em = 2. Escreva-os em = 10.
Exerccio 4.3
Os numeros: x1 = 34, x2 = 0,132 e x3 = 32,013 estao em = 4.Escreva-os em = 5, com ate 5 dgitos na parte fracionaria.
-
Exerccio 4.1
Os numeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.
Exerccio 4.2
Os numeros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 estao em = 2. Escreva-os em = 10.
Exerccio 4.3
Os numeros: x1 = 34, x2 = 0,132 e x3 = 32,013 estao em = 4.Escreva-os em = 5, com ate 5 dgitos na parte fracionaria.
-
Numeros em F (, t,m,M)
Atraves de um exemplo, vamos ver como podemos calcular, paraqualquer sistema F (, t,m,M):
Quantos numeros podem ser representados em F .
Quais numeros podem ser representados em F .
-
Numeros em F (, t,m,M)
Atraves de um exemplo, vamos ver como podemos calcular, paraqualquer sistema F (, t,m,M):
Quantos numeros podem ser representados em F .
Quais numeros podem ser representados em F .
-
Numeros em F (, t,m,M)
Atraves de um exemplo, vamos ver como podemos calcular, paraqualquer sistema F (, t,m,M):
Quantos numeros podem ser representados em F .
Quais numeros podem ser representados em F .
-
Exemplo 15
Quantos numeros podem ser representados no sistemaF (2, 3, 1, 2)?
Temos que = 2, entao os dgitos podem ser 0 ou 1; m = 1 eM = 2, entao 1 e 2 e t = 3. Assim, os numeros sao daforma:
0,d1d2d3 e.Logo, temos duas possibilidades para o sinal, uma possibilidadepara 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, nestesistema podemos representar 33 numeros, visto que o zero fazparte de qualquer sistema.
-
Exemplo 16
Quais numeros podem ser representados em F (2, 3, 1, 2)?
Note que as formas da mantissa sao: 0,100; 0,101; 0,110 e 0,111;e as formas de e sao: 21, 20, 21, 22. Assim, para 0,100 temos:
0,100
21 = (0,25)1020 = (0,5)1021 = (1,0)1022 = (2,0)10,
(continua...)
-
Exemplo 16 (continuacao)
Para 0,101 temos:
0,101
21 = (0,3125)1020 = (0,625)1021 = (1,25)1022 = (2,5)10,
Para 0,110 temos:
0,110
21 = (0,375)1020 = (0,75)1021 = (1,5)1022 = (3,0)10,
(continua...)
-
Exemplo 16 (continuacao)
Para 0,111 temos:
0,111
21 = (0,4375)1020 = (0,875)1021 = (1,75)1022 = (3,5)10,
Isso totaliza 16 numeros. Considerando os 16 numeros negativoscorrespondentes, e mais o zero, temos 33 numeros, como calculadono exemplo anterior.
-
Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos numeros podemos representar neste sistema?
(b) Represente no sistema os numeros x1 = (0,40)10 ex2 = (2,8)10.
-
Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos numeros podemos representar neste sistema?
(b) Represente no sistema os numeros x1 = (0,40)10 ex2 = (2,8)10.
-
Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos numeros podemos representar neste sistema?
(b) Represente no sistema os numeros x1 = (0,40)10 ex2 = (2,8)10.
-
Padrao IEEE
O que acontece na pratica e que substitumos um numero naorepresentavel por um numero proximo dele. Isso pode sersatisfatorio em algumas situacoes;
Mas e preciso tomar cuidado e se lembrar sempre que estamoslidando com uma aritmetica diferente quando fazemos contasno computador (por ex. soma nao e comutativa nemassociatiava no computador)
O erro produzido pelo computador para realizar calculos comnumeros reais e chamado de erro de arredondamento.
-
Padrao IEEE
O que acontece na pratica e que substitumos um numero naorepresentavel por um numero proximo dele. Isso pode sersatisfatorio em algumas situacoes;
Mas e preciso tomar cuidado e se lembrar sempre que estamoslidando com uma aritmetica diferente quando fazemos contasno computador (por ex. soma nao e comutativa nemassociatiava no computador)
O erro produzido pelo computador para realizar calculos comnumeros reais e chamado de erro de arredondamento.
-
Padrao IEEE
O que acontece na pratica e que substitumos um numero naorepresentavel por um numero proximo dele. Isso pode sersatisfatorio em algumas situacoes;
Mas e preciso tomar cuidado e se lembrar sempre que estamoslidando com uma aritmetica diferente quando fazemos contasno computador (por ex. soma nao e comutativa nemassociatiava no computador)
O erro produzido pelo computador para realizar calculos comnumeros reais e chamado de erro de arredondamento.
-
Padrao IEEE
O que acontece na pratica e que substitumos um numero naorepresentavel por um numero proximo dele. Isso pode sersatisfatorio em algumas situacoes;
Mas e preciso tomar cuidado e se lembrar sempre que estamoslidando com uma aritmetica diferente quando fazemos contasno computador (por ex. soma nao e comutativa nemassociatiava no computador)
O erro produzido pelo computador para realizar calculos comnumeros reais e chamado de erro de arredondamento.
-
Padrao IEEE
Em 1985, o IEEE (Instituto de Engenheiros Eletricos eEletronicos) publicou um relatorio chamado Binary FloatingPoint Arithmetic Standard
Neste relatorio foram especificados formatos de precisaosimples, dupla e estendida, que geralmente sao seguidos pelosfabricantes de computadores
-
Padrao IEEE
Em 1985, o IEEE (Instituto de Engenheiros Eletricos eEletronicos) publicou um relatorio chamado Binary FloatingPoint Arithmetic Standard
Neste relatorio foram especificados formatos de precisaosimples, dupla e estendida, que geralmente sao seguidos pelosfabricantes de computadores
-
Padrao IEEE
Em 1985, o IEEE (Instituto de Engenheiros Eletricos eEletronicos) publicou um relatorio chamado Binary FloatingPoint Arithmetic Standard
Neste relatorio foram especificados formatos de precisaosimples, dupla e estendida, que geralmente sao seguidos pelosfabricantes de computadores
-
Padrao IEEE-754
Representacao em ponto flutuante
Por exemplo, em um sistema de 64 bits para representar um real longo, os64 bits sao distribudos da seguinte maneira:
O primeiro bit, denotado por s, e um indicador de sinal (0 parapositivo e 1 para negativo).
Em seguida, ha 11 bits para um expoente, chamados de caracterstica(denotada por c). Base do sistema e 2.
Os 52 bits restantes representam a mantissa (denotada por f ), que euma fracao binaria.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 11 / 37
-
Padrao IEEE-754Representacao em ponto flutuante
Como 52 algarismos binarios correspondem a 15 ou 16 algarismosdecimais, podemos dizer que este sistema tem pelo menos 15 algarismosdecimais de precisao.
O exponte, com 11 algarismos binarios, fornece uma faixa de 0 a211 1 = 2047. Mas, para permitir expoentes negativos e uma melhorrepresentacao de numeros de modulo pequeno, e subtrado 1023 doexpoente. Desta forma, na realidade, a faixa de valores para o expoentevai de -1023 a 1024.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 12 / 37
-
Padrao IEEE-754
Representacao em ponto flutuante
Para economizar armazenamento e obter uma representacao unica dosnumeros em ponto flutuante, e imposta uma normalizacao.
A utilizacao deste sistema fornece um numero em ponto flutuante da forma
(1)s2c1023(1 + f )
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 13 / 37
-
Padrao IEEE-754
Figura: Representacao de precisao simples float e dupla double nopadrao 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: Numeros especiais no Padrao IEEE-754
-
Padrao IEEE-754
Figura: Representacao de precisao simples float e dupla double nopadrao 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: Numeros especiais no Padrao IEEE-754
-
Padrao IEEE-754Representacao em ponto flutuante - exemplo
Considere o seguinte numero, 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 - Calculo Numerico I 03 de Agosto de 2012 14 / 37
-
Padrao IEEE-754Representacao em ponto flutuante - exemplo
Os 11 bits seguintes, 10000000011, fornecem a caracterstica. Estenumero, no sistema decimal, e
c = 1 210 + 1 21 + 1 20 = 1027.
Portanto, a parte exponencial do numero e dada por
210271023 = 24.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 15 / 37
-
Padrao IEEE-754
Representacao em ponto flutuante - exemplo
Os ultimos 52 bits representam a mantissa
f = 1 21 + 1 23 + 1 24 + 1 25 + 1 28 + 1 212.
Assim, o numero representado e
(1)s2c1023(1 + f ) =
(1)02102710231 +
1
2+
1
8+
1
16+
1
32+
1
256+
1
4096
= 27, 56640625.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 16 / 37
-
Padrao IEEE-754Representacao em ponto flutuante - exemplo
Note que o numero de maquina anterior a este e dado por
0 10000000011 1011100100001111111111111111111111111111111111111111
E o numero de maquina posterior e dado por
0 10000000011 1011100100010000000000000000000000000000000000000001
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 17 / 37
-
Padrao IEEE-754Representacao em ponto flutuante - exemplo
Isso significa que o numero de maquina original representa nao somente onumero 27,56640625, mas tambem metade dos numeros reais que estaoentre ele e seus numeros de maquina mais proximos.
Ou seja, ele representa qualquer numero real no intervalo
[27,5664062499999982236431605997495353221893310546875,
27,5664062500000017763568394002504646778106689453125)
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 18 / 37
-
Padrao IEEE-754Representacao em ponto flutuante
O menor numero em modulo que pode ser representado neste sistema edado por s = 0, c = 1 e f = 0.
Ou seja,
(1)0211023(1 + 0) 0, 2225 10307.
Numeros que ocorrem em calculos com modulos menores do que este valorresultam em underflow, e sao, geralmente, arredondados para 0.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 19 / 37
-
Padrao IEEE-754
Representacao em ponto flutuante
O maior numero em modulo que pode ser representado neste sistema edado por s = 0, c = 2046 e f = 1 252.
Ou seja,
(1)0220461023(1 + 1 252) 0, 17977 10309.
Numeros que ocorrem em calculos com modulos maiores do que este valorresultam em overflow. Isso geralmente acarreta em parada do calculo, amenos que o programa tenha sido projetado para detectar este tipo de erro.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 20 / 37
-
Padrao IEEE-754Representacao em ponto flutuante
Note que ha duas representacoes possveis 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 - Calculo Numerico I 03 de Agosto de 2012 21 / 37
-
Padrao IEEE-754
Representacao em ponto flutuante
Para facilitar os calculo daqui em diante, usaremos a forma normalizada deponto flutuante decimal
0, d1d2...dk 10n,
com 1 d1 9 e 0 di 9, para i = 2, ..., k .
Os numeros desta forma sao chamados de numeros de maquina decimaisde k algarismos.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 22 / 37
-
Padrao IEEE-754
Representacao em ponto flutuante
Qualquer numero real positivo dentro do intervalo numerico da maquinapode ser normalizado na forma
y = 0, d1d2...dkdk+1dk+2 10n.
A forma em ponto flutuante y , denotada por fl(y), e obtida terminando amantissa de y em k algarismos decimais.
Ha duas maneiras disto ser realizado: truncamento e arredondamento.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 23 / 37
-
Padrao IEEE-754Truncamento
O truncamento consiste em, simplesmente, descartar os dois ultimosalgarismos 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 - Calculo Numerico I 03 de Agosto de 2012 24 / 37
-
Padrao IEEE-754
Arredondamento
O arredondamento consiste em somar 5 10n(k+1) a y e, entao, truncaro resultado.
Isso produz a forma em ponto flutuante de y
fl(y) = 0, 12...k 10n.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 25 / 37
-
Padrao IEEE-754Arredondamento
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 numero.
Isto e o que chamamos arredondamento para baixo.
Note que, quando arredondamos para baixo, di = i para todo 1 i k ,mas isso nao acontece quando arredondamos para cima.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 26 / 37
-
Padrao IEEE-754Erros absoluto e relativo
Existem duas maneiras muito usadas para medir erros de aproximacao.Sao elas: erro absoluto e erro relativo.
Se p e uma aproximacao de p, o erro absoluto e dado por |p p|.
O erro relativo e dado por |pp||p| , contanto que p 6= 0.
Como medida de precisao, o erro absoluto pode ser enganoso, ja que naoleva em consideracao o tamanho do numero que esta sendo usado. Nestecaso, o erro relativo pode ser mais significativo.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 27 / 37
-
Padrao IEEE-754
Algarismos significativos
Diz-se que o numero p aproxima p ate t algarismos significativos se t for omaior inteiro nao-negativo para o qual
|pp||p| 5 10t .
E possvel mostrar que, usando a representacao em ponto flutuante fl(y)para um numero y , com k algarismos decimais, o numero de dgitossignificativos e:
k 1, quando o truncamento e usado ek , quando o arredondamento e usado.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 28 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante
Ja vimos que, somente a representacao de numeros reais no computador jaintroduz erros de arredondamento.
Alem disso, as contas feitas pelo computador introduzem mais algunserros.
A aritmetica feita pelo computador pode ser aproximada com as 4operacoes basicas 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 - Calculo Numerico I 03 de Agosto de 2012 29 / 37
-
Padrao IEEE-754Aritmetica de ponto flutuante
Com esta aritmetica, muitos erros podem ser introduzidos.
Os mais comuns aparecem quando os numeros envolvidos tem ordem degrandeza muito diferentes.
Ou o cancelamento de dgitos significativos quando sao subtradosnumeros 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 - Calculo Numerico I 03 de Agosto de 2012 30 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
Suponha que x = 57 e y =13 com truncamento em cinco dgitos. Entao,
fl(x) = 0, 71428x100 e fl(y) = 0, 33333x100.
Operacao Resultado Valor real Erro absoluto Erro relativox y 0, 10476x101 2221 0, 190x104 0, 182x104
x y 0, 38095x100 821 0, 238x105 0, 625x105
x y 0, 23809x100 521 0, 524x105 0, 220x104
x y 0, 214286x101 157 0, 571x104 0, 267x104
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 31 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
Suponha que a = 3, 25, b = 6, 34 e c = 6, 05 com arredondamento emtres dgitos. Entao, fl(a) = 0, 325x101, fl(b) = 0, 634x101 efl(c) = 0, 605x101.
Operacao Resultado(a b) c 0, 156x102
a (b c) 0, 157x102
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 32 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
A formula quadratica afirma que as razes de ax2 + bx + c = 0, quandoa 6= 0, sao
x1 =b +pb2 4ac
2ae x2 =
b pb2 4ac2a
.
Usando a aritmetica de arredondamento com quatro algarismos, considereesta formula aplicada a` equacao x2 + 62, 1x + 1 = 0, cujas razes sao,aproximadamente,
x1 = 0, 01610723 e x2 = 62, 0839.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 33 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
Nesta equacao, b2 e muito maior do que 4ac . Entao, o numerador nocalculo de x1 envolve a subtracao de dois numeros quase iguais.
Como
pb2 4ac =
q(62, 1)2 4 1 1 = p3856 4 =
p3852 = 62, 06,
temos
fl(x1) =62, 10 + 62, 06
2=0, 04
2= 0, 02.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 34 / 37
-
Padrao IEEE-754Aritmetica de ponto flutuante - exemplo
Esta e uma aproximacao insatisfatoria para x1 = 0, 01611, com grandeerro relativo
| 0, 02 + 0, 01611|| 0, 01611| 2, 4 10
1.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 35 / 37
-
Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
No entanto, se racionalizarmos o numerador da formula para calculo de x1,obtemos
x1 =2c
b +pb2 4ac .
Usando esta reformulacao, temos
fl(x1) =2
62, 10 + 62, 06=
2124, 2
= 0, 01610,
com pequeno erro relativo 6, 2 104 pequeno.
Marina Andretta/Franklina Toledo (ICMC-USP) sme0100 - Calculo Numerico I 03 de Agosto de 2012 36 / 37
Nmeros inteirosNmeros reais em ponto fixo e ponto flutuanteMudana de baseNmeros em F(,t,m,M)