Matemática Superior para Engenharia - Volume 3 - Ed. 9 -Kreyszig, Erwin

Matemática Superior para Engenharia - Volume 3 - Ed. 9 -Kreyszig, Erwin

(Parte 1 de 8)

Análise Numérica

Programa Computacional

CAPÍTULO 19 Métodos Numéricos em Geral CAPÍTULO 20 Métodos Numéricos de Álgebra Linear CAPÍTULO 21 Métodos Numéricos para EDOs e EDPs

A análise numérica preocupa-se com os métodos numéricos, ou seja, os métodos para resolver problemas em termos de números ou de representações gráficas correspondentes. Ela também inclui a investigação da extensão da aplicabilidade, bem como a precisão e a estabilidade desses métodos.

Tarefas usuais em análise numérica são o cálculo de valores de integrais definidas, a obtenção de solução de equações e sistemas lineares, a solução de equações diferenciais ou integrais para as quais inexistem fórmulas de solução e o cálculo de valores de dados experimentais para os quais desejamos obter, por exemplo, um polinômio de aproximação.

Os métodos numéricos fornecem, portanto, uma transição de um modelo matemático para um algoritmo, ou seja, uma detalhada receita para se resolver um determinado problema a ser resolvido por programação em seu computador, utilizando um sistema de álgebra computacional (SAC) ou algum outro programa, ou mesmo uma calculadora programável.

Neste e nos dois capítulos seguintes, explicamos e ilustramos os métodos numéricos fundamentais mais freqüentemente utilizados em forma algorítmica. O Capítulo 19 trata dos métodos numéricos em geral; o Capítulo 20, da álgebra linear numérica e, em particular, dos métodos empregados na solução de sistemas lineares e de problemas de autovalores de matrizes; e o Capítulo 21 trata dos métodos numéricos aplicados às EDOs e EDPs.

Os algoritmos são fornecidos de modo a mostrar da melhor forma possível o funcionamento de cada método. Sugerimos que você também faça uso dos programas comerciais ou de domínio público que estão listados ao final deste texto ou que podem ser obtidos na Internet.

Os métodos numéricos vêm cada vez mais ganhando importância em engenharia, mais do que em qualquer outro campo da matemática, em virtude do contínuo desenvolvimento de poderosas técnicas de programação resultantes de uma extensa atividade de pesquisa nessa área, através da invenção de novos métodos, do aperfeiçoamento e adaptação de métodos já existentes e também da redescoberta de outros métodos antigos, que não tinham praticidade na era pré-digital. Um dos principais objetivos dessas atividades é o

2 Parte E • Análise Numérica desenvolvimento de programas bem estruturados de computador. E, em situações de trabalho de grande escala — com milhões de equações ou etapas de iteração — mesmo pequenos aperfeiçoamentos algorítmicos podem exercer um grande efeito no tempo de computação, da demanda de armazenamento, na precisão e na estabilidade.

Em média, isto tem feito com que os algoritmos utilizados na prática venham ficando cada vez mais complicados. Entretanto, quanto mais sofisticados os modernos programas se tornam, maior fica a importância de termos uma compreensão básica dos conceitos e algoritmos, a fim de conhecermos idéias originais, motivadoras e de recente desenvolvimento.

Para evitar mal-entendidos: há diversos métodos clássicos e simples que ainda são bastante úteis em várias situações rotineiras e que produzem resultados satisfatórios. Em outras palavras, nem tudo tem-se tornado mais sofisticado.

Programa Computacional

Veja também w.ltceditora.com.br

A lista a seguir ser-lhe-á útil caso você deseje encontrar programas de computador. Também é possível obter informações sobre programas, tanto os novos como os já conhecidos, por meio de revistas, como a Byte Magazine ou a PC Magazine, de artigos publicados pela American Mathematical Society (veja também seu site na web em w.ams.org), pela Society for Industrial and Applied Mathematics (SIAM, em w. siam.org), Association for Computing Machinery (ACM, em w.acm.org) ou pelo Institute of Electrical and Electronics Engineers (IEEE, em w.ieee.org). Consulte também sua biblioteca, o departamento de ciências da computação ou ainda o departamento de matemática de sua instituição.

