Universidade Federal do Espírito Santo - UFES

Documentos relacionados
étodos uméricos Erros Visão Geral Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Aproximações e Erros

Conceitos e Princípios Gerais

Cálculo Numérico - Mat 215. Prof. Dirceu Melo. Prof. Dirceu Melo - MAT215

Cálculo Numérico. Conjunto de métodos utilizados para a obtenção de resultados de problemas matemáticos através de aproximações.

Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer ÍNDICE. Aula 1- Introdução. Representação de números. Conversão de números

Métodos Numéricos Erros Ponto Flutuante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Métodos Numéricos - Notas de Aula

Cálculo Numérico. Erros em processamento Numéricos

Arquitetura e Organização de Computadores

SME CÁLCULO NUMÉRICO I PROFESSORES MARCOS ARENALES MARISTELA SANTOS. Agosto 2011

Cálculo Numérico Noções básicas sobre erros

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Sistemas numéricos e a Representação Interna dos Dado no Computador

Representação e erros numéricos

Aula 11. A Informação e sua Representação Ponto-Flutuante. Prof. Dr. Dilermando Piva Jr.

Organização de Computadores I

Representação e erros numéricos

Matemática Computacional. Edgard Jamhour

ARQUITETURA DE COMPUTADORES

Ponto Fixo e Ponto Flutuante

Representação e erros numéricos

Representação e erros numéricos

TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante

CCI-22 CCI-22. Introdução e Motivação. Matemática Computacional. Conteúdo. Finalidade

Cálculo Numérico Conceitos Básicos

Organização e Arquitetura de Computadores I

Estudo de erros Erros na fase de modelagem: 1.2. Erros na fase de resolução:

CCI-22 CCI-22. Introdução e Motivação. Matemática Computacional. Conteúdo. Finalidade. Carlos Henrique Q. Forster Conteúdo, Avaliação, Bibliografia

Arquitetura e Organização de Computadores

Erros em computações numéricas

Dessa forma pode-se transformar qualquer número em qualquer base para a base 10.

INTRODUÇÃO. O processo de modelagem matemática para resolver problemas reais pode ser visto pelas seguintes etapas: Escolha de um Método Adequado

Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:

ARQUITETURA DE COMPUTADORES

Disciplina: Introdução à Engenharia da Computação

Método Analítico. Método Numérico

Métodos Numéricos. Turma CI-202-D. Josiney de Souza.

Erros e Aritmética de ponto flutuante

Sistemas de Numeração. Exemplos de Sistemas de Numeração (1) Exemplos de Sistemas de Numeração (2) Sistemas de Numeração

CCI-22. Erros Erros de arredondamento, representação e de cálculo

Organização de Computadores I

Números binários e erros

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Introdução. à Ciência da. Representação de Números em Ponto Flutuante. Aula 21. Números Fracionários

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

CCI-22. Prof. Paulo André Castro Sala 110 Prédio da Computação

REPRESENTAÇÃO DE DADOS. Prof. Maicon A. Sartin

Aula 9: Estouro e Representação em Ponto Flutuante

Estouro e Representação em Ponto Flutuante

CCI-22. Matemática Computacional. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Sistemas Digitais INE 5406

CCI-22. Matemática Computacional. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

1.1 Etapas na solução de um problema. 1.3 Tipos de erros. 1.4 Aritmética de ponto flutuante.

Erros, Precisão Numérica e Ponto Flutuante

Baseado nos slides de Anna Tostes SISTEMA NUMÉRICO

Cálculo numérico Cálculo numérico - O Cálculo Numérico é uma metodologia para resolver problemas matemáticos através do computador. - Uma solução obti

CÁLCULO NUMÉRICO (CN)

Capítulo 1 - Erros e Aritmética Computacional

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Números Binários. Apêndice A V1.0

Aula 9: Estouro e Representação em Ponto Flutuante

Arquitetura de Computadores

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Aritmética de Inteiros

Capítulo 1 - Erros e Aritmética Computacional

Introdução à Computação: Sistemas de Numeração

Circuitos Lógicos. Prof. Odilson Tadeu Valle

CCI - 22 Matemática Computacional

