1 As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia e não têm a intenção de substituir o livro-texto, nem qualquer outra bibliografia. Introdução O Cálculo Numérico é uma metodologia para resolver problemas matemáticos por meio de uma máquina calculadora ou um computador, sendo de grande importância pois, embora os métodos analíticos usualmente nos forneçam a resposta em termos de funções matemáticas, existem problemas que não possuem solução analítica e, mesmo nestes casos podemos obter uma solução numérica para o problema. Uma solução via Cálculo Numérico é um conjunto de dados numéricos que fornecem uma aproximação para a solução exata do problema, aproximação esta que pode ser obtida em grau crescente de exatidão. Para obtermos uma solução numérica precisamos utilizamos apenas as quatro operações aritméticas (soma, subtração, multiplicação e divisão) e operações lógicas, o que torna a combinação computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem: Definição e coleta de dados do problema real Modelagem matemática Solução numérica Análise dos resultados Na modelagem matemática o problema real é transformado em um problema matemático através de uma formulação matemática. Geralmente o problema matemático tem mais soluções que o problema real. Ao final do processo de resolução deve-se escolher a solução que melhor se adapta ao que queremos. Quando partimos para a solução numérica, é feita a escolha do método numérico mais eficiente para resolver o problema oriundo da modelagem matemática. O método matemático é um conjunto de procedimentos utilizado para transformar um modelo matemático em um problema numérico ou um conjunto de procedimentos utilizados para resolver um problema numérico. A escolha do método mais eficiente deve envolver: precisão desejada para os resultados; capacidade do método em conduzir aos resultados desejados (velocidade de convergência); esforço computacional despendido (tempo de processamento, economia de memória necessária para a resolução).
2 A solução numérica envolve: (a) a elaboração de um algorítmo, que é a descrição seqüencial dos passos que caracterizam um método numérico, (b) a codificação do programa, quando implementamos o algorítmo numa linguagem de programação escolhida, e (c) o processamento do programa, quando o código antes obtido é editado em um arquivo para que possa ser executado pelo computador. Duas idéias são freqüentes em cálculo numérico, a de iteração ou aproximação sucessiva e a de aproximação local. Iteração. Em um sentido amplo, iteração significa a repetição sucessiva de um processo. Um método iterativo se caracteriza por envolver os seguintes elementos: Aproximação inicial: consiste em uma primeira aproximação para a solução do problema numérico. Equação de recorrência: equação por meio da qual, partindo da aproximação inicial, são realizadas as aproximações sucessivas para a solução desejada. Teste de parada: é o instrumento por meio do qual o procedimento iterativo é finalizado. Aproximação local. Aqui a idéia é aproximar uma função por outra que seja de manuzeio mais simples. Por exemplo, aproximar uma função não-linear por uma função linear em um determinado intervalo do domínio das funções. 1 Tipos de erros Durante as etapas de resolução de um problema surgem várias fontes de erros que podem alterar profundamente os resultados obtidos. É muito importante conhecer as causas desses erros para minimizar as suas consequências, ou do contrário, poderemos chegar a resultados distântes do que se esperaria ou até mesmo obter outros que não têm relação nenhuma como a solução do problema real. As principais fontes de erros são as seguintes: erros nos dados de entrada; erros no estabelecimento do modelo matemático; erros de arredondadamento durante a computação; erros de truncamento, e erros humanos e de máquinas. O erro inicial é a soma das incertezas introduzidas no equacionamento do problema, na medição dos parâmetros, nas condições iniciais etc. A influência dessas perturbações no resultado final vai depender da estabilidade do problema. Estabilidade é a condição que nos diz se pequenas perturbações nos dados de entrada provocam pequenas perturbações nos resultados, ou seja
3 soluções próximas. Se além de estável, o problema tiver uma única solução, dizemos que ele é bem-posto. O modelo matemático para o problema real deve representar bem o fenômeno que está ocorrendo no mundo físico, normalmente isso exige simplificações no modelo físico para que se possa obter um problema matemático viável de ser resolvido. O processo de simplificação é uma fonte de erros, o que pode, ao final da resolução do problema, implicar na necessidade de reconstruir o seu modelo. 1.1 Medida de erros Tendo em vista que, na aplicação dos métodos numéricos, trabalhamos com aproximações vamos estabelecer duas maneiras de se medir ou delimitar o erro cometido. Seja u o valor exato e v uma aproximação para u, definimos o erro absoluto como sendo E A = u v e o erro relativo como sendo E A u. O tamanho do erro absoluto é mais grave quando o valor verdadeiro é pequeno. É comum apresentar o erro relativo em forma de percentual, o que é obtido multiplicando esta expressão por 100. Exercício: Sejam: a) u = 10, 0010 e v = 10, 0009; b) u = 0, 0010 e v = 0, 0009, em anbos os casos calcule os erros absoluto e relativo. 1.2 Erro de truncamento Este tipo de erro surge toda vez que se substitui um procedimento matemático infinito por um processo finito ou discreto. Como um processo infinito não se conclui somos obrigados a adotar uma aproximação após um número finito de passos. Vejamos dois exemplos clássicos que ilustram fontes de erros de truncamento: o uso de séries no cálculo de funções e o uso de diferenças finitas para aproximar derivadas. Exemplo 1. Para calcular o valor de e 0,5 podemos lançar mão da série de Taylor da função exponencial e x = 1 + x + x2 2! + x3 3! +... + xn n! +... (1) portanto, no cálculo efetivo de e 0,5, precisamos truncar a série, usando apenas um número finito de termos dela. Por exemplo, usando os cinco primeiros termos como aproximação, teremos e 0,5 = 1, 6484375. Exercício: Calcule o erro absoluto entre o valor acima e o exato (obtido através de uma máquina calculadora). Aumentando o número de termos utilizados, verifique que esse erro diminui. Exemplo 2. A derivada de uma função f(x) pode ser calculada pela diferença centrada f (x 0 ) f(x 0 + h) f(x 0 h) 2h temos que o erro de truncamento (absoluto) da fórmula de diferenças centradas é h2 6 f (k), onde k é um número que depende de x 0 e h; e x 0 h k x 0 + h. Uma forma mais razoável de (2)
4 estimar esse erro vem a ser: E h2 6 max{ f (x) ; x 0 h x x 0 + h}. Por exemplo, seja f(x) = sen(x), tomando x 0 = π e h 1 = π 4, temos que f (π) = 1. Utitlizando a aproximação acima temos que f (π) 0, 90032. Exercícios: Calcule o erro de truncamento e compare-o com a estimativa doerro. Faça h 2 = π 8 e h 3 = π 16, em cada caso calcule as aproximações para f (π), os erros de truncamento e compare com as estimativas do erro. 1.3 Erro de arredondamento Os erros de arredondamento surgem devido ao fato de algumas propriedades básicas da aritmética real não valerem quando executadas no computador, pois, enquanto na matemática alguns números são representados por infinitos dígitos, na máquina isso não é possível já que uma palavra da memória e a própria memória da máquina são finitas. Dessa forma, os erros de arredondamento dependem de como os números são representados na máquina, a representação depende da base em que os números são escritos e da quantidade máxima de dígitos usados nessa representação. Logo cálculos envolvendo números que não podem ser escrito de modo finito na base escolhida geram erros. Quanto maior for o número de dígitos significativos utilizados (dígitos após a vírgula) maior será a precisão. 2 Conversão de bases e aritmética de ponto flutuante Um número pode ter sua representação em ponto fixo, por exemplo 12, 43, ou em ponto flutuante 0, 1243 10 2. A forma de representação de um número em ponto flutuante na base β é a seguinte: ±, d 1 d 2 d 3... d p β e ; (3) onde os d i s, i = 1, 2,..., p são os dígitos da parte fracionária(mantissa), tais que 0 d i β 1, d 1 é não-nulo, β é o valor da base (geralmente 2, 8 ou 16) representada na base 10, p é o número de dígitos e e é um expoente inteiro que varia entre m e M, ambos números inteiros. As três partes de um número em ponto flutuante, sinal, mantissa e expoente, têm um comprimento total fixo que depende do computador e do tipo de número representado: se em precisão simples, dupla ou estendida. Um sistema de ponto flutuante F, que depende de β, p, m e M, será representado por F(β, p, m, M), onde a precisão da máquina com o sistema F é definida pelo número p de dígitos na mantissa. O zero é representado de maneira especial, todos os dígitos da mantissa são nulos e o expoente é tomado o menor possível para se evitar a perda de dígitos nas operações. Vale observar que, enquanto na reta real possuímos uma quantidade não-enumerável de números posicionados continuamente, em ponto flutuante os números são representados de forma finita e discreta. Entre dois números de ponto flutuante nem sempre existe um outro número de ponto flutuante.
5 2.1 Aritmética de ponto flutunate Quando dois números são somados ou subtraídos, os dígitos do número de expoente menor devem ser deslocados a fim de alinhar as casa decimais, ou seja, devemos representar ambos os fatores com o maior expoente envolvido na operação. O resultado então é arredondado para o número de dígitos que a mantissa comporta, levando em conta uma mantissa normalizada (d 1 0). Na multiplicação, como na divisão, os números devem ser armazenados no formato definido e a operação ser efetuada como no caso de números decimais. O resultado, então, deve ser arredondado e normalizado. Se uma operação aritmética resultar em um número que seja maior em módulo que o maior número representável ocorrerá um overflow. Se, por outro lado, uma operação aritmética resultar em um número que seja menor em módulo que o menor número representável não-nulo ocorrerá um underflow. 2.2 Conversão de bases Além desses erros operacionais, uma outra causa de erros quando se usa computadores é devida à conversão de base. Geralmente fornecemos um número ao computador na base 10 e no entanto ele é armazenado e operado na base 2. Como números com representação finita numa base podem tem representação infinita em outra, converter do sistema decimal para o binário e vice-versa é outra fonte de erros. Exercícios: 1. Converta os seguintes números da forma decimal para a forma binária: x 1 = 37; x 2 = 2347; x 3 = 0, 75; x 4 =(sua matrícula)/10; x 5 = 0, 1217 2. Converta os seguintes números da forma binária para a forma decimal: y 1 = 101101; y 2 = 110101011; y 3 = 0, 1101; y 4 = 0, 111111101 3. Converta os seguintes números da forma decimal para sua forma na base quatro: z 1 = 5268; z 2 = 2, 5; z 3 = 159357; z 4 = 0, 1225 4. Seja o SPF dado por F (10, 4, 5, 5). Dados os números x = 7237; y = 0, 0002145; z = 2, 585, efetue as seguintes operações: w 1 = x + y + z; w 2 = x y z; w 3 = x y ; w 4 = xy z ; w 5 = x y z 5. Dê um argumento convincente para justificar que, se o número fracionário N tem representação finita na base 2 com k dígitos, então sua representação na base 10 também é finita com k dígitos. 6. Encontre o maior intervalo em que um número q deve se encontrar para aproximar x 4 com erro relativo no máximo de 10 4.
6 7. Seja o sistema de ponto flutuante dado por F (6, 6, 6, 6). Quantos números reais podem ser representados de forma exata? Verifique se sua matrícula, escrita de traz para frente, tem representação neste sistema. 3 Condicionamento de algorítmos Como antes definido, um problema é dito bem-posto quando tem uma única solução e é estável. Mas pode acontecer o caso do problema ser bem-posto e, no cálculo de soluções aproximadas, usarmos algorítmos instáveis. Neste caso podemos obter maus resultados. Como exemplo consideremos o cálculo de raízes de equações de segundo grau: Exemplo 3 As raízes da equação ax 2 + bx + c = 0, onde a e b são números positivos, podem ser calculads por x 1 = b + b 2 4ac 2a, x 2 = b b 2 4ac. (4) 2a Quando b 2 >> 4ac, o cálculo de x 2 envolverá a diferença de dois números próximos o que pode acarretar na perda de dígitos significativos. Uma forma de contornar o problema pode ser calcular x 1 como proposto anteriormente e usar a propriedades de raízes de equações do segundo grau: x 1 x 2 = c/a. Calculemos um exemplo prático, seja a equação x 2 100, 22x + 1, 2371 = 0, trabalhando com uma mantissa com 5 dígitos temos: b 2 = 10044 b 2 4ac = 10039 b 2 4ac = 100, 19. (5) Calculando as raízes pelas fórmulas apresentadas no primeiro procedimento temos x 1 = (100, 22 + 100, 19)/2 = 100, 20 x 2 = (100, 22 100, 19)/2 = 0, 015. (6) Agora, usando o valor de x 1 e o segundo procedimento temos x 2 = 1,2371 100,20 = 0, 012346. Substituindo na função f(x) = x 2 100, 22x + 1, 2371, verificamos que no primeiro procedimento f(x 2 ) = 0, 26597, enquanto que no segundo f(x 2 ) = 6, 3696 10 5. Dependendo da precisão desejada, poderíamos considerar a resposta do segundo procedimento como sendo exata. Referências [1] RUGGIERO, M.A.G. e ROCHA LOPES, V.L. Cálculo Numérico - Aspectos Teóricos e Computacionais. MAKRON Books,1996 [2] CUNHA, M.C.C. Métodos Numéricos. Campinas, Editora da Unicamp, 2000. [3] CAMPOS Filho,F.F. Algorítmos Numéricos. [4] SPERANTIO,D.,MENDES,J.T.,SILVA,L.H.M. Cálculo Numérico. São Paulo, Prentice Hall, 2003.