Notas de Cálculo Numérico



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

Análise de Arredondamento em Ponto Flutuante

Resolução de sistemas lineares

Exercícios Teóricos Resolvidos

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

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

2. Representação Numérica

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

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

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

Aula 4 Estatística Conceitos básicos

Aula 2 - Cálculo Numérico

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

MÓDULO 4 DISTRIBUIÇÃO DE FREQÜÊNCIAS

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

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

Computadores XII: Aprendendo a Somar A4 Texto 3

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

0, OU COMO COLOCAR UM BLOCO QUADRADO EM UM BURACO REDONDO Pablo Emanuel

36ª Olimpíada Brasileira de Matemática GABARITO Segunda Fase

DICAS PARA CÁLCULOS MAIS RÁPIDOS ARTIGO 06

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

Organização e Arquitetura de Computadores I

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

Aritmética de Ponto Flutuante

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

Métodos Quantitativos Prof. Ms. Osmar Pastore e Prof. Ms. Francisco Merlo. Funções Exponenciais e Logarítmicas Progressões Matemáticas

Matemática Computacional - Exercícios

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

3. Estruturas de seleção

Capítulo 5: Aplicações da Derivada

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

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

Resolvendo problemas com logaritmos

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

Álgebra. SeM MiSTéRio

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

Retas e Planos. Equação Paramétrica da Reta no Espaço

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Unidade 5: Sistemas de Representação

Um jogo de preencher casas

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

Introdução ao estudo de equações diferenciais

por séries de potências

Soluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental

Estruturas de Repetição

5. Uma lousa denominada EPI (registrador de endereço de próxima instrução).

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

Departamento de Matemática - UEL Ulysses Sodré. Arquivo: minimaxi.tex - Londrina-PR, 29 de Junho de 2010.

QUESTÕES COMENTADAS E RESOLVIDAS

XXVI Olimpíada de Matemática da Unicamp. Instituto de Matemática, Estatística e Computação Científica Universidade Estadual de Campinas

Sistemas Lineares. Módulo 3 Unidade 10. Para início de conversa... Matemática e suas Tecnologias Matemática

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

INSTITUTO TECNOLÓGICO

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

TONALIDADE X FREQUÊNICA

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

Sistemas de Numeração

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

Faculdade Sagrada Família

Exercícios Adicionais

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

3 - CONJUNTO DOS NÚMEROS RACIONAIS

MINICURSO DE MATEMÁTICA FINANCEIRA NO DIA A DIA

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

CURSO E COLÉGIO APOIO. Professor: Ronaldo Correa

Exercícios 1. Determinar x de modo que a matriz

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

4Distribuição de. freqüência

ALGORITMOS E FLUXOGRAMAS

Capítulo 1. x > y ou x < y ou x = y

Faculdade de Computação

Morfologia Matemática Binária

Estatística II Antonio Roque Aula 9. Testes de Hipóteses

Eventos independentes

Propriedades das Funções Deriváveis. Prof. Doherty Andrade

Karine Nayara F. Valle. Métodos Numéricos de Euler e Runge-Kutta

Lista 1 para a P2. Operações com subespaços

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

Prog A B C A e B A e C B e C A,B e C Nenhum Pref

Figura 2.1: Carro-mola

7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura Exemplo de um grafo linear.

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.

Gráficos de funções em calculadoras e com lápis e papel (*)

Cotagem de dimensões básicas

Universidade Federal do Paraná. Setor de Ciências Exatas. Departamento de Matemática

Curvas em coordenadas polares

QUANTIFICADORES. Existem frases declarativas que não há como decidir se são verdadeiras ou falsas. Por exemplo: (a) Ele é um campeão da Fórmula 1.

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

N1Q1 Solução. a) Há várias formas de se cobrir o tabuleiro usando somente peças do tipo A; a figura mostra duas delas.

ANÁLISE NUMÉRICA DEC /97

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

Aula 3 CONSTRUÇÃO DE GRÁFICOS EM PAPEL DILOG. Menilton Menezes. META Expandir o estudo da utilização de gráficos em escala logarítmica.