Capítulo 2. Representação de números em vírgula flutuante

Sistemas de Numeração. Tiago Alves de Oliveira

SISTEMA DE NUMERAÇÃO. Introdução a Informática. Vinícius Pádua

Representações de Números Inteiros: Sinal e Magnitude e Representação em Excesso de k

1. Converta para a base binária, usando o método das divisões sucessivas, os seguintes números inteiros: a) 13 b) 35.

Sistemas Numéricos, Operações Lógicas e Tipos de Dados Tratados pelo Computador

Aula 7: Representações de Números Inteiros: Sinal e Magnitude e Representação em Excesso de k

Erros numéricos por Mílton Procópio de Borba

Sistemas de Computação. Sistemas de numeração

Introdução à Computação

SISTEMAS DE NUMERAÇÃO. Introdução à Ciência da Computação ICC0001

Cálculo Numérico. Prof. Sérgio Queiroz 03/04/2014. Aula 2 Erros e Aritmética de Ponto Flutuante

Infraestrutura de Hardware

Aula 3 - Representação de Dados

Arquitectura de Computadores I

Cálculo Numérico. Profº Ms Ademilson Teixeira IFSC

PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Arquitetura e Organização de computadores

Folha Prática - Representação de Números e Erros. 1. Representar os seguintes números decimais em binário com ponto fixo:

1. Converta para a base binária, usando o método das divisões sucessivas, os seguintes números inteiros: a) 13 b) 35. e) 347 f) 513.

Circuitos Digitais. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01)

Representação de Números em Ponto Flutuante

Cálculo Numérico. Conceitos Básicos

Sistemas de Numeração

Fundamentos de Arquiteturas de Computadores

Representação de números em máquinas

Transcrição:

Universidade Federal do Espírito Santo - UFES Centro Universitário Norte do Espírito Santo - CEUNES Departamento de Matemática Aplicada - DMA Prof. Isaac P. Santos - 2018/1 Aula: Erros e Aritmética de Ponto Flutuante Esse material é baseado nas referências [1],[2],[3] e [4]. 1 Erros A modelagem matemática de um processo físico consiste em descrever um modelo matemático (seja através de equações diferenciais ou outras ferramentas matemáticas) que representa a fenomenologia de interesse. Em geral, para se obter uma solução plausível são feitas simplificações no modelo (tanto físico quanto matemático). As simplificações realizadas se constituem em fonte de erros, podendo implicar na necessidade de uma reformulação no modelo físico e matemático. Além disso, no processo de obtenção de soluções (aproximadas) de modelos matemáticos através de métodos numéricos surgem erros de várias fontes que podem modificar os resultados obtidos. Por isso é importante conhecer as causas desses erros para minimizar as suas consequências. As principais fontes de erros são erros nos dados de entrada, erros no modelo matemático, erros de arredondamento durante o processo de solução, erros de truncamento e erros humanos e de máquinas. Na prática profissional, os erros podem ser custosos e, algumas vezes, catastróficos. Se uma estrutura ou um mecanismo falha, vidas podem ser perdidas. Por exemplo, um modelo matemático que determina a velocidade de um pára-quedista em queda livre (modelo desenvolvido a partir da segunda lei de Newton) pode fornecer uma excelente aproximação, mas ele nunca vai predizer exatamente, na prática, a queda do pára-quedista. Uma variedade de fatores, como vento e pequenas variações na resistência do ar, causaria desvios do valor previsto. Se esses desvios forem sistematicamente para cima ou para baixo, então é necessário desenvolver um novo modelo. Entretanto, se eles forem distribuídos aleatoriamente e agrupados bem junto em torno da previsão, então os desvios poderão ser considerados desprezíveis, e o modelo, adequado. As aproximações numéricas também introduzem discrepâncias similares na análise. As duas principais formas de erro numérico são: o erro de arredondamento e o erro de truncamento. 1.1 Erro de arredondamento Os erros de arredondamento surgem devido ao fato de algumas propriedades básicas da aritmética real (dos números reais) não valerem quando executadas no computador. Os computadores podem representar apenas quantidades com números finitos de algarismos. Na matemática, alguns números são representados por uma quantidade infinita de dígitos, e isso não é possível em um computador, pois uma palavra da memória e a própria memoria da máquina suportam somente quantidades finitas de dados. Então, a representação de muitos números reais no computador pode não ser exata, causando os erros de arredondamento.

