Cálculo Numérico

100
alculo Num´ erico – Representa¸c˜ ao e Erros Num´ ericos Jo˜ ao Paulo Gois Universidade Federal do ABC Adapta¸c˜ ao Prof. Harlen C. Batagelo (UFABC), do livro C´ alculo Num´ erico (N.B. Franco, 2006) e dos Slides da Marina Andret- ta/Franklina Toledo (ICMC-USP)

description

Calculo Numérioc, Resumo, Bissecção, Iteração, Newton, Lagrange, Newton Raphson, Secante, Taylor e Ponto Flutuante

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)