Matemática - UEL Compilada em 18 de Março de Prof. Ulysses Sodré Matemática Essencial:

Noções Básicas Sobre Erros

Teorema de Taylor. Prof. Doherty Andrade. 1 Fórmula de Taylor com Resto de Lagrange. 2 Exemplos 2. 3 Exercícios 3. 4 A Fórmula de Taylor 4

Noções Básicas de Erros

Transcrição:

Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002

2 Cálculo Numérico

Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo numérico. Veremos que qualquer informação quantitativa, e portanto representada por números, tem uma precisão limitada. Esta preocupação com os erros numéricos não deve entretanto ser exagerada a ponto de duvidarmos da resposta que uma tarefa realizada no computador pode dar. No m, saberemos como domar estes erros de modo a não comprometer a informação. Existem basicamente três fontes de erro no cálculo numérico. A primeira está na própria medida que fazemos da quantidade de interesse. Por exemplo, a régua escolar é um instrumento de medida de comprimentos que tem uma precisão de 0.5 milímetro e suas medidas não são exatas. O resultado de uma medição tem este erro (de 0.5mm), para mais ou para menos. E imaginando que este é um dado de entrada num programa de computador, também os dados de saída terão erro, que normalmente serão maiores que este (precisamente o erro relativo, que deniremos adiante, será maior ou igual ao erro de entrada). Temos ainda, estritamente no uso do computador, os erros gerados na conversão de números entre bases e nas operações aritméticas. Vamos ilustrar como estes últimos podem ocorrer. 1.1 Conversão de bases Representamos um número inteiro na base decimal através de uma seqüência de algarismos (e um sinal): 12346 e podemos lê-lo como 12346 = 6 10 0 + 4 10 1 + 3 10 2 + 2 10 3 + 1 10 4, que é a soma de um número nito de termos, todos múltiplos de alguma potência (positiva) de 10. Os algarismos usados vão de 0 a 9. 3

4 Cálculo Numérico Generalizando, temos que um número na base b > 1 é representado por uma seqüência de algarismos de 0 a b 1 que se traduzem como a soma de termos, todos múltiplos de alguma potência de b: a n... a 1 a 0 = a 0 b 0 + a 1 b 1 + + a n b n. Exemplos: Na base 3, 122 = 2 3 0 + 2 3 1 + 1 3 2. Na base 2, 11 = 1 2 0 + 1 2 1. Precisamos portanto de uma maneira de converter números entre as bases, pois com os algarismos queremos representar sempre a mesma idéia de número ou quantidade. Vamos denotar por (x) b o número x na base b. E vamos usar a base 10 como referência para nossos cálculos. Dado um número na base 10, como passá-lo para base b? Vejamos dois exemplos iniciais com inteiros (17) 10 = 2 3 0 + 2 3 1 + 1 3 2 = (122) 3 Como conseguir os algarismos 122 dado o número 17 na base 10? Observe a expressão entre os dois sinais de igualdade acima. Vemos que o resto da divisão de 17 por 3 é 2, o primeiro algarismo. A parte inteira da fração 17 3 é 5 e o resto é 2. Agora tome o novo dividendo como 5, o quociente da razão anterior. Temos 5 = 1 3 + 2, resto 2 é o algarismo que multiplica a potência seguinte 3 1. O novo dividendo é 1 que, sendo menor que 3, já é o algarismo nal: 2 3 0 + 2 3 1 + 1 3 2 = (122) 3. Atenção e cuidado com a inversão dos coecientes/algarismos para formar o número na última igualdade! Deve estar claro que, no parágrafo anterior, podemos substituir os números ou mesmo as bases por outros, e continuaremos com um processo nito. Este processo é o algoritmo de conversão de inteiros. Algoritmo é uma seqüência de instruções que pode ser programada. Acima pode-se abstrair o algoritmo da situação descrita. O fundamento do algoritmo de conversão é o assim chamado algoritmo de divisão de Euclides. Exercícios 1. Escreva o algoritmo da conversão de inteiros da base 10 para base 2. 2. Obtenha o número (17) 10 na base 2, isto é, em binário. 3. Faça o mesmo para os seguintes números: 18, 19, 30, 31. 4. Escreva o algoritmo da conversão de inteiros da base 10 para base b > 1, b inteiro. 5. Escreva o algoritmo de conversão de inteiros entre duas bases quaisquer. Vamos agora considerar o problema de conversão de um número real qualquer entre bases. Veja que um número qualquer na base b é dado por a n a 1 a 0. a 1 a 2 Cada a i é um algarismo. Por exemplo ( ) ( ) 1 1 = (0.333...) 10, = (0.5) 10 3 10 2 10 Como cada número é a soma de sua parte inteira e sua parte fracionária, e a parte inteira já foi analisada, vamos olhar apenas a parte fracionária, depois do ponto decimal, pois a parte inteira já foi analisada acima.

