Universidade Federal de São João Del Rei - UFSJ



Documentos relacionados
Análise de Arredondamento em Ponto Flutuante

Notas de Cálculo Numérico

Aritmética de Ponto Flutuante e Noções de Erro. Ana Paula

Aula 2 - Cálculo Numérico

Capítulo SETE Números em Ponto Fixo e Ponto Flutuante

Noções Básicas de Erros

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

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

Aritmética de Ponto Flutuante

Eduardo Camponogara. DAS-5103: Cálculo Numérico para Controle e Automação. Departamento de Automação e Sistemas Universidade Federal de Santa Catarina

Unidade 5: Sistemas de Representação

CCI-22 CCI-22. 2) Erros de arredondamento. Matemática Computacional

Aula 2 Sistemas de Numeração (Revisão)

Representando Instruções no Computador

Organização e Arquitetura de Computadores I

Sistema de ponto flutuante

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Exemplo de Subtração Binária

2. Representação Numérica

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

ANÁLISE NUMÉRICA DEC /97

Erros. Número Aproximado. Erros Absolutos erelativos. Erro Absoluto

CURSO E COLÉGIO APOIO. Professor: Ronaldo Correa

Cálculo Numérico / Métodos Numéricos. Representação de números em computadores Mudança de base 14:05

Capítulo 1 - Erros e Aritmética Computacional

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Representação de Dados

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Capítulo 1. Introdução. 1.1 Sistemas numéricos

Estudaremos métodos numéricos para resolução de sistemas lineares com n equações e n incógnitas. Estes podem ser:

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Truques e Dicas. = 7 30 Para multiplicar fracções basta multiplicar os numeradores e os denominadores: 2 30 = 12 5

Licenciatura em Engenharia Electrotécnica e de Computadores 1998/99. Erros

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Sumário 1.OPERAÇÕES COM NÚMEROS RACIONAIS Adição e Subtração de Números Racionais Multiplicação e Divisão de Números Racionais...

Sistemas de Numeração (Aula Extra)

Cálculo numérico. ln 1 = 0. Representação numérica. Exemplo. Exemplos. Professor Walter Cunha. ln 1. I s

Cálculo Numérico Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos

Capítulo 5: Aplicações da Derivada

TEXTO DE REVISÃO: Uso da calculadora científica e potências de 10.

Métodos Numéricos e Estatísticos Parte I-Métodos Numéricos Teoria de Erros

Sistemas de Computação

Aula 9. Introdução à Computação. ADS IFBA

Sistemas de Numeração

Noções Básicas Sobre Erros

Aula 6 Aritmética Computacional

3 - CONJUNTO DOS NÚMEROS RACIONAIS

Aula 1 Representação e Operações Aritméticas em Ponto Flutuante.

INSTITUTO TECNOLÓGICO

Programação: Tipos, Variáveis e Expressões

Resolução de sistemas lineares

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

Lista de Exercícios Sistemas de Numeração

CAPÍTULO I. UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA ELÉTRICA Apostila de Eletrônica Digital. Sistemas de Numeração. 1.

Capítulo 1 Erros e representação numérica

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Universidade Federal de São Carlos Departamento de Matemática Curso de Cálculo Numérico - Turma E Resolução da Primeira Prova - 16/04/2008

Capítulo 3 Modelos Estatísticos

QUESTÕES COMENTADAS E RESOLVIDAS

Primeiro roteiro de exercícios no Scilab Cálculo Numérico

Faculdade de Computação