1.2 Erro de truncamento Esse erro surge sempre que se substitui um procedimento matemático infinito por um processo finito ou discreto, ou seja, o erro de truncamento é a discrepância introduzida pela aplicação de métodos numéricos para aproximar operações e quantidades matemáticas exatas. Um exemplo de erro de truncamento é o da aproximação de uma função pela sua série de Taylor. Por exemplo, a série de Taylor de f(x) = e x em torno de x = 0 é dada por e x = n=0 x n n! = 1 + x + x2 2! + x3 3! + x4 4! +. (1) Então, e = 1 + 1 + 1 2! + 1 3! + 1 4! + + 1 n! +. (2) O valor de e pode ser determinado aproximadamente utilizando qualquer número finito de termos da série. Obviamente, quanto mais termos da série forem utilizados, melhor será a aproximação. Por exemplo, se utilizarmos os cinco primeiros termos da série, obtemos e 1 + 1 + 1 2! + 1 3! + 1 4!, (3) isto é, e 2.708. Nessa aproximação há erro de truncamento, pois dos infinitos termos da série consideramos somente os cinco primeiros. 1.3 Erro Absoluto e erro relativo O valor significativo de um erro está obviamente associado à magnitude da quantidade que está sendo medida ou calculada. Por exemplo, um erro (absoluto) igual a 1 é muito menos significativo no processo de contagem da população da terra do que no processo de contagem dos alunos da turma de Algoritmos Numéricos. Isso motiva as definições de erro absoluto e erro relativo: erro absoluto = valor real valor aproximado erro relativo = erro absoluto, valor real considerando que o valor real seja não nulo. O erro absoluto é mais grave quando o valor verdadeiro for pequeno. 2 Representação de Números Como mencionado anteriormente, os erros de arredondamento se originam do fato de que o computador mantém apenas um número fixo de algarismos significativos durante os cálculos. Números como π, e ou 7 não podem ser expressos por um número fixo de algarismos significativos. Portanto, eles não podem ser representados exatamente por um computador. Além disso, como os computadores usam uma representação na base 2, não podem representar precisamente certos números exatos na base 10. A discrepância introduzida por essa omissão de algarismos significativos é chamada de erro de arredondamento.

A unidade fundamental na qual a informação é representada no computador é chamada de palavra, entidade que consiste em uma seqüência de dígitos binários (binary digits), ou bits. Os números são tipicamente armazenados em uma ou mais palavras. Um sistema numérico é uma convenção para representar quantidades. Como temos 10 dedos nas mãos e 10 dedos nos pés, o sistema numérico com que temos mais familiaridade é o sistema decimal ou o sistema numérico na base 10. A base é o número usado como referência para construir o sistema. O sistema na base 10 usa os 10 algarismos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 para representar os números. Por si só, esses algarismos são satisfatórios para contar de 0 a 9. Para quantidades maiores, combinações desses algarismos básicos devem ser usadas, com a posição ou o valor do lugar especificando a ordem de grandeza. O algarismo mais à direita em um número representa um valor entre 0 e 9. O segundo algarismo a partir da direita representa um múltiplo de 10. O terceiro algarismo a partir da direita representa um múltiplo de 100 e assim por diante. Por exemplo, no número 86.409 pode ser representado por (8 10 4 ) + (6 10 3 ) + (4 10 2 ) + (0 10 1 ) + (9 10 0 ) = 86.409. Esse tipo de representação é chamada notação posicional. Como o sistema decimal é bastante familiar para nós, não percebemos que existem existem alternativas. Por exemplo, se os seres humanos tivessem oito dedos nas mãos e oito dedos nos pés, sem dúvida teriam desenvolvido um sistema octogonal ou uma representação na base 8. Nesse mesmo sentido, o amigo computador é como um animal de dois dedos, limitado a dois estados ou 0 ou 1. Isso está relacionado ao fato de que as unidades lógicas primárias dos computadores digitais são componentes elétricas ligadas ou desligadas. Portanto, os números em um computador são representados com um sistema binário ou na base 2. Da mesma forma como no sistema decimal, as quantidades podem ser representadas usando-se a notação posicional. Por exemplo, o número binário 11 é equivalente (1 2 1 ) + (1 2 0 ) = 2 + 1 = 3 no sistema decimal. De maneira geral, um número real x é representado numa base β por que significa x = (a m a m 1 a 1 a 0, b 1 b 2 b n ) β, (4) x = a m β m + a m 1 β m 1 + + a 1 β 1 + a 0 β 0 + b 1 β 1 + b 2 β 2 + + b n β n, (5) onde a 0, a 1,, a m, b 1, b 2,, b n são elementos do conjunto Exemplo 2.1. A = {k N; 0 k β 1}. a) No sistema decimal, a base é β = 10 e A = {0, 1, 2,, 9}; b) No sistema octal, a base é β = 8 e A = {0, 1, 2,, 7}; c) No sistema binário, a base é β = 2 e A = {0, 1}. Exemplo 2.2.