Túlio Carvalho 5 Veja que para escrever 1/3 na base 10 precisamos de um número innito de algarismos, enquanto que para representar 1/2 na base dois só precisamos de um número nito. Aliás (1/2) 2 = 1 2 1 = (0.1) 2. É aqui que entra o problema do computador, que só pode `guardar' na sua memória uma quantidade nita de algarismos. O armazenamento de um número no computador, através de sua representação binária, possui sempre o mesmo número de dígitos, que depende do equipamento, mas é sempre nito. Esta é uma fonte de erros, porque nem sempre a representação binária de um número é nita. O interessante e diferente agora é que, mesmo que um número tenha representação nita na base 10, ele não tem necessariamente uma representação nita na base 2. Vejamos como se converte um número fracionário da base 10 para a base 2: (0.25) 10 = 1 2 2 = 1 2 2 = (0.01) 2 A primeira igualdade é que precisamos generalizar. A idéia é usar que todo número entre 0 e 1 pode ser escrito como a soma da série de potências a 1 2 + a 2 2 2 + + a n 2 n + com a i {0, 1}, e partir desta série absolutamente convergente para obter o algoritmo que determina a seqüência de algarismos a 1, a 2, a 3,. O fato de podermos escrever qualquer número x [0, 1) nesta forma pode ser justicado usando a teoria de séries. Pegue x (0, 1), como descobrir a 1? Multiplicando x por 2, temos 2x = a 1 + a 2 2 + e tomando a parte inteira dos dois lados: a 1 = [2x]. Como 2x < 2, a 1 é 0 ou 1. Para saber a 2, tomamos a parte fracionária de ambos os lados: y def = {2x} = 2x a 1. Este número é sempre menor que 1. a 2 é a parte inteira de 2y. Este processo continua indenidamente, ou até que y seja zero. Vejamos um exemplo. x = (0.2) 10. 2x = 0.4 < 1, logo a 1 = 0. Faça y = 2x a 1 = 0.4. Atribua y a x: x := y 1. Recomeçamos. 2x = 0.8 < 1, logo a 2 = 0, y = 0.8 e x := y. (3) (4) (5) x = 0.8, 2x = 1.6, a 3 = 1, y = 2x a 3, x := y x = 0.6, 2x = 1.2, a 4 = 1, y = 2x a 4, x := y x = 0.2, 2x = 0.4, a 5 = 0, y = 2x a 5, x := y e como ocorre a repetição de 0.2, temos que o processo vai se repetir indenidamente: a 5 = a 1, a 6 = a 2, a 7 = a 3,..., a n 4 = a n. (0.2) 10 tem a seguinte expressão na base 2 0.00110011... Veja que é como uma dízima periódica, mas não é certo dizer dízima, pois esta palavra se refere à base 10. 1 O sinal := é a notação de `atribuição' que iremos usar. É uma operação distinta da igualdade.

