Você está na página 1de 54

Mtodos Numricos

Um curso para o Mestrado Integrado em Engenharia Informtica e Computadores da FEUP

Carlos Madureira Cristina Vila Jos Soeiro de Carvalho

Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia de Minas

Copyright 1995-2009 Carlos M. N. Madureira, Maria Cristina C. Vila, Jos Manuel S. Soeiro de Carvalho Reservados todos os direitos de publicao, traduo e adaptao. Interdita a reproduo parcial ou integral sem prvia autorizao dos autores. Este documento uma verso provisria, de utilizao exclusiva no mbito da disciplina de Mtodos Numricos do Mestrado Integrado em Engenharia Informtica e Computadores da Faculdade de Engenharia da Universidade do Porto. Todas as correces e contribuies so bem-vindas! Carlos M. N. Madureira (cmad@fe.up.pt) Maria Cristina C. Vila (mvila@fe.up.pt) Jos M. S. Soeiro de Carvalho (jmsoeiro@fe.up.pt)

ii

Contedo
Introduo 1 O Erro em Anlise Numrica 1 5

1.1 1.2

1.3 1.4

1.5
ndice

Matemticas e Anlise Numrica . . . . . . . . . . . . A representao dos nmeros numa mquina . . . . . 1.2.1 Representao, Codicao . . . . . . . . . . 1.2.2 Representao de quantidades . . . . . . . . . 1.2.3 Converso entre bases . . . . . . . . . . . . . 1.2.4 Notao . . . . . . . . . . . . . . . . . . . . . 1.2.5 Representao IEEE . . . . . . . . . . . . . . Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . Arredondamento e Truncatura . . . . . . . . . . . . . 1.4.1 Diferentes maneiras de calcular uma expresso 1.4.2 Os erros nos dados . . . . . . . . . . . . . . . 1.4.3 Clculo dos erros . . . . . . . . . . . . . . . . Concluso . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

6 8 10 10 13 14 20 23 24 31 36 38 41
43

iii

Lista de Figuras
1.1 Nmeros racionais possveis para o domnio inteiro [-3,3] . . . . . . . . . . . . 12

Lista de Tabelas
1.1 1.2 1.3 1.4 1.5 1.6 Codicao de nmeros e caracteres . . . . . . . . Clculo posicional . . . . . . . . . . . . . . . . . Bases Numricas . . . . . . . . . . . . . . . . . . Converso de 10010 para base 3 . . . . . . . . . . . Vrgula xa e utuante . . . . . . . . . . . . . . . Comparao de notaes em vrgula xa e utuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 12 13 14 15

vii

Introduo
Na prtica da computao digital cientca vericam-se numerosos e diversicados tipos de situaes relacionadas com problemas de Anlise Numrica. As que se revelam mais simples so aquelas em que se pretende construir um algoritmo para utilizar apenas uma vez, ou, quando muito, um nmero muito reduzido de vezes, para resolver um dado problema concreto e em que se tem uma ideia razovel do modo como vo desenvolver-se os clculos. Nestes casos os problemas de tempo de processamento no se pem (pelo menos de modo agudo, sobretudo quando dispomos de um computador pessoal que podemos deixar a trabalhar durante a noite s para ns) e as questes de preciso so relativamente simples de tratar (at porque se dispe, o deve dispor, a priori de ordens de grandeza para as solues, o que permite controlar os erros mais bvios); porm, a tentao de criar solues extremamente dependentes das caractersticas particulares do problema e das peculiaridades da mquina quase irresistvel, de tal modo que os programas desenvolvidos no tm, em geral, qualquer transportabilidade. Um segundo tipo de situao o de um algoritmo destinado a correr diversas vezes em diversos tipos de situaes todas includas em um mesmo contexto mas destinadas em princpio a um nico utilizador, e difere da anterior no facto de existir uma potencial diversidade de dados de partida conducente a diferentes tipos de problemas numricos. A principal diculdade operacional reside, neste caso, no esforo de imaginao necessrio para prever as diversas classes de situaes que viro eventualmente a vericar-se, sob pena de se ter que rescrever sucessivas verses do mesmo algoritmo, uma para cada falhano detectado. A situao torna-se nitidamente mais complicada quando o algoritmo se destina a ser corrido por diversos utilizadores, porque, nesse caso, virtualmente impossvel prever a priori o tipo de complicaes numricas que, em funo de diferentes dados de partida, podem vir a ocorrer. Este o caso tpico dos programas de biblioteca de uso geral. Neste caso torna-se necessrio usar dos maiores cuidados para cobrir tantas situaes diferentes quantas seja possvel, tendo ao mesmo tempo a habilidade de no produzir programas grosseiramente inecientes ou to complicados que desencorajem o utilizador comum. A real diculdade de conciliar objectivos to contraditrios e a subjectividade inevitvel na ponderao das diferentes prioridades levam muitos utilizadores (incluindo os autores deste curso) a olhar com alguma desconana a tendncia de certos outros para o uso sistemtico de rotinas de biblioteca; o preo de uma tal atitude , inevitavelmente, a necessidade de escrever os seus prprios algoritmos e programas. Uma terceira classe de situaes corresponde aos problemas computacionais to grandes, to complexos, to particulares ou to novos que se torna necessrio, para os resolver, um conhecimento muito profundo da questo concreta que os gerou e o recurso intuio fsica do proponente, que se supe ser o seu melhor conhecedor. Esta classe de problemas d, normalmente, origem a solues particulares, que usam tcnicas adequadas s peculiaridades de cada problema, ou de cada formulao particular do problema. O uso dessas solues por outras pessoas que no o seu prprio autor exige um estudo muito aprofundado que pode, frequentemente, revelar-

Lista de Tabelas se infrutfero e/ou impraticvel, dada a conhecida tendncia dos programadores, sobretudo dos mais criativos, para documentarem mal os seus produtos. Finalmente, uma outra classe de situaes ocorre nas aplicaes em tempo real (como os programas de controlo de um processo industrial); nestes casos, o imperativo fundamental, para alm de uma preciso (que, ao contrrio do que poderia pensar-se, nem sempre ser crtica) ser o de uma execuo extremamente rpida; em casos deste tipo, a rapidez da execuo pode mesmo compensar em larga medida uma certa impreciso dos resultados, desde que no exagerada. Tal como no caso anterior, deve fazer-se um esforo importante para garantir que se dispe de toda a informao relevante sobre o problema e sobre os seus possveis mtodos de resoluo, bem como de todo o tempo necessrio para desenvolver uma soluo realmente ecaz. Estes dois ltimos casos constituem o domnio de eleio da aplicao das habilidades e artimanhas prprias da arte do analista e do programador. Em resumo, existem trs classes fundamentais de necessidades de algoritmos e programas computacionais: solues expeditas, facilmente disponveis ou implementveis, embora possivelmente pouco ecientes, mas no imprecisas; solues cuidadosamente pensadas, precisas, rpidas, seguras e de uso geral; solues particulares para problemas particulares, em que as peculiaridades da aplicao em vista podem desempenhar papel central. Como bvio, o presente curso s trata dos dois primeiros tipos de problemas. O nosso ponto de vista central ser, portanto, o de que, embora o objectivo primrio seja, como sempre, o de sacar resultados da mquina, esses resultados se destinam a fundamentar decises, por vezes de importncia vital, pelo que se torna necessrio, antes de mais, compreender claramente e em profundidade o que tais nmeros podem dizer, ou no dizer, o que podem valer, ou no valer. Assim, considerando que se trata de cadeira de mera introduo colocada muito cedo no plano do curso, a seleco de matrias tem em vista aquilo que de mais bsico se prende com os objectivos centrais do exerccio da prosso de engenheiro a nvel superior, e no aquilo que est mais em voga ou mais bem documentado na literatura tcnica e cientca; secundariamente, a seleco das matrias nem pretende cobrir todas as necessidades que possam surgir no exerccio da prosso, nem escolher os "melhores"mtodos no sentido do uso eciente dos recursos das mquinas - que, ainda por cima, mudam quase todos os dias -, mas apenas seleccionar aquelas matrias que melhor possam compensar o tempo e o esforo gastos no seu estudo. Uma tal seleco notavelmente dicultada pelo facto de no existir, por trs da anlise numrica, um corpo de doutrina coerente, o que faz com que as solues numricas realmente ecientes e adaptadas sejam frequentemente produtos artesanais frutos de processos criativos baseados em toda uma experincia anterior do autor-utilizador; pela enorme diversidade de mtodos, tcnicas, variantes e variaes concebidas at ao presente e que a maior parte dos tratadistas tende a apresentar a granel, sem qualquer senso crtico;

Lista de Tabelas pelo facto de muitas dessas tcnicas serem meros artifcios sem interesse geral, facto que no pode ser revelado seno por um uso intensivo e constantemente crtico que o ensino convencional no encoraja. A seleco de mtodos aqui apresentada representa, portanto, um mero ponto de vista muito pessoal do autor, caucionado apenas pela experincia investigacional e docente da equipa que tem dirigido no Departamento de Engenharia de Minas ao longo das duas ltimas dcadas. Por outro lado, o espao de escolha encontra-se amputado pelo facto de existir no curriculum uma cadeira de Investigao Operacional, no mbito da qual recaem os mtodos cuja fundamentao de carcter essencialmente algbrico - programao linear, algoritmos de rvores e redes, etc. Neste contexto, o captulo sobre sistemas de equaes lineares aparece como u, tanto estranho no curso, dado que a sua metodologia releva dos mtodos algbricos. A construo do curso no seu conjunto assenta sobre uma opo tctica muito clara, resultante de muitos anos de ensino da matria ao nvel da licenciatura: total separao entre a Anlise Numrica - entendida como construo de algoritmos e anlise do seu comportamento face inevitvel nitude da representao concreta dos nmeros dentro da mquina - e a programao desses algoritmos no contexto de uma linguagem e/ou de uma mquina particular. Com efeito, toda a experincia passada nos mostrou para alm de qualquer dvida razovel que a mistura imprudente das duas abordagens e dos respectivos pontos de vista e polarizaes faz com que o estudante mdio, engodado pela preocupao, no de todo ilegtima mas limitativa, da produtividade imediata, concentre a totalidade do seu esforo no segundo e esquea por completo o primeiro, aquele que constitui, precisamente, o objectivo primordial da cadeira; acontece que o ponto de vista peculiar da programao valoriza desproporcionadamente os problemas da lgica e da economia do algoritmo e tende a remeter para segundo plano os problemas vitais da preciso, problemas que so de carcter muito menos racionalizvel e, por esse facto, de abordagem muito mais rdua para o estudante de formao racionalista. Um outro ponto de vista didctico que confere um certo grau de originalidade estrutura da cadeira o de se praticar sistematicamente um certo tipo de "reconstruo"da histria dos mtodos da Anlise Numrica com a inteno de mostrar como os mtodos se encadeiam logicamente uns com os outros e, nessa perspectiva, podem constantemente ser redesenhados, o que favorece uma das atitudes mentais mais importantes para o candidato a analista numrico. A necessidade do uso, na cadeira, de algoritmos implementados em computador, indispensvel para a aquisio do seu completo domnio pelo estudante, cria um dilema extremamente difcil de ultrapassar: por um lado, os cuidados necessrios em matria de preciso so pouco compatveis com programao de principiantes e, por outro lado, como se depreende do que cou dito no incio, temos srias reservas quanto ao uso cegos de programas de biblioteca. Por isso, todos os exemplos e manipulaes exibidas e todos os exerccios propostos se destinam a ser trabalhados mo ou mquina de calcular ou, na melhor das hipteses, em folha de calculo; uma tal estratgia, quando bem praticada, permite seguir passo a passo eventuais incidentes resultantes de problemas de representao; no entanto, uma vez dominados os princpios e os conceitos, deve ser feito um esforo srio para formalizar a aprendizagem sob a forma de construo de programas informticos que incorporem explicitamente todos os critrios de segurana e precauo que a teoria e a prtica " mo"aconselharam. Finalmente, na concepo e implementao do curso, um outro problema se levantou: o da