a) (1995) 10 = 1 10 3 + 9 10 2 + 9 10 1 + 5 10 0 ; b) (19, 95) 10 = 1 10 1 + 9 10 0 + 9 10 1 + 5 10 2 ; c) (0, 1995) 10 = 1 10 1 + 9 10 2 + 9 10 3 + 5 10 4 ; d) (10111) 2 = 1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0 ; e) (1011, 101) 2 = 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 + 1 2 1 + 1 2 2 + 1 2 3. 2.1 Mudança entre bases decimal e binária 2.1.1 Transformação de um número da base 2 para a base 10 Dado o número x = (a m a m 1 a 1 a 0, b 1 b 2 b n ) 2 na base 2, para determinar x na base 10 basta calcularmos (x) 10 = [a m 2 m + a m 1 2 m 1 + + a 1 2 1 + a 0 2 0 ], [b 1 2 1 + b 2 2 2 + + b n 2a n ]. A soma a m 2 m + a m 1 2 m 1 + + a 1 2 1 + a 0 2 0 constitui a parte inteira do número na base 10, enquanto que a soma b 1 2 1 + b 2 2 2 + + b n 2a n forma a parte decimal. Exemplo 2.3. (10111) 2 = 1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0 (6) = 16 + 0 + 4 + 2 + 1 (7) = (23) 10, (8) isto é, o número 10111 na base 2 equivale ao número 23 na base 10. Exemplo 2.4. (10111, 101) 2 = (1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0 ), (1 2 1 + 0 2 2 + 1 2 3 ) = (16 + 0 + 4 + 2 + 1), (1/2 + 0 + 1/8) = (23, 625) 10, isto é, o número 10111, 101 na base 2 equivale ao número 23, 625 na base 10. Agora vamos aprender como transformar um número da base 10 (decimal) para a base 2 (binária). 2.1.2 Transformação de um número inteiro da base 10 para a base 2 Neste caso divida sucessivamente o número por 2 até que o último quociente seja igual a 1. Assim, se x = (a m a m 1 a 1 a 0 ) 10 então dividindo a m a m 1 a 1 a 0 por 2 obtém-se o quociente q 1 e resto r 0 ; divida q 1 por 2 para obter o quociente q 2 e resto r 1 ; divida q 2 por 2 para obter o quociente q 3 e resto r 2 ; repita esse processo até obter um quociente q s = 1 e resto r s 1. O número x na base 2 será (q s r s 1 r s 2 r 2 r 1 r 0 ) 2.