Derive. Texas Instruments, Inc., Dallas, TX. Tel.: 1-800-842-2737 ou (972) 917-8324, site na web em w. derive.com ou w.education.ti.com.

EISPACK. Veja LAPACK.

GAMS (Guide to Available Mathematical Software). Site na web em http://www.gams.nist.gov Índice cruzado on-line de desenvolvimento de programas da NIST, com links com o IMSL, NAG e NETLIB.

IMSL (International Mathematical and Statistical Library). Visual Numerics, Inc., Houston, TX. Tel.: 1-800- 2-4675 ou (713) 784-3131, site na web em w.vni.com. Rotinas Fortran com gráficos para matemática e estatística.

LAPACK. Rotinas de Fortran 7 para álgebra linear. Este pacote de programas é posterior ao LINPACK e ao EISPACK. Pode-se baixar as rotinas ou solicitá-los diretamente à NAG. Há um LAPACK User’s Guide disponível em http://netles.sandia.gov/master/readme.html

LINPACK. Veja LAPACK.

Maple. Waterloo Maple, Inc., Waterloo, ON, Canadá. Tel.: 1-800-267-6583 ou (519) 747-2373, site na web em w.maplesoft.com.

Maple Computer Guide. Para este livro — Matemática Avançada para Engenharia —, 9a Ed., de E. Kreyszig e E. J. Norminton. J. Wiley and Sons, Inc., Hoboken, NJ. Tel.: 1-800-225-5945 ou (201)748-6000, site na web w.wiley.com/wileyCDA.

MathCad. MathSoft, Inc., Cambridge, M.A., Tel.: 1-800-628-4223 ou (617) 4-8000, site na web em http://www.ptc.com/appserver/mkt/products/resource/mathcad/index.jsp

Mathematica. Wolfram Research, Inc., Champaign, IL. Tel.: 1-800-965-3726 ou (217) 398-0700, site na web em w.wolframresearch.com.

Capítulo 19: Métodos Numéricos em Geral 3

Mathematica Computer Guide. Para Matemática Avançada para Engenharia, 9a edição, de E. Kreyszig e E. J. Norminton. J. Wiley and Sons, Inc., Hoboken, NJ. Tel.: 1-800-225-5945 ou (201) 748-6000, site na web em w.wiley.com/wileyCDA.

Matlab. The Matlab Works, Inc., Natick, MA. Tel.: (508) 647-7000, site na web em w.mathworks. com.

NAG. Numerical Algorithms Group, Inc., Downders Grove, IL. Tel.: (630) 971-2337, site na web em w. nag.com. Rotinas numéricas em Fortran 7, Fortran 90 e C.

NETLIB. Extensa biblioteca de software de domínio público. Veja em w.netlib.org e http://netlib.sendia. gov/master/readme.html.

NIST. National Institute of Standards and Technology, Gaithersburg, MD. Tel.: (301) 975-2000, site na web em w.nist.gov. Contatos com a Mathematical and Computational Science Division, tel.: (301) 975-3800. Veja também http://math.nist.gov.

Numerical Recipes. Cambridge University Press, New York, NY. Tel.: (212) 924-3900, site na web em w.cambridge.org/us. Livros (e também códigos-fonte em CD-ROM) contendo rotinas numéricas em C, C++, Fortran 7 e Fortran 90. Pedidos no escritório de West Nyack, NY, em 1-800-872-7423 ou (845) 353- 7500 ou on-line em w.numerical-recipes.com.

OUTROS PROGRAMAS COMPUTACIONAIS DE ESTATÍSTICA. Ver a Parte G.

CAPÍTULO 19

Métodos Numéricos em Geral

O primeiro capítulo sobre métodos numéricos começa com uma explicação de alguns conceitos gerais, como ponto de flutuação, erros de arredondamento e erros numéricos em geral e sua propagação. Na Seção 19.2, discutiremos métodos para resolver equações. Os métodos de interpolação, incluindo o dos splines, seguemse nas Seções 19.3 e 19.4. A última seção (19.5) refere-se à integração e à derivação numéricas.

