Baixe o app para aproveitar ainda mais
Prévia do material em texto
Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de Números e Noções de Erro DCC008 - Cálculo Numérico Prof. Ruy Freitas Reis - ruyfreitas@ice.ufjf.br Departamento de Ciência da Computação Universidade Federal de Juiz de Fora 1/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 2/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 3/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Introdução • O objetivo aqui é estudar métodos numéricos • Logo, é importante entender como os números são representados no computador e como as operações aritméticas são realizadas • Limitações da representação finita • Determinar os casos em que erros ocorrem • Noções de erro • Efeitos numéricos • Cancelamento • Propagação do erro 4/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Introdução • O objetivo aqui é estudar métodos numéricos • Logo, é importante entender como os números são representados no computador e como as operações aritméticas são realizadas • Limitações da representação finita • Determinar os casos em que erros ocorrem • Noções de erro • Efeitos numéricos • Cancelamento • Propagação do erro 4/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 5/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Decimal • O sistema decimal é normalmente adotado, também chamado de base 10 • Dez d́ıgitos (0,1,2,3,4,5,6,7,8 e 9) são utilizados para representar os números • Qualquer número inteiro no sistema decimal pode ser representado como N = (anan−1 . . . a1a0)10 = an × 10n + an−1 × 10n−1 + · · ·+ a1 × 101 + a0 × 100, onde ai ∈ {0, 1, . . . , 8, 9} 6/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Decimal • Por exemplo (21)10 = 2× 101 + 1× 100 (2001)10 = 2× 103 + 0× 102 + 0× 101 + 1× 100 7/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Decimal • Por exemplo (21)10 = 2× 101 + 1× 100 (2001)10 = 2× 103 + 0× 102 + 0× 101 + 1× 100 7/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Binário • Os computadores adotam um sistema com dois estados (ligado ou desligado) • Sistema binário (0,1), também chamado de base 2 • Os números não negativos podem ser representados como N = (anan−1 . . . a1a0)2 = an × 2n + an−1 × 2n−1 + · · ·+ a1 × 21 + a0 × 20 onde ai ∈ {0, 1}. 8/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Binário • Por exemplo (101)2 = 1× 22 + 0× 21 + 1× 20 (1001)2 = 1× 23 + 0× 22 + 0× 21 + 1× 20 9/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Binário • Por exemplo (101)2 = 1× 22 + 0× 21 + 1× 20 (1001)2 = 1× 23 + 0× 22 + 0× 21 + 1× 20 9/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Hexadecimal • O sistema hexadecimal, ou base 16, é uma alternativa ao sistema binário para simplificar a representação valores grandes • Dezesseis d́ıgitos (0, 1, . . . , 8, 9,A,B,C,D,E,F) são utilizados para representar os números • Os números podem ser representados como: N = (anan−1 . . . a1a0)16 = an × 16n + an−1 × 16n−1 + · · ·+ a1 × 161 + a0 × 160, onde ai ∈ {0, 1, . . . , 8, 9,A,B,C,D,E,F} 10/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Hexadecimal • Por exemplo: (A00E)16 = A× 163 + 0× 162 + 0× 161 + E× 160 = 10× 163 + 0× 162 + 0× 161 + 14× 160 11/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 12/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de Bases • Um número na base β podeser convertido para base decimal como (N)10 = an × βn + an−1 × βn−1 + · · ·+ a1 × β1 + a0 × β0, onde ai são os d́ıgitos do número representado na base β. 13/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de Bases • Converter (1010)2 para base 10 (1010)2 = 1× 23 + 0× 22 + 1× 21 + 0× 20 = 8 + 2 =⇒ (1010)2 = (10)10 • Converter (1C2)16 para base 10 (1C2)16 = 1× 162 + C × 161 + 2× 160 = 1× 162 + 12× 161 + 2× 160 = 256 + 192 + 2 =⇒ (1C2)16 = (450)10 14/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de Bases • Converter (1010)2 para base 10 (1010)2 = 1× 23 + 0× 22 + 1× 21 + 0× 20 = 8 + 2 =⇒ (1010)2 = (10)10 • Converter (1C2)16 para base 10 (1C2)16 = 1× 162 + C × 161 + 2× 160 = 1× 162 + 12× 161 + 2× 160 = 256 + 192 + 2 =⇒ (1C2)16 = (450)10 14/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Converter os seguintes números para a base 10 a) Converter (1101)2 para base 10. b) Converter (3F )16 para base 10. Solução a) 13 b) 63 15/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Converter os seguintes números para a base 10 a) Converter (1101)2 para base 10. b) Converter (3F )16 para base 10. Solução a) 13 b) 63 15/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão decimal para binário O procedimento é dividir o número por 2, a seguir continuar dividindo o quociente por 2, até que o quociente seja igual a 0. O número na base 2 é obtido tomando-se o resto das divisões anteriores. Exemplo Converter (13)10 para binário. Solução 13÷ 2 = 6, resto=1 6÷ 2 = 3, resto=0 3÷ 2 = 1, resto=1 1÷ 2 = 0, resto=1 ↑ (13)10 = (1101)2 16/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão decimal para binário O procedimento é dividir o número por 2, a seguir continuar dividindo o quociente por 2, até que o quociente seja igual a 0. O número na base 2 é obtido tomando-se o resto das divisões anteriores. Exemplo Converter (13)10 para binário. Solução 13÷ 2 = 6, resto=1 6÷ 2 = 3, resto=0 3÷ 2 = 1, resto=1 1÷ 2 = 0, resto=1 ↑ (13)10 = (1101)2 16/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão decimal para hexadecimal O procedimento é dividir o número por 16, a seguir continuar dividindo o quociente por 16, até que o quociente seja igual a 0. O número na base 16 é obtido tomando-se o resto das divisões anteriores. Exemplo Converter (62)10 para hexadecimal. Solução 62÷ 16 = 3, resto=14 =⇒ E 3÷ 16 = 0, resto=3 ↑ (62)10 = (3E )16 17/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão decimal para hexadecimal O procedimento é dividir o número por 16, a seguir continuar dividindo o quociente por 16, até que o quociente seja igual a 0. O número na base 16 é obtido tomando-se o resto das divisões anteriores. Exemplo Converter (62)10 para hexadecimal. Solução 62÷ 16 = 3, resto=14 =⇒ E 3÷ 16 = 0, resto=3 ↑ (62)10 = (3E )16 17/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Converter os seguintes números para a base indicada a) Converter (23)10 para base 2. b) Converter (14)10 para base 2. c) Converter (63)10 para base 16. d) Converter (945)10 para base 16. Solução a) (10111)2 b) (1110)2 c) (3F )16 d) (3B1)16 18/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Converter os seguintes números para a base indicada a) Converter (23)10 para base 2. b) Converter (14)10 para base 2. c) Converter (63)10 para base 16. d) Converter (945)10 para base 16. Solução a) (10111)2 b) (1110)2 c) (3F )16 d) (3B1)16 18/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema Binário para Hexadecimal Binário Hexadecimal Binário Hexadecimal 0000 0 1000 8 0001 1 1001 9 0010 2 1010 A 0011 3 1011 B 0100 4 1100 C 0101 5 1101 D 0110 6 1110 E 0111 7 1111 F Exemplo: (111011010010)2 ⇔ E︷︸︸︷ 1110 D︷︸︸︷ 1101 2︷︸︸︷ 0010⇔ (ED2)16 19/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Realizar as seguintes conversões a) Converter (11001011)2 para base 16. b) Converter (110010111)2 para base 16. c) Converter (3F )16 para base 2. d) Converter (7BC )16 para base 2. Solução a) (CB)16 b) (197)16 c) (111111)2 d) (11110111100)2 20/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Realizar as seguintes conversões a) Converter (11001011)2 para base 16. b) Converter (110010111)2 para base 16. c) Converter (3F )16 para base 2. d) Converter (7BC )16 para base 2. Solução a) (CB)16 b) (197)16 c) (111111)2 d) (11110111100)2 20/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de um número real • Um número real positivo x pode ser escrito como x = n∑ i=0 aiB i ︸ ︷︷ ︸ xint + ∞∑ i=1 biB −i ︸ ︷︷ ︸ xfrac onde ai e bi são, respectivamente, os coeficientes da parte integral e fracionária do número x • Por exemplo, (23, 45)10 = 2× 101 + 3× 100 + 4× 10−1 + 5× 10−2 21/83 CálculoNumérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplos: Representação de um número real • Se bi = 0 para todo i maior que um valor inteiro, então diz-se que a fração termina • Caso contrário, diz-se que a fração não termina • Exemplos: 0, 45 = 4× 10−1 + 5× 10−2 ⇒ termina 0, 666 . . . = 6× 10−1 + 6× 10−2 + 6× 10−3 + . . . ⇒ não termina 22/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de real para binário • De forma análoga para o sistema binário podemos escrever xf = ∞∑ k=1 bk2 −k , xi = (anan−1 . . . a0)2 então x = (anan−1 . . . a0 · b1b2b2 . . .)2. • A fração binária (·b1b2b2 . . .)2 para um dado xf entre 0 e 1 pode ser calculada da seguinte forma: dado x entre 0 e 1, gere b1, b2, b3 fazendo: c0 = x b1 = (2 · c0)i , c1 = (2 · c0)f b2 = (2 · c1)i , c2 = (2 · c1)f b3 = (2 · c2)i , c3 = (2 · c2)f , . . . onde (.)i representa a parte integral e (.)f a parte fracionária do número. 23/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de real para binário Exemplo Qual a representação binária de (0.625)10? Solução do Exemplo 2 · 0.625 = 1.25 ⇒ b1 = 1 2 · 0.25 = 0.50 ⇒ b2 = 0 2 · 0.5 = 1.00 ⇒ b3 = 1 2 · 0.0 = 0.00 ⇒ b4 = b5 = . . . = 0 Portanto (0.625)10 = (0.101)2. 24/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão de real para binário Exemplo Qual a representação binária de (0.1)10? Solução do Exemplo 2 Temos x = 0.1. 2 · 0.1 = 0.2 ⇒ b1 = 0 2 · 0.2 = 0.4 ⇒ b2 = 0 2 · 0.4 = 0.8 ⇒ b3 = 0 2 · 0.8 = 1.6 ⇒ b4 = 1 2 · 0.6 = 1.2 ⇒ b5 = 1 2 · 0.2 = 0.4 ⇒ b6 = 0 2 · 0.4 = 0.8 . . . Portanto (0.1)10 = (0.000110011 . . .)2 = (0.00011)2. 25/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conversão da base 2 para 10 Exemplo Converter da base 2 para a base 10. (11.0101)2 = 1 ∗ 20 + 1 ∗ 21 + 0 ∗ 2−1 + 1 ∗ 2−2 + 0 ∗ 2−3 + 1 ∗ 2−4 = (3.3125)10 26/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Converter os seguintes números reais a) (7.25)10 para base 2 b) (3.25)10 para base 2 c) (101.01)2 para base 10 d) (11.1)2 para base 10 Solução a) (111.01)2 b) (11.01)2 c) (5.25)10 d) (3.5)10 27/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Converter os seguintes números reais a) (7.25)10 para base 2 b) (3.25)10 para base 2 c) (101.01)2 para base 10 d) (11.1)2 para base 10 Solução a) (111.01)2 b) (11.01)2 c) (5.25)10 d) (3.5)10 27/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 28/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números inteiros • Para número não negativos, a representação é direta 33⇒ 0 0 1 0 0 0 0 1 • Para número inteiros com sinal, uma possibilidade é reservar 1 bit para indicar o sinal • 0⇒ positivo • 1⇒ negativo −33⇒ 1 0 1 0 0 0 0 1 29/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números inteiros • Para número não negativos, a representação é direta 33⇒ 0 0 1 0 0 0 0 1 • Para número inteiros com sinal, uma possibilidade é reservar 1 bit para indicar o sinal • 0⇒ positivo • 1⇒ negativo −33⇒ 1 0 1 0 0 0 0 1 29/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números inteiros Inteiros são armazenados usando uma palavra de 32 bits no computador. • Se estamos interessados em números não negativos, a representação é simples: (71)10 ⇒ 00000000 00000000 00000000 01000111 Os valores que podemos representar vão de 0 a 232 − 1. • Para números inteiros com sinal, uma possibilidade, é reservar 1 bit para indicar qual o sinal do número. (−71)10 ⇒ 1|0000000 00000000 00000000 01000111 Os valores que podemos representar vão de −(231 − 1) a 231 − 1. 30/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números inteiros Inteiros são armazenados usando uma palavra de 32 bits no computador. • Se estamos interessados em números não negativos, a representação é simples: (71)10 ⇒ 00000000 00000000 00000000 01000111 Os valores que podemos representar vão de 0 a 232 − 1. • Para números inteiros com sinal, uma possibilidade, é reservar 1 bit para indicar qual o sinal do número. (−71)10 ⇒ 1|0000000 00000000 00000000 01000111 Os valores que podemos representar vão de −(231 − 1) a 231 − 1. 30/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números inteiros Qual a diferença? 1|0000000 00000000 00000000 00000000 e 0|0000000 00000000 00000000 00000000 31/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Complemento a dois • O complemento a dois é outra forma de representar números inteiros com sinal • O bit mais significativo ainda é utilizado para o sinal • Os números positivos sãorepresentados normalmente • Um número negativo −y é representado pelo número binário correspondente ao inteiro positivo: 2B − y onde B é o número de bits da máquina 32/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo: Complemento a dois Para ilustrar considere uma palavra de 4 bits. Podemos representar os seguintes números de 0 a 7 e de -8 a -1. Veja a tabela. bits número bits número 2B − y 0000 0 1000 -8 24 − 8 = 8 0001 1 1001 -7 24 − 7 = 9 0010 2 1010 -6 24 − 6 = 10 0011 3 1011 -5 24 − 5 = 11 0100 4 1100 -4 24 − 4 = 12 0101 5 1101 -3 24 − 3 = 13 0110 6 1110 -2 24 − 2 = 14 0111 7 1111 -1 24 − 1 = 15 Para negar um número em complemento a dois, use o seguinte algoritmo: 1 Inverta todos os bits do número (0→ 1 e 1→ 0). 2 Some 1 ao resultado invertido. 33/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo: Complemento a dois Exemplo Considere uma palavra de 4 bits. Qual a representação em complemento a dois de −2? Solução do exemplo Temos que (2)10 = (0010)2. Pelos passos do algoritmo temos: 1 Invertendo os bits 0010→ 1101 2 Somando 1 1101 +0001 1110 Ou seja, −2 é representado por 24 − 2 = 16− 2 = 14, cuja representação binária é (14)10 = (1110)2. 34/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo: Complemento a dois Exemplo Considere uma palavra de 4 bits. Qual a representação em complemento a dois de −2? Solução do exemplo Temos que (2)10 = (0010)2. Pelos passos do algoritmo temos: 1 Invertendo os bits 0010→ 1101 2 Somando 1 1101 +0001 1110 Ou seja, −2 é representado por 24 − 2 = 16− 2 = 14, cuja representação binária é (14)10 = (1110)2. 34/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Complemento a dois • Complemento a dois • Uma vantagem desse sistema é não requerer um hardware espećıfico para o operador de subtração • O operador de soma pode ser utilizado quando um número negativo é representado em complemento a dois • Essa representação é adotada em muitos dos computadores atuais 35/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo: Complemento a dois Exemplo Considerando uma máquina que utiliza 4 bits para representar números inteiros com sinal e adotando complemento a dois. Converta em complemento a 2 e realize a operação 4− 3. Solução do exemplo Ao converter obtemos (4)10 = (0100)2 e (−3)10 = (1101)2. Portanto 0100 +1101 0001 Ou seja, (0001)2 = (1)10 36/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo: Complemento a dois Exemplo Considerando uma máquina que utiliza 4 bits para representar números inteiros com sinal e adotando complemento a dois. Converta em complemento a 2 e realize a operação 4− 3. Solução do exemplo Ao converter obtemos (4)10 = (0100)2 e (−3)10 = (1101)2. Portanto 0100 +1101 0001 Ou seja, (0001)2 = (1)10 36/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Considere uma palavra de 4 bits. Qual a representação em complemento a dois dos seguintes números em binário e decimal? a) (7)10 b) (−6)10 c) (−4)10 d) Realize a operação 7− 4 utilizando os resultados obtidos nas letras anteriores Solução a) (7)10 =⇒ (0111)2 = (7)10 b) (−6)10 =⇒ (1010)2 = (10)10 c) (−4)10 =⇒ (1100)2 = (12)10 d) (0011)2 = (3)10 37/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Considere uma palavra de 4 bits. Qual a representação em complemento a dois dos seguintes números em binário e decimal? a) (7)10 b) (−6)10 c) (−4)10 d) Realize a operação 7− 4 utilizando os resultados obtidos nas letras anteriores Solução a) (7)10 =⇒ (0111)2 = (7)10 b) (−6)10 =⇒ (1010)2 = (10)10 c) (−4)10 =⇒ (1100)2 = (12)10 d) (0011)2 = (3)10 37/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação de números reais • Números reais são armazenados usando o sistema binário e a representação destes números é finita. • Por exemplo, os números π = 3.1415 . . . e = 2.71828 . . . não podem ser representados perfeitamente no computador. O que é armazenado então é uma versão aproximada destes números. • De forma geral, existem duas possibilidades para essa representação: • Representação em Ponto Fixo • Representação em Ponto Flutuante 38/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto fixo • Neste sistema uma palavra (número) é representada por 3 campos • 1 bit para o sinal • bits que formam a parte integral • bits que formam a parte fracionária • Por exemplo, o número (12, 75)10 pode ser representado em um sistema com 32 bits (15 bits para a parte integral e 16 bits para a parte fracionária) como 0 000000000001100 11000000000000000 • O sistema de ponto fixo limita muito a magnitude dos números que podem ser representados • Essa representação é raramente adotada 39/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto fixo • Neste sistema uma palavra (número) é representada por 3 campos • 1 bit para o sinal • bits que formam a parte integral • bits que formam a parte fracionária • Por exemplo, o número (12, 75)10 pode ser representado em um sistema com 32 bits (15 bits para a parte integral e 16 bits para a parte fracionária) como 0 000000000001100 11000000000000000 • O sistema de ponto fixo limita muito a magnitude dos números que podem ser representados • Essa representação é raramente adotada 39/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operaçõesaritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto fixo • Neste sistema uma palavra (número) é representada por 3 campos • 1 bit para o sinal • bits que formam a parte integral • bits que formam a parte fracionária • Por exemplo, o número (12, 75)10 pode ser representado em um sistema com 32 bits (15 bits para a parte integral e 16 bits para a parte fracionária) como 0 000000000001100 11000000000000000 • O sistema de ponto fixo limita muito a magnitude dos números que podem ser representados • Essa representação é raramente adotada 39/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante • A representação de ponto flutuante é baseada na notação cient́ıfica. Nessa notação um número real não-zero é expresso por x = ±d × βe onde β é a base do sistema de numeração, d é a mantissa e e é o expoente. • A mantissa é um número da forma (0 · d1d2d3 . . . dt)β representada por t d́ıgitos, onde 0 ≤ di ≤ (β − 1), para i = 1, . . . , t com d1 6= 0. • O expoente e está no intervalo [L,U]. • Ao exigir que d1 6= 0, dizemos que o número está normalizado. 40/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sistema de ponto flutuante Iremos denotar um sistema de ponto flutuante por F (β, t, L,U) onde • β é a base do sistema • t número de d́ıgitos da mantissa • L menor valor para o expoente • U maior valor para o expoente Em qualquer máquina apenas um subconjunto dos números reais é representado exatamente, e portanto nesse processo a representação de um número real será feita com arredondamento ou truncamento. 41/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Arredondamento Ponto flutuante • Imagine que só dispomos de quatro d́ıgitos para representar os números em uma máquina. Como seria a melhor forma de representar 157 = 2.142857 = x? Usando 2.142 ou talvez 2.143? • Se calcularmos o erro vemos que |2.142− x | = 0.000857 |2.143− x | = 0.000143 Como o erro é menor para 2.143 conclúımos que essa é a melhor forma de representar esse número. Este número foi arredondado. 42/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Arredondamento Ponto flutuante O que significa arredondar um número? • Para arredondar um número na base 10, devemos apenas observar o primeiro d́ıgito a ser descartado. Se este d́ıgito é menor que 5 deixamos os d́ıgitos inalterados; e se é maior ou igual a 5 devemos somar 1 ao último d́ıgito remanescente. 43/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Exemplo Considere o seguinte sistema: F (10, 3,−3, 3). Como fica representado neste sistema o número 12.5? Solução +0.125× 102 44/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Exemplo Considere o seguinte sistema: F (10, 3,−3, 3). Como fica o número de Euler e = 2.718281 . . . Solução + 0.271× 101 (com truncamento) + 0.272× 101 (com arredondamento) 45/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Exemplo • Considere o seguinte sistema: F (10, 3,−5, 5). Os números representados neste sistema terão a forma ±(0.d1d2d3)× 10e , 0 ≤ di ≤ 9, d1 6= 0, e ∈ [−5, 5] • O menor número em valor absoluto representado nessa máquina é m = 0.100× 10−5 = 10−1 × 10−5 = 10−6 • O maior número em valor absoluto é M = 0.999× 105 = 99900 De forma geral, o menor e o maior número são dados por m = βL−1, M = βU(1− β−t) 46/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante • Seja um sistema F (β, t, L,U) onde o menor e maior número são denotados por m e M, respectivamente. Dado um número real x , então temos as seguintes situações: 1 m ≤ |x | ≤ M O número pode ser representado no sistema. Exemplo: 235.89 = 0.23589× 103. No sistema F (10, 3,−3, 3) temos 0.235× 103 com truncamento 0.236× 103 com arredondamento 2 |x | ≤ m O número não pode ser representado no sistema. Neste caso dizemos que ocorreu underflow. Ex: 0.517× 10−8. 3 |x | ≥ M O número não pode ser representado no sistema. Neste caso dizemos que ocorreu overflow. Ex: 0.725× 109. 47/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Exemplo Considere o sistema F (2, 3,−3, 3). Para simplificar, considere uma palavra com 7 bits, onde temos 1 bit para o sinal do número, 3 bits para o expoente (incluindo seu sinal) e 3 bits para a mantissa. Vamos representar xmin = (0.100)2 × 2−3. sinal do número 0 sinal do expoente 1 expoente (3)10 = (11)2 mantissa (0.100)2 Sendo assim temos a seguinte representação para (0.0625)10 neste sistema 0 111 100 48/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Exemplo Considere o sistema F (2, 3,−1, 2). Quantos e quais números podem ser representados neste sistema? Solução: Neste sistema os números são da forma: ±0.d1d2d3 × 2e • 2 possibilidades para o sinal • (1 · 2 · 2) = 4 possibilidades para a mantissa • 4 possibilidades para o expoente (−1, 0, 1, 2) Portanto, temos 2 · 4 · 4 = 32, e considerando que o zero também faz parte do sistema, conclúımos que podemos representar 33 números distintos. 49/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Representação em ponto flutuante Continuação da solução Para responder quais são os números, notemos que as posśıveis formas da mantissa são 0.100, 0.101, 0.110 e 0.111 e as formas do expoente são 2−1, 20, 21 e 22. Assim obtemos: (0.100)2 × 2−1 = (0.25)10 (0.101)2 × 2−1 = (0.3125)10(0.100)2 × 20 = (0.5)10 (0.101)2 × 20 = (0.625)10 (0.100)2 × 21 = (1.0)10 (0.101)2 × 21 = (1.25)10 (0.100)2 × 22 = (2.0)10 (0.101)2 × 22 = (2.5)10 (0.110)2 × 2−1 = (0.375)10 (0.111)2 × 2−1 = (0.4375)10 (0.110)2 × 20 = (0.75)10 (0.111)2 × 20 = (0.875)10 (0.110)2 × 21 = (1.5)10 (0.111)2 × 21 = (1.75)10 (0.110)2 × 22 = (3.0)10 (0.111)2 × 22 = (3.5)10 O zero é representado de uma forma especial: todos os d́ıgitos di da mantissa e do expoente são nulos. 50/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcio 1) Seja uma máquina fict́ıcia que opera em um sistema de ponto flutuante de base binária e que representa os números usando 32 bits. Seja o seguinte número representado nesta máquina: 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 Se o primeiro bit indica o sinal do número, o segundo é o sinal do expoente, os próximos seis são o expoente, e os vinte e quatro últimos são a mantissa, responda às seguintes perguntas: a) O número está normalizado? Se não, normalize-o. b) O número é positivo ou negativo? c) Em módulo, o número é menor ou maior do que 1? d) Como ficaria a representação deste número no sistema F (10, 6,−10, 10)? 51/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Ponto flutuante IEEE 754 • O padrão usa o sistema binário e dois formatos para representação de números podem ser adotados: precisão simples e precisão dupla. Neste formato um número é representado de forma normalizada por ±1.d1d2 . . . dn × 2e • Em precisão simples um número real é representado por 32 bits, sendo que: • 1 bit para o sinal • 8 bits para o expoente • 23 bits para a mantissa • formato binário ± e1e2 . . . e8 d1d2 . . . d23 • O primeiro bit à esquerda do ponto binário, isto é d0 = 1, é chamado de bit escondido (hidden bit). 52/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Expoente • Nesse formato, o expoente não é representado como um inteiro via complemento a dois. Os oito bits do expoente armazenam o número s = e + 127. • Exemplos: e = 1 ⇒ s = 1 + 127 = (128)10 = (10000000)2 e = −3 ⇒ s = −3 + 127 = (124)10 = (01111100)2 e = 52 ⇒ s = 52 + 127 = (179)10 = (10110011)2 • Em particular as sequências de bits (00000000) e (11111111) para o expoente, são usadas para representar, respectivamente, o zero e infinito ou ocorrência de erro, que é denotado por NaN (Not a Number). 53/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Mantissa • Como o sistema é normalizado temos d0 6= 0. Dado que a base é dois, a única possibilidade para o primeiro d́ıgito será sempre igual a 1, e portanto este bit não precisa ser armazenado, por isso é chamado de bit escondido. • Com o uso desta normalização temos um ganho na precisão, pois a mantissa passa a ser representada com 24 bits (23 + 1 bit escondido). • Exemplo: (0.125)10 = (0.001)2 = 1.0× 2−3 é armazenado como: 0 01111100 0000000 00000000 00000000 • A mantissa só possui um d́ıgito significativo, que é justamente o bit escondido, e portanto os demais 23 bits são representados com 0. 54/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Ponto flutuante IEEE 754 • O zero é representado com zeros para expoente e mantissa 0 00000000 0000000 00000000 00000000 • Os valores +∞ e −∞ são representados por 0 11111111 0000000 00000000 00000000 1 11111111 0000000 00000000 00000000 • Se a sequência de bits para o expoente for composta por todos d́ıgitos iguais a um e a da mantissa for não nula, isto é: 1 11111111 xxxxxxx xxxxxxxx xxxxxxxx temos a ocorrência de NaN: Not a Number, que representam expressões inválidas como: 0 ∗∞, 0/0, ∞/∞, ∞−∞ 55/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 56/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas • Adição/subtração: quando dois números em ponto flutuante são somados (ou subtráıdos), é preciso alinhar as casas decimais do número de menor expoente para a direita até que os expoentes fiquem iguais. • Os resultados devem ser truncados ou arredondados dependendo da maquina Exemplo Seja uma maquina utilizando F (10, 2,−5, 5) realize a operação: 0, 12× 101 + 0, 5× 10−1 0, 12× 101 + 0, 005× 101 0, 125× 101 =⇒ 0, 12× 101(Truncar) 0, 13× 101(Arredondar) 57/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas • Adição/subtração: quando dois números em ponto flutuante são somados (ou subtráıdos), é preciso alinhar as casas decimais do número de menor expoente para a direita até que os expoentes fiquem iguais. • Os resultados devem ser truncados ou arredondados dependendo da maquina Exemplo Seja uma maquina utilizando F (10, 2,−5, 5) realize a operação: 0, 12× 101 + 0, 5× 10−1 0, 12× 101 + 0, 005× 101 0, 125× 101 =⇒ 0, 12× 101(Truncar) 0, 13× 101(Arredondar) 57/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas • Multiplicação/divisão: nessa operação realizamos o produto (ou divisão) das mantissas e o expoente final da base é obtido, somando (subtraindo) os expoentes de cada parcela. • Os resultados devem ser truncados ou arredondados dependendo da maquina Exemplo Seja uma maquina utilizando F (10, 2,−5, 5) realize a operação: 0, 53× 102 × 0, 2× 10−1 0, 106× 101 =⇒ 0, 1× 101(Truncar) 0, 11× 101(Arredondar) 58/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas • Multiplicação/divisão: nessa operação realizamos o produto (ou divisão) das mantissas e o expoente final da base é obtido, somando (subtraindo) os expoentes de cada parcela.• Os resultados devem ser truncados ou arredondados dependendo da maquina Exemplo Seja uma maquina utilizando F (10, 2,−5, 5) realize a operação: 0, 53× 102 × 0, 2× 10−1 0, 106× 101 =⇒ 0, 1× 101(Truncar) 0, 11× 101(Arredondar) 58/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Adição Adicionar 4.32 e 0.064 em uma máquina com mantissa t = 2 e base 10. Solução 4.32 + 0.064 = 0.43× 101 + 0.64× 10−1 = 0.4300× 101 + 0.0064× 101 = 0.4364× 101 Truncamento → 0.43× 101 Arredondamento → 0.44× 101 59/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Adição Adicionar 4.32 e 0.064 em uma máquina com mantissa t = 2 e base 10. Solução 4.32 + 0.064 = 0.43× 101 + 0.64× 10−1 = 0.4300× 101 + 0.0064× 101 = 0.4364× 101 Truncamento → 0.43× 101 Arredondamento → 0.44× 101 59/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Subtração Subtrair 371 de 372 em uma máquina com mantissa t = 2 e base 10. Solução 372− 371 = 0.37× 103 − 0.37× 103 = 0.37× 103 − 0.37× 103 = 0.00× 103 A subtração deu 0 em vez de 1. Problema na subtração de dois números aproximadamente iguais. 60/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Subtração Subtrair 371 de 372 em uma máquina com mantissa t = 2 e base 10. Solução 372− 371 = 0.37× 103 − 0.37× 103 = 0.37× 103 − 0.37× 103 = 0.00× 103 A subtração deu 0 em vez de 1. Problema na subtração de dois números aproximadamente iguais. 60/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Subtração Subtrair 371 de 372 em uma máquina com mantissa t = 2 e base 10. Solução 372− 371 = 0.37× 103 − 0.37× 103 = 0.37× 103 − 0.37× 103 = 0.00× 103 A subtração deu 0 em vez de 1. Problema na subtração de dois números aproximadamente iguais. 60/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Multiplicação Multiplicar 1234 por 0.016 em uma máquina com mantissa t = 2 e base 10. Solução 1234 ∗ 0.016 = 0.12× 104 ∗ 0.16× 10−1 = 0.12× 104 ∗ 0.16× 10−1 = 0.0192× 103 = 0.19× 102 Neste caso usando arredondamento ou truncamento, o resultado é 19, em vez de 19.744 que é o resultado exato. 61/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Multiplicação Multiplicar 1234 por 0.016 em uma máquina com mantissa t = 2 e base 10. Solução 1234 ∗ 0.016 = 0.12× 104 ∗ 0.16× 10−1 = 0.12× 104 ∗ 0.16× 10−1 = 0.0192× 103 = 0.19× 102 Neste caso usando arredondamento ou truncamento, o resultado é 19, em vez de 19.744 que é o resultado exato. 61/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Divisão Dividir 0.00183 por 492 em uma máquina com mantissa t = 2 e base 10. Solução 0.00183÷ 492 = 0.18× 10−2 ÷ 0.49× 103 = 0.18× 10−2 ÷ 0.49× 103 = 0.3673× 10−5 Arredondamento → 0.37× 10−5 Truncamento → 0.36× 10−5 62/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas Exemplo: Divisão Dividir 0.00183 por 492 em uma máquina com mantissa t = 2 e base 10. Solução 0.00183÷ 492 = 0.18× 10−2 ÷ 0.49× 103 = 0.18× 10−2 ÷ 0.49× 103 = 0.3673× 10−5 Arredondamento → 0.37× 10−5 Truncamento → 0.36× 10−5 62/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas em ponto flutuante É importante observar que algumas propriedades aritméticas como associatividade: (a + b) + c = a + (b + c) distributividade: a(b + c) = ab + ac não são válidas em sistemas de ponto flutuante. 63/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exemplo Exemplo Considere um sistema com base β e três d́ıgitos na mantissa, ou seja, F (10, 3, L,U). Considere ainda que o sistema trabalha com arredondamento após cada uma das operações efetuadas. a) (11.4 + 3.18) + 5.05 e 11.4 + (3.18 + 5.05) b) 5.55(4.45− 4.35) e 5.55 ∗ 4.45− 5.55 ∗ 4.35 64/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas em ponto flutuante Solução do Exemplo a) (11.4 + 3.18) + 5.05 0.1140× 102 + 0.0318× 102 = 0.1458× 102 = 0.146× 102 (arr.) 0.1460× 102 + 0.0505× 102 = 0.1965× 102 = 0.197× 102 (arr.) a) 11.4 + (3.18 + 5.05) 0.318× 101 + 0.505× 101 = 0.823× 101 0.0823× 102 + 0.1140× 102 = 0.1963× 102 = 0.196× 102 (arr.) 65/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Operações aritméticas em ponto flutuante Solução do Exemplo (cont.) b) 5.55(4.45− 4.35) 0.445× 101 − 0.435× 101 = 0.010× 101 0.555× 101 ∗ 0.100× 100 = 0.055500× 101 = 0.555 b) 5.55 ∗ 4.45− 5.55 ∗ 4.35 0.555× 101 ∗ 0.445× 101 = 0.246975× 102 = 0.247× 102 0.555× 101 ∗ 0.435× 101 = 0.241425× 102 = 0.241× 102 0.247× 102 − 0.241× 102 = 0.006× 102 = 0.6 66/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Seja um sistema de aritméticade ponto flutuante de quatro d́ıgitos na mantissa, base decimal e que usa o arredondamento. Dados os números: x = 0.9370× 104 y = 0.1272× 102 efetue as operações: x + y e x × y . 2) Sejam os seguintes números x = 0.5289, y = 0.8012 e z = 0.6024, e considere um sistema de ponto flutuante com mantissa de 4 d́ıgitos e base decimal. Mostre que: a) x(y + z) 6= x × y + x × z b) (x + y) + z 6= x + (y + z) 67/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Conteúdo 1 Introdução 2 Sistema de numeração 3 Conversão de sistema de numeração Número inteiro Número real 4 Representação de números computador Inteiros Reais 5 Operações aritméticas em ponto flutuante 6 Noções básicas sobre erros 68/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Erro absoluto Se x̃ é uma aproximação de x , o erro absoluto é definido por EA(x̃) = |x − x̃ | Exemplo Seja x = 1428.756. Em uma máquina com mantissa t = 4, usando arredondamento e truncamento, respectivamente, temos x̃t = 0.1428× 104 ⇒ EA(x̃t) = 0.756× 100 x̃a = 0.1429× 104 ⇒ EA(x̃a) = 0.244× 100 69/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Erro relativo O erro relativo é definido por ER(x̃) = |x − x̃ | |x̃ | = EA(x̃) |x̃ | dado que x̃ 6= 0. Exemplos: x1 = 1000.5, x̃1 = 1000.6 x2 = 10.5, x̃2 = 10.6 ⇒ EA(x̃i ) = 0.1, i = 1, 2 ER(x̃1) = 0.1 1000.6 ≈ 0.00009994 = 0.9994× 10−4 ER(x̃2) = 0.1 10.6 ≈ 0.009433 = 0.9433× 10−2 70/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Erros • Além dos erros causados pela representação no computador e pelas operações aritméticas, existem certos efeitos numéricos que contribuem para aumentar os erros introduzidos. • A seguir iremos estudar alguns casos importantes como a adição ou subtração entre um número grande e um pequeno, subtração de dois números quase iguais, propagação do erro, etc. 71/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Somar ou subtrair um número pequeno e um grande Para exemplificar considere um sistema F (10, 4, L,U). Exemplo Somar 0.1 e 5000. 0.1 + 5000 = 0.1000× 100 + 0.5000× 104 = 0.00001× 104 + 0.50000× 104 = 0.50001× 104 Usando arredondamento (ou truncamento), obtemos 0.5× 104. 72/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Cancelamento Subtraimos dois números quase iguais, ou quando somamos números de sinais opostos, mas de magnitudes semelhantes Exemplo Calcular √ 37− √ 36 em uma máquina F (10, 4, L,U) usando arredondamento. Solução Para efeitos de comparação, apresentamos a resposta exata aqui: √ 37− √ 36 = 6.08276253− 6 = 0.08276253. Nessa máquina temos √ 37 = 6.08276253 → 0.6083× 101 √ 36 = 6.0 → 0.6000× 101 73/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Cancelamento Solução do Exemplo - (cont.) • Efetuando a subtração temos 0.6083× 101 − 0.6000× 101 = 0.0083× 101 = 0.8300× 10−1 • A resposta exata é 0.8277× 10−1 → perda de d́ıgitos significativos! • É posśıvel obter um resultado mais preciso? Sim, basta considerar que √ x −√y = √ x −√y ( √ x + √ y) √ x + √ y = x − y√ x + √ y 74/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Cancelamento Solução do Exemplo - (cont.) • Efetuando a subtração temos 0.6083× 101 − 0.6000× 101 = 0.0083× 101 = 0.8300× 10−1 • A resposta exata é 0.8277× 10−1 → perda de d́ıgitos significativos! • É posśıvel obter um resultado mais preciso? Sim, basta considerar que √ x −√y = √ x −√y ( √ x + √ y) √ x + √ y = x − y√ x + √ y 74/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Cancelamento Solução do Exemplo - (cont.) • Efetuando a subtração temos 0.6083× 101 − 0.6000× 101 = 0.0083× 101 = 0.8300× 10−1 • A resposta exata é 0.8277× 10−1 → perda de d́ıgitos significativos! • É posśıvel obter um resultado mais preciso? Sim, basta considerar que √ x −√y = √ x −√y ( √ x + √ y) √ x + √ y = x − y√ x + √ y 74/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Cancelamento Solução do Exemplo - (cont.) Portanto para √ 37− √ 36 temos x − y√ x + √ y = 37− 36√ 37 + √ 36 = 1 0.6083× 101 + 0.6000× 101 = 1 0.1208× 102 = 0.08278145 = 0.8278× 10−1 que é um resultado mais preciso que o anterior. 75/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Propagação do erro Problemas numéricos não ocorrem apenas quando dois números quase iguais são subtráıdos. Também ocorrem no cálculo de uma soma, quando uma soma parcial é muito grande se comparada com o resultado final. Considere que: s = n∑ k=1 ak seja a soma a ser computada e que os ak podem ser positivos ou negativos e de diferentes magnitudes. O cálculo é usualmente feito da seguinte forma: s1 = ak , sk = sk−1 + ak , k = 2, 3, . . . , n tal que s = sn. 76/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Propagação do erro Exemplo Considere uma máquina F (10, 4, L,U) com truncamento. Vamos efetuar a seguinte operação: S = 4∑ i=1 (xi + yi ) com xi = 0.46709, e yi = 3.5678 Para i = 1, temos (x1 + y1) = 0.4034× 101 E o erro absoluto é EA(S̄) = |4.03569− 4.034| = 0.00169 77/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Propagação do erro Exemplo (cont.)Para i = 2, temos (x1 + y1) + (x2 + y2) = 0.8068× 101 EA(S̄) = |8.07138− 8.068| = 0.00338 Para i = 3, temos (x1 + y1) + (x2 + y2) + (x3 + y3) = 0.1210× 102 EA(S̄) = |12.10707− 12.10| = 0.00707 Para i = 4, temos (x1 + y1) + (x2 + y2) + (x3 + y3) + (x4 + y4) = 0.1613× 102 EA(S̄) = |16.14267− 16.13| = 0.01276 De onde pode-se observar que o erro absoluto aumenta à medida em que as operações aritméticas são realizadas. 78/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros A implementação incorreta ou o uso incorreto de algoritmos e/ou softwares cient́ıficos já foi responsável por alguns desastres reais. 79/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Patriot missile failure - Guerra do Golfo (1991) Uma bateria de ḿısseis Patriot americano, falhou ao rastrear e interceptar um ḿıssil Scud do Iraque. • O ḿıssil Scud acertou o acampamento americano, matou 28 soldados e feriu centenas. • Relatório técnico apontou uma falha no software. • Palavra do computador 24 bits. • Tempo era medido em décimos de segundo (1/10). • O valor (1/10) ao ser representado em binário não termina. • Acúmulo do erro no software após longo tempo do sistema rodando levou a falha. 80/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Ariane 5 • Foguete da European Space Agency explode 40s após o lançamento. • Milhões de dolares foram investidos no seu desenvolvimento e equipamento. • Relatório acusou um erro do programa no sistema de referência inercial. • Problema: número de 64 bits de ponto flutuante era convertido em um inteiro de 16 bits com sinal. Falha na conversão para números maiores que 32767, que é o maior inteiro representável com 16 bits.81/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Sleipnir offshore • Plataforma de petróleo Sleipnir afunda. • Após o acidente a empresa da plataforma, Statoil, uma empresa norueguesa solicita a empresa SINTEF um relatório técnico. • Falha em uma parede, resultando em uma rachadura e vazamento. • Motivo: combinação de erros no programa de análise de elementos finitos, que subestimou a tensão na parede. 82/83 Cálculo Numérico - UFJF Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros Exerćıcios 1) Deseja-se calcular: S = 10∑ k=1 2 k2 no sistema F (10, 3,−5, 4), usando arredondamento em todas as operações. Assim, efetue a soma: a) da direita para a esquerda e da esquerda para a direita b) os valores obtidos foram iguais? 2) Tente evitar perda de d́ıgitos significativos no cálculo das seguintes funções: a) log(1 + x)− log(x), para x grande b) 1−cos(x)x2 , para x próximo de 0 c) sen(a + x)− sen(a), para x próximo de 0 83/83 Introdução Sistema de numeração Conversão de sistema de numeração Número inteiro Número real Representação de números computador Inteiros Reais Operações aritméticas em ponto flutuante Noções básicas sobre erros
Compartilhar