AV1 - MA (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, , , 980

Projeto e Desenvolvimento de Algoritmos

É usual representar uma função f de uma variável real a valores reais e com domínio A, simplesmente por y=f(x), x A

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Potenciação no Conjunto dos Números Inteiros - Z

Notas sobre a Fórmula de Taylor e o estudo de extremos

CAP. I ERROS EM CÁLCULO NUMÉRICO

MEDIÇÃO EM QUÍMICA ERROS E ALGARISMOS SIGNIFICATIVOS

Frações. Números Racionais

Faculdade Sagrada Família

2aula TEORIA DE ERROS I: ALGARISMOS SIGNIFICATIVOS, ARREDONDAMENTOS E INCERTEZAS. 2.1 Algarismos Corretos e Avaliados

Álgebra. SeM MiSTéRio

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Fundamentos Tecnológicos

Universidade Federal Fluminense ICEx Volta Redonda Introdução a Matemática Superior Professora: Marina Sequeiros

Ambos têm os algarismos 7854 seguidos, a potência de dez apenas moverá a vírgula, que não afeta a quantidade de algarismos significativos.

Livro de álgebra para ensino fundamental 2 ( 6º ao 9º ano)

CAPÍTULO 6 ARITMÉTICA DIGITAL

PLANIFICAÇÃO ANUAL MATEMÁTICA 3 DOMÍNIOS OBJETIVOS ATIVIDADES

Aula 14: Instruções e Seus Tipos

DICAS PARA CÁLCULOS MAIS RÁPIDOS ARTIGO 06

Arquitetura de Computadores

Distribuição de probabilidades

Velocidade Média Velocidade Instantânea Unidade de Grandeza Aceleração vetorial Aceleração tangencial Unidade de aceleração Aceleração centrípeta

Construção dos números racionais, Números fracionários e operações com frações

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

Computador HIPO. Inicialmente vamos apresentar as unidades fundamentais de um computador:

Unidade 3 Função Logarítmica. Definição de logaritmos de um número Propriedades operatórias Mudança de base Logaritmos decimais Função Logarítmica

A TI-89 / TI-92 Plus permite também comparar ou manipular números binários bit a bit.

Cotagem de dimensões básicas

1. Os métodos Não-Paramétricos podem ser aplicados a uma ampla diversidade de situações, porque não exigem populações distribuídas normalmente.

3º Ano do Ensino Médio. Aula nº10 Prof. Daniel Szente

Aula 9 ESCALA GRÁFICA. Antônio Carlos Campos

Planejamento Anual. Componente Curricular: Matemática Ano: 6º ano Ano Letivo: 2015 OBJETIVO GERAL

Medidas e Incertezas

Tópico 2. Conversão de Unidades e Notação Científica

Transcrição:

Universidade Federal de São João Del Rei - UFSJ Instituída pela Lei 0.45, de 9/04/00 - D.O.U. de /04/00 Pró-Reitoria de Ensino de Graduação - PROEN Disciplina: Cálculo Numérico Ano: 03 Prof: Natã Goulart da Silva Versão Documento 0.9 Análise de Erros Numéricos Sumário Introdução Representação dos Números. Decomposição de números.............................. 3 Conversão de números entre bases 3 3. Binário para decimal................................. 3 3. Decimal para binário................................. 3 4 Notação de Ponto Flutuante 4 4. Representação de Números em Ponto Flutuante.................. 4 4. Aritmética de Números em Ponto Flutuante.................... 5 4.3 Erros na representação dos Números........................ 7 4.4 Operações Aritméticas em Ponto Flutuante..................... 8 5 Algarismos Significativos 0 6 Análise de Erros 6. Erros Absolutos e Relativos............................. 6. Erros de Cancelamento................................ 6.3 Erros de Arredondamento e Truncamento em um Sistema Ponto Flutuante... 3 6.4 Propagação dos Erros................................. 4 7 Considerações Finais 7 Referências 7

Introdução Na solução de problemas através de métodos numéricos, após as fases de definição, modelagem, escolha e implementação, verifica-se algumas vezes que os resultados obtidos não apresentam valores dentro de uma faixa esperada. Dentre outros fatores, os resultados dependem da precisão dos dados de entrada, da forma como estes dados são representados no computador e das operações numéricas efetuadas. Os dados de entrada apresentam imprecisões devido a, por exemplo, falhas no processo de medição e na aquisição destes dados. Para a disciplina de Cálculo Numérico, serão objeto de estudo os erros devido a modelagem e implementação dos métodos numéricos e neste capítulo, em especial, dos erros causados pela representação e operações envolvendo números no computador. As informações contidas neste documento são notas de aula retiradas dos livros citados na seção Referências [,, 3]. Representação dos Números A representação de um número depende da base escolhida e do número de dígitos utilizados nesta representação [3]. As bases mais utilizadas são a binária, a decimal e a hexadecimal. Existem números como o π que não podem ser representados por um número finito de dígitos na base decimal. Então, independente do número de dígitos utilizados em cálculos com o π, o resultado desta operação nunca será exato. Quanto maior o número de dígitos utilizados, maior será a precisão obtida. Quando são realizados cálculos numéricos em um computador, os valores de entrada são normalmente fornecidos pelo usuário na base decimal. Toda informação é convertida para a base binária, são realizadas as operações e o resultado é convertido para a base decimal e apresentado para o usuário. As transformações entre as bases podem ser fontes de erros, porque um número pode ter representação finita em uma base e não ter representação finita em outra. Esta característica gera erros numéricos no processo de transformações entre bases e será apresentada melhor na seção com exemplos de operações de mudanças de base.. Decomposição de números Em geral, um número qualquer formado por n algarismos pode ser decomposto por uma soma de cada um de seus algarismos multiplicado por uma potência. A potência depende da base em que o número é representado. Como exemplo, seja o número 537 representado na base decimal. Para identificar a base, iremos escrever o número entre parênteses indexado pela sua base. Exemplo: (537) 0 = 0 3 + 5 0 + 3 0 + 7 0 0 O mesmo procedimento pode ser realizado para números em outras bases e números com parte fracionária.

Exemplo: (36, 89) 0 = 3 0 + 6 0 0 + 0 + 8 0 + 9 0 3 (0, ) = + 0 0 + + (, 03) 4 = 4 + 4 0 + 0 4 + 3 4 3 Conversão de números entre bases 3. Binário para decimal Para realizarmos a conversão de um número em qualquer base para um número na base decimal devemos usar a multiplicação de cada um de seus algarismos pela potência igual a base. Considerando números inteiros, o primeiro algarismo a direita, deve ser multiplicado pela base elevada a zero. O próximo algarismo, o segundo da direita para a esquerda, deve ser multiplicado pela base elevada a um, e assim por diante. Números fracionários terão suas potências elevadas a -, -, -3,..., a partir do algarismo à direita da vírgula. De um modo geral, um número na base β, (a j a j...a a a 0 ) β, 0 a k (β ), k = 0,,,..., j, pode ser escrito na forma polinomial a j β j + a j β j +... + a β + a β + a 0 β 0 No exemplo a seguir, temos inicialmente a transformação de um número inteiro na base binária para a base decimal e posteriormente transformações de números na base e 4 fracionários para a base decimal. Exemplo: (0) = 4 + 0 3 + + + 0 = (3) 0 (0, ) = + 0 0 + + = + 0 + 0, 5 + 0, 5 =, 75 (, 03) 4 = 4 + 4 0 + 0 4 + 3 4 3. Decimal para binário A transformação de um número inteiro na base decimal para um número na base binária é realizada dividindo-se este número sucessivamente por dois até que o quociente da divisão seja menor que. Como exemplo, consideremos a transformação do número (40) 0 para a base binária. Exemplo: 40 0 0 0 0 0 5 0 3

Ao término da divisão, temos o número na base binária partindo do último quociente e posteriormente os restos das divisões da parte inferior para a superior. Desta forma, o resultado da transformação anterior é: (40) 0 = (0000) Para transformar números decimais com dígitos após a vírgula em números na base binária devemos proceder de duas maneiras. A parte inteira deste número deve ser transformada como citado anteriormente, através da aplicação de divisões sucessivas. Para transformar os dígitos decimais a direita da vírgula para binário, deve-se multiplicá-los por. Do resultado, considerase a parte a esquerda da vírgula como resultado parcial da transformação e deve-se proceder o processo de multiplicação da parte fracionária até que seja obtido o valor 0 após a vírgula, ou até verificar que o número não pode ser armazenado de maneira exata. Seja o exemplo de transformar o número (40, 875) 0 para binário. A transformação da parte inteira já foi calculada, vejamos agora o cálculo da parte fracionária: 0, 875 0, 375 0.75 0.50 0, 3750 0, 75, 50, 00 Assim, (40, 875) 0 = (0000, 00) Infelizmente, a necessidade de transformar números entre bases pode implicar na inserção de erros numéricos porque um número pode ter representação exata em uma base e não ter representação exata em outra. Seja o exemplo do número (0, ) 0 que tem representação exata na base decimal. Veremos que não é possível representá-lo de forma exata na base binária: 0, 0 0, 0 0.40 0.80 0.60 0.0 0.40...... 0, 0 0, 40 0, 80, 60, 0 0, 40 0, 80... Na transformação realizada no exemplo, vemos que não é possível obter um resultado da multiplicação igual a zero e o processo de transformação entra em um ciclo infinito. Neste caso, o número (0, ) 0 será representado de forma aproximada na base binária com precisão dependente do número de algarismos significativos definido. (0, ) 0 (0, 000) 4 Notação de Ponto Flutuante 4. Representação de Números em Ponto Flutuante Nos computadores e máquinas digitais em geral, para a realização de operações, cada número é armazenado em uma área de memória chamada Palavra que tem tamanho limitado. A representação utilizada nas máquinas digitais modernas é a chamada Notação de Ponto Flutuante. 4

Nesta notação, o espaço reservado para armazenamento é dividido em três partes: o sinal do número, a parte fracionária também chamada de mantissa e uma área para armazenar o expoente. Como o espaço de armazenamento é limitado, não é possível armazenar todos os números reais e sim intervalos discretos. Quanto maior for o espaço disponível para armazenamento, ou seja, o tamanho da Palavra, maior será a faixa e a precisão dos números armazenados. Os computadores atuais utilizam base binária com tamanho de palavra de 3 bits ou 64 bits. Baseado no padrão IEEE754 que define a representação com tamanho de palavra de 3 bits, chamado de precisão simples, e com palavra de 64 bits chamado de precisão dupla, a divisão do tamanho da palavra é assim definido: Precisão Simples: 3 bits ou 4 bytes bit é reservado para o sinal do número (positivo ou negativo); 8 bits são utilizados para armazenar um número inteiro que é o expoente da base; 3 bits são utilizados para a mantissa. Precisão Dupla: 64 bits ou 8 bytes bit é reservado para o sinal do número (positivo ou negativo); bits são utilizados para armazenar um número inteiro que é o expoente da base; 5 bits são utilizados para a mantissa. Então, na Notação de Ponto Flutuante, o número m pode ser assim representado: m = ±, d d d 3...d t β e Onde: d i s : dígitos da parte fracionária, d 0, 0 d i β β: base (em geral, 0 ou 6), t: número de dígitos na mantissa. e: expoente inteiro. Utilizando a forma de representação normalizada, o primeiro dígito d será sempre diferente de zero. 4. Aritmética de Números em Ponto Flutuante Na aritmética de ponto flutuante, um sistema de numeração é representado por 4 números F(β,t,m,M). Nesta representação, β será a base utilizada, t o tamanho ou número de dígitos da mantissa, m o menor expoente possível para a notação e M o maior expoente. Então, devido ao tamanho finito da Palavra em uma máquina, F(β,t,m,M) será sempre um 5

subconjunto dos números reais. Vejamos os números representáveis em um dado sistema F. Exemplo: Seja F(,3,-,), quais os números na base decimal representáveis neste sistema? A base utilizada é a binária, então, os dígitos da mantissa poderão ser 0 ou, sendo que na forma normalizada o primeiro dígito da mantissa será obrigatoriamente. Para a mantissa poderemos ter as seguintes variações: 0,00; 0,0; 0,0 e 0, Para o expoente, poderemos ter números variando de até. Assim, os números representáveis nesses sistema são: O zero é representado em todos os sistemas. 0, 00 = ( + 0 + 0 3 ) = = = 0, 5 4 0, 0 = ( + 0 + 3 ) = ( + ) = 5 = 5 = 0, 35 8 8 6 0, 0 = ( + + 0 3 ) = ( + ) = 3 = 3 = 0, 375 4 4 8 0, = ( + + 3 ) = ( + + ) = 7 = 7 = 0, 4375 4 8 8 6 0, 00 0 = + 0 + 0 3 = = 4 = 0, 5 0, 0 0 = + 0 + 3 = + ) = 5 = 0, 65 8 8 0, 0 0 = + + 0 3 = + = 3 = 0, 750 4 4 0, 0 = + + 3 = + + = 7 = 0, 875 4 8 8 0, 00 = ( + 0 + 0 3 ) = = 0, 0 = ( + 0 + 3 ) = ( + ) = 5 = 5 =, 5 8 8 4 0, 0 = ( + + 0 3 ) = ( + ) = 3 = 3 =, 5 4 4 0, = ( + + 3 ) = ( + + ) = 7 = 7 =, 75 4 8 8 4 0, 00 = ( + 0 + 0 3 ) = 4 = 0, 0 = ( + 0 + 3 ) = ( + ) 4 = 5 4 = 5 =, 5 8 8 0, 0 = ( + + 0 3 ) = ( + ) 4 = 3 4 = 3, 0 4 4 0, = ( + + 3 ) = ( + + ) 4 = 7 4 = 7 = 3, 5 4 8 8 Os números representáveis neste sistema são: -3,5; -3,0; -,5; -; -,75; -,5; -,5; -; -0,875; -0,750; -0,65; -0,5; -0,4375; -0,375; -0,35; -0,5; 0 ;0,5; 0,35; 0,375; 0,4375; 0,5; 0,65; 0,750; 0,875; ;,5;,5;,75; ;,5; 3,0; 3,5 Vemos que para o sistema F(,3,-,) podemos representar 33 números e que não há números representáveis entre, por exemplo, [;,5] ou entre [3.0; 3.5]. Uma forma de determinar a quantidade de números representáveis é fazer a seguinte análise. Neste sistema temos três 6

