Baixe o app para aproveitar ainda mais
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)
Compartilhar