O propósito deste capítulo é duplo. Primeiro, para todas estas tarefas, o aluno deverá familiarizar-se com os métodos numéricos de solução mais básicos (embora não por demais complicados). Eles são indispensáveis ao engenheiro porque, para muitos problemas, não existe uma fórmula de solução (imagine, por exemplo, uma integral complicada, ou um polinômio de alto grau ou a interpolação de valores obtidos através de medições). Em outros casos, uma fórmula complicada de solução pode existir, porém não pode ser utilizada na prática.

O segundo propósito deste capítulo é fazer com que a aprendizagem dos alunos lhes permita compreender algumas idéias e conceitos básicos que se constituem em importantes métodos completos, como a forma prática de algoritmos, a estimativa de erros e a ordem de convergência.

Pré-requisito: Cálculo elementar Referências e Respostas dos Problemas: Parte E do Apêndice 1 e Apêndice 2

19.1 Introdução

Os métodos numéricos são utilizados para resolver problemas em computadores e calculadoras através de cálculos numéricos, resultando em uma tabela de números e/ou representações gráficas (figuras). As fases que vão de uma dada situação (em engenharia, economia etc.) até a resposta final são geralmente as seguintes:

1. Modelagem. Estabelecemos um modelo matemático para nosso problema, como uma integral, um sistema de equações, ou uma equação diferencial. 2. Escolha de um método numérico e de parâmetros (p. ex., tamanho do passo de iteração), talvez com uma estimativa preliminar de erro. 3. Programação. Usamos o algoritmo para escrever um programa correspondente em um SAC, como Maple,

Mathematica, Matlab ou Mathcad, ou, digamos, em Fortran, C, ou C++, selecionando rotinas compatíveis de um sistema de software conforme o necessário. 4. Realização do cálculo. 5. Interpretação dos resultados em termos físicos ou outros, também decidindo reexecutar o programa caso se necessitem de resultados posteriores.

As Etapas 1 e 2 estão relacionadas. Uma leve mudança do modelo pode muitas vezes permitir o uso de um método mais eficiente. Mas, para escolher os métodos, precisamos antes conhecê-los. Os Capítulos 19–21 contêm algoritmos eficientes para as classes mais importantes de problemas que ocorrem com freqüência na prática.

Na Etapa 3, o programa consiste em dados fornecidos e em uma seqüência de instruções a serem executadas pelo computador em determinada ordem para produzir a resposta em forma numérica ou gráfica.

Para criar uma boa compreensão da natureza do trabalho numérico, continuaremos nesta seção com algumas observações gerais simples.

Números em Forma de Ponto Flutuante

Sabemos que, na notação decimal, cada número real é representado por uma seqüência finita ou infinita de dígitos decimais. Hoje, a maioria dos computadores tem duas maneiras de representar os números, chamadas de ponto fixo e ponto flutuante. Em um sistema de ponto fixo, todos os números são expressos com um número fixo de

Capítulo 19: Métodos Numéricos em Geral 5 decimais à direita da vírgula decimal; por exemplo: números expressos com 3 decimais são 62,358; 0,014; 1,0. Em um texto, escreveríamos, digamos, 3 decimais como 3D. As representações de ponto fixo não são práticas na maioria das computações científicas por causa de seu alcance limitado (explique!) e não nos interessarão. Em um sistema de ponto flutuante, escrevemos, por exemplo:

0,6247  103,0,1735  1013, 0,2000  101
6,247  102,1,735  1014, 2,0  102.

ou, às vezes, também

Vemos que, neste sistema, o número de dígitos significativos é mantido fixo, ao passo que a vírgula decimal é “flutuante”. Aqui, o dígito significativo de um número c é qualquer dígito dado de c, exceto, possivelmente, para zeros à esquerda do primeiro dígito não-zero; esses zeros servem apenas para fixar a posição da vírgula decimal. (Assim, qualquer outro zero é um dígito significativo de c.) Por exemplo: cada um dos números

1360, 1,360, 0,001360 tem 4 dígitos significativos. Em um texto, indicamos, por exemplo, 4 dígitos significativos por 4S.

O uso de expoentes permite-nos representar números muito grandes e números muito pequenos. De fato, teoricamente qualquer número não-zero a pode ser escrito como