Lista de Tabelas recente vulgarizao dos manipuladores simblicos, ferramentas informticas que, ao contrrio das vulgares linguagens de programao, tm a possibilidade de manipular directamente expresses simblicas e no apenas nmeros; permitem representar os nmeros (dados, resultados intermdios e nais) com preciso "innita"(dentro, naturalmente, dos limites de memria da mquina), representando os racionais sob a forma de quocientes de inteiros de comprimento adequado e mantendo em suspenso todas as operaes irracionais; em opo, um modo de clculo aproximado permite trabalhar com um nmero arbitrrio de algarismos signicativos. Nestas condies, os manipuladores simblicos permitem a vericao e o controlo do clculo programado em linguagens convencionais e um dos objectivos do curso levar o estudante a encar-los como tal. Estamos mesmo em crer que, dentro da evoluo previsvel das capacidades de memria e das velocidades de clculo dos computadores das prximas geraes, esta uma das direces genricas em que se desenvolver o clculo cientco nas prximas dcadas, o que tornar obsoletas muitas das abordagens tradicionais da anlise numrica. Pensamos, com efeito, que a generalizao do uso dos manipuladores simblicos corre o risco, se no for devidamente pensada, estudada e integrada, de vir a desempenhar, em relao ao ensino superior, o mesmo papel ambguo, e por isso confusionista e dissolvente, que a generalizao do uso das calculadoras de bolso desempenhou, em relao ao secundrio, nas dcadas de 70 e 80. Por outro lado, h que reconhecer que tais ferramentas informticas se encontram apenas na fase de utilitrios para a realizao de clculos avulsos e no podem ainda ser ecientemente integradas em programas construdos pelo utilizador; isso impede, naturalmente, a completa centragem nelas de uma cadeira que no pode dar-se ao luxo de ignorar as reais necessidades da actual computao cientca e tcnica. Assim, incapaz, neste momento, de desenvolver um curso completo ao longo desta linha estratgica, o autor limitou-se a fazer apenas algumas tmidas tentativas de introduo ao uso de um manipulador simblico muito acessvel e que bem conhece (DERIVE, A Mathematical Assistant T M , The Software House, Inc.) a propsito de alguns problemas mais delicados levantados pelo desenvolvimento de um curso que ainda fundamentalmente convencional. [DB74] [CB81] [Gol91] [Ham71] [Lie68] [Moo63] [Mul89] [Wal90]

1 O Erro em Anlise Numrica


Contents
1.1 1.2 Matemticas e Anlise Numrica . . . . . . . . . . . . . . . . . . . . . . . A representao dos nmeros numa mquina . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3 1.4 Representao, Codicao . . . . . . . . . . . . . . . . . . . . . . Representao de quantidades . . . . . . . . . . . . . . . . . . . . . Converso entre bases . . . . . . . . . . . . . . . . . . . . . . . . . Notao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Representao IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . 6 8 10 10 13 14 20 23 24 31 36 38 41

Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arredondamento e Truncatura . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 1.4.2 1.4.3 Diferentes maneiras de calcular uma expresso . . . . . . . . . . . . Os erros nos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . Clculo dos erros . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5

Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Figures
1.1 Nmeros racionais possveis para o domnio inteiro [-3,3] . . . . . . . . . . . 12

Tables
1.1 1.2 1.3 1.4 1.5 1.6 Codicao de nmeros e caracteres . . . . . . . . . . . . . . . . . . . . . . Clculo posicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bases Numricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Converso de 10010 para base 3 . . . . . . . . . . . . . . . . . . . . . . . . Vrgula xa e utuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparao de notaes em vrgula xa e utuante . . . . . . . . . . . . . . 11 12 12 13 14 15

1 O Erro em Anlise Numrica

1.1 Matemticas e Anlise Numrica


O senhor I. N. Gnuo pretende fazer uma aplicao bancria de longo prazo para garantir o futuro da sua famlia; para isso, procura o Banco Catico Portugus, que lhe oferece o seguinte plano-poupana: voc faz uma entrega inicial de (e 1) euros (sendo e = 2.718281828...) e ao m de 1 ano multiplicamos o seu capital por 1 e subtramos 1 euro para despesas administrativas; ao m de 2 anos multiplicamos o seu capital por 2 e subtramos 1 euro para despesas administrativas; ao m de 3 anos multiplicamos o seu capital por 3 e subtramos 1 euro para despesas administrativas; e assim sucessivamente, at que ao m de 25 anos voc pode retirar todo o dinheiro acumulado. Cuidadoso, o senhor I. N. Gnuo no se compromete e vai para casa pensar. Chegado a casa pega na sua Casio FX702P para saber quanto ter ao m de 25 anos e o resultado aterroriza-o: o saldo ser devedor de 140 302 545 600 000 euros! Duvidando da sua competncia de calculador, corre a um amigo informtico que tem uma estao Sun Sparc e pede-lhe que calcule o saldo. A resposta positiva: 4 645 987 753 euros! Satisfeito, corre ao Banco para subscrever esse interessante plano. Ao m de 25 anos tem um desgosto: o Banco entrega-lhe 4 milsimos de cntimo. Este um exemplo tpico de clculo instvel que, devido a erros de arredondamento nos dados iniciais e nos resultados intermdios, pode arrastar enormes variaes no resultado nal. J. M. Muller, Ordinateurs en qute darithmtique La Recherche, No Spcial, Juillet/Aot 1995, adaptado As Matemticas convencionais (sobretudo quando consideradas no sentido em que so correntemente ensinadas nos nossos cursos superiores) diferem signicativamente da Anlise Numrica, na realidade muito mais signicativamente que o que habitualmente se considera. A diferena mais evidente reside no uso constante da noo de innito que nelas se faz, tanto a propsito da representao dos nmeros, que so sempre considerados como representados com preciso innita; como a propsito de processos de clculo (passagem ao limite, clculo de uma derivada, soma de uma srie, clculo de um integral denido), enquanto que a computao, que o objecto da Anlise Numrica, sempre feita por meio de dispositivos, manuais ou automticos, dotados de preciso inelutavelmente nita e que operam em tempo nito (e, se possvel, muito curto!). Exemplo 1.1 Matemtica, nmeros e processos
Nmeros tpicos das matemticas:

= 3.14159265358979323846264338327950288419716939937510 . . .

1.1 Matemticas e Anlise Numrica 1/3 = 0.333333333333333333333333333333333333333333333333 . . .


Processos tpicos das matemticas:

dy y = lim dt x0 x
b
ba xi

f (x) dx = lim
a

xi 0 i=1

f (xi )xi

Mesmo erros de arredondamento muito pequenos, quando acumulados ao longo de processos de clculo complexos, podem ter efeitos extremamente perversos, dando origem a perdas de preciso inesperadas, sem qualquer comum medida com as causas que lhes deram origem. Este facto, nem sempre devidamente apreciado pelos principiantes, , no entanto, de importncia fundamental, e a falta do seu reconhecimento expresso causa frequente de muitas confuses e de graves acidentes; no dizer lapidar de [Ham71] "s a parte das matemticas convencionais que se revela resistente a estes efeitos perversos tem interesse para a anlise numrica, assim como para qualquer outra aplicao das matemticas ao mundo real". S por este facto, a Anlise Numrica seria, de direito prprio, parte fundamental das Matemticas, no que se refere sua aplicabilidade, embora constituindo o que temos que reconhecer como um ramo no-convencional destas ltimas. Outras diferenas entre as Matemticas convencionais e a Anlise Numrica so mais subtis ou mesmo mais encapotadas, por resultarem do uso em sentidos profundamente diferentes dos mesmos termos e expresses. Assim, por exemplo, como veremos muito em breve, a expresso zero de uma funo pode ter diferentes sentidos em anlise numrica, nenhum deles coincidente com o que tem em matemtica. Outras diferenas ainda so as que residem em profundas divergncias de objectivos, de gostos e mesmo de conceitos de elegncia entre as Matemticas convencionais e a Anlise Numrica. Assim, por exemplo, os teoremas de existncia, to caros aos matemticos, raramente tm qualquer interesse em anlise numrica; do mesmo modo, a Matemtica prefere teoremas exactos e precisos, demonstrveis e demonstrados, enquanto a Anlise Numrica frequentemente se satisfaz com resultados meramente plausveis e com mtodos heursticos, intuitivos. As consequncias destas diferenas, nem sempre bvias nem apreciadas, so, no entanto, sempre importantes e, em certos casos, podem prestar-se a confuses perigosas. Assim, por exemplo, enquanto em certos casos o resultado de um clculo numrico pode considerar-se como uma aproximao satisfatria ao ideal matemtico, em numerosos outros casos a diferena tal que nem sequer se pode considerar o resultado como minimamente aproximado; no primeiro caso, a tendncia corrente para, sem mais anlise, imputar a diferena aos "defeitos"inerentes anlise numrica; no segundo caso, por extenso, tende a pensar-se que se trata simplesmente de uma variante exagerada do caso anterior, isto , a culpa automaticamente atribuda ao clculo numrico; ora, em muitos casos, se no mesmo na maioria, precisamente o modelo matemtico, por exacto que parea, que est em falta, por se no adequar minimamente realidade em estudo, e

1 O Erro em Anlise Numrica esta realidade tem uma dupla face: a do problema fsico subjacente ao modelo matemtico e a do sistema computacional subjacente resoluo do modelo matemtico.

1.2 A representao dos nmeros numa mquina


Vamos explorar agora a dicotomia numrico versus digital! . . . citando (apocrifamente ?) um conhecido compositor (1981). Para alm do facto importante e bem conhecido, e sobre o qual no insistiremos especialmente, de a representao interna dos nmeros nas mquinas electrnicas ser quase sempre nodecimal, mas sim binria, octal ou hexadecimal, o analista numrico tem que ter bem presente que os computadores digitais usam duas classes de representaes de nmeros que a matemtica convencional desconhece em absoluto. Para compreender este facto preciso, em primeiro lugar, aceitar a ideia de que os nmeros no existem na realidade exterior a ns, de que so apenas construes conceptuais. Assim, por exemplo Conte e de Boor em [CB81] armam: a Anlise Matemtica tornou-se uma disciplina exacta apenas quando deixou para trs as restries do clculo numrico e passou a tratar exclusivamente os problemas levantados por um modelo abstracto do sistema dos nmeros, o modelo dito dos nmeros reais. Este modelo foi formulado intencionalmente para tornar possvel uma denio conceptualmente operacionalizvel do conceito de limite, o que abre caminho para a resoluo matemtica de uma multido enorme de problemas prticos, uma vez que esses problemas sejam traduzidos na linguagem do modelo. No entanto, permanece ainda de p o problema da retroverso das solues simblicas ou abstractas encontradas para a linguagem das solues prticas. esta a tarefa assumida pela anlise numrica que, ao assumi-la, assume as limitaes do clculo prtico, s quais a anlise matemtica to elegantemente fugiu. As solues numricas so, portanto, apenas tentativas e, na melhor das hipteses, tentativas precisas apenas dentro de certos limites calculveis. Deste modo, na concepo desta classe de autores, a anlise numrica no se prende apenas com a construo de mtodos numricos mas, talvez principalmente, com a construo de limites calculveis para os erros. Nas matemticas puras, esse conceito de nmero no exige representao concreta, individualizada, mas apenas simblica; pelo contrrio, em todos os ramos das matemticas aplicadas (com os quais a anlise numrica tem sempre, directa ou indirectamente, alguma coisa que ver) exige-se uma representao concreta de cada nmero particular, representao que, para distinguir do conceito abstracto de nmero, designamos por vezes por numeral. Em consequncia, o nmero de nmeros representveis concretamente, embora por vezes indenido (como sucede no clculo manual, em que podem utilizar-se tantos algarismos quantos quisermos e em que, portanto, no existe um limite denido para a representao), sempre necessariamente nito; pelo contrrio, nas mquinas esse nmero perfeitamente limitado e mesmo, na maior parte dos casos, surpreendentemente pequeno. Trs classes de nmeros so muito importantes para a informtica:

1.2 A representao dos nmeros numa mquina


inteiros este nmeros so normalmente utilizados nas operaes de contagem e enumerao,

mas a sua importncia na informtica digital enorme; efectivamente o "mundo"de uma mquina digital discreto e representvel por nmeros inteiros;
racionais nmeros que so obtidos pelo quociente entre dois quaisquer nmeros inteiros (ex-

cluindo o zero como denominador);


reais estes nmeros so utilizados na medida e na representao de mundos contnuos, de que

o nosso parece ser um exemplo1 ; a sua utilizao imposta pelo uso e no pelo suporte.

Exerccio 1.1 O leitor tem a certeza de que sabe distinguir enumerao de contagem? A distino, embora provavelmente no fundamental em Anlise Numrica, -o certamente em Programao.

A representao de quantidades inteiras no problemtica. J vimos que a forma natural como os computadores digitais lidam com elas. Mas os nmeros inteiros informticos no correspondem ao conjunto Z da matemtica: nem o seu domnio innito no caso mais corrente cobrem apenas o intervalo de 32767 a +32767 , nem as operaes sobre eles denidas tm as mesmas propriedades2 . Usam-se correntemente inteiros construdos sobre palavras de 16, 32 ou 64 bits. A representao e manipulao de nmeros reais por computadores digitais tem uma caracterstica surpreendente: impossvel! Com efeito, no podemos representar perfeitamente o contnuo recorrendo ao discreto. A nica soluo recorrer a aproximaes. No caso dos nmeros reais recorrer sua aproximao por racionais. Um exemplo simples mostra as decincias dessa aproximao: suponha que o conjunto dos inteiros constitudo apenas pelos seguintes nmeros {3, 2, 1, 0, 1, 2, 3} o conjunto de todos os racionais incluiria os inteiros e as fraces 3 2 1 1 1 1 2 3 , , , , , , , 2 3 2 3 3 2 3 2 o que exclui todas as innitas fraces que no se podem escrever recorrendo ao inteiros entre 4 3 e 3, como 5 , 1 , alm de todos os inteiros e fraces mais pequenos que 3 ou maiores que 7 3.
1 pelo 2 basta

menos escala humana. . . pensar qual ser a soma dos dois maiores nmeros do domnio!

1 O Erro em Anlise Numrica


1.2.1 Representao, Codicao

000 001 010 011 100 101 110 111

A forma de representar internamente a informao est estritamente condicionada pelas caractersticas fsicas do computador, especialmente por trabalhar com circuitos electrnicos descendentes do transstor, que podem estar em um de dois estados, ligado ou desligado. Como registada internamente a informao? Como vimos, o computador trabalha sobre estados elctricos dos seus componentes internos, normalmente duas voltagens de referncia (+5 e -5 Volts, por exemplo). A uma entidade que s pode tomar um deste valores chamamos um bit (de binary digit, ou, porque no, de bit - pedao, pedacinho). Um bit tambm a menor quantidade de informao. A correspondncia entre estes dois estados e os valores lgicos de verdade ou falsidade evidente. No caso dos nmeros poderamos associar cada um desses dois estados a um dos dgitos binrios, 0 e 1. Essa codicao binria no constitui qualquer transtorno para a aritmtica... Por outro lado, um alfabeto apenas com as letras A e B ou uma paleta apenas com branco e preto3 cor ou a sua ausncia seriam muito limitativas. Os problemas que podem ser resolvidos recorrendo ao computador raramente podem ser expressos em termos de bits, sendo mais normal serem expressos em termos de caracteres, nmeros, smbolos e mesmo objectos mais complicados. Como utilizar ento esta base to limitada para representar objectos to diferentes? A soluo consiste em recorrer a regras de codicao, utilizando agrupamentos de bits, em vez de bits isolados. Um agrupamento de trs bits tm oito estados diferentes, permitindo um alfabeto de oito letras ou uma paleta de oito cores. Uma simples contagem permite vericar que oito estados no so sucientes para conter o alfabeto ocidental (composto de um mnimo de 28 caracteres minsculos, outros tantos maisculos, alguns sinais de pontuao e, j agora, os 10 dgitos da numerao rabe), pelo que se utilizam correntemente agrupamentos de oito bits que podem assumir um de 256 estados diferentes. A cada um desses estados associamos um cdigo, conforme o que se pretende representar seja um nmero, um dgito, uma letra, uma cor, etc. Os sistemas de cdigos no so nicos, existindo no entanto algumas convenes e estandardizaes para nos facilitar a vida (uf!). Por exemplo, para a representao de caracteres alfa-numricos, utilizam-se correntemente dois standards, ambos de origem americana, os cdigos ASCII4 e ANSI5 . Como se pode ver, todos estes cdigos so apenas convenes. O mesmo valor binrio pode ser interpretado de diferentes maneiras, sendo essa interpretao da inteira responsabilidade do utilizador.
1.2.2 Representao de quantidades

Para representar quantidades recorremos a smbolos, cujo signicado determinados por regras de codicao, podendo depender da colocao e do contexto. Historicamente, no s os smbolos mudaram, como, mais importante ainda, as tcnicas de codicao.
3 ou

j agora laranja e verde! - American Standard Code for Information Interchange 5 ANSI - American National Standards Institute
4 ASCII

10

1.2 A representao dos nmeros numa mquina Voltagem - + ---------+----+ -+-----+ -+-++-+-++++-++--++-++ representao binria 00000000 00100001 01000001 01011010 01111010 10011011 representao decimal 0 33 65 90 122 155 Nmero natural 0 33 65 90 122 155 Nmero inteiro6 0 33 65 90 122 -27 Caracter ASCII NULL ! B Z

Tabela 1.1: Codicao de nmeros e caracteres So comuns tcnicas posicionais e no posicionais de escrita de nmeros. Um exemplo de notao no posicional a utilizada na numerao romana, em que cada smbolo tem sempre o mesmo valor. Os smbolos utilizados so as iniciais das palavras romanas que designavam as quantidades milhar M, meio milhar D, centena C, meia centena L, dezena X, meia dezena V, unidade I. Para calcular a quantidade representada por um nmero romano preciso somar todos os dgitos que o compem, tendo em ateno que eles se escrevem em ordem decrescente da esquerda para a direita, e que se existir uma inverso de valores, um dgito menor esquerda de um maior, este deve ser subtrado ao valor do seguinte. Com a tcnica de representao ocidental comum, utilizando uma simbologia composta apenas de dez smbolos diferentes (os smbolos 0 1 2 3 4 5 6 7 8 9 ), somos capazes de representar quantidades conceptualmente ilimitadas7 . Recorremos para isso a uma tcnica de notao posicional, em que o valor associado ao smbolo depende da sua posio no nmero. No caso dos nmeros inteiros, o dgito mais direita corresponde s unidades, o imediatamente esquerda s dezenas, . . . (. . . a3 a2 a1 a0 , a1 a2 . . .)b = . . . + a3 b3 + a2 b2 + a1 b1 + a0 b0 +, a1 b1 + a2 b2 + . . . ; Normalmente, b um inteiro maior que 1 e os a so inteiros no intervalo 0 ak < b. Os dgitos esquerda so mais signicativos que os dgitos direita8 . Como avaliar ento um nmero escrito em notao posicional? O nmero escrito como uma sequncia ordenada de dgitos, em que, quanto mais esquerda, maior o valor associado ao dgito. A cada dgito ser atribudo um valor igual ao ndice da sua posio na lista de smbolos multiplicada pela base elevada ao ndice do dgito no nmero (sendo positivo o ndice dos dgitos da parte inteira e negativo o ndice do dgito da parte no inteira), sendo no m somados todos os valores obtidos (ver exemplo na tabela 1.2). Este tipo de notao posicional utilizvel qualquer que seja a base de numerao (ou o nmero de smbolos diferentes que a simbologia nos permitir utilizar). So correntemente utilizadas na informtica as bases 2, 8, 10 e 16 .
7 As 8 ver

MMCDLXIV

2464

Notao posicional

limitaes so apenas espaciais e temporais. uma descrio detalhada em [?].

11

1 O Erro em Anlise Numrica

Figura 1.1: Nmeros racionais possveis para o domnio inteiro [-3,3]

Nmero na base 16 Smbolos ndice do smbolo ndice do dgito Valor do dgito Valor do nmero na base 10

A8F A A 2 A 162 10 162 2560

8 8 1 8 161 8 161 128

F F 0 F 160 15 160 15 2703

Tabela 1.2: Clculo posicional

Base 2 8 10 16

Designao binrio octal decimal hexadecimal

Smbolos 01 01234567 0123456789 0123456789ABCDEF

10110 1100101 145 101 65

Tabela 1.3: Bases Numricas

12