dígitos na mantissa sendo que o primeiro dígito é obrigatoriamente, para os outros dois dígitos temos possibilidades para d e possibilidades para d 3. Para o expoente temos 4 possibilidades ([-,]). Temos então * * 4 possibilidades o que implica em 6 números. Como o zero é representável em qualquer sistema e também temos os números negativos, o total de números representáveis será: * 6 + = 33 números. Podemos também fazer uso da seguinte fórmula para calcular o total de números em um sistema: N = (β ) β t (M m + ) + Onde: N = quantidade de números representáveis em F; A primeira multiplicação por se deve a possibilidade de representar números positivos e negativos; O acréscimo de no final é devido a representação do número 0 (zero) Com relação a representação dos números na notação de ponto flutuante, quanto maior o número de dígitos utilizados na mantissa, maior será a precisão dos números representáveis e menor será o intervalo entre dois números pertencentes a este sistema. Para o expoente, quanto maior o número de bits disponíveis nesta representação maior será os limites dos números. Atenção: Em nosso estudo, alguns detalhes sobre a representação dos números definidos pelo padrão IEEE 754 não estão sendo considerados. Alguns destes pontos são: a forma de armazenar o expoente de um número considerando o sinal e considerar que o primeiro dígito dos números normalizados (), não precisa ser armazenado. 4.3 Erros na representação dos Números Então, devido a representação de números do formato de ponto flutuante, pode ocorrer dois tipos de erros: um relacionado ao número de bits disponíveis para representar o expoente e outro erro relacionado a tamanho da mantissa. Quanto ao limite do expoente, sempre que uma operação aritmética produz um número com expoente maior que o expoente máximo M, ocorre um erro no armazenamento do número e é gerada uma exceção chamada overflow. De forma semelhante, operações que resultem em expoente menores que o expoente mínimo m geram uma exceção chamada underflow. No caso do exemplo apresentado na Figura, pode-se observar que para operações que gerem valores entre o intervalo (, ) ocorre underflow e em 4 4 valores menores que 3 e maiores que 3 irá ocorrer um overflow. Quanto a erros relacionados com o tamanho da mantissa, mesmo o melhor computador disponível não consegue armazenar em um intervalo, todo o conjunto de valores reais possíveis. Na prática são armazenados apenas pontos discretos e a distância entre estes pontos está diretamente relacionada com o número de bits da mantissa. O seguinte exemplo apresenta um erro devido a limitação do tamanho da mantissa em um dado sistema de ponto flutuante. Seja f(x) uma função contínua real definida no intervalo [a,b], a < b, e sejam f(a) < 0 e f(b) > 0. Então, pelo Teorema do Valor Médio, existe um x, a < x < b, tal que f(x) = 0. Seja 7