(1) a  m  10n,0,1  m  1, n inteiro.

No computador, m limita-se a k dígitos (p. ex.: k = 8) e n é limitado, dando as representações (apenas para uma quantidade finita de números!)

(2) a  m  10n,m  0.d1d2 • • • dk, d1  0.

Esses números ā são freqüentemente chamados de números de máquina decimais de k dígitos. Sua parte fra- cionária m (ou m ) é chamada de mantissa. Isto nada tem a ver com a “mantissa” que se usa em logaritmos. n é chamado de expoente de ā.

Underflow e Overflow. O intervalo de expoentes com que um computador típico pode lidar é muito grande. O ponto flutuante padrão do IEEE (Institute of Electrical and Electronics Engineers) para a precisão simples (o número usual de dígitos nos cálculos) é cerca de –38 < n < 38 (cerca de –125 < n* < 125 para o expoente em representações binárias, ou seja, representações de base 2). [Para a chamada precisão dupla, é cerca de –308 < n < 308 (cerca de –1020 < n* < 1020 para representações binárias)]. Se, em um cálculo ocorrer um número fora desse intervalo faixa, isto é chamado de underflow quando o número é menor e de overflow quando ele é maior. No caso de underflow, o resultado é normalmente arredondado para zero e o cálculo prossegue. O overflow faz o computador parar. Os códigos-padrão (de IMSL, NAG etc.) são escritos de modo a se evitar o overflow. As mensagens de erro sobre overflow podem então indicar erros de programação (dados incorretos de entrada etc.).

Arredondamento

Provocam-se erros por causa do corte (= o descarte de todos os números decimais de uma certa casa em diante) ou do arredondamento (aproximação). Esses erros são chamados de erros de arredondamento, independentemente de terem sido causados pelo corte ou pelo arredondamento propriamente dito. A regra para se arredondar um número para k decimais é a seguinte. (A regra de arredondamento para k dígitos significativos é a mesma, bastando-se substituir a expressão “decimal” por “dígito significativo”.)

Regra de Arredondamento. Descarte o (k + 1)-ésimo decimal e todos os decimais subseqüentes. (a) Se a parte assim descartada for inferior à metade da unidade situada na k-ésima casa, deixe o k-ésimo decimal inalterado (“arredondamento para baixo”). (b) Se a parte descartada for maior que a metade da unidade situada na k-ésima casa, aumente de uma unidade a k-ésima casa (“arredondamento para cima”). (c) Se a parte descartada for exatamente igual à meia unidade, arredonde para o decimal par mais próximo. (Exemplo: no arredondamento de 3,45 e 3,5 para uma casa decimal, obtemos 3,4 e 3,6, respectivamente.)

O propósito da última parte desta regra é garantir que, nos casos onde a parte descartada vale exatamente a metade de um decimal, os arredondamentos para mais e para menos venham, em média, a ser feitos com aproximadamente a mesma freqüência.

Se arredondamos 1,2535 para 3, 2, 1 casas decimais, teremos 1,254; 1,25 e 1,3, mas se 1,25 for arredondado para uma casa decimal, sem informações adicionais, teremos 1,2.

6 Parte E • Análise Numérica

Simplesmente cortar os números à direita de uma certa casa não é recomendável, pois o erro correspondente pode ser maior do que o ocorrido no arredondamento, além de ser sistemático. (Não obstante, alguns computadores utilizam tal procedimento, pelo fato de ele ser mais simples e mais rápido. Por outro lado, alguns computadores e calculadoras aumentam a precisão de seus resultados fazendo cálculos intermediários que utilizam um ou mais dígitos extras, chamados de dígitos de guarda.)

Erro de Arredondamento. Em (2), chamemos de a = fl(a) a aproximação de ponto flutuante que o computador faz de a em (1) utilizando o arredondamento, onde fl sugere flutuante. Então a aplicação da regra do arredondamento

O lado direito u 12 101 k desta equação é chamado de unidade de arredondamento. Se escrevermos a = a(1 + d), teremos, usando álgebra, que (a a)/a d, logo, d u por (3). Isto mostra que a unidade de arredondamento u é um limite de erro do arredondamento.

(Parte 1 de 8)

Comentários