Exemplo 2.5. Vamos escrever (23) 10 na base 2. dividindo 23 por 2 obtemos o quociente q 1 = 11 e resto r 0 = 1; dividindo q 1 = 11 por 2 obtemos o quociente q 2 = 5 e resto r 1 = 1; dividindo q 2 = 5 por 2 obtemos o quociente q 3 = 2 e resto r 2 = 1; dividindo q 3 = 2 por 2 obtemos o quociente q 4 = 1 e resto r 3 = 0; Como o quociente q 4 = 1 então paramos e o número procurado é (q 4 r 3 r 2 r 1 r 0 ) 2 = (10111) 2. 2.1.3 Transformação de um número fracionário da base 10 para a base 2 Considere o número x = (a m a m 1 a 1 a 0, b 1 b 2 b n ) 10 na base 10, queremos transformar x para a base 2. Sejam i a parte inteira e f a parte fracionária do número x na base 2, isto é, x = (i, f) 2. Para obter i, isto é, a parte inteira, usamos o procedimento anterior: dividimos sucessivamente a parte inteira do número x na base 10 (isto é, a m a m 1 a 1 a 0 ) por 2 até obter um quociente igual a 1 (veja Seção 2.1.2). Para obter f, isto é, a parte fracionária, multiplica sucessivamente a parte fracionária do número na base 10 (isto é, 0, b 1 b 2 b n ) por 2 até que a parte fracionária do último produto seja igual a zero ou até que apareça uma dízima periódica. Assim, multiplicando 0, b 1 b 2 b n por 2 obtém-se f 1, b 1 1b 1 2 b 1 n; multiplica 0, b 1 1b 1 2 b 1 n por 2 para obter f 2, b 2 1b 2 2 b 2 n; multiplica 0, b 2 1b 2 2 b 2 n por 2 para obter f 3, b 3 1b 3 2 b 3 n; repita esse processo até que a multiplicação de 0, b k 1 1 b k 1 2 b k 1 n por 2 resultar em f k, 00 0 (isto é, até a parte fracionária do produto seja zero) ou apareça uma dízima periódica. Então f = f 2 f k e o número x na base 2 será (q s r s 1 r s 2 r 2 r 1 r 0, f 1 f 2 f k ) 2. Exemplo 2.6. Vamos escrever (23, 625) 10 na base 2. Como o número na base 10 é fracionário, devemos tratar as partes inteira e fracionária separadamente. Para a parte inteira, temos: dividindo 23 por 2 obtemos o quociente q 1 = 11 e resto r 0 = 1; dividindo q 1 = 11 por 2 obtemos o quociente q 2 = 5 e resto r 1 = 1; dividindo q 2 = 5 por 2 obtemos o quociente q 3 = 2 e resto r 2 = 1; dividindo q 3 = 2 por 2 obtemos o quociente q 4 = 1 e resto r 3 = 0; Como o quociente q 4 = 1 então paramos e o número (23) 10 é descrito na base 2 como Consideramos agora a parte fracionária: (q 4 r 3 r 2 r 1 r 0 ) 2 = (10111) 2.

multiplicando 0, 625 por 2 obtém-se 1, 250, com f 1 = 1; multiplica 0, 250 por 2 para obter 0, 500, com f 2 = 0; multiplica 0, 500 por 2 para obter 1, 000, f 3 = 1; Como a parte fracionária resultou em zero, então paramos e o número (0, 625) 10 na base 2 é (0, f 1 f 2 f 3 ) 2 = (0, 101) 2. Juntando as partes inteira e fracionária, obtemos (23, 625) 10 = (10111, 101) 2. 2.2 Representação inteira de um número em um computador A abordagem mais direta, chamada de método dos valores com sinal, utiliza o primeiro bit de uma palavra para indicar o sinal, com 0 para positivo e 1 para negativo. Os bits restantes são usados para armazenar o número. Por exemplo, o valor inteiro -173 seria armazenado em um computador de 16 bits, conforme Tabela (2.2). 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 Tabela 1: A representação de um inteiro decimal -173 em um computador de 16 bits usando-se o método do valor com sinal. Esse método descrito do valor com sinal não é usado para representar inteiros nos computadores convencionais. Uma abordagem preferida, chamada de técnica do complemento de 2, incorpora diretamente o sinal no valor absoluto do número em vez de fornecer um bit separado para representar o sinal. 3 Aritmética de Ponto Flutuante As quantidades fracionárias são representadas tipicamente em computadores usando-se a forma de ponto flutuante. Nessa abordagem, o número é expresso como uma parte fracionária, chamada mantissa ou significando, e uma parte inteira, chamada de expoente ou característica, como em m β E, onde m é a mantissa, β é a base do sistema numérico que está sendo usado, e E é o expoente. Por exemplo, o número 156,78 poderia ser representado como 0, 15678 10 3 em um sistema de ponto flutuante na base 10. A Figura xx mostra uma forma na qual um número em ponto flutuante poderia ser armazenado em uma palavra. O primeiro bit fica reservado para o sinal; a próxima série de bits, para o expoente com sinal; e os últimos bits, para a mantissa. A aritmética de ponto flutuante descreve como os computadores manipulam os números reais, denotado pelo conjunto R. Como as máquinas têm recursos limitados, são capazes de representar somente um subconjunto F (de dimensão finita) de R. As propriedades que caracterizam o conjunto F são diferentes daquelas que caracterizam R. Um número pode ser representado com ponto fixo ou com ponto flutuante. Por exemplo, o número 24, 56 está escrito com ponto fixo. O mesmo número com ponto flutuante seria 0, 2456 10 2.