Figura : Região de Underflow e Overflow f(x) = x 3 3, determinar x tal que f(x) = 0. Solução: Para a função dada, consideremos t = 0 e β = 0. Obtemos então: f(0, 4449570 0 ) = 0, 0 8 f(0, 444957 0 ) = 0, 4 0 8 Observe que entre os dois valores de x, não existe nenhum número que possa ser representado no sistema e que a função muda de sinal nos extremos deste intervalo. Assim, esta máquina não possui o número x tal que f(x) = 0 e obtemos apenas um valor aproximado para o x. Realizados em um computador, os cálculos das expressões a seguir não resultam em zero, você saberia descrever a razão? (resposta 0, 0 5 ) ) 3 (4/3 3) ) sen(pi) Importante: Dois aspectos devem ser destacados nesse momento: A representação dos números em sistemas digitais, diferentemente do que acontece no conjunto dos números reais, ocorre através de valores discretos. Quanto menor o números de bits disponíveis para representar a mantissa, maior será o intervalo entre os números representáveis. O Matlab tem um função chamada eps que retorna qual a distância entre o valor passado para a função e o próximo número representável. A restrição dos bits disponíveis para representar o expoente, limitam a magnitude dos números representáveis. 4.4 Operações Aritméticas em Ponto Flutuante Seja uma máquina onde são realizadas uma série de operações aritméticas. Após cada operação, o resultado é colocado no formato do sistema, aplicando o procedimento de arredondamento ou de truncamento. Se a quantidade de dígitos do número for maior que o tamanho da mantissa. Por este motivo, as operações aritméticas nem sempre são associativas e nem distributivas. ( Associativa: (a + b) + c = a + (b + c). Distributiva: a * ( b + c) = a * b + a * c). 8