6 Cálculo Numérico Vejamos outros exemplos de conversão. x = 0.125 x = 0.125, 2x = 0.25, a 1 = 0, y = 2x a 1, x := y x = 0.25, 2x = 0.5, a 2 = 0, y = 2x a 2, x := y x = 0.5, 2x = 1, a 3 = 1, y = 2x a 3, x := y e o processo termina porque a n = 0, para n 4. Então (0.125) 10 = (0.001) 2. Vamos obter os oito primeiros algarismos depois do ponto 2 na base 2 para x = (0.126) 10 : (1) (2) (3) (4) (5) (6) (7) (8) x = 0.126, 2x = 0.252, a 1 = 0, y = {2x} = 2x a 1, x := y x = 0.252, 2x = 0.504, a 2 = 0, y = {2x} = 2x a 2, x := y x = 0.504, 2x = 1.08, a 3 = 1, y = {2x} = 2x a 3, x := y x = 0.08, 2x = 0.16, a 4 = 0, y = {2x} = 2x a 4, x := y x = 0.16, 2x = 0.32, a 5 = 0, y = {2x} = 2x a 5, x := y x = 0.32, 2x = 0.64, a 6 = 0, y = {2x} = 2x a 6, x := y x = 0.64, 2x = 1.28, a 7 = 1, y = {2x} = 2x a 7, x := y x = 0.28, 2x = 0.56, a 8 = 0 e haveria mais para calcular. Também não sabemos se a seqüência termina ou continua indenidamente. Obtemos a aproximação (0.126) 10 (0.00100010) 2. É importante notar que, assim como (0.126) 10 > (0.125) 10 temos (0.00100010...) 2 > (0.001) 2, ou seja, a propriedade da ordem dos números na reta não depende da base em que os representamos. O sinal de aproximação acima foi colocado porque limitamos nossos cálculos para a conversão do número dado: x = 0.126. É esta exatamente a segunda fonte de erros no computador. Ele estabelece: qualquer número que vou representar tem (digamos) 16 algarismos. Daí ele converte qualquer dado de entrada para um número, normalmente representado na base 2, com 16 algarismos. 6. Calcule os 8 primeiros algarismos, na base 2, de cada número dado na base 10: x = (1.1) 10 ; x = (1.125) 10 ; x = (0.1125) 10 ; x = (4.93) 10. 7. Estenda o algoritmo de conversão de números fracionários para base 3, aplicando-o aos seguintes números (1/3) 10 e (0.5) 10. Agora podemos estudar somas, diferenças, produtos e razões entre números na base 2. 2 Costumamos dizer `depois da vírgula', mas vamos sempre usar o ponto para marcar o início das potências negativas.

Túlio Carvalho 7 1.2 Operações aritméticas A limitação no armazenamento de cada dado tem algumas conseqüências nas operações algébricas realizadas no computador. Por isto, para ver como elas funcionam no computador e como geram erros, convém denir o que é, para nossos propósitos, o computador: Denição 1. O sistema numérico de uma máquina é dado por uma base b > 1, um número de algarismos t, um expoente máximo M e um expoente mínimo m. Cada número representável na máquina é dado na forma ±0.d 1 d 2... d t b g e d 1 1 com m g M. Esta máquina é abreviadamente denotada por M(b, t, m, M). Exemplo: Tome b = 10, t = 5, m = 10 e M = 10. A máquina é M(10, 5, 10, 10). Números representáveis na máquina: 0.12345 10 1, 0.12121 10 10, 0.12122 10 10. Números que só podem ser aproximados na máquina 0.122222, 1.22234, π, Note as seguintes propriedades sobre os números representáveis da máquina (em valor absoluto): existe um maior número positivo representável, existe um menor número representável, e ele é maior que zero! No exemplo acima, o menor número representável é 0.1 10 10 e o maior é 0.99999 10 10. Para identicar um número, bastam seus t dígitos e seu expoente g. Os t dígitos são chamados mantissa do número: expoente {}}{ 2 0. 12000 } {{ } 10. mantissa Claro que na interação com a máquina, ela permite outras formas de dados de entrada, mas internamente ela os representa como denido acima. Por exemplo, o número cuja mantissa acabamos de salientar seria convenientemente digitado como 12 (uma dúzia), sendo depois convertido para a representação acima para qualquer uso futuro. Um número escrito à maneira da máquina tem semelhança com a notação cientíca, para a qual o padrão é a base 10 (veja como está escrita a velocidade da luz no seu livro de física). Esta maneira de representar os números internamente explica como são feitas as operações aritméticas. Denição 2. Considere uma máquina M(b, t, m, M). Para efetuar a soma de dois números positivos, a máquina alinha os pontos, colocando os dois números com o expoente igual ao maior dos dois e soma as mantissas. 1 3.

8 Cálculo Numérico Para efetuar a subtração de x por y, x y, a máquina alinha os pontos como na soma e subtrai como na aritmética dos reais a mantissa de x da de y. Para efetuar a multiplicação de dois números, a máquina multiplica as mantissas e soma os expoentes. O sinal do resultado segue a regra dos sinais da aritmética usual. Para efetuar a divisão de dois números x/y, a máquina divide a mantissa de x pela de y e subtrai o expoente de y do de x. O sinal do resultado segue a regra dos sinais da aritmética usual. Em todas as operações, se necessário, a máquina realinha o ponto de modo que a sua esquerda que zero e o primeiro dígito à direita do ponto, d 1, seja maior que zero. Depois de posicionado o ponto de modo que d 1 > 0, a máquina trunca o resultado para t dígitos na mantissa. Vamos dar alguns exemplos, começando com a operação de soma na máquina M(b = 10, t = 5, 10, 10) 1 + 12 =? x = 0.1 10 1, y = 0.12 10 2 x + y =0.01 10 2 +0.12 10 2 =0.13 10 2 que é mostrado no display como 13. Mas se fosse x = 1 e y = 120000, x + y =0.000001 10 6 +0.12 10 6 =0.120001 10 6 =0.12 10 6, truncamento Note que aqui a operação não é exata como a aritmética dos reais. Multiplicação de x = 0.12 e y = 54.321 xy =(0.12 0.54321) 10 2 =0.0651852 10 2 =0.65185 10 1, truncamento. Nos exercícios abaixo, faça os cálculos numa máquina M(b = 10, t = 5, 10, 10). 1. Para x = 0.12 e y = 0.54321, calcule (xy)/x e compare com y. O que você pode concluir das operações na máquina? 2. No segundo exemplo, vimos que 1 + 120000 = 120000 na máquina. Para y = 1, existe x tal que x + y = y na máquina? 3. Dados x = 5 e y = 1 10 6, calcule (x + x) + y e x + (x + y).

Túlio Carvalho 9 4. Quando você digita 0 na máquina, qual valor pode ser usado como zero? Este é o valor que a máquina usa quando tem que calcular x x. Para fazer estes exercícios numa calculadora, é necessário fazer a operação de truncamento à mão, porque a sua calculadora tem provavelmente mais do que 5 dígitos para representar os números (enquanto a nossa máquina tem t = 5). Existem algumas sosticações, como números com precisão dupla, que podem ser (e são) implementadas nas máquinas que usamos, mas o porquê da inexatidão das operações aritméticas é o truncamento. 1.3 Erros Vimos acima que as operações aritméticas na máquina são geralmente diferentes daquelas que estamos habituados. Deveríamos denotá-las por outros símbolos: +,,,, mas não o fazemos. De fato, elas se parecem com as operações usuais e pretendem imitá-las. Precisamos então quanticar o sucesso desta imitação, e para isto denimos os erros. Nosso objetivo é sempre fazer cálculos em que os erros não cresçam tanto de modo que os resultados (que são de fato aproximações) sejam conáveis. Denotemos o valor exato de um número por x e seu valor aproximado por x. Em geral x x, especialmente se x é obtido após uma série de operações aritméticas. O sucesso de um algoritmo está em administrar o módulo da diferença: x x. Denição 3. O erro absoluto é a diferença entre o valor exato e o valor aproximado de um número: ea(x) = x x. O erro relativo é o erro absoluto dividido pelo valor aproximado do número: er(x) = x x x. Geralmente o valor exato x não é conhecido. Conhecemos x e uma vez que saibamos ea(x) podemos dizer em que intervalo x está. É este o fundamento de uma aritmética computacional rigorosa, chamada aritmética intervalar. Usualmente trabalhamos com estimativas (cotas superiores) para ea(x). Convém ressaltar que as operações de subtração e divisão na denição de erro são exatas. Em primeiro lugar, vamos analisar o erro absoluto para dados de entrada, que suporemos exatos. Em seguida, veremos como as operações aritméticas produzem erros nos resultados. Como geralmente não sabemos o valor exato de um dado de entrada, convém obter o valor máximo que ea(x) ou er(x) podem ter, independente de x. Primeiro note que ea(x) = xer(x). Logo só precisamos obter um limitante superior para er(x) (isto é chamado estimar o erro relativo). Na máquina M(10, 5, 10, 10), note o seguinte 1 + 1 10 5 = 1 assim como 1 + 2 10 5 = 1, até 1 + 9 10 5 = 1. Logo, todo o intervalo de valores [1 9 10 5, 1 + 9 10 5 ] é entendido pela máquina como 1. Calculando o erro relativo de qualquer x

10 Cálculo Numérico neste intervalo er(x) = x 1 1 e er(x) < 9 10 5 < 1 10 4 = 1 10 t+1. Como a diferença entre y e ȳ, para qualquer y, só pode estar no último dígito da mantissa, y ȳ [1 9 10 5, 1 + 9 10 5 ] na nossa máquina. Assim (9) er(y) = y ȳ 1 < 1 10 4 = } 1 10 {{ t+1 } em geral Concluindo, o erro relativo em cada dado de entrada está sempre no penúltimo algarismo da mantissa. Por isto se diz que a precisão da máquina, isto é, o número de dígitos signicativos exatos de um dado, é t 1. Os erros absolutos e relativos crescem quando efetuamos operações. Pela denição das operações, no nal ocorre um truncamento, se necessário. Sabemos que o erro relativo de truncamento é, para qualquer dado, limitado a 10 t+1. Desta forma, para calcular o erro absoluto da soma, temos que levar em conta os erros de cada fator e o erro devido à própria operação. Assim (10) ea(x + y) = x + y ( x +ȳ) em que x +ȳ é o resultado numérico da soma de x e ȳ. Sabemos que (11) x +ȳ = x + ȳ + eo(+)( x + ȳ) em que eo(+) denota o erro (relativo) da soma. Como se pode notar pela Denição 2, os erros das operações têm origem no truncamento, portanto o erro relativo de qualquer operação vale no máximo 10 t+1. Substituindo (11) em (10) vem que (12) ea(x + y) = (x x) + (y ȳ) + eo(+)( x +ȳ) = ea(x) + ea(y) + 10 t+1 ( x +ȳ). } {{ } } {{ } dos dados da operação Os dois primeiros termos, que convém denotarmos por e 1, são devidos aos erros absolutos dos dados x e y, enquanto o último termo provém da operação aritmética. O erro devido à operação é sempre da forma acima: 10 t+1 z, em que z denota o resultado da operação. Por outro lado, para cada operação, os erros absolutos provenientes de aproximações dos dados se propagam segundo as regras de diferenciação: e 1 da soma é a soma dos erros absolutos dos dados; e 1 da diferença é a diferença dos erros absolutos dos dados; e 1 do produto: e 1 (xy) = xea(y) + ȳea(x); e 1 do quociente: e 1 (x/y) = x ea(y) ȳ ea(x) ȳ 2

Túlio Carvalho 11 Para obter o erro relativo, basta dividir o erro absoluto em cada fórmula pelo resultado da operação. Por exemplo (13) er(xy) = e 1(xy) + eo( ) x ȳ x ȳ = xea(y) x ȳ + ȳea(x) x ȳ =er(y) + er(x) + eo( ). + eo( ) Nos cálculos com erros, termo que tem erro multiplicado por outro erro é desprezado. Eles são chamados termos de segunda ordem. Isto justica a última igualdade, porque nela usamos, por exemplo, ȳ/( x ȳ) = 1/ x, mas isto só vale aproximadamente, pois um possível truncamento ocorre em x ȳ. 1. Tome dois dados x = 1234 e y = 1233 com erro relativo padrão de 10 4 na máquina M(10, 5, 10, 10). Calcule o erro relativo de x y e expresse-o em porcentagem. Este problema é chamado de cancelamento subtrativo. 2. Calcule o erro relativo de z = 3 x e w = x + x + x. Note que 3 e x já são números exatos na máquina. Como regra geral a ser seguida, sempre que for somar uma seqüência de números, convém colocá-los em ordem crescente, como ilustra o exercício: 3. Calcule o erro relativo nas seguintes operações, dados x = 5, y = 120000: x + x + y e y + x + x. A associatividade é da esquerda pra direita. 1.4 Instabilidade de algoritmos Os algoritmos fazem operações repetidas vezes. Pode acontecer de os erros das operações aritméticas se acumularem, provocando erros relativos grandes nos resultados. Veremos dois exemplos. Exemplo 1. Cálculo de I n = 1 0 xn e x 1 dx, para n = 1, 2,. Integrando por partes I n = x n e x 1 1 1 0 n x n 1 e x 1 dx = 1 ni n 1 A fórmula I n = 1 ni n 1 é uma fórmula recursiva para o conjunto de integrais I n, porque uma vez conhecido o valor de I n 1, podemos imediatamente calcular o valor de I n. Ela fornece um algoritmo para calcular cada integral I n. Num algoritmo, a execução de um conjunto de instruções (fórmulas, atribuições, etc) que se faz repetidas vezes é chamado laço ou iteração. Para começar, podemor calcular diretamente I 1 = 1/e = 0, 367879 na máquina M(10, 6, 19, 20). 0

12 Cálculo Numérico Daí que I 1 = 0, 367879 I6 = 0, 127120 I 2 = 0, 264242 I7 = 0, 110160 I 3 = 0, 207274 I8 = 0, 118720 I 4 = 0, 170904 I9 = 0, 068480 I 5 = 0, 145480 O resultado de I 9 tem erro relativo maior que 100%, pois as integrais I n são todas positivas, uma vez que o integrando é positivo. O fato de multiplicarmos por um número n > 1 uma aproximação aumenta o erro na próxima aproximação. De fato, o erro em I 9 é da ordem de 9!10 7 = 0, 16. Podemos escrever a fórmula recursiva do algoritmo da seguinte maneira I n 1 = 1 I n n e obter um algoritmo cujo erro diminui a cada iteração. No entanto precisamos de uma aproximação para n grande. Isto pode ser feito notando que I n = 1 0 x n e x 1 dx 1 0 x n dx = 1 n + 1 e portanto I n 0 quando n. Assim, tomando I 2 0 = 0, podemos calcular I 9 = 0, 091612 e além disto o erro diminui a cada iteração (começando pela cota 1/21). Exemplo 2. Cálculo de raízes de equações do segundo grau. A fórmula de Bhaskara para a solução de uma equação do segundo grau, ax 2 + bx + c = 0, x = b ± b 2 4ac 2a dá um resultado ruim quando b é muito grande. Na máquina M(10, 6, 19, 20), para a = 1, b = 10 4 e c = 1, temos x 1 = b b 2 4ac 2a = 10 4 e x 2 = 0. Exatamente por causa do cancelamento subtrativo, temos em x 2 um erro relativo de 100%. Podemos evitar o cancelamento subtrativo (veja exercício 1 da seção anterior), usando as seguintes fórmulas para as soluções: x 1 = b sinal(b) b 2 4ac 2a x 2 = c ax 1

Túlio Carvalho 13 em que a última relação decorre da fatoração ax 2 + bx + c = a(x x 1 )(x x 2 ). No exemplo acima, temos a aproximação em M(10, 6, 19, 20) para x 2 = 10 4, que é bem melhor. Como regra geral, deve-se evitar operações aritméticas que produzam números grande demais ou muito próximos de zero. Nas operações recursivas (como no exemplo 1), evitar que o erro de uma iteração seja multiplicado por um número maior que 1.