Observação 3.1. Os nomes corretos desses formatos na nossa língua deveriam ser vírgula fixa e vírgula flutuante, pois no português, utiliza-se a vírgula para separar as partes inteira e decimal de um número. As máquinas utilizam o sistema de aritmética de ponto flutuante para representar os números e executar as operações. A forma geral de representação de um número de ponto flutuante x 0 escrito na base β 2 é similar à notação científica onde x = ±( d 1 d 2 d 3 d p ) β β E, (9) ( d 1 d 2 d 3 d p ) β é a parte fracionária na base β, também conhecida como mantissa; 0 d i β 1 para i = 1,, p; Se d 1 0 diz-se que o número está normalizado. A normalização é importante para que descrição do número em ponto flutuante seja única; E é o expoente, um número inteiro satisfazendo m E M, onde m e M são números inteiros cujos valores dependem da máquina utilizada. Em geral, m = M, com M > 0; β 2 é a base (geralmente 2, 10 ou 16); p é o número de dígitos da parte fracionária, que indica a precisão da máquina; quando a base for β = 10, por simplicidade escrevemos a equação (refrepres-ponto-flutuante) por x = ± d 1 d 2 d 3 d p 10 E, (10) O número zero não pertence a F, senão teríamos d 1 = 0. Dessa forma, o número zero tem uma representação separada. Sua parte fracionária será d 1 d 2 d 3 d p = 0, isto é, d 1 = d 2 = = d p = 0. Um número não poderá ser representado em uma máquina com sistema de aritmética de ponto flutuante se o expoente E > M ou E < m. Se E < m a máquina acusa erro de underflow e se E > M o erro acusado é de overflow. Um sistema de ponto flutuante F depende das variáveis β, p, m, M e pode ser representado pela função F = F(β, p, m, M). Para que o número zero faça parte de qualquer sistema de aritmética de ponto flutuante, definimos { } F(β, p, m, M) = {0} ± ( d 1 d 2 d 3 d p ) β β E.