Lembrete: Para realizar operações de adição ou subtração, os números devem ser multiplicados por potências de mesmo expoente. Como exemplo, seja o sistema F(0,3,-5,5), vejamos o que ocorre nas seguintes operações: a) (, 4 + 3, 8) + 5, 05 Temos que: (0, 4 0 + 0, 038 0 ) + 0, 0505 0 0, 46 0 + 0, 0505 0 = 0, 97 0 b), 4 + (3, 8 + 5, 05) Temos que: 0, 4 0 + (0, 038 0 + 0, 0505 0 ) 0, 4 0 + 0, 083 0 = 0, 96 0 c) 3, 8 (5, 05 +, 4) Temos que: 0, 38 0 (0, 0505 0 + 0, 4 0 ) 0, 38 0 0, 65 0 = 0, 55 0 d)3, 8 5, 05 + 3, 8, 4 Temos que: 0, 38 0, 505 0 + 0, 38 0 0, 4 0 0, 6 0 + 0, 363 0 = 0, 54 0 O resultado das expressões a) e b), e das expressões c) e d) deveriam ser iguais mas, devido o arredondamento após cada operação, apresentaram diferenças. Algoritmo da adição/subtração em ponto flutuante. Se não estiver formatado, escreva os números no formato de ponto flutuante.. Compare o expoente dos dois números. Se forem diferentes, desloque o número com menor expoente à direita até que seu expoente se iguale ao maior número. 3. Some/subtraia as mantissas. 4. Normalize a soma, deslocando à direita e incrementando o expoente ou deslocando à esquerda e decrementando o expoente. 5. Teste se ocorre overflow ou underflow. 6. Se sim, gera exceção. 9