1.2 A representao dos nmeros numa mquina Muitas outras bases foram utilizadas historicamente, essencialmente para contagem, umas decalcadas de caractersticas humanas, tal como a base dez, dos dez dedos das mos9 , ou a base trs, das trs articulaes dos dedos, outras com razes desconhecidas tal como a base vinte usada pelos Maias10 , outras ainda, como a base sessenta da Mesopotmia, que ainda hoje se utilizam na notao sexagesimal da medida de ngulos ou do tempo. As mos so utilizadas muitas vezes na aritmtica como um dispositivo auxiliar de contagem, permitindo-nos contar de um a dez (ou recorrendo famosa IBM do Manelinhoa , contar at vinte). O seu uso como um dispositivo de notao posicional muito mais ecaz. Consegue imaginar como? A mo pode ser usada como um dispositivo posicional adoptando regras muito simples: um dedo completamente dobrado corresponde a zero, o dgito menos signicativo o mindinho, o mais signicativo o polegar. Se usarmos uma conveno binria o dedo todo dobrado vale zero, todo esticado vale um uma mo permite representar nmeros entre 0 e 25 1; se utilizarmos cada uma das articulaes dos dedos e do pulso, poderemos usar base 4. Quo enganadora a armao "Tenho de meu apenas aquilo que posso contar com uma mo"! (Radiograa em http://uwmsk.org/RadAnat/HandPALabelled.html)
a personagem

das tiras desenhadas "Mafalda", de Quino, que calava sandlias de modo a poder contar tambm com os dedos dos ps.

1.2.3 Converso entre bases

Para efectuar uma converso de bases recorre-se diviso euclidiana, diviso com resto, diviso inteira ou modular. se for A a representao do nmero na base a e B a sua representao na base b ento cada um dos dgitos de B ser obtido pelo resto da diviso de A por b, em que A substitudo pelo quociente Q da diviso anterior. Um exemplo de aplicao a converso de 10010 para a base 3 descrita na tabela 1.4. Iterao Inicial (base 10) Quociente (base 10) Resto Resultado (base 3) 4 0 1 3 1 0 2 3 2 1 11 0 0 100 33 1 10201

Tabela 1.4: Converso de 10010 para base 3


9 duvidoso, 10 ou

j que a base adequada seria 5, por permitir agrupamentos de mos a contagem de javalis em catorzenas na poca de Obelix [?] talvez a antecipao do actual 12 + 2 grtis.

13

1 O Erro em Anlise Numrica Repare-se que este algoritmo pode ser expresso quer como uma iterao quer como uma recurso.
1.2.4 Notao

A notao de nmeros no inteiros feita segundo duas tcnicas: em vrgula xa, em que a vrgula separa as unidades das dcimas e em virgula utuante, em que o valor dos dgitos esquerda e direita da vrgula determinado por um expoente associado ao nmero. Um nmero representado em vrgula xa composto de duas partes: a parte inteira, esquerda da vrgula, e a parte decimal direita da vrgula. Um nmero representado em vrgula utuante composto de trs partes: a parte fraccional (ou mantissa) m, o expoente (ou caracterstica)e, e a base b: mantissa baseexpoente A mantissa por sua vez composta de uma parte inteira e de uma parte decimal. Duas constataes simples permitem reduzir bastante a complexidade desta representao: uma operao simples de normalizao consistindo em escrever o nmero de maneira a que a parte inteira da mantissa seja sempre nula e que todos os dgitos da parte decimal sejam signicativos (no existam zeros imediatamente esquerda da vrgula) 1/b |m| < 1 permite retirar da representao a parte inteira da mantissa e a vrgula; a base condicionada pela base do sistema de numerao utilizado, sendo constante dentro do mesmo sistema11 , pelo que a sua escrita dispensvel. Desta maneira, a representao em vrgula utuante ca reduzida a duas partes, a parte decimal da mantissa e o expoente, que podem ambas ser representadas como nmeros inteiros (ver tabela 1.5). Se nos abstrairmos da virgula, um nmero representado em vrgula xa tambm ca reduzido a duas componentes representveis como inteiros. xa 100.10 utuante = 100.10 100 = 1001 101 = 0.1001 103 = 1001 3

100 10

normalizada simplicada

Tabela 1.5: Vrgula xa e utuante Qual ento a notao prefervel para o clculo numrico? O factor Domnio (ver tabela 1.6) faz com que a escolha penda normalmente para a vrgula utuante.
11 no

sistema de base 10 1.27 102 = 12.7 101 mas 1.27 52 = 12.7 51 .

14

1.2 A representao dos nmeros numa mquina

Representao

Vrgula xa Parte inteira com Ni e parte decimal com Nd dgitos, iiii, dddd

Vrgula utuante Mantissa com Nm e expoente com Ne dgitos, 0, mmmm beeee

Para permitir a comparao, faamos N = Ni + Nd = Nm + Ne (os nmeros ocupam o mesmo espao) e utilizemos a mesma base B. depende de Ni , sendo aproxi- depende de Ne , sendo aproximadamente madamente Ne Ne ] BB 1 , +BB 1 [ Ni +1 Ni +1 , +B [ ]B

Domnio

Granularidade

constante, valendo BNd

varivel, valendo B pNm 1 (em que p a potncia de dois nmeros consecutivos), podendo por isso tomar valores no intervalo [BB
Ne N 1 m

, BB

Ne N 1 m

com um buraco em torno de zero de 2 BNe o espaamento relativo entre dois nmeros consecutivos constante e vale B pNm 1 /B p = BNm 1

Tabela 1.6: Comparao de notaes em vrgula xa e utuante

15

1 O Erro em Anlise Numrica A preciso, ou comprimento, n da mantissa de um nmero em vrgula utuante em geral determinada pelo comprimento da palavra do computador e pode, portanto, variar largamente de mquina para mquina. Por outro lado, necessrio pensar que nem todas as mquinas operam necessariamente sobre a representao binria dos nmeros. Com efeito, os circuitos electrnicos utilizados nos computadores tm apenas dois estados estveis (correspondentes, por exemplo, a dois valores da tenso elctrica), que se notam, por conveno, 0 e 1, de modo que a aritmtica mais corrente nos computadores binria; no entanto, possvel utilizar uma representao interna decimal codicada em binrio (binary coded decimal BCD), representando em binrio cada algarismo decimal de um nmero por meio de quatro bits. Exemplo 1.2 Codicao BCD 3141(10) = 0011(2) 0001(2) 0100(2) 0001(2)

Exemplo 1.3 Mquina virtual


Em uma mquina (que no existe, mas que vamos utilizar intensivamente daqui em diante) com uma representao decimal com trs dgitos na mantissa e um no expoente, cuja representao interna seria da forma: m 10 p com 0.1 m 1. Teramos, por exemplo, 1 10 = 0.100 102 e 2 2 = 0.141 101 . Deste modo, existem nesta mquina tantos nmeros entre 0.100 103 e 0.999 103 como os que h entre 0.100 103 e 0.999 103 , quando perfeitamente evidente que este ltimo intervalo muito maior.

Exerccio 1.2 Reportando-se ao exemplo anterior, procure responder: 1. Quantos so esses nmeros? 2. Qual a diferena entre dois nmeros consecutivos, em cada um dos casos? 3. Qual o menor intervalo entre nmeros representveis sucessivos? e o maior?

Uma medida da mxima preciso atingida pelo clculo em vrgula utuante dado pela unidade da ltima casa (u), denida como o menor nmero positivo tal que u + 1 > 1. Exemplo 1.4 Unidade da ltima casa
O seguinte programa BASIC determina o valor de u em aritmtica de preciso simples, diminuindo o valor de u + 1 at no ser reconhecido pelo computador como maior que a unidade:

16

1.2 A representao dos nmeros numa mquina U=0.00001 DO U=0.9999*U LOOP WHILE (U+1) > 1 PRINT "U = ";U
Corrido em um PC-AT em BASICA em preciso simples d u = 5.96E 8, isto , 24 bits na mantissa, mas corrido em TURBOBASIC d u = 2.71E 20, isto , 64 bits na mantissa. Com efeito, o valor da unidade da ltima casa relaciona-se directamente com o nmero de bits usados na representao dos nmeros em vrgula utuante. Os PC usam 32 bits (4 bytes) para os nmeros em preciso simples, dos quais 24 so atribudos mantissa, incluindo o sinal, e 8 ao expoente, incluindo tambm o sinal. Assim, o valor de u ser us = 224 = 5.96 108 Em dupla preciso, o PC usa 64 bits (8 bytes) para representar os nmeros em vrgula utuante, dos quais 56 para a mantissa e 8 para o expoente. O valor de u em dupla preciso ser ento ud = 256 = 1.39 1017 .

Exerccio 1.3 1. Assegure-se que compreendeu claramente o funcionamento do algoritmo; em caso de necessidade, execute-o em modo "trace". 2. Se verdade o que acima se disse sobre o PC, como possvel que o TURBOBASIC tenha o comportamento descrito? 3. Como procederia para determinar a unidade da ltima casa em uma mquina de calcular no-programvel? 4. Seria capaz de escrever um programa BASIC para determinar a unidade da ltima casa em dupla preciso? 5. E em PASCAL ou C, para simples e dupla preciso? 6. E um programa para determinar o maior nmero representvel? Assim, o sistema de vrgula utuante nitidamente diferente dos sistemas habituais dos nmeros da matemtica, e um utilizador deve car prevenido de que essa diferena pode, por vezes, produzir efeitos surpreendentes. Uma maneira possvel de olhar os nmeros da computao consiste em pensar que cada resultado de um clculo surge, na representao computacional, um pouco preciso ou esborratado em torno do valor que matematicamente deveria ter. Este ponto de vista enquadra-se bem com a ideia que correntemente temos do uso prtico dos nmeros mesmo fora do contexto computacional (quando dizemos uma tonelada de areia nunca pretendemos seriamente que seja a quantidade exacta at ao ltimo gro e, mesmo que o fosse, a preciso no seria absoluta, sendo apenas da ordem de 109 ). Um outro ponto de vista possvel consiste em pensar que os nicos

17

1 O Erro em Anlise Numrica nmeros existentes so os representveis na mquina e que no existem mais nenhuns, o que corresponde a considerar que os nmeros reais dos matemticos so, para o programador e o analista numrico, inteiramente ctcios. Este ponto de vista pode parecer um tanto drstico, mas tem-se revelado extremamente til ao analista numrico, nomeadamente quando tem que identicar os mecanismos que conduziram a um resultado errado ou simplesmente surpreendente. Tipicamente, a nitude do intervalo coberto pelo expoente p pode dar origem aos acidentes conhecidos por underow e overow e que correspondem ao facto de o resultado de uma operao exceder o mximo ou o mnimo dos nmeros representveis na mquina. relativamente comum - mas perigoso - pensar que no haver mal em substituir um underow por zero, salvo se, a seguir, entrar como divisor em uma diviso. Pelo contrrio, em termos de senso comum, parece perigoso substituir um overow pelo maior nmero representvel na mquina (que no , em geral, espantosamente grande) e, no entanto, muitos compiladores para uso cientco fazem-no, sem sequer avisar o utilizador, para lhe poupar numerosas mensagens de erro ou paragens intempestivas do programa. Esta possibilidade no deve nunca ser perdida de vista, e um utilizador cuidadoso investiga, antes de mais nada, o comportamento de um compilador ou interpretador perante os overow e underow a m de poder tomar as precaues adequadas para evitar surpresas desagradveis. Exerccio 1.4 O PASCAL dene a primitiva MAXINT, que permite conhecer qual o maior valor inteiro positivo que a implementao concreta permite. Primitivas que permitem conhecer o comprimento de um objecto, permitem obter informao semelhante, desde que se saiba a unidade de medida!. Os mesmos mecanismos no so aplicveis em relao representao em vrgula utuante. Procure identicar, para as linguagens de programao que conhece, quais os mecanismos disponveis para conhecer os limites das representaes de nmeros.

Exemplo 1.5 Overow


Na mquina hipottica do exemplo anterior, o maior nmero representvel seria 0.999 109 109 enquanto o menor (em valor absoluto, com excluso do zero) seria 0.100 109 = 1010 . Quando que a exponencial daria overow na nossa mquina hipottica? Quando fosse

exp(x) > 0.999 109


isto , tomando logaritmos,

x > ln 0.999 + 9 ln 10 = 0.001 + 9 2.303 = 20.7

18

1.2 A representao dos nmeros numa mquina


os valores so

0, 0010005003335835335001429822540683 + 9 2, 3025850929940456840179914546844 = 20, 722265336612827622661780109905

Exerccio 1.5 Qual o valor correspondente para: 1. a sua mquina de calcular? 2. para os diferentes BASIC do PC em simples e dupla preciso? 3. neste caso, depender da linguagem? O raciocnio parece perfeitamente simples e claro; tem a certeza de que geralmente correcto?

No entretanto, temos o direito de nos interrogar porque que um intervalo representvel que, nas piores condies, nunca ser inferior a (1038 , 1038 ), (1038 , 1038 ) pode com tanta frequncia dar origem a problemas de overow ou de underow, quando rarissimamente os resultados dos problemas excedem os limites desses intervalos. A resposta bvia a de que tais acidentes surgem habitualmente nos resultados de clculos intermdios. Assim, a preciso do resultado de um clculo numrico ca altamente dependente do caminho para a ele chegar, isto , do algoritmo adoptado para o implementar, o que leva o analista numrico a ter que tomar precaues que so inteiramente desconhecidas para o matemtico convencional (nas matemticas convencionais, a nica situao comparvel que nos ocorre a da soma de sries simplesmente convergentes, que depende da ordem das parcelas). Exemplo 1.6 overow e underow
No clculo de

1 ex + 1

para x 20.7 (caso em que o valor da expresso seria 1 quando representado com a preciso da nossa mquina) teramos overow. A substituio do valor impossvel pelo maior nmero representvel na mquina daria o resultado nal esperado, 1. Por outro lado, se utilizssemos a expresso matematicamente equivalente

1 1 + ex
teramos underow e a sua substituio por zero daria tambm como resultado nal o 1 esperado.

19

1 O Erro em Anlise Numrica

Exerccio 1.6 1. Quantos nmeros diferentes podem ser representados em vrgula utuante na nossa mquina hipottica? 2. Explique o sentido da expresso "nos computadores, o nmero 0 est relativamente isolado dos seus vizinhos". Os seus vizinhos est-lo-o igualmente entre si? Que inuncia tem o comprimento da mantissa no fenmeno? e o da caracterstica? Em termos comparativos, que se passa com o maior nmero representvel? 3. Estabelea as semelhanas e diferenas entre o uso da representao de nmeros em vrgula utuante e a representao logartmica.

1.2.5 Representao IEEE

A representao informtica de nmeros em vrgula utuante foi normalizada pelo organismos IEEE 12 e ANSI, denindo regras de representao e de clculo. Assim, um nmero em vrgula utuante mantissa 2expoente dever ser escrito na forma: 1.f 2e em que f a parte fraccionria da mantissa, e sendo e obtido por e = expoente + vies O padro dene dois tipos:
Nmero em preciso simples Usa 32 bits repartidos da seguinte forma:

bit 0, um bit de sinal; bit 1 a 8: oito bits de expoente (em excesso de 127); bit 9 a 31: vinte e trs bits para a parte fraccionria da mantissa, normalizada de maneira parte inteira ser unitria;
Nmero em preciso dupla Usa 64 bits repartidos da seguinte forma:

bit 0, um bit de sinal; bit 1 a 11: onze bits de expoente (em excesso de 1023); bit 12 a 63: 52 bits para a parte fraccionria da mantissa, normalizada de maneira parte inteira ser unitria;
12 Institute

of Electrical and Electronics Engineers

20

1.2 A representao dos nmeros numa mquina Na apresentao que se segue discutiremos apenas os nmeros em preciso simples. A discusso dos nmeros em dupla preciso apenas necessita de ser ajustada ao seu maior tamanho. O padro prev os seguintes valores especiais: +0, 0 fazendo e = 0, com o sinal adequado; , + fazendo e = 255, com o sinal adequado; NaN fazendo e = 255 e f = 0; Not a Number o resultado, por exemplo, da avaliao de 0/0. Como o expoente e est limitado ao intervalo ]0,255[, a potncia do nmero p [126, +127] pelo que o menor nmero positivo em preciso simples 1.00000000000000000000000 1001111110 2 = 2126 1.2 1038 10 e o maior nmero positivo em preciso simples 1.11111111111111111111111 10+11111110 2 = (2 223 ) 2+127 3.4 10+38 10
Preciso

Qual a preciso numrica desta representao? O bit menos signicativo de f tem peso 223 , pelo que uma mudana nesse bit causa uma variao em f igual a 223 . Consideremos um intervalo [x1 , x2 ] , denido por dois nmeros representveis exactamente em preciso simples IEEE e consecutivos, por exemplo:
p x1 = 1.00000000000000000000000 102 p x2 = 1.00000000000000000000001 102

Como x1 e x2 so nmeros mquina, representveis exactamente na notao escolhida, e so consecutivos, no pode ser representado nenhum outro nmero entre eles. Qualquer quantidade entre x1 e x2 , ou representada por x1 ou por x2 13 . Qualquer que seja a escolha, o erro cometido no exceder 223 no valor de f e 223+p no valor do prprio nmero. Se x for o nmero mquina x = m 2p ento o nmero mquina imediatamente superior x = (m + 223 ) 2 p
13 consoante

a tcnica de arredondamento usada.

21

1 O Erro em Anlise Numrica e o nmero mquina imediatamente inferior x = (m 223 ) 2 p A diferena (espaamento) entre os nmeros x+ x = x x = 223 2 p = 223+p sendo o espaamento relativo entre x+ e x (x+ x)/x 223 1.2 107 O espaamento relativo uma constante, aproximadamente igual a 223 , pelo que pode ser usado como uma medida da preciso de representao.
Arredondamento

O arredondamento ocorre sempre que a quantidade a representar no seja um nmero mquina, no sendo representvel exactamente, o que obriga a escolher um dos dois nmeros mquina enquadrantes. O modo de arredondamento padro arredondamento para o mais prximo, com arredondamento para par (para o nmero que tem um 0 no seu algarismo menos signicativo) em caso de indeciso. Esta tcnica de arredondamento garante um erro mximo de meia unidade do algarismo menos signicativo.
Valores especiais

Os valores innito, NaN, e zero tem representao e tratamento especiais:


Innito tratado como um nmero muito grande, sempre que tal zer sentido; por exemplo,

sendo x um nmero positivo em virgula utuante: + + x + x x/ + +/x + + +0 +

o mesmo se aplica ao caso de x negativo e de ;


NaN Este valor usado no caso de operaes de resultado indeterminado:

0/0 (+) (+) x + NaN


zero O padro prev duas formas de zero:

NaN NaN NaN

+0 que o resultado da maioria das operaes de que resulta zero; 0 que usado como indicador de um nmero negativo muito pequeno, inferior preciso mquina.

22

1.3 Erros
Excepes

O padro dene vrios tipos de excepes detectveis, de que importa destacar o overow, o underow e inexact, que ocorre quando um resultado deixou de ser exacto em consequncia de arredondamentos. Exerccio 1.7 Na denio do padro IEEE diz-se que a normalizao do nmero deve ser tal que satisfaa 1.f 2e enquanto que anteriormente tinhamos sugerido que deveria ser 0.f be sendo neste caso o algarismo mais signicativo de f diferente de zero. Porqu ? (sugesto: pense na base!)

1.3 Erros
A representao nita (aproximada) de nmeros em um dispositivo computacional (calculador humano, mquina de calcular mecnica ou electrnica, computador digital) conduz inevitvel e sistematicamente ao aparecimento de erros de arredondamento14 , enquanto a representao nita de processos conduz ao aparecimento de erros de truncatura15 ; esta a nomenclatura convencional, no entanto, dado que toda a representao de um nmero um processo caracterstico do clculo numrico, e, portanto, enquanto processo nito um processo de truncatura; assim, arredondamento e truncatura so, em termos prticos, essencialmente a mesma coisa. O erro absoluto pode ser denido como a diferena entre o valor exacto de uma quantidade e o seu valor aproximado: e(x) = xexacto xaproximado O erro relativo a relao e(x) xexacto Observe-se que, das duas equaes, se pode deduzir r(x) = xexacto = xaproximado 1 r(x)

expresso que, caso se conhea um majorante para o erro relativo e que este seja sucientemente pequeno, nos permite obter um intervalo enquadrante do valor exacto.16
devido aproximao computacional devido aproximao matemtica 16 Note-se que a diculdade em satisfazer essas duas exigncias torna a expresso praticamente intil!
15 erro 14 erro

23

1 O Erro em Anlise Numrica

1.4 Arredondamento e Truncatura


Quando se procede multiplicao de dois nmeros com trs casas decimais, o produto tem seis casas decimais; se se quiser continuar a ter apenas as trs casas decimais dos dados, de boa prtica proceder a um arredondamento, isto , juntar 5 primeira casa decimal a abandonar, antes de a abandonar; o resultado que, se essa primeira casa a abandonar for 5 ou superior, teremos um aumento de uma unidade na ltima casa conservada (arredondamento para cima); se, porm, for inferior a 5, o valor da ltima casa conservada manter-se- inalterado (arredondamento para baixo). Deste modo, qualquer que seja o caso, o valor arredondado ser mais prximo do valor exacto que o que obteramos mediante uma simples truncatura, isto , eliminando pura e simplesmente as casas decimais em excesso. Seja como for, cometeremos, em geral, pequenos erros: erro de arredondamento e erro de truncatura. A importncia da pequena diferena entre os dois erros resulta da possibilidade de vir a acumular-se em operaes sucessivas e de vir a ser amplicada pelo efeito de operaes posteriores, como veremos. Exemplo 1.7 Multiplicao
Multiplicando dois valores 0.236101 0.127102 1652 472 236 0.029972103 Normalizando e calculando o valor para arredondar 0.29972102 + 0.0005 102 0.30022102 Podemos vericar na tabela seguinte os valores obtidos por arredondamento e por truncatura e quais os erros cometidos.

Valor Erro absoluto Erro relativo

arredondamento

truncatura

0.300 102 0.280 101 0.934 103

0.299 102 0.720 101 0.240 102

A mesma situao ocorre, naturalmente, na diviso. Note-se, de passagem, que as mesmas duas tcnicas podem ser utilizadas na converso de um dado (em geral sob forma decimal) na base prpria da mquina. Na prpria adio podem ocorrer erros de arredondamento e de truncatura, mesmo quando as caractersticas dos nmeros a adicionar so as mesmas, desde que possa haver transporte da casa mais signicativa; no caso de os dois nmeros serem de ordens de grandeza muito

24

1.4 Arredondamento e Truncatura diferentes, a adio pode nem sequer ter qualquer efeito, no sentido de que o resultado ser, pura e simplesmente, igual ao de maior valor absoluto. Exemplo 1.8 Adio
Somando dois valores 0.742102 + 0.927102 1.669102 Normalizando e calculando o valor para arredondar 0.1669103 + 0.0005103 0.1674103 Podemos vericar na tabela seguinte os valores obtidos por arredondamento e por truncatura e quais os erros cometidos. + Valor Erro absoluto Erro relativo arredondamento truncatura

0.167 103 0.100 100 0.599 105

0.166 103 0.900 100 0.539 104

No caso de dois nmeros de grandeza diferente, as mantissas no podem adicionar-se directamente, pelo que se torna necessria uma operao prvia de alinhamento que consiste em reduzir os dois nmeros ao mesmo expoente; aps a realizao da adio das mantissas, o resultado arredondado, o que implica perda de preciso que pode ir ao ponto de a soma ser igual maior das parcelas, o que, em si, no ser extremamente grave, salvo no caso de adies encadeadas, como sucede na soma de sries. Exemplo 1.9 Soma com perda de parcela
Para efectuar a soma:

0.742 102 + 0.927 102


necessrio efectuar primeiro o alinhamento de expoentes 0.742 102 + 0.0000927102 0.7420927102 O valor renormalizado 0.742 102

Porm, onde os erros deste tipo causam mais problemas na subtraco de nmeros da mesma ordem de grandeza: em consequncia da anulao dos primeiros dgitos da mantissa, esta deslocada para a esquerda at ao primeiro dgito no nulo, o que pode trazer bem para a esquerda os erros de truncatura e/ou de arredondamento. A rigor, neste caso, no h que falar em erro de

25

1 O Erro em Anlise Numrica arredondamento nem de truncatura, mas sim em erro intrnseco da prpria tcnica operatria quando realizada sobre dados arredondados ou truncados. Exemplo 1.10 Subtraco
0.314101 0.313101 0.001101 O valor renormalizado 0.100 101 Erros absoluto e relativo da operao: 0 Poderia pensar-se que, tal como no caso da adio, este efeito no tenha importncia excepcional; porm, salvo se os valores dos termos forem exactos (isto , dados iniciais ou resultados parciais sem erro) os dois ltimos zeros da mantissa so articiais e nem sequer temos a certeza do 1 que os antecede; com efeito,

se o aditivo exacto fosse 0.3135 101 e o subtractivo exacto fosse 0.3134 101 , o resultado correcto seria 0.1 102 , um dcimo do valor calculado 0.1 101 ; se o aditivo exacto fosse 0.3144 101 e o subtractivo exacto fosse 0.3125 101 , o resultado correcto seria 0.19 101 , dezanove vezes o valor calculado.

Exerccio 1.8 1. calcule os erros relativos de um e outro resultados e compare-os com os dos termos da subtraco; 2. repita o raciocnio para o caso de dois termos iguais, tais que o resultado calculado da subtraco nulo (este o caso extremo que d ao fenmeno o nome de cancelamento); imagine as consequncias se este resultado entrasse em seguida como factor de uma multiplicao por um nmero grande o como divisor em uma diviso.

Este fenmeno de cancelamento constitui a principal fonte do erro numrico em clculo cientco, no criando erros por si prprio, mas actuando como um amplicador de erros preexistentes. Na maior parte dos clculos instveis, criam-se erros numricos signicativos por acumulao de arredondamentos e esses erros so depois amplicados pelo cancelamento. Esta situao de tal modo frequente e grave que Lieberstein [Lie68] se refere a ela como a diculdade patolgica da anlise numrica: enormes perdas de preciso resultantes da subtraco de representaes nitas de nmeros grandes quando a sua diferena pequena.

Exemplo 1.11 I.N.Gnuo

26

1.4 Arredondamento e Truncatura


Retomemos o caso do senhor I.N. Gnuo e calculmo-lo usando uma folha de clculo, com precises sucessivamente crescentes. Os resultados obtidos foram os seguintes: algarismos capital acumulado signicativos 3 -4,375E+21 4 2,8188E+20 5 -2,83618E+19 6 2,660808E+18 8 2,39020731E+16 10 6,3525795660E+14 12 -7,016551748043E+11 13 8,4946582952843E+11 14 7,39053273591465E+10 15 7,390532735914650E+10 16 7,3905327359146500E+10 No se entusiasme com a aparente estabilizao (numa considervel fortuna!). Acontece que a folha de clculo utilizada (MS Excel) tem uma preciso mxima de 14 algarismos signicativos! Se pretender explorar o exemplo, pode recorrer ao cheiro Ingenuo.xls .

Exerccio 1.9 Calcule o problema do senhor I.N. Gnuo com precises ainda maiores. Investigue se o valor tender realmente a estabilizar. (sugesto: utilize um manipulador numrico ou algbrico com preciso estipulvel, como o DERIVE)

Exemplo 1.12 Transformao de expresses


No clculo de (x + 1)1/2 x1/2 no h problemas de maior quando x pequeno, mas pode ocorrer importante perda de preciso quando x grande. Neste caso, pode com vantagem proceder-se transformao

[(x + 1)1/2 x1/2 ].[(x + 1)1/2 + x1/2 ] 1 = 1/2 + x1/2 1/2 + x1/2 (x + 1) (x + 1)
Podemos vericar os resultados executando a seguinte sequncia de comandos no Maple:
>

Digits:=5; Digits := 5 f (x) := (x+1)^(1/2)-x^(1/2); f(x) := x + 1 x

>

27

1 O Erro em Anlise Numrica


>

f1(x):= 1/((x+1)^(1/2)+x^(1/2)); 1 f1(x) := x+1+ x

Grcos das duas funes


> >
1 0.8 0.6 0.4 0.2

plot( f (x) ,x= 0.. + 10^3); plot(f1(x),x= 0.. 10^3);


1 0.8 0.6 0.4 0.2

200

400

600

800

1000

200

400

600

800

1000

Grco da diferena das duas funes


>

plot( f (x) -f1(x),x= 0..

+ 1.0E2);

2e15 1e15

0 1e15 2e15

20

40

60

80

100

Pode vericar estes resultados e estudar a sua variao com o nmero de dgitos de preciso e com o valor de x usando o cheiro Perda de Precisao.mws .

Uma vez cometido um erro de arredondamento no resultado de uma operao, esse erro vai contaminar os dados das operaes subsequentes segundo um mecanismo de propagao do erro, mecanismo que depende do encadeamento particular de operaes em cada caso. Existem, naturalmente, numerosos artifcios para diminuir os efeitos perversos do erro de arredondamento. A diculdade principal , porm, a de prever quando e onde que o arredondamento vai criar problemas. Um bom exemplo do tipo de artifcio comparativamente elementar o relativo adio (em vrgula utuante) de um nmero moderadamente elevado de nmeros relativos: se nos limitarmos a adicion-los sucessivamente, arriscamo-nos a acumular muitos arredondamentos. Uma maneira de o evitar consiste em separar os somandos em duas classes, a dos positivos e a dos

28

1.4 Arredondamento e Truncatura negativos, ordenando cada uma do maior para o mais pequeno; comea-se ento a adio pelo mais pequeno de uma das classes, juntando-lhe sucessivamente membros da outra classe at que o sinal do resultado mude; a cada mudana de sinal do resultado passa-se outra classe para tomar o nmero seguinte (imediatamente superior); deste modo, a soma acumulada mantida to pequena quanto possvel; quando, nalmente, uma das classes se esgota, os nmeros da restante podem ser adicionados ao resultado parcial sem cuidados especiais. Obviamente, este mtodo exige esforo importante na separao e ordenao dos somandos de modo que, sempre que uma mquina disponha de representao de nmeros em dupla preciso, tende a preferir-se o uso desta. Para a pessoa habituada a calcular mo com 4 ou 5 casas decimais, um erro de arredondamento na 8a casa decimal, ou mesmo mais alm, pode parecer coisa trivial e inofensiva ou at mesmo excelente, mas o facto que os enormes encadeamentos de clculos caractersticos da computao digital automtica podem acarretar acumulaes substanciais desses erros. O facto de ser praticamente impossvel prever os efeitos de erros de arredondamento e/ou truncatura ao m de longas e complexas cadeias de clculos faz com que os espritos simplistas considerem o processo de acumulao de erros como aleatrio, argumentando que a lei dos grandes nmeros torna aproximadamente iguais os casos de erros positivos e negativos, que assim tenderiam a compensar-se. A aparncia altamente cientca deste argumento no chega para esconder os factos de: 1. a experincia revelar que a existncia de correlaes (isto , de dependncias) internas entre os sucessivos resultados parciais de um clculo cientco complexo muito mais comum que o que correntemente se pensa; tais correlaes fazem com grande frequncia que os erros ocorram dominantemente em um de dois sentidos, o que leva a uma efectiva acumulao; 2. aquilo que, no fundo, est em questo no a probabilidade de um erro grande (que pode ser, efectivamente, pequena) mas a esperana matemtica do custo que lhe est associado (isto , a soma dos produtos das probabilidades de cada erro pelos respectivos custos), que pode ser insuportvel. Nestas condies, todo o cuidado pouco nesta matria e as belas folhas de nmeros impressos pelo computador s so razoavelmente veis quando forem tomadas todas as precaues possveis. este facto que nos leva, na perspectiva da computao automtica, a consagrar tanto espao de um curso de anlise numrica ao problema dos erros. Exemplo 1.13 Expresses factorizadas e expandidas
Consideremos a expresso

(5x 14)2 (x2 + 3) = = 25x4 140x3 + 271x2 420x + 588 = 25x4 + 271x2 + 588 140x3 420x
e vejamos como o Maple calcula estas diferentes expresses alternativas com 11 algarismos signicativos nas vizinhanas da nica raiz positiva, x = 2.8.

29

1 O Erro em Anlise Numrica


>

Digits:=11; Digits := 11 par:= (x,y)->[x,y]; par := (x, y) [x, y]

>

Construo das expresses:


> > >

ff:= x->(5.0*x-14.0)^2*(x^2+3.0); fexp:= expand(f f (x) ); fd1 := x->25.0*x^4+271.0*x^2+588.0-140.0*x^3-420.0*x; ff := x (5.0 x 14.0)2 (x2 + 3.0) fexp := 25.00 x4 + 271.000 x2 140.00 x3 420.000 x + 588.000 fd1 := x 25.0 x4 + 271.0 x2 + 588.0 140.0 x3 420.0 x

Construo das listas de amostragem em x


> > > > >

lx:= [seq(0.000001*i,i=2799900.. lff:= [seq(f f (x) , x= lx)]; lfd1:= [seq( fd1(x), x= lx)]; lxff:= zip(par,lx,lff); lxfd1:= zip(par,lx,lfd1);

2800100)];

Grco da forma factorizada fct(x) e da primeira forma expandida fd1(x)


> > >

plot([lxff ,lxfd1], x=2.7999 .. 2.8001,y=0 ..3e-6, symbolsize= 4, style = line, adaptive=false, color=[black,blue]);
3e06 2.5e06 2e06 y1.5e06 1e06 5e07 0 2.7999

2.79996

2.8 x

2.80004 2.80008

(veja o cheiro Ordem-parcelas.mws )

Exerccio 1.10

30

1.4 Arredondamento e Truncatura 1. Discuta os mritos relativos de dispor de subrotinas de biblioteca para calcular arctan(x) e arcsin(x) por desenvolvimento em srie de Taylor; proponha um critrio de truncatura para esses desenvolvimentos; discuta os mritos relativos do clculo das restantes funes trigonomtricas inversas a partir de uma destas por meio de frmulas adequadas. 2. Tendo em considerao o carcter discreto do conjunto dos nmeros representveis em vrgula utuante, discuta os problemas relativos ao clculo de sen(x) por desenvolvimento em srie de Taylor.

1.4.1 Diferentes maneiras de calcular uma expresso

Dada uma expresso analtica f (x) de uma funo, pode considerar-se que ela especica um algoritmo de clculo dos valores da varivel dependente para cada valor da varivel independente, x; usa-se ento o termo condio (cf. [DB74]) para descrever a sensibilidade do valor calculado de f (x) a variaes do argumento, x. A condio pode, portanto, ser medida pela variao (relativa) mxima de f (x) em termos da correspondente variao (relativa) de x, isto , por cond[ f (x) ] = maxx
f (x) f (x ) f (x) xx x

em que x a representao aproximada de x; se f (x) puder ser desenvolvida aproximadamente na forma f (x) f (x ) f (x).(x x ) = para pequenos valores de |x x | pode dar-se a esta expresso a forma mais simples: cond[ f (x) ] = x. f (x) f (x)

No entanto, esta forma aproximada deve ser usada com grande cuidado porque, como se armou atrs, o modo e a ordem por que se realizam as diferentes operaes em uma expresso no de modo nenhum indiferente do ponto de vista do erro cometido e esta expresso aproximada no toma esse facto em considerao. Por outro lado, muito pouco interessante o facto de, nesta aproximao, a condio se tornar innita nas vizinhanas de uma raiz da expresso. Exemplo 1.14 Clculo da condio
Retomemos o caso do polinmio do 4o grau do exemplo anterior e calculemos a sua condio, usando para isso o Maple.
>

f f (x) :=(5*x-14)^2*(x^2+3); ff(x) := (5 x 14)2 (x2 + 3) condf f (x) :=abs((x*diff(f f (x) ,x))/f f (x) );

>

31

1 O Erro em Anlise Numrica x (10 (5 x 14) (x2 + 3) + 2 (5 x 14)2 x) (5 x 14)2 (x2 + 3) 4, y=0 ..100);

condff(x) :=
>

plot(condf f (x) ,x=0 ..

100 80 60 y 40 20

2 x

No grco da condio da forma factorizada do polinmio do exemplo anterior. Observemos o crescimento desmesurado da condio a partir de x = 2.5, precisamente a zona da raiz onde atrs observmos os estranhos fenmenos de perda de preciso. Vericaremos tambm sem diculdade que a condio das trs expresses diferentes da mesma funo a mesma, como seria de esperar. (veja o cheiro Condio.mws )

Analisemos agora alguns casos exemplares desta situao: mesmo nos casos mais simples podem ocorrer situaes de perda signicativa de preciso, nomeadamente em casos relacionados com o j mencionado comportamento peculiar da subtraco. Embora parea haver uma grande variedade de artifcios para tratar este tipo de problema, o leitor no ter, mediante um pouco de reexo, grande diculdade em identicar a maioria como variaes do tipo geral de artifcio necessrio para calcular derivadas a partir da denio. Para evitar os percalos ligados a este tipo de situaes, torna-se necessrio apenas o uso da imaginao e o cuidado de procurar prever o que pode vir a suceder, antes de passar fase de programao; a regra fundamental a de, sempre que possvel, evitar subtraces, mesmo que apaream sob a forma de somas de termos de sinais diferentes. Os exemplos juntos so apenas de alguns dos mtodos que o leitor deve j ter encontrado em lgebra e em anlise matemtica. Exemplo 1.15 Expresses alternativas
No clculo de

sen (x + x) sen (x) x

32

1.4 Arredondamento e Truncatura


para pequenos valores de x, h toda a vantagem em utilizar a expresso alternativa

x sen 2 . cos x + x 2 2
Do mesmo modo,

1 cos (x) =

sen2 (x) = 2. sen2 1 + cos (x)

x 2

No entanto, necessrio o mximo cuidado: uma boa aproximao para pequenos valores de x pode ser desastrosa para valores altos, como mostra o grco, construdo em Maple:
> > > > > >

Digits:= 5; s:= seq(0.001*i,i=-4000.. 4000); p:= [seq([dx, 1-cos(dx)-((sin(dx)^2)/(1+cos(dx)))], dx=[s])]; plot(p,x=-4.2 .. 4.2,y=-0.002 .. 0.004, symbolsize= 5, style = point, adaptive=false);
0.004

0.003

0.002

0.001

2 x 0.001

0.002

Porm, nem sempre simples rearranjos das expresses bastam para produzir novas expresses satisfatrias para o uso em clculo numrico: por vezes necessrio recorrer a conhecimentos mais avanados das matemticas, nomeadamente ao uso de desenvolvimento de funes em sries (de potncias ou de outras funes simples). Neste caso, um critrio simplista seria o de calcular e somar todos os termos (necessariamente decrescentes em valor absoluto a partir de certa ordem) que o clculo numrico no apresente como nulos dentro da preciso utilizada; notar-se-, porm, que no caso das sries de termos de sinais alternados, esse critrio parece ter, para alm da simplicidade, a vantagem de xar o valor absoluto mximo do erro no limite da preciso da mquina; no caso das sries de termos de sinal constante, tal no se verica, visto que

33

1 O Erro em Anlise Numrica o erro - correspondente, ele prprio, a uma srie de termos de sinal constante - ser em geral muito superior ao valor absoluto do primeiro valor abandonado; mesmo no caso mais favorvel das sries de termos de sinais alternados, esse critrio no s no d garantias efectivas quanto ao erro como corresponde, em geral, a um esforo de clculo inutilmente longo, na medida em que j se ter, de h muito, ultrapassado o limite em que as novas contribuies fazem crescer a soma; Assim, um critrio mais eciente ser o de abandonar o clculo quando, persistentemente, a soma deixar de crescer, mesmo que as parcelas no sejam ainda nulas, o que corresponde ao limite efectivo do clculo dentro da preciso da mquina, sob a condio de o ordenamento das parcelas ter sido adequado. Exemplo 1.16 Desenvolvimento em srie de Taylor
Seja o desenvolvimento em srie de Taylor da exponencial negativa ex at ao 5o grau, e o correspondente erro:
>

>

> > >

taylor( exp(-x), x=0, 6 ); 1 1 1 1 5 1 x + x2 x3 + x4 x + O(x6 ) 2 6 24 120 te(x):= convert(%,polynom); 1 1 1 1 5 te(x) := 1 x + x2 x3 + x4 x 2 6 24 120 plot( [exp(-x), te(x), exp(-x)-te(x)], x= -4 .. 5, linestyle= [1,2,3], legend=["exp", "taylor", "erro"]);

50 40 30 20 10 4 2 10 2 x 4

exp taylor erro

Exerccio 1.11 Determine o nmero de termos do desenvolvimento em srie de Taylor da ex-

34

1.4 Arredondamento e Truncatura ponencial negativa que devem ser usados para calcular e1 na nossa mquina hipottica. O termo geral do desenvolvimento da forma (1)k .xk k!

Exemplo 1.17 Exponencial e Srie de Taylor


O clculo de ea.x 1 para valores relativamente grandes de |a.x| pode, sem grandes problemas, ser abordado pelo clculo da exponencial pelo mtodo anterior. Porm, para o caso de |a.x| ser pequeno, em que a exponencial se torna prxima da unidade, o erro originado pela subtraco pode tornar-se intolervel; neste caso, prefervel recorrer directamente ao desenvolvimento em srie de Taylor da expresso toda

ea.x 1 = a.x +

(a.x)2 (a.x)3 + +... 2! 3!

Exerccio 1.12 Proponha mtodos de clculo (x qualquer, h pequeno) para as funes: 1 1 x+1 x f (x) = cos (x + h) cos (x) f (x) = f (x) = (x + 1)1/3 x1/3 1 cos (h) f (x) = h2 1x f (x) = ln 1+x

Exerccio 1.13 Discuta os mritos do clculo de um polinmio pn (x) = an .xn + an1 .xn1 + ... + a1 .x + a0 na forma: pn (x) = (... (an .x + an1 ) .x + ... + a1 ) .x + a0

35

1 O Erro em Anlise Numrica


1.4.2 Os erros nos dados

Uma outra fonte de erro, em que raramente se pensa, mas que tem consequncias muitas vezes surpreendentes a que resulta de os coecientes das expresses com que se trabalha em Engenharia provirem, directa ou indirectamente, de medidas cuja preciso nita e, frequentemente, pequena. Esses erros, mesmo minsculos, podem afectar decisivamente os resultados de um clculo efectuado sobre os valores correspondentes. Exemplo 1.18 Erros nos dados
Seja a equao

a.x2 + b.x + c = 0
cujos coecientes a, b, c so determinados experimentalmente e tm os seguintes valores

a = 1.50 0.01

b = 3.45 0.01

c = 1.98 0.01

Se tomarmos apenas os valores centrais do intervalo temos a equao

1.50x2 3.45x + 1.98 cujas razes so

x1 = 1.10 x2 = 1.20

Se, porm, tivermos em conta as variaes possveis dos coecientes, podemos, para os respectivos valores extremos formar as equaes

1.51x2 3.46x + 1.99 cujas razes so 1.51x2 3.46x + 1.97 cujas razes so 1.51x 3.44x + 1.99 cujas razes so 1.51x 3.44x + 1.97 cujas razes so 1.49x2 3.46x + 1.99 cujas razes so 1.49x 3.46x + 1.97 cujas razes so 1.49x2 3.44x + 1.99 cujas razes so 1.49x 3.44x + 1.97 cujas razes so
2 2 2 2

x1 = 1.15 0.07i x2 = 1.15 + 0.07i x1 = 1.24 x2 = 1.06 x1 = 1.14 0.14i x2 = 1.14 + 0.14i x1 = 1.14 0.08i x2 = 1.14 + 0.08i x1 = 1.28 x2 = 1.05 x1 = 1.32 x2 = 1.00 x1 = 1.15 0.05i x2 = 1.15 + 0.05i x1 = 1.26 x2 = 1.05

o que signica que no s h fortes variaes quantitativas nos valores das razes como h, tambm, variaes qualitativas, visto que existe uma zona de razes complexas (que, num

36

1.4 Arredondamento e Truncatura


contexto fsico, representam impossibilidades) e uma outra de razes negativas (que, em certos contextos fsicos, podem representar um tipo diferente de situao). Pode mesmo vericar-se que, dentro da zona da indeterminao dos coecientes, existe uma zona em 1/2 que as razes so iguais: trata-se do caso b = 2. (a.c) , isto ,

a.x2 + 2. (a.c)1/2 .x + c = 0 cujas razes so a.x2 2. (a.c)1/2 .x + c = 0 cujas razes so

x1 = x2 =

c a c x1 = x2 = a

1/2 1/2

Nestas condies, o prprio sentido que possa ter a inteno de obter resultados precisos, mediante clculo numrico, toma contornos muito nebulosos. Com efeito, sucede frequentemente como no caso do exemplo acima, que os resultados calculados para diferentes valores dos parmetros dentro dos respectivos intervalos de variao provvel sejam qualitativamente diferentes; neste tipo de situao, a interpretao dos resultados torna-se altamente problemtica e s um perfeito domnio do contexto concreto do problema pode permitir avanar neste terreno com um mnimo de segurana. Posto nestes termos, o problema de natureza semntica e no puramente matemtica, circunstncia que raramente apreciada em todo o seu valor e generalidade. Observe-se, neste contexto, que instabilidades na resoluo de equaes, provenientes de variaes dos seus parmetros (coecientes, expoentes, etc.), resultam no s de situaes de incerteza externa mas tambm de efeitos internos da mquina, como os provindos da converso de dados decimais em forma binria, o que, s por si, pode acarretar erros. Exemplo 1.19 A base e a exactido da representao
Pense o leitor na converso do nmero decimal (suposto exacto) 0.1 em forma binria e na sua possvel representao em vrgula utuante. Em binrio logo: 0.11 1011 0.110 (2) Em octal logo: Em hexadecimal logo:

0.631 101 0.110 (8) 0.631 A0 0.110 (16)

Exerccio 1.14 1. Tendo em considerao o exemplo anterior, calcule com a preciso da nossa mquina imaginria, as razes das equaes: x2 100x 4 = 0 x2 60x + 2 = 0

37

1 O Erro em Anlise Numrica 2. Tendo em considerao o exemplo e os exerccios anteriores, discuta a resoluo da equao quadrtica geral ax2 + bx + c = 0 dos pontos de vista da preciso dos resultados e da economia de clculo.

1.4.3 Clculo dos erros

Na impossibilidade de evitar por completo os erros do clculo numrico, como minimiz-los? Todos os exemplos anteriores mostram a que ponto o resultado de um clculo pode desviar-se do valor exacto devido aos erros de arredondamento. O uso de mquinas de elevada preciso e o respeito de certas regras bsicas da programao numrica limitam as consequncias de certos problemas mas no as eliminam totalmente. Na impossibilidade de eliminar por completo os erros, como estim-los? Em primeiro lugar note-se que, se fosse possvel estimar com razovel preciso o erro de um clculo, seria, por denio, possvel corrigi-lo. Assim sendo, apenas duas vias esto abertas: uma de carcter determinstico, d um resultado certo: trata-se da chamada aritmtica intervalar, baseada em uma ideia original de R. E. Moore (Interval Analysis, Prentice-Hall, Englewood Cliffs, 1963) e especialmente desenvolvida nos anos 80 por investigadores da IBM. O seu princpio relativamente simples: suponhamos que pretendemos adicionar dois nmeros mquina, X e Y (usamos maisculas para representar os nmeros mquina e minsculas para os nmeros "reais"). O resultado dessa soma , ou nmero mquina igual ou imediatamente inferior ao valor z da soma real [Z1 = (z)] , ou o nmero mquina igual ou imediatamente superior a z [Z2 = (z)]; assim, em vez de representar o nmero z por Z1 ou Z2 , passaremos a represent-lo pelo intervalo (Z1 , Z2 ) ; procedendo sistematicamente deste modo, obteremos, no nal, um intervalo exacto no qual o valor real se encontra necessariamente contido. A Universidade de Karlsruhe desenvolveu, a partir de 1986, software eciente deste tipo; infelizmente, na grande maioria dos casos, os intervalos nais calculados so horrendamente pessimistas. Exemplo 1.20 Anlise de erros
Se somarmos ou subtrairmos duas quantidades x1 , x2 afectadas de erros x1 e x2 , o resultado aproximado ser

y = x1 x2
enquanto o resultado exacto ser

y + y = x1 + x1 (x2 x2 )
de modo que o erro cometido em consequncia da aproximao vale

y = x1 x2

38

1.4 Arredondamento e Truncatura


Dado, porm, que no podemos conhecer o sinal dos erros, escreveremos apenas

|y| |x1 | + |x2 |


o que nos permite enunciar a regra de que o mdulo do erro absoluto de uma soma (ou diferena) majorado pela soma dos mdulos dos erros absolutos dos operandos. Para a multiplicao, o resultado aproximado

y = x1 .x2
e o exacto

y + y = (x1 + x1 ) . (x2 + x2 )
, de modo que o erro absoluto vale

y = x1 .x2 + x2 .x1 + x1 .x2


e o erro relativo

y x1 .x2 + x2 .x1 + x1 .x2 = = x1 + x2 + x1 .x2 y x1 .x2

ou, supondo que os erros relativos dos operandos so signicativamente menores que a unidade,

y x1 + x2 =
Para a diviso, o quociente aproximado

y=
e o quociente exacto

x1 x2

y + y =
e o erro relativo

x1 x1 + x1 (x1 + x1 ) . (x2 x2 ) = y.x2 = y+ 2 x2 x2 + x2 x2 x2 2 y x1 x2 =

A semelhana das expresses dos erros relativos do produto e do quociente e o facto de no conhecermos o sinal dos erros permite escrever uma expresso nica para os dois casos: de onde a regra de que o mdulo do erro relativo de um produto (ou quociente) majorado pela soma dos mdulos dos erros relativos dos operandos. 5. Embora estas regras no sejam particularmente difceis de usar, a sua aplicao a cada passo de um clculo complexo, como na aritmtica intervalar, torn-lo-ia extremamente penoso. Por isso, muitos analistas numricos esto interessados em simplicar estas regras, mesmo que custa de alguma preciso. As regras aproximadas serviro para determinar, aproximadamente, o nmero de algarismos a reter num resultado, com base no nmero de algarismos exactos dos operandos; tais algarismos

39

1 O Erro em Anlise Numrica


a reter chamam-se algarismos signicativos. A validade da anlise dos algarismos signicativos depende, naturalmente, da base de numerao usada, porque desprezar um algarismo em uma base pode corresponder a desprezar dois ou mais em uma base menor; alm disso, dois nmeros que, em dada base, tm o mesmo nmero de algarismos signicativos podem, em outra base, ter um nmero diferente. Assim, devido possvel perda de signicado em consequncia de a base de numerao eventualmente usada no clculo no coincidir com aquela em que se apresentam os resultados (como sucede no clculo electrnico), de boa prtica reter pelo menos um algarismo incerto, que se chama dgito de guarda, desprezando-o apenas no resultado nal. 6. Da regra anterior relativa ao erro absoluto da soma e da diferena, resulta que esse erro dominado pelo maior erro dos operandos; na pior das hipteses, os dois operandos tero erros da mesma ordem, de modo que o erro do resultado ser majorado pelo dobro do maior dos erros dos operandos. Por outro lado, poderemos normalmente admitir que o erro na representao de um nmero no ser superior a meia unidade da ltima casa signicativa, de modo que o operando dominante ser aquele que tiver menor nmero de algarismos signicativos direita da vrgula. A regra para a determinao do nmero de algarismos signicativos de uma soma ou diferena ser, portanto, a seguinte: o nmero de algarismos a reter na parte fraccionria do resultado de uma adio (ou subtraco) no ser maior que o nmero de algarismos da parte fraccionria do operando que a tiver menos extensa. 7. De modo semelhante, deduzimos da regra anterior relativa os erros relativos do produto e do quociente que o erro relativo dominado pelo do operando que tiver maior erro relativo. Para obter uma aproximao em termos de algarismos signicativos, utilizamos a representao em vrgula utuante: x = m.r p , em que a mantissa m no tem zeros imediatamente direita da vrgula e r a base de numerao usada; ento

r1 |m| 1
Por outro lado, se x tiver q algarismos signicativos, ento a sua mantissa, m, ter esse mesmo nmero de algarismos; logo, a grandeza do erro absoluto de m no ser maior que rq /2 de modo que
1 x 2 .r pq

Dado que |m| r1 , resulta |x| r p1 , logo

|x| =

x 1 .r1q 2 x

Deste modo, a grandeza do erro relativo de um operando depende apenas do nmero de algarismos signicativos desse operando, donde resulta a regra: o nmero de algarismos signicativos de um produto (ou quociente) majorado pelo nmero de algarismos signicativos do operando que os tiver em menor nmero. 8. Esta anlise de algarismos signicativos tipicamente til para o clculo manual, mas pode utilizar-se em clculo automtico; porm, para este m, as linguagens con-

40

1.5 Concluso
vencionais no so convenientes, tornando-se necessrio o recurso a linguagens de processamento de listas.

uma outra via, dita mtodo de perturbao, de carcter probabilstico e comeou a ser explorada em meados dos anos 70 na Universidade Pierre et Marie Curie de Paris. O seu princpio tambm simples e engenhoso: a melhor maneira de testar o efeito, sobre o resultado nal, das perdas de informao por arredondamento consiste em simul-la, perturbando cada clculo elementar por vrios erros aleatrios da ordem de grandeza dos arredondamentos e estudando estatisticamente os resultado. O Instituto Francs do Petrleo desenvolveu, a partir de 1987, um package deste tipo; infelizmente, o clculo torna-se excessivamente lento para todas as aplicaes prticas excepto as de maior responsabilidade. Exerccio 1.15 1. Calcule sen(x) para x = 2rad por meio de um desenvolvimento em srie de Taylor. Calcule cada termo da srie com sete algarismos signicativos. Some os termos e compare o resultado com o valor correcto a nove decimais: 0.909297427. Comente. 2. Calcule cos(x) cos(0.1) a sete algarismos signicativos para x = 0, x = 0.05, x = 0.095 e x = 0.995, a) usando uma tbua ou uma mquina de calcular b) usando a identidade cos(x) cos(y) = 2. sen compare os resultados e comente. y+x yx . sen 2 2