Exemplo 3.1. Considere o sistema de ponto flutuante F(10, 3, 2, 2). Neste sistema um número não nulo será representado da forma ±( d 1 d 2 d 3 ) 10 10 E, (11) onde E { 2, 1, 0, 1, 2}, d i {0, 1, 2,, 9} com d 1 0 (normalizado). Assim, a representação do número 0, 35 nesse sistema será 0, 35 = 0, 350 10 0. Os números 5, 172 e 0, 0123 terão as seguintes representações 5, 172 = 0, 517 10 1 e 0, 0123 = 0, 123 10 1. Observação 3.2. Quando a vírgula do número original caminha n casas à esquerda o expoente E será n. Se a vírgula do número original caminha n casas à direita o expoente E será n. Exemplo 3.2. O número 5391, 3 pode ser representado no sistema de ponto flutuante F(10, 3, 2, 2)? Note que 5391, 3 = 0, 539 10 4. Como E = 4 > 2 = M isso causa overflow. Portanto, o número 5391, 3 não pode ser representado nesse sistema. Exemplo 3.3. O número 0, 0003 pode ser representado no sistema de ponto flutuante F(10, 3, 2, 2)? Note que 0, 0003 = 0, 300 10 3. Como E = 3 < 2 = m isso causa underflow. Portanto, o número 0, 0003 não pode ser representado nesse sistema. Exemplo 3.4. Descreva todos os números (na base 10) que podem ser representados no sistema F(2, 2, 1, 2)? Neste sistema um número não nulo será representado da forma ±( d 1 d 2 ) 2 2 E, (12) onde E { 1, 0, 1, 2}, d 1 0 (normalizado). Os números nesse sistema são da forma ±(0.10) 2 2 E ou ± (0.11) 2 2 E. Os números positivos (na base 10) representáveis nesse computador são (0.10) 2 2 1 = (1 2 1 + 0 2 2 ) 2 1 = 1 4 (0.10) 2 2 0 = (1 2 1 + 0 2 2 ) 2 0 = 1 2 (0.10) 2 2 1 = (1 2 1 + 0 2 2 ) 2 1 = 1 (0.10) 2 2 2 = (1 2 1 + 0 2 2 ) 2 2 = 2 (0.11) 2 2 1 = (1 2 1 + 1 2 2 ) 2 1 = 3 8 (0.11) 2 2 0 = (1 2 1 + 1 2 2 ) 2 0 = 3 4

(0.11) 2 2 1 = (1 2 1 + 1 2 2 ) 2 1 = 3 2 (0.11) 2 2 2 = (1 2 1 + 1 2 2 ) 2 2 = 3 O números na base 10 que podem ser representados nesse sistema são { 3, 2, 3/2, 1, 3/4, 1/2, 3/8, 1/4, 0, 1/4, 3/8, 1/2, 3/4, 1, 3/2, 2, 3}. Note que acrescentamos o número zero ao conjunto, pois o zero faz parte de qualquer sistema de ponto flutuante. Observação 3.3. Uma coisa importante a ser observado acerca dos números de ponto flutuante é que eles são discretos e não contínuos como os números reais definido na matemática. Exemplo 3.5. Como os números (0, 6) 10 e (0, 7) 10 são representados no sistema F(2, 2, 1, 2)? (0, 6) 10 = (0, 100110011001 ) 2 = (0, 10) 2 2 0 = [1 2 1 + 0 2 2 ] 2 0 = 1/2 = (0, 5) 10. (0, 7) 10 = (0, 1011001100110 ) 2 = (0, 10) 2 2 0 = [1 2 1 + 0 2 2 ] 2 0 = 1/2 = (0, 5) 10. Se esses dois números forem armazenados numa máquina que utiliza o sistema F(2, 2, 1, 2), eles serão representados igualmente como (0, 10) 2 2 0. Isso significa que os números (0, 6) 10 e (0, 6) 10 são representados como (0, 5) 10 neste computador. Esta é uma grande causa de erros de arredondamento em processos numéricos. O formato utilizado pela maioria dos computadores foi proposto pelo IEEE (Institute of Electrical and Eletronics Engineers), conforme tabela 2. 4 Referências Bibliográficas 1. Frederico F. Campos. Algoritmos Numéricos. LTC, 2a Ed. Rio de Janeiro, 2007. 2. Steven Chapra e Raymond P. Canale. Métodos numéricos para engenharia. McGraw-Hill - São Paulo, 5a edição, 2011. 3. Décio S., João T. Mendes e Luiz H. M. Silva. Cálculo Numérico: características matemáticas e computacionais do métodos numéricos. Pearson Prentice Hall, São Paulo, 2003. 4. Neide B. Franco. Cálculo Numérico. Pearson Prentice Hall, São Paulo, 2006.

Tabela 2: Formato IEEE de ponto flutuante Precisão Propriedade Simples Dupla Estendida comprimento total 32 64 80 bits na mantissa 23 52 64 bits no expoente 8 11 15 base 2 2 2 expoente máximo 127 1023 16383 expoente mínimo -126-1022 -16382 maior número 3, 40 10 38 1, 80 10 308 1, 19 10 4932 menor número 1, 18 10 38 2, 23 10 308 3, 36 10 4932 dígitos decimais 7 16 19