7. Se não, arredonde ou faça o truncamento da mantissa para o número de bits corretos. 8. Verifica se o resultado está normalizado. 9. Se Sim. Fim 0. Se Não, retorna ao passo 4 Algoritmo da multiplicação/divisão em ponto flutuante. Se não estiver formatado, escreva os números no formato de ponto flutuante.. Somar os expoentes das duas potências 3. Multiplique/divida as mantissas. 4. Normalize o produto se necessário. 5. Teste se ocorre overflow ou underflow. 6. Caso sim, gera exceção. 7. Caso não, escreva a mantissa com o número de bits apropriado. 8. Verificar se resultado está normalizado. 9. Não, retorna ao passo 4. 0. sim, faça o sinal do produto positivo se ambos os sinais dos operandos originais são os mesmos, caso contrário, sinal é negativo, Fim 5 Algarismos Significativos Os Algarismos Significativos de um número são aqueles que podem ser usados com confiança [] e que correspondem ao número de algarismo corretos mais um algarismo estimado. Por exemplo, seja o velocímetro analógico de um carro que tem traços marcando os Km. Qual seria a leitura de velocidade se o ponteiro estivesse entre os traços que representam 6 Km/h e 6 Km/h? Dependendo da posição do ponteiro entre os dois traços, uma pessoa poderia informar que a velocidade é 6,7 Km/h e outra 6,8 Km/h. Nesta leitura teríamos três algarismos significativos. Convenciona-se tomar o algarismo estimado como a metade da menor divisão da escala do aparelho utilizado. Portanto, a leitura da velocidade segundo esta convenção seria 6,5 Km/h. Para as definições de cálculo numérico, seja β a base de um sistema de números de ponto flutuante. Dígitos Significativos de um número x são todos os algarismos de 0 a β, desde que x esteja representado na forma normalizada. Algumas definições sobre algarismos significativos: 0

Os algarismos significativos de um número são os dígitos diferentes de zero, contados a partir da esquerda até o último dígito diferente de zero à direita, caso não haja vírgula, ou até o último dígito, zero ou não, caso haja uma vírgula decimal. Ex.: 3, 0 3 e 3, 00 0 3 tem e 4 algarismos significativos, respectivamente. Os dígitos diferentes de zero são todos significativos. Ex.: 7, 3; 3 e 0 possuem algarismos significativos. Os zeros entre dígitos diferentes de zero são significativos. Ex: 303 e, 03 possuem 3 algarismos significativos. Se existir uma vírgula, todos os zeros à direita da vírgula decimal são significativos. Ex:, 000 e 33, 30 possuem 4 algarismos significativos. Os métodos numéricos fornecem resultados aproximados, sendo necessário então, desenvolver critérios para especificar quanta confiança se tem no resultado aproximado. Isto é realizado através da definição de algarismos significativos. Por exemplo, pode-se decidir que uma aproximação é aceitável se ela for correta até 4 algarismos significativos. 6 Análise de Erros O objetivo desta seção é descrever métodos que permitam reduzir ou determinar limites para os erros numéricos. Nenhum resultado científico tem valor prático se não houver um controle sobre os erros envolvidos. A análise dos erros é parte fundamental de um processo de modelagem. 6. Erros Absolutos e Relativos Erro absoluto é a diferença entre o valor exato de um número x e seu valor aproximado x. EA x = x x. Em geral, não se conhece o valor exato x, o que impossibilita o cálculo do erro absoluto. Nestes casos, avalia-se um limitante superior ou uma aproximação para o módulo do erro. Por exemplo, sabemos que o valor de π (3, 4; 3, 5). Considera-se então o limitante para o erro absoluto como sendo EA x < 0, 0. Ao longo da disciplina, serão apresentadas outras formas de verificação para erros aproximados e limitantes para erros. O erro absoluto não permite uma avaliação da precisão entre dois resultados de forma correta porque não leva em consideração a grandeza destes números. Por exemplo, se for identificado que o comprimento de uma sala de aula tem um limitante superior de erro da ordem de mm, considera-se que a sala tem medidas precisas e que este erro não altera a sua qualidade. Porém, se considerarmos o mesmo limitante de mm para a confecção de um eixo de um sistema de transmissão de um automóvel. Provavelmente, um eixo com erro de mm em seu diâmetro não seria montado com sucesso neste sistema de transmissão.