1.5 Concluso
O objectivo do presente captulo foi, essencialmente, o de chamar a ateno do estudante para o facto de no poder nunca conar-se cegamente nos resultados fornecidos por um computador e para o facto de os problemas de preciso do clculo numrico automtico serem ainda matria de investigao cientca e tecnolgica. Os factos centrais a destacar so: o de uma longa sucesso de clculos poder conduzir a um resultado grosseiramente errado e

41

1 O Erro em Anlise Numrica o de as consequncias deste primeiro facto poderem ser extremamente graves: os clculos em vrgula utuante so utilizados para projectar edifcios, pontes, barragens, automveis e avies. Vimos tambm, por outro lado, que, antes de pr em explorao uma nova aplicao, possvel e desejvel, embora caro e trabalhoso, test-la do ponto de vista da preciso. O grande matemtico A. Householder dizia que tinha medo de andar de avio porque sabia que tinha sido projectado usando aritmtica de vrgula utuante; trata-se de um comentrio extremamente srio no s a um estado de coisas ainda insatisfatrio mas, sobretudo, s prticas descuidadas e irresponsveis que, infelizmente, so correntes. [Ham71] [Lie68] [Moo63] [Mul89] [Wal90]

42

Bibliograa
[CB81] [DB74] Conte and De Boor. Elementary Numerical Analysis, an algorithmic approach. McGraw-Hill International Editions, Singapore, 1981. Dahlquist and Bjrck. Numerical Methods. Prentice-Hall, Inc., Englewood Cliffs, 1974.

