cálculo numérico - djusto/num/slide.pdf · pdf filenotadosautores...

Click here to load reader

Post on 30-Sep-2018

236 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Clculo NumricoUm Livro Colaborativo

    23 de agosto de 2016

  • Autores

    Lista alfabtica de autores:

    Dagoberto Adriano Rizzotto Justo - UFRGS

    Esequia Sauter - UFRGS

    Fabio Souto de Azevedo - UFRGS

    Pedro Henrique de Almeida Konzen - UFRGS

    ii

  • Licena

    Este trabalho est licenciado sob a Licena Creative Commons Atribuio-CompartilhaIgual 3.0 No Adaptada. Para ver uma cpia destalicena, visite http://creativecommons.org/licenses/by-sa/3.0/ ouenvie uma carta para Creative Commons, PO Box 1866, MountainView, CA 94042, USA.

    iii

  • Nota dos autores

    Este livro vem sendo construdo de forma colaborativa desde 2011.Nosso intuito melhor-lo, expandi-lo e adapt-lo s necessidadesde um curso de clculo numrico em nvel de graduao.Caso queira colaborar, tenha encontrado erros, tenha sugestes oureclamaes, entre em contato conosco pelo endereo de e-mail:

    livro_colaborativo@googlegroups.com

    Alternativamente, abra um chamado no repositrio GitHub do pro-jeto:

    iv

    livro_colaborativo@googlegroups.com

  • https://github.com/livroscolaborativos/CalculoNumerico

    https://github.com/livroscolaborativos/CalculoNumerico

  • Prefcio

    Este livro busca abordar os tpicos de um curso de introduo aoclculo numrico moderno oferecido a estudantes de matemtica,fsica, engenharias e outros. A nfase colocada na formulao deproblemas, implementao em computador da resoluo e interpre-tao de resultados. Pressupe-se que o estudante domine conheci-mentos e habilidades tpicas desenvolvidas em cursos de graduaode clculo, lgebra linear e equaes diferenciais. Conhecimentosprvios em linguagem de computadores fortemente recomendvel,embora apenas tcnicas elementares de programao sejam real-

    vi

  • mente necessrias.Ao longo do livro, fazemos nfase na utilizao do software livreScilab para a implementao dos mtodos numricos abordados.Recomendamos que o leitor tenha sua disposio um computadorcom o Scilab instalado. No necessrio estar familiarizado com alinguagem Scilab, mas recomendamos a leitura do Apndice A, noqual apresentamos uma rpida introduo a este pacote computa-cional. Alternativamente, existem algumas solues em nuvem quefornecem acesso ao Scilab via internet. Por exemplo, a plataformavirtual rollApp (https://www.rollapp.com/app/scilab).

    https://www.rollapp.com/app/scilab

  • Captulo 1

    Introduo

    Clculo numrico a disciplina que estuda as tcnicas para a so-luo aproximada de problemas matemticos. Estas tcnicas sode natureza analtica e computacional. As principais preocupaesnormalmente envolvem exatido e perfrmance.Aliado ao aumento contnuo da capacidade de computao dispo-

    1

  • nvel, o desenvolvimento de mtodos numricos tornou a simula-o computacional de modelos matemticos uma prtica usual nasmais diversas reas cientficas e tecnolgicas. As ento chamadassimulaes numricas so constitudas de um arranjo de vrios es-quemas numricos dedicados a resolver problemas especficos como,por exemplo: resolver equaes algbricas, resolver sistemas linea-res, interpolar e ajustar pontos, calcular derivadas e integrais, re-solver equaes diferenciais ordinrias, etc.. Neste livro, abordamoso desenvolvimento, a implementao, utilizao e aspectos tericosde mtodos numricos para a resoluo desses problemas.Os problemas que discutiremos no formam apenas um conjunto demtodos fundamentais, mas so, tambm, problemas de interessena engenharia e na matemtica aplicada. A necessidade de aplicaraproximaes numricas decorre do fato de que esses problemas po-dem se mostrar intratveis se dispomos apenas de meios puramenteanalticos, como aqueles estudados nos cursos de clculo e lgebralinear. Por exemplo, o teorema de Abel-Ruffini nos garante queno existe uma frmula algbrica, isto , envolvendo apenas opera-

  • es aritmticas e radicais, para calcular as razes de uma equaopolinomial de qualquer grau, mas apenas casos particulares:

    Simplesmente isolar a incgnita para encontrar a raiz de umaequao do primeiro grau;

    Frmula de Bhaskara para encontrar razes de uma equaodo segundo grau;

    Frmula de Cardano para encontrar razes de uma equao doterceiro grau;

    Existe expresso para equaes de quarto grau;

    Casos simplificados de equaes de grau maior que 4 ondealguns coeficientes so nulos tambm podem ser resolvidos.

    Equaes no polinomiais podem ser ainda mais complicadas deresolver exatamente, por exemplo:

    cos(x) = x e xex = 10

  • Para resolver o problema de valor inicial

    y + xy = x,

    y(0) = 2,

    podemos usar o mtodo de fator integrante e obtemos y = 1+ex2/2.J o clculo da soluo exata para o problema

    y + xy = ey,

    y(0) = 2,

    no possvel.Da mesma forma, resolvemos a integral 2

    1xex

    2dx

    pelo mtodo da substituio e obtemos 12(e1 e2). Porm a inte-

    gral 21ex

    2dx

  • no pode ser resolvida analiticamente.A maioria dos modelos de fenmenos reais chegam em problemasmatemticos onde a soluo analtica difcil (ou impossvel) de serencontrada, mesmo quando provamos que ela existe. Nesse cursopropomos calcular aproximaes numricas para esses problemas,que apesar de, em geral, serem diferentes da soluo exata, mostra-remos que elas podem ser bem prximas.Para entender a construo de aproximaes necessrio estudarum pouco como funciona a aritmtica de computador e erros de ar-redondamento. Como computadores, em geral, usam uma base bi-nria para representar nmeros, comearemos falando em mudanade base.

  • Captulo 2

    Aritmtica de mquina

    6

  • 2.1 Sistema de numerao e mudanade base

    Usualmente, utilizamos o sistema de numerao decimal para re-presentar nmeros. Esse um sistema de numerao posicionalonde a posio do dgito indica a potncia de 10 que o dgito estrepresentando.

    Exemplo 1. O nmero 293 decomposto como

    293 = 2 centenas + 9 dezenas + 3 unidades= 2 102 + 9 101 + 3 100.

    O sistema de numerao posicional tambm pode ser usado comoutras bases. Vejamos a seguinte definio.

  • Definio 1 (Sistema de numerao de base b). Dadoum nmero natural b > 1 e o conjunto de smbolos{,,,,,000,111,222, . . . , b 1b 1b 1}a, a sequncia de smbolos

    (dndn1 d1d0,d1d2 )b

    representa o nmero positivo

    dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +

    Para representar nmeros negativos usamos o smbolo a es-querda do numeral.

    aPara b > 10, veja a Observao 1

  • Observao 1 (b 10). Para sistemas de numerao com baseb 10 usual utilizar as seguintes notaes:

    No sistema de numerao decimal (b = 10), costumamosrepresentar o nmero sem os parnteses e o subndice, ouseja,

    dndn1 . . . d1d0,d1d2 . . . := (dndn1 . . . d1d0,d1d2 . . .)10

    Se b > 10, usamos as letras A,B,C, para completaros smbolos: A = 10, B = 11, C = 12, D = 13, E = 14,F = 15.

    Exemplo 2 (Sistema binrio). O sistema de numerao em basedois chamado de binrio e os algarismos binrios so conhecidoscomo bits, do ingls binary digits. Um bit pode assumir dois

  • valores distintos: 0 ou 1. Por exemplo:

    x = (1001,101)2= 1 23 + 0 22 + 0 21 + 1 20 + 1 21 + 0 22 + 1 23

    = 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 = 9,625

    Ou seja, (1001,101)2 igual a 9,625 no sistema decimal.

    Exemplo 3 (Sistema quaternrio). No sistema quaternrio a baseb igual a 4. Por exemplo:

    (301,2)4 = 3 42 + 0 41 + 1 40 + 2 41 = 49,5

    Exemplo 4 (Sistema octal). No sistema octal a base b = 8 eutilizamos os smbolos em {0, 1, 2, 3, 4, 5, 6, 7}. Por exemplo:

    (1357,24)8 = 1 83 + 3 82 + 5 81 + 7 80 + 2 81 + 4 82

    = 512 + 192 + 40 + 7 + 0,25 + 0,0625 = 751,3125

  • Exemplo 5 (Sistema hexadecimal). O sistema de numerao cujaa base b = 16 chamado de sistema hexadecimal. O conjunto desmbolos necessrios S = {,,, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,B,C,D,E, F}.Convertendo o nmero (E2AC)16 para a base 10 temos

    (E2AC)16 = 14 163 + 2 162 + 10 161 + 12 160

    = 57344 + 512 + 160 + 12 = 58028

    Exemplo 6 (Scilab). O Scilab oferece algumas funes para aconverso de nmeros inteiros em dada base para a base decimal.Por exemplo, temos:

    -->bin2dec('1001')ans =

    9.-->hex2dec('451')ans =

    1105.-->oct2dec('157')

  • ans =111.

    -->base2dec('BEBA',16)ans =

    48826.

    A partir da Definio 1 acabamos de mostrar vrios exemplos deconverso de nmeros de uma sistema de numerao de base b parao sistema decimal. Agora, vamos estudar como fazer o processoinverso. Isto , dado um nmero decimal (X)10 queremos escrev-loem uma outra base b, i.e., queremos obter a seguinte representao:

    (X)10 = (dndn1 d0,d1 )b= dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +

    Separando as partes inteira e fracionria de X, i.e. X = Xi + Xf,temos:

    Xi = dnbn+ +dn1bn1+d1b1+d0b0 e Xf =d1b1

    +d2b2

    +

  • Nosso objetivo determinar os algarismos {dn, dn1, ...}.Primeiramente, vejamos como tratar a parte inteira Xi. Calculandosua diviso por b, temos:

    Xib

    = d0b

    + d1 + d2b1 + dn1 bn2 + dn bn1.

    Observe que d0 o resto da diviso de Xi por b, pois d1 +d2b1 +dn1 bn2 + dn bn1 inteiro e d0b uma frao (lembramos qued0 < b). Da mesma forma, o resto da diviso de d1 +d2b1 +dn1 bn2 + dn bn1 por b d1. Repetimos o processo at encontrar ossmbolos d0, d1, d2, . . ..

    Exemplo 7 (Converso da parte inteira). Vamos escrever o nmero125 na base 6. Para tanto, fazemos sucessivas divises por 6 comosegue:

    125 = 20 6 + 5 (125 dividido por 6 igual a 20 e resta 5)= (3 6 + 2) 6 + 5 = 3 62 + 2 6 + 5,

  • logo 125 = (325)6.Estes clculos podem ser feitos no Scilab com o auxlio das funesmodulo e int. A primeira calcula o resto da diviso entre doisnmeros, enquanto que a segunda retorna a parte inteira de umnmero dado