O erro relativo leva em consideração as dimensões dos valores em análise e pode ser calculado através da expressão: ER x = EA x x = x x x Exemplo: Sejam x = 00, x = 00,, y = 0, 004, x = 0, 006. Qual número é representado com maior precisão pela sua aproximação? Para determinar a resposta é necessário calcular os erros relativos de x e y. ERx = 00 00, 00, = 0, 999 0 3 ERy = 0, 004 0, 006 0, 006 = 0, 333 0 0 Logo, verifica-se que o número x é representado com melhor precisão. 6. Erros de Cancelamento Ocorrem durante a subtração de dois números com valores próximos. Nesta operação, se subtrairmos estes dois número na forma normalizada, haverá no resultado alguns zeros não significativos. Então será necessário normalizar o resultado e preencher à direita com zeros que são necessários para a normalização. Veja o exemplo da subtração dos números 9876 9875 em um sistema F(0,0,-0,0). 9876 9875 = 0, 9937806599 0 0, 9937303457 0 = 0, 00005034 0 Normalizando o resultado temos que: 9876 9875 = 0, 50340000 0. Na prática, os quatro zeros no final do número não têm significado e perde-se quatro dígitos de precisão na mantissa. O erro de cancelamento pode ser contornado utilizando manipulações algébricas de forma a evitar a subtração destes números. Podemos reescrever a diferença desta forma: x y = x y x + y Neste caso a diferença torna-se: 9876 9875 = 9876 + 9875 = 0, 50348679 0 Que tem todos os dígitos da mantissa preenchidos. Outro exemplo: Resolver a equação x 634 x + = 0 Utilizando a fórmula de Bhaskara temos: x = b ± b 4ac a

Para a equação, x = 634 ± 634 4 = 634 ± 633, 99755 Para evitar o erro de cancelamento no cálculo da diferença, basta lembrarmos que o produto das raízes é igual ao termo independente do polinômio. Ou, x x = A segunda raiz será calculada por x = x x = 0, 633998776 0 3 e x = 0, 3995 0 Nem sempre haverá uma maneira trivial de resolver o problema de cancelamento. 6.3 Erros de Arredondamento e Truncamento em um Sistema Ponto Flutuante A representação de um número em uma máquina depende do tamanho da palavra ou da quantidade de bits disponíveis para o seu armazenamento. De acordo com o tamanho da palavra, será definido o número t de bits da mantissa e do expoente. Após uma operação realizada em ponto flutuante, o resultado é normalizado e pode ser necessário arrendondar ou truncar este número. O erro relativo gerado por este truncamento ou arrendondamento no resultado será definido nesta seção. Seja um sistema que opera em aritmética de ponto flutuante com t dígitos na mantissa e β = 0 e seja o número x escrito na forma: x = f x 0 e + g x 0 e t, onde 0, f x < e 0 g x < Por exemplo, se t = 4 e x = 34, 57, então x = 0, 345 0 3 + 0, 7 0 Assim, f x = 0, 345 e g x = 0, 7 Verifica-se que no exemplo proposto, o valor de g x não pode ser incorporado a mantissa de x. Pode-se adotar dois critérios na definição dos números em casos como o do exemplo. Pode-se realizar o truncamento ou o arredondamento dos dígitos restantes na mantissa. No truncamento, g x 0 e t é desprezado e x = f x 0 e. Assim, obtemos o erro absoluto devido ao truncamento: EA x = x x = g x 0 e t < 0 e t, visto que g x < Da mesma forma, podemos calcular o erro relativo: ER x = EA x x para f x, = g x 0 e t f x 0 e < 0e t 0, 0 e = 0 t+, visto que 0, é o menor valor possível ou, ER x < 0 t+ 3

No arredondamento, f x é modificado, dependendo do valor de g x. simétrico que é a forma mais utilizado: f x 0 e se g x < x = f x 0 e + 0 e t se g x No arredondamento Então, despreza-se g x se g x <, caso contrário, soma-se ao último dígito de f x. Para g x < e EA x < 0e t, o erro relativo é calculado por: ER x = EA x x = g x 0 e t f x 0 e < 0, 5 0e t 0, 0 e = 0 t+ Ou seja, ER x < 0 t+ Se g x, teremos: EA x = x x = (f x 0 e + g x 0 e t ) (f x 0 e + 0 e t ) = = g x 0 e t 0 e t = g x 0 e t 0e t Ou seja, EA x 0e t ER x = EA x x 0e t f x 0 e + 0 e t < 0e t f x 0 e 0e t 0, 0 e = 0 t+ Ou seja, ER x 0 t+ Então, em qualquer caso para o arredondamento, teremos: EA x 0e t e ER x 0 t+, e os erros gerados no armazenamento de um resultado em ponto flutuante são definidos por: 6.4 Propagação dos Erros Arredondamento Truncamento EA x 0e t < 0 e t ER x 0 t+ < 0 t+ O erro total em uma operação é composto pelo erro das parcelas mais o erro no resultado. O cálculo da estimativa do erro no resultado foi definido na seção anterior. A seguir serão definidas fórmulas para o cálculo dos erros absolutos e relativos nas operações com erros nas parcelas. Supomos que o erro final é arrendondado. Seja x e y tais que: x = x + EA x e y = + EA y 4