[Gol90] Herman H. Goldstine. Remembrance of things past. ACM Press - Addison-Wesley, Reading, Massachusetts, 1990. [Gol91] Goldberg. What every computer scientist should know about oating-point arithmetic. ACM Computing Surveys, 23(1), March 1991. [Ham71] Hamming. Introduction to applied numerical analysis. McGraw-Hill-Kogakusha, Ltd., Tokyo, 1971. [JR75] [Lie68] Jensen and Rowland. Methods of Computation. Scott, Foresman & Co, Glenview, 1975. Lieberstein. A course in numerical analysis. Harper and Row, New York, 1968.

[Moo63] Moore. Interval Analysis. Prentice-Hall, Englewood Cliffs, 1963. [Mul89] Muller. Arithmtique des ordinateurs. Masson, Paris, 1989. [Wal90] Wallis. Improving oating-point programming. Wiley, New York, 1990. [Wil65] Wilkinson. Rounding errors in algebraic processes. Clarendon Press, Oxford, 1965. [Zac96] Joseph L. Zachary. Introduction to scientic programming: computational problem solving using Maple and C. Springer Verlag New York Inc., New York, 1 edition, 1996.

43

ndice
BASIC BASIC, 19 Ficheiros Condio.mws, 32 Ingenuo.xls, 27 Ordem-parcelas.mws, 30 Perda de Precisao.mws, 28 PASCAL MAXINT, 18 PASCAL, 18 adio, 24 algarismos signicativos, 40 alinhamento, 25 aritmtica intervalar, 38 arredondamento, 22, 24 arredondamento para baixo, 24 arredondamento para cima, 24 cancelamento, 26 condio, 31 diviso, 24 dgito de guarda, 40 erro absoluto, 23 erro de arredondamento, 24 erro de truncatura, 24 erro relativo, 23 Exemplos A base e a exactido da representao, 37 Adio, 25 Anlise de erros, 38 Codicao BCD, 16 Clculo da condio, 31 Desenvolvimento em srie de Taylor, 34 Erros nos dados, 36 Exponencial e Srie de Taylor, 35 Expresses alternativas, 32 Expresses factorizadas e expandidas, 29 I.N.Gnuo, 26 Matemtica, nmeros e processos, 6 Multiplicao, 24 Mquina virtual, 16 Overow, 18 overow e underow, 19 Soma com perda de parcela, 25 Subtraco, 26 Transformao de expresses, 27 Unidade da ltima casa, 16 inexact, 23 innito, 22 multiplicao, 24 mtodo de perturbao, 41 NaN, 21, 22 nmero mquina, 22 overow, 18, 19, 23 propagao do erro, 28 subtraco, 25 underow, 18, 19, 23 zero, 22

45

Impresso em 27 de Fevereiro de 2009 a partir dos seguintes cheiros: Analise_Numerica.tex 1.9 2007/04/01 Analise_Numerica.sty 1.10 2009/02/26 Titulo.tex 1.5 2009/02/27 0_Introducao.tex 1.4 2007/04/01 1_Erro.tex 1.8 2009/02/26

Você também pode gostar