cálculo numérico

Click here to load reader

Post on 04-Jul-2015

67 views

Category:

Documents

4 download

Embed Size (px)

TRANSCRIPT

  • 1. Notas de Aulas de Anlise Numrica Professor Gesil Amarante Primeiro semestre de 2006 NNoottaa iinniicciiaall Estas notas de aulas no tm como objetivo substituir a leitura dos livros-texto adotados ou sugeridos. Professores imensamente mais experientes vieram a escrever seus livros que foram publicados e tornaram-se sucessos de venda e crtica (uns mais que outros, claro) no por acaso. Use-os. Apenas adiciono as estes a particular nfase que este vosso humilde ministrante tem dado durante as aulas a tpicos constantes do programa da disciplina. Com a vantagem de os alunos no precisarem reservar na biblioteca ou pagar pela posse. Sugestes e observaes de vocs, alunos, sero sempre bem-vindas. Fico feliz se essas notas passarem no julgamento de vocs como teis durante este tempo em que aprenderemos juntos um pouco de nossa humana cincia. Referncias: [1] Clculo Numrico Dlcio Sperandio, Joo Teixeira Mendes e Luiz Henry Monken e Silva Pearson Editora [2] Clculo Numrico Aspectos Tericos e Computacionais Mrcia A. Gomes Ruggiero Vera Lcia da Rocha Lopes 2a Edio Pearson Editora

2. 1 NNoottaass ddee AAuullaa ddee AAnnlliissee NNuummrriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee 0 Introduo (aulas 01 e 02) Problema Real Modelo Fsico Modelo Matemtico Implementao Escolha do mtodo Numrico Anlise dos resultados Problema Numrico Quando os dados de entrada e de sada so conjuntos finitos e discretos. Casos como a equao abaixo 5 4 3 2 5 10 2 8 5x x x x x+ + + = no so um problemas numricos. Algumas vezes podemos transformar problemas no-numricos em problemas numricos. O caso da equao diferencial abaixo um exemplo (retirado de [2] ) no um problema numrico: ( ) ( ) 2 2 2 2 p/ 0 0 5 1 d y x y x dx y y = + = = (0,5) mas que pode ser transformado num problema numrico: Por diferenas finitas: ( ) ( ) ( ) ( ) ( ) ( ) ( ) 2 ' ; 2 2 '' f x h f x h f x h . f x h f x f x h + = + = f x+ ( )2 2 2 1 -1 0 2 , 1,2,.... 1 0 1 i i i m y y y h x y i m y y + + = + = = = Mtodo Numrico Mtodo empregado para a expresso do problema como um problema numrico, como no exemplo acima, mais o conjunto de procedimentos para a soluo. Para a escola do mtodo mais apropriado devemos ter em mente a preciso, a capacidade de resoluo do problema especfico e o custo computacional do mtodo. 3. 2 NNoottaass ddee AAuullaa ddee AAnnlliissee NNuummrriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Algoritmo Descrio seqencial do mtodo. Mtodos Iterativos Freqentemente utilizamos mtodos diretos e mtodos iterativos. A distino entre um e outro ficar clara mais adiante, mas, essencialmente, o mtodo iterativo apresenta aspecto de procedimento circular que interrompido quando satisfeita uma condio (teste de parada). Assim, estes mtodos tm trs etapas, basicamente, Tentativa Inicial Equao de recorrncia Exemplo: mudana de base numrica. Teste da Parada Bases Numricas As representaes numricas so, por princpio, equivalentes, sendo que uma ou outra pode ser mais til em determinado tipo de situao. A escolha do sistema decimal que adotamos (na maior parte das vezes) se deu por alguma convenincia e mais por uma conjuno de fatores histricos que no vale a pena aqui discutir. O fato que qualquer nmero pode ser descrito em qualquer base e que essa representao obedece seguinte regra bsica: Seja a base , nas quais o Nmero N vai ser representado com os algarismos aj: 1 2 0 1 1 2 0 1... . ...j j j j j ja a a aj jN a a + + + + + + pgina de ttulo do livro " Libro Intitulado Arithmetica Practica " por Juan de Yciar, matemtico e calgrafo Basco, Saragossa 1549. = + Para transformarmos N de uma base para outra, por exemplo, de decimal para binria e vice versa, precisamos fazer sucessivas multiplicaes ou divises pela base-alvo, dependendo se estamos falando de nmeros inteiros ou reais Vamos trabalhar primeiro com inteiros: Binrios a decimais Dado um nmero N, binrio, para express-lo em decimal, deve-se escrever cada nmero que o compe (bit), multiplicado pela base do sistema (base = 2), elevado posio que ocupa. Exemplo: 1001(binrio) 1 23 + 0 22 + 0 21 + 1 20 = 9 Portanto, 1001 9 em decimal 4. 3 NNoottaass ddee AAuullaa ddee AAnnlliissee NNuummrriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Decimais a Binrios Dado um nmero decimal, para convert-lo em binrio, basta dividi-lo sucessivamente por 2, anotando o resto da diviso inteira: 12(decimal) 12 / 2 = 6 + 0; 6 / 2 = 3 + 0; 3 / 2 = 1 + 1; 1 / 2 = 0 + 1. Observe que importante que os nmeros sejam lidos de trs para frente, ou seja: 1100 12 em binrio. Outro mtodo para converso de decimal para binrio Considere alguns resultados da potncia 2x e exponha-os em tabela por ordem decrescente: 2048 1024 512 256 128 64 32 16 8 4 2 1 Deste modo possvel converter grandes quantidades de nmeros decimais para binrios: Numero decimal 2048 1024 512 256 128 64 32 16 8 4 2 1 Resultado Binario 354 0 0 0 1 0 1 1 0 0 0 1 0 101100010 1634 0 1 1 0 0 1 1 0 0 0 1 0 11001100010 104 0 0 0 0 0 1 1 0 1 0 0 0 1101000 2 0 0 0 0 0 0 0 0 0 0 1 0 10 38 0 0 0 0 0 0 1 0 0 1 1 0 100110 O procedimento igual a qualquer caso. Vamos acompanhar de perto o caso do 1634, por exemplo: O procedimento se inicia do extremo esquerdo, e consiste na verificao de uma possvel subtrao no-negativa. 2048>1634. Logo fica "0" (por exemplo, 1634-2048 resultava num nmero negativo. Logo atribui-se o "0" ) 102498. Logo fica "0" 642. Logo fica "0" 4>2. Logo fica "0" 2=2. Logo fica "1" 2-2=0 1>0. Logo fica "0" Soma de nmeros binrios Recordando as seguintes somas bsicas: 1. 0+0=0 2. 0+1=1 3. 1+1=10 Assim, ao se somar 100110101 com 11010101, tem-se: 100110101 11010101 ----------- 1000001010 Opera-se como em decimal: comea-se a somar desde a esquerda, no exemplo, 1+1=10, ento escreve- se 0 e "leva-se" 1. Soma-se este 1 coluna seguinte: 1+0+0=1, e segue-se at terminar todas as colunas (exatamente como em decimal). Produto de nmeros binrios O produto de nmeros binrios especialmente simples, j que o 0 multiplicado por qualquer coisa resulta 0, e o 1 o elemento neutro do produto. Por exemplo, a multiplicao de 10110 por 1001: 10110 1001 --------- 10110 00000 00000 10110 --------- 11000110 6. 5 NNoottaass ddee AAuullaa ddee AAnnlliissee NNuummrriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Nmeros Reais No caso dos inteiros aplicamos sucessivas divises por 2, guardando os restos. Aqui faremos o contrrio, sucessivas multiplicaes por 2, guardando-se os zeros. Por exemplo: 10 1 2 3 4(0.125) . ...a a a a = 102 (0.125) 0.250 = ; No h parte real, resultado 0; 102 (0.250) 0.50 = ; No h parte real, resultado 0; 102 (0.50) 1.0 = ; H parte real, resultado 1; Resto 0. Assim, ( )10 2 (0.125) 0.001= Representao Finita Nem todos os nmeros que so representados com um nmero finito de algarismos numa base o so nas outras. Por exemplo, 0.1 tem representao finita na base 10, mas, na base 2, ser que tambm o ? Vejamos 102 (0,1) 0,2 = ; No h parte real, resultado 0; 102 (0,2) 0,4 = ; No h parte real, resultado 0; 102 (0,4) 0,8 = ; No h parte real, resultado 0; 102 (0,8) 1,6 = ; H parte real, resultado 1, sobra 0,6; 102 (0,6) 1,2 = ; H parte real, resultado 1, sobra 0,2; 102 (0,2) 0,4 = ; No h parte real, resultado 0; . . . Assim, ( )10 2 (0.1) 0.0001100110011...= Neste e em outros casos semelhantes, ficamos sujeitos ao limite fsico de representao da mquina que usamos para fazer os clculos. Tal limite srio candidato propagao de erros e um exemplo de conseqncia disso mostrado no texto pgina 12. Aritmtica de Ponto Flutuante Um computador representa nmeros reais da seguinte forma: ( )1 2 3 4. ... e tN a a a a a = , onde a representao com t algarismos do nmero na base , chamada mantissa, sendo que a ( 1 2 3 4. ...a a a a ) 1 deve ser o primeiro algarismo significativo (no nulo) e e um expoente, cujo valor vai de um limite inferior -m at um limite superior M, que depende da capacidade da mquina. Esta forma de representao foi descoberta por Konrad Zuse (1910-1995) para os seus computadores eletromecnicos Z1 e Z3, no incio da dcada de 40. 7. 6 NNoottaass ddee AAuullaa ddee AAnnlliissee NNuummrriiccaa PPrrooffeessssoorr GGeessiill AAmmaarraannttee Assim: 5 24543=0,24543 10 , se a mquina pode apresentar 5 algarismos na mantissa, ou 5 24543=0,245 10 , se a mquina pode apresentar 3 algarismos na mantissa, ou ainda 5 24543=0,25 10 , se a mquina pode apresentar 2 algarismos na mantissa. Repare que usamos de arredondamento, no truncamento para escolhermos o ltimo algarismo apresentado na mantissa. Um nmero demasiado grande para ser apresentado por uma mquina provoca o que chamamos de OVERFLOW (um nmero por demais pequeno causa um UNDERFLOW). Nesses casos, dependendo da mquina e da linguagem em que programamos, os efeitos pem ser os mais variveis, desde o truncamento involuntrio parada forada do clculo, ou a representao simblica NAN. Erros e condicionamento Um problema numrico dito mal-condicionado ou instvel quando sua soluo muito suscetvel aos dados de entrada. No exemplo abaixo temos uma simples equao do segundo grau 2 100.22 1.2371 0x x + = , que tem como solues os valores para x encontrados pelo mtodo de Bscara: 2 1 4 2 b b ac x a + = e 2 2 4 2 b b ac x a = . Faamos, pois uso desse mtodo para a soluo dessa equao, levando-se em conta que o nmero de algarismos que podemos usar para efetuar os clculos sempre finito (no caso, cinco). Nossos passos sero 2 2 2 10044; 4 10039; 4 100,19 b b ac b ac = = = e, finalmente, chegaremos s solues 1 2100,20 e 0,015x x= = . Acontece que se substituirmos essas solues na equao original, no encontraremos a confirmao de sua validade. Se ao invs disso usarmos uma propriedade das solues, 2 1 0,012346 c x ax = = , que, podemos facilmente testar, muito mais prximo da soluo real. Note que neste caso o problema no matematicamente mal posto. O fato de b ser muito maior que 4ac foi o que induziu a um erro maior j que tivemos no segundo passo acima a subtrao de nmeros muito prximos, prximos do limite da representao a