Adição: x + y = ( x + EA x ) + ( + EA y ) = ( x + ) + (EA x + EA y ) O erro absoluto da soma x+y, denotado por EA x+y é a soma dos erros absoluto das parcelas. EA x+y = EA x + EA y O erro relativo da soma, ER x+y é assim definido: ER x+y = EA x+y x + = EA x x x x + + EA y ER x+y = ER x x x + + ER y x + x + Pela expressão do cálculo do erro na soma, verifica-se que se os dois números são armazenados de maneira exata, o resultado do erro será zero. De forma análoga, o cálculo do erro na diferença entre dois números é dado por: ER x y = ER x Na multiplicação: x x ER y x x y = ( x + EA x ) ( + EA y ) = x + x EA y + EA x + EA x EA y Considerando a última parcela, EA x EA y como um número pequeno, fazemos: EA x x EA y + EA x O erro relativo do produto pode ser calculado por: ER x y = x EA y + EA x x = EA x x + EA y = ER x + ER y E finalmente, para a divisão de x y x y = x + EA x + EA = x + EA x y + EA y Representando + EA y + EA y = EA y y + em termos de uma série infinita: ( EAy y ) ( ) 3 EAy y +... e desprezando os termos da série com expoente maior que, podemos escrever a divisão como: x y x + EA ( x EA ) y = x + EA x x EA y 5 EA x EA y

Então x y x + EA x x EA y Assim, EA x/y EA x e x EA y = EA x x EA y ER x/y ( ) EAx x EA y / x = EA x x EA y = ER x ER y A análise completa da propagação dos erro é realizada considerando a parcela de erro que ocorre nas operações e pela parcela de erro do resultado descrita na seção anterior. Vejamos um exemplo para o cálculo de erros absolutos, relativos e erros totais de operações aritméticas. Sejam os números x = 7534, y = 78 e z = 75904, que devem ser armazenados em um sistema com as seguintes características F(0,4,-6,6). a) Calcule os erros absolutos e relativos EA x = x x = 0, 7534 0 5 0, 753 0 5 = 0, 4000 0 EA y = y = 0, 78 0 5 0, 8 0 5 = 0, 000 0 EA z = y = 0, 75904 0 5 0, 7590 0 5 = 0, 4000 0 ER x = x x / x = 0, 4000 0 /0, 753 0 5 = 0, 8 0 3 ER y = y / = 0, 000 0 /0, 8 0 5 = 0, 9447 0 4 ER z = z z / z = 0, 4000 0 /0, 7590 0 5 = 0, 570 0 4 Neste exemplo, os valores de erros estão no formato do sistema mas isto não é estritamente necessário. b) Calcular o valor da expressão (x + y)/z e o erro relativo final da operação. x + y = (0, 753 + 0, 8) 0 5 = 0, 387 0 5 O erro relativo da soma mais o erro do resultado é definido por: ER x+y = ( ER x x x + + ER ) y x + + 0 t+ ( = 0, 8 0 3 0, 753 0 5 (0, 753 + 0, 8) 0 5 + 0, 9447 0 4 0 3 ER x+y = (0, 8 0 3 0, 753 05 0, 387 0 5 + 0, 9447 0 4 ) 0, 8 0 5 (0, 753 + 0, 8) 0 5 + ) 0, 8 05 0, 387 0 5 + 0, 0005 6

ER x+y = (0, 033 0 3 + 0, 583 0 4 ) + 0, 0005 = (0, 56 + 0, 5) 0 3 ER x+y = 0, 656 0 3 O resultado final da operação é dado por: (x + y)/z = (0, 387 0 5 )/(0, 7590 0 5 ) = 0, 500 0 0 O cálculo do erro relativo final de toda expressão é calculado da seguinte forma: ER (x+y)/z = ER x+y ER z + 0 t+ ER (x+y)/z = 0, 656 0 3 0, 570 0 4 + 0, 5 0 3 = 0, 03 0 7 Considerações Finais O objetivo deste documento foi apenas introduzir alguns aspectos sobre erros numéricos. É possível verificar que mesmo com o avanço na tecnologia de construção de computadores e máquinas digitais, os resultados finais podem sempre ser influenciados por erros como os de arredondamento e restrições do armazenamento de números. Como leitura adicional recomendase realizar uma busca na Internet por falhas e acidentes causados por erros numéricos. Sugestão de pesquisa:disasters caused by numerical errors. Referências [] S. C. Chapra and R. P Canale. Métodos Numéricos para Engenharia. Pearson, 008. [] N. B. Franco. Cálculo Numérico. Pearson, 006. [3] M. A. G. Ruggiero and V. L. R. Lopes. Cálculo Numérico - Aspectos Teóricos e Computacionais. Pearson, 006. 7