dornelles (2015, v.11) calculo numerico

118
k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f( k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f( b);e_rel=+Inf;whilek<kmax&&abs(e_rel)>tolif b);e_rel=+Inf;whilek<kmax&&abs(e_rel)>tolif FA*FX<=0b=x(k);FB=FX;elsea=x(k);FA=FX;endk= FA*FX<=0b=x(k);FB=FX;elsea=x(k);FA=FX;endk= k+1;x(k)=0.5*(a+b);FX=f(x(k));e_rel=(x(k1), k+1;x(k)=0.5*(a+b);FX=f(x(k));e_rel=(x(k1), x(k));endz=x(k);n=size(A,1);fori=1:nforj=1: x(k));endz=x(k);n=size(A,1);fori=1:nforj=1: nifi==jC(i,j)=0;elseC(i,j)=A(i,j)/A(i,i);en nifi==jC(i,j)=0;elseC(i,j)=A(i,j)/A(i,i);en dendd(i,1)=)=((j1)/n)^(i);s(n+1,1);b(i)/A(i dendd(i,1)=)=((j1)/n)^(i);s(n+1,1);b(i)/A(i ,i);endk=1;x=ones(n,1);e_rel=+Inf;whilek<km ,i);endk=1;x=ones(n,1);e_rel=+Inf;whilek<km ax&e_rel>tolk=k+1;x_ant=x;fori=1:nx(i)=C(i, ax&e_rel>tolk=k+1;x_ant=x;fori=1:nx(i)=C(i, :)*x+d(i);ende_rel=t(x_ant,x);endn=length(c :)*x+d(i);ende_rel=t(x_ant,x);endn=length(c );y=0;fork=1:ny=y.*x+c(k);endn=length(x);fo );y=0;fork=1:ny=y.*x+c(k);endn=length(x);fo ri=1:nX(i,m+1)=1;forj=m:1:1X(i,j)=x(i)*X(i, ri=1:nX(i,m+1)=1;forj=m:1:1X(i,j)=x(i)*X(i, j+1);endA=zeros(n+1,n+1);for)=((j1)/n)^(i1) j+1);endA=zeros(n+1,n+1);for)=((j1)/n)^(i1) ;s(n+1,1))=((j1)/n)^(i1);sfori=0:nwhilek<1; ;s(n+1,1))=((j1)/n)^(i1);sfori=0:nwhilek<1; Cálculo Numérico Notas de Aula

Upload: maicon

Post on 09-Nov-2015

807 views

Category:

Documents


183 download

DESCRIPTION

Apostila de Cálculo Numérico utilizando Matlab

TRANSCRIPT

  • k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f(k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f(b);e_rel=+Inf;whilektolifb);e_rel=+Inf;whilektolifFA*FX
  • Clculo Numrico

    Notas de Aula

    Adalberto Ayjara Dornelles Filho

    [email protected]

    19 de fevereiro de 2015

    verso 11

  • Sumrio

    Apresentao v

    1 Introduo ao Matlab 1

    1.1 Obtendo ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.2 Calculando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.3 Programando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.3.1 Estruturas lgicas de um algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.3.2 Estrutura de sequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    1.3.3 Estruturas de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    1.3.4 Estruturas de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2 Erros e Aritmtica Computacional 14

    2.1 Resoluo de problemas numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.2 Representao numrica de ponto utuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2.3 Erros nos processos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.3.1 Erro de arredondamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.3.2 Erro de truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.4 Notao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    2.5 Estimativas para o erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    2.6 Convergncia nos processos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    i

  • SUMRIO ii

    2.7 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3 Zeros de funes 25

    3.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.2 Mtodo da bisseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.2.1 Critrios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    3.3 Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    3.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4 Sistemas Lineares 34

    4.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.2 Mtodo de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.2.1 Pivotamento Parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.3 Mtodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    4.4 Mtodo de Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    4.4.1 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.5 Mtodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    4.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5 Interpolao 47

    5.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    5.2 Mtodo de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.3 Mtodo de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5.3.1 Frmulas para 2 e 4 nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.3.2 Erro na interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.4 Mtodo do spline cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    5.4.1 Denio e propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.4.2 Deduo dos coecientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.4.3 Determinao do spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

  • SUMRIO iii

    6 Ajuste de funes 61

    6.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    6.2 Resduo quadrtico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    6.3 Ajuste polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    6.3.1 Um pouco de lgebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    6.3.2 Obtendo o polinmio de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    6.4 Ajuste exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    6.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    7 Integrao Numrica 74

    7.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    7.2 Mtodo de Newton-Cotes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    7.2.1 Deduo dos pesos de integrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    7.3 Mtodo de Newton-Cotes composto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    7.4 Mtodo de Newton-Cotes adaptvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    7.5 Mtodo do Spline Cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    7.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    8 Equaes Diferenciais Ordinrias 86

    8.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    8.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    8.3 Mtodo de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    8.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    A Respostas para problemas selecionados 96

  • Lista de Algoritmos

    1 VPol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2 MVander . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3 PivotamentoParcial . . . . . . . . . . . . . . . . . . . . 13

    4 EpsilonMaq . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5 ErroRel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    6 RaizQuadrada . . . . . . . . . . . . . . . . . . . . . . . . 21

    7 ZeroBisseo . . . . . . . . . . . . . . . . . . . . . . . . . 27

    8 ZeroNewton . . . . . . . . . . . . . . . . . . . . . . . . . 29

    9 SLGaussProv . . . . . . . . . . . . . . . . . . . . . . . . . 36

    10 SLGauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    11 ErroRelVet . . . . . . . . . . . . . . . . . . . . . . . . . 39

    12 SLGaussJacobi . . . . . . . . . . . . . . . . . . . . . . . . 40

    13 SLGaussSeidel . . . . . . . . . . . . . . . . . . . . . . . . 42

    14 ILagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    15 CoefSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    16 ISpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    17 AjustePol . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    18 QuadNCAdapt . . . . . . . . . . . . . . . . . . . . . . . . 80

    19 QuadRec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    20 QuadSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . 82

    21 EDOEuler . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    22 EDORK4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    iv

  • Apresentao

    cada vez mais intenso o uso de tcnicas computacionais para a re-

    soluo de problemas nas Cincias Exatas e Engenharias. Boa parte dessas

    tcnicas requer o conhecimento dos fundamentos do Clculo Numrico.

    Diante da importncia dessa disciplina na formao de prossionais, as uni-

    versidades a incluem em seus currculos (em intensidades muito variadas).

    Estas Notas de Aula foram preparadas especicamente para o estudante

    que se inicia nessa disciplina.

    No Captulo 1, veremos uma explicao breve das funcionalidades b-

    sicas do Matlab (incluindo clculo e programao). No Captulo 2, apre-

    sentamos a forma de representao numrica bem como os conceitos de

    erro (de truncamento e arredondamento) inerentes aos processos compu-

    tacionais. O estudo dos mtodos numricos propriamente ditos se iniciam

    no Captulo 3 com os mtodos para determinar zeros de funes (bisse-

    o e Newton). No Captulo 4 estudamos mtodos diretos (escalonamento

    de Gauss) e iterativos (Gauss-Jacobi e Gauss-Seidel) para resoluo de

    sistemas de equaes lineares. No Captulo 5 estudamos o problema da in-

    terpolao polinomial (Vandermonde e Lagrange) e por spline cbico. Em

    seguida, no Captulo 6 estudamos o mtodo dos quadrados mnimos para

    ajuste de curvas polinomiais. O problema clssico da integrao numrica

    estudado no Captulo 7 com a apresentao dos mtodos de Newton-Cotes

    (regras simples, compostas e adaptveis) e por spline cbico. Por m, a

    resoluo de equaes diferenciais ordinrias vista no Captulo 8 a partir

    dos mtodos de Euler e Runge-Kutta. No apndice A, so apresentadas as

    respostas e dicas problemas selecionados.

    Existem muitos mtodos disponveis para resolver cada um dos proble-

    mas abordados. Para tornar o material sucientemente compacto para uso

    em sala de aula tivemos que optar por escolher apenas um punhado deles.

    Seguindo a orientao de Burden e Faires [8], os mtodos foram escolhidos

    de modo a seguir os seguintes critrios:

    Simplicidade: O desenvolvimento e a implementao so suciente-mente claros e simples de modo que o estudante iniciante seja capaz

    entender como funcionam;

    Desempenho: Os algoritmos resolvem satisfatoriamente uma boaquantidade de problemas que o estudante pode encontrar em sua

    vida prossional;

    Base: A maioria das tcnicas mais avanadas toma por base as ideias,ou combinaes de ideias, de mtodos mais simples como os aqui

    estudados.

    O leitor interessado em outros mtodos pode (e deve) recorrer a literatura

    especializada como, por exemplo, [8, 19, 30, 40].

    Para complementar o entendimento da teoria, muitos problemas so

    propostos. Os problemas assinalados pelo smbolo . indicam que o

    mesmo sucientemente simples para ser resolvido mo (com ajuda de

    uma calculadora, se for o caso) ou apresenta alguma resoluo algbrica

    (no numrica). Esse tipo de problema importante para que o estudante

    exercite passo-a-passo e absorva as ideias subjacentes aos mtodo numri-

    cos apresentados

    O estudo do Clculo Numrico no pode ser realizado sem a efetiva

    implementao dos algoritmos em alguma linguagem de programao. O

    presente texto enfatiza essa viso, atravs dos exerccios propostos onde a

    implementao dos algoritmos sempre solicitada nos exerccios precedidos

    pelo smbolo + . Nesse sentido, o conhecimento de alguma linguagem de

    programao deveria ser pr-requisito (o que nem sempre o caso). Aos

    estudantes que j conhecem linguagens de programao, esta disciplina

    ser uma excelente oportunidade de aplicao desse conhecimento. Aos

    v

  • APRESENTAO vi

    que no o possuem, ser uma excelente oportunidade de aprendizagem de

    tais linguagens.

    A princpio, qualquer linguagem pode ser utilizada (C, Pascal, Java,

    ...), desde que apresente os comandos matemticos mnimos necessrios.

    Por preferncia pessoal do autor, estas notas utilizam a linguagem do

    Matlab. Essa aproximao se reete em duas caractersticas do texto:

    Primeiramente, os algoritmos, apresentados em pseudo-cdigo, esto escri-

    tos usando uma estrutura sinttica muito similar a do Matlab o que faz

    com que a implementao seja bastante simplicada. Em segundo lugar,

    ao longo do texto, diversos pargrafos precedidos pelo smbolo mostram

    informaes relativas ao uso do Matlab e aos algoritmos implementados.

    Para os exemplos mostrados nestas notas, foi utilizada a verso R2012a.

    Existem boas opes (livres) ao Matlab: pode-se citar o Scilab e o Freemat.

    O autor agradece aos colegas

    Ana Grisa, Eliana S. Soares, Mnica Scotti,

    Oclide J. Dotto, Vania P. Slaviero,

    pelas correes, comentrios e sugestes recebidas.

    O texto foi editado usando o sistema de preparao de documentos

    L

    A

    T

    E

    X (www.latex-project.org). O editor de texto utilizado foi oWinEdt

    (www.winedt.com). A atualizao de pacotes tipogrcos foi feita com o

    auxlio do MiKTeX (www.miktex.com). Os grcos foram elaborados com

    o software matemtico Matlab (www.mathworks.com) e os desenhos com o

    IPE Draw (ipe7.sourceforge.net).

  • Captulo 1

    Introduo ao Matlab

    Neste captulo, estudaremos brevemente algumas caractersticas e fun-

    cionalidades do Matlab.

    O Matlab (acrnimo de Matrix Laboratory) um software que permite

    ao usurio efetuar clculos via digitao direta de comandos e tambm a

    construo de programas que automatizam procedimentos de clculo mais

    complexos. O Matlab uma ferramenta de larga utilizao tanto no mundo

    acadmico (ensino, pesquisa, etc.) quanto no prossional (desenvolvimento

    de produtos, anlise de problemas, etc.). Tem um interface simples e in-

    tuitiva, e constitui ferramenta indispensvel (na viso do autor) para o

    estudante de cincias exatas e engenharia. Existem vrias e boas refern-

    cias bibliogrcas para o estudante interessado. Para citar apenas uma:

    Essential MATLAB for Engineers and Scientists de Brian D. Hahn e Da-

    niel T. Valentine [24].

    1.1 Obtendo ajuda

    Existem trs nveis de ajuda:

    1. Ao se digitar help na rea de trabalho do Matlab, se ob-

    tm uma breve informao sobre o comando especicado, por exem-

    plo:

    >> help log

    log Natural logarithm.

    log(X) is the natural logarithm of the elements of X.

    Complex results are produced if X is not positive.

    See also log1p, log2, log10, exp, logm, reallog.

    2. No menu HELP >> MATLAB HELP, possvel obter informaes mais

    detalhadas sobre os comandos, exemplos, informaes tcnicas, algo-

    ritmos e referncias bibliogrcas detalhadas.

    3. Na internet, acessando o stio ocial do fabricante (www.mathworks.

    com), possvel acessar o suporte tcnico, fruns de discusso, tuto-

    riais e manuais (em formato PDF), etc.

    1.2 Calculando com o Matlab

    No Matlab, a janela de trabalho o espao onde os comandos so digitados,

    as operaes so executadas e os resultados so mostrados. O smbolo >>,

    chamado prompt, denota que o Matlab est esperando que o usurio digite

    um comando. Aps teclar Enter , o resultado apresentado como mostra

    a Figura 1.1.

    Variveis

    No Matlab, todos os resultados (nmeros, vetores, matrizes, etc.) so

    armazenados em variveis. Os nomes das variveis devem comear com

    uma letra seguida de qualquer nmero de letras, dgitos ou underscores:

    >> a = 3, b = 7, c = a + b

    1

  • CAPTULO 1. INTRODUO AO MATLAB 2

    Figura 1.1: A janela de trabalho do Matlab.

    a = 3

    b = 7

    c = 10

    >> fatorial_de_5 = 5 * 4 * 3 * 2 * 1

    fatorial_de_5 = 120

    Se uma varivel no explicitada pelo usurio, o resultado ser arma-

    zenado na varivel ans:

    >> 7 * 8

    ans = 56

    O Matlab distingue letras maisculas de minsculas. Assim var, VAR,

    e Var representam variveis distintas:

    >> Num_1 = 1234, Num_2 = 4567

    Num_1 = 1234

    Num_2 = 4567

    >> Tot = Num_1 + num_2

    ??? Undefined function or variable 'num_2'.

    No so permitidos diacrticos (acento, cedilha, til, etc.):

    >> soluo = a * b * c

    soluo = a * b * c

    |

    Error: The input character is not valid in MATLAB

    statements or expressions.

    O uso de ; no nal de um comando de atribuio inibe a apresentao

    do resultado:

    >> a = 1 + 3

    a = 4

    >> b = 5 - 2;

    >>

    Comentrios (muito teis em programao) so escritos aps um %:

    >> b = 5; % base

    >> h = 7; % altura

    >> A = b * h % rea do retngulo

    A = 35

    Operaes elementares

    O Matlab realiza operaes matemticas elementares como uma calcula-

    dora.

    As operaes aritmticas elementares:

    Adio, subtrao, multiplicao, diviso:

    >> 4 + 5 % adio

    ans = 9

    >> 4 - 5 % subtrao

    ans = -1

    >> 4 * 5 % multiplicao

    ans = 20

    >> 4 / 5 % diviso

    ans = 0.8000

    >> 1 * 2 + 3 / 4 - 5 % Qual o resultado?

  • CAPTULO 1. INTRODUO AO MATLAB 3

    Potenciao, raiz quadrada e outras razes:

    >> a = sqrt(5), b = a^2

    a = 2.2361

    b = 5.0000

    >> a = 7^(1/3), b = a^3

    a = 1.9129

    b = 7.0000

    Valor absoluto, resto da diviso inteira:

    >> n = abs(-500)

    n = 500

    >> r = rem(n, 3)

    r = 2

    Arredondamento:

    >> x = sqrt(10)

    x = 3.1623

    >> a = floor(x), b = ceil(x), c = round(x)

    a = 3 % arredonda para o inteiro inferior

    b = 4 % arredonda para o inteiro superior

    c = 3 % arredonda para o inteiro mais prximo

    Operaes trigonomtricas:

    O nmero pi:

    >> pi

    ans = 3.1416

    Seno, cosseno e tangente de um ngulo em radianos:

    >> a = sin(pi/3), b = cos(pi/3), c = tan(pi/3)

    a = 0.8660

    b = 0.5000

    c = 1.7321

    Seno, cosseno e tangente de um ngulo em graus:

    >> a = sind(60), b = cosd(60), c = tand(60)

    a = 0.8660

    b = 0.5000

    c = 1.7321

    Funes trigonomtricas inversas

    >> t1 = asin(sqrt(2)/2), t2 = asind(sqrt(2)/2)

    t1 = 0.7854 % ngulo em radianos

    t2 = 45.0000 % ngulo em graus

    Exponencial e Logaritmo:

    Potncia de base natural: ex

    >> exp(4)

    ans = 54.5982

    Logaritmos: lnx, log10 x, log2 x

    >> log(5) % logaritmo de base natural

    ans = 1.6094

    >> log10(1000) % logaritmo de base 10

    ans = 3

    >> log2(512) % logaritmo de base 2

    ans = 9

    Vetores e matrizes

    O Matlab opera com vetores e matrizes com facilidade.

    Vetor denido por seus elementos:

    >> x = [1 2 3 4 5]

    x = 1 2 3 4 5

    Vetor denido por intervalo de valores:

  • CAPTULO 1. INTRODUO AO MATLAB 4

    >> y = 1 : 0.5 : 3

    y = 1.0000 1.5000 2.0000 2.5000 3.0000

    Operaes com o vetores:

    >> x + y % adio

    ans = 2.0000 3.5000 5.0000 6.5000 8.0000

    >> x .* y % multiplicao elemento-elemento

    ans = 1 3 6 10 15

    >> x.^2 % potncia dos elementos

    ans =

    1 4 9 16 25

    >> exp(y) % operaes elementares

    ans = 2.7183 4.4817 7.3891 12.1825 20.0855

    >> dot(x, y) % produto escalar entre x e y

    ans = 35

    >> n = length(x) % tamanho do vetor

    n = 5

    Matriz denida por seus elementos:

    >> A = [-2 0 1; -2 -3 0; 3 -2 -2] % uma matriz 3x3

    A =

    -2 0 1

    -2 -3 0

    3 -2 -2

    Operaes matriciais:

    >> det(A) % o determinante de A

    ans = 1

    >> inv(A) % a matriz inversa da A

    ans =

    6.0000 -2.0000 3.0000

    -4.0000 1.0000 -2.0000

    13.0000 -4.0000 6.0000

    >> A^2 % multiplicando matrizes: A * A

    ans =

    7 -2 -4

    10 9 -2

    -8 10 7

    >> A.^2 % cada elemento de A ao quadrado

    ans =

    4 0 1

    4 9 0

    9 4 4

    >> [l, c] = size(A) % nmero de linhas e colunas de A

    l = 3

    c = 3

    Os comandos length e size so semelhantes mas tm uso distinto: o

    primeiro indicado para determinar o tamanho de um vetor enquanto o

    ltimo indicado para determinar o tamanho de uma matriz.

    Transposio de vetores e matrizes:

    >> A = [1 2 3; 4 5 6], x = [2 4 6]

    A =

    1 2 3

    4 5 6

    x =

    2 4 6

    >> A', x'

    ans =

    1 4

    2 5

    3 6

    ans =

    2

    4

    6

    Matrizes especiais:

  • CAPTULO 1. INTRODUO AO MATLAB 5

    >> B = zeros(3,2) % matriz de zeros

    B =

    0 0

    0 0

    0 0

    >> W = ones(2,3) % matriz de uns

    W =

    1 1 1

    1 1 1

    >> I = eye(3) % matriz identidade

    I =

    1 0 0

    0 1 0

    0 0 1

    >> rand(2,4) % matriz com elementos aleatrios

    ans =

    0.6223 0.4123 0.1355 0.2896

    0.7159 0.3622 0.9021 0.7814

    Comandos teis para vetores e matrizes

    Os comandos max, min e sum, so bastante teis na manipulao de vetores:

    >> x = [4 -2 5 0 -3] % Um vetor x

    x =

    4 -2 5 0 -3

    >> M = max(x) % O maior elemento de x

    M =

    5

    >> m = min(x) % O menor elemento de x

    m =

    -3

    >> S = sum(x) % A soma dos elementos de x

    S =

    4

    Os comandos acima funcionam tambm para matrizes:

    >> A = [1 5; 3 -4] % Uma matriz A

    A =

    1 5

    3 -4

    >> M = max(A) % Os maiores elementos de cada coluna de A

    M =

    3 5

    >> MM = max(max(A)) % O maior elemento de A

    MM =

    5

    >> S = sum(A) % A soma dos elementos de cada coluna de A

    S =

    4 1

    >> S = sum(sum(A)) % A soma de todos os elementos de A

    S =

    5

    Os colchetes [ ] podem ser usados para justapor (concatenar) vetores

    ou matrizes:

    >> A = [1 2; 4 5], b = [3; 6]

    A =

    1 2

    4 5

    b =

    3

    6

    >> Ab = [A b]

    Ab =

    1 2 3

    4 5 6

    Funo annima

    O comando @ dene funes a partir de expresses algbricas. Por exemplo:

  • CAPTULO 1. INTRODUO AO MATLAB 6

    >> f = @(z) 1/sqrt(2*pi) * exp(-0.5 * z.^2)

    f =

    @(z)1/sqrt(2*pi)*exp(-0.5*z.^2)

    >> a = f(0), b = f(1)

    a =

    0.3989

    b =

    0.2420

    >> z = 0 : 5, d = f(z)

    z =

    0 1 2 3 4 5

    d =

    0.3989 0.2420 0.0540 0.0044 0.0001 0.0000

    >>

    A varivel f pode ser passada como argumento para outras funes,

    como no exemplo a seguir, onde o comando quad calcula a integral da

    funo no intervalo 2 < z < 2:>> P = quad(f, -2, 2)

    P =

    0.9545

    Grcos

    O Matlab possui uma variedade de comandos para produzir grcos. O

    comando plot, para grcos bidimensionais, o mais simples deles.

    >> z = -4 : 0.1 : 4; % valores para z

    >> d = f(z); % valores para f(t)

    >> plot(z, d ,'r--') % grfico

    >> grid on % grade

    >> xlabel('valor da varivel aleatria') % rtulo horiz.

    >> ylabel('densidade de probabilidade') % rtulo vert.

    >> title('Distribuio normal padro') % ttulo

    A Figura 1.2 mostra o resultado dos comandos.

    Figura 1.2: Janela grca do Matlab com um grco 2D simples.

  • CAPTULO 1. INTRODUO AO MATLAB 7

    1.3 Programando com o Matlab

    O Matlab permite a execuo de conjuntos de comandos a partir de pro-

    gramas. Os programas so arquivos de texto escritos em um editor de

    programas. A Figura 1.3 mostra a janela de edio.

    Figura 1.3: A janela de edio de programas com uma function.

    Os programas do Matlab so de dois tipos: scripts e functions. Os

    scripts so programas que realizam operaes especcas com dados xos

    enquanto functions realizam operaes mais genricas com entrada e sada

    de dados.

    Exemplo: Um script para o clculo da mdia harmnica:

    clear all

    clc

    P1 = 7.6

    P2 = 8.1

    P3 = 8.6

    H = 3 / (1/P1 + 1/P2 + 1/P3)

    Exemplo: Uma function para o clculo da mdia harmnica:

    function H = MH2(P1, P2, P3)

    H = 3 / (1/P1 + 1/P2 + 1/P3);

    O quadro a seguir, resume as principais diferenas entre scripts e func-

    tions:

    script function

    Uso: especco geral

    Variveis: globais (workspace) locais

    Entrada de dados: workspace ou no corpo do texto argumentos

    Sada de dados: workspace ou eco na tela argumentos

    A Figura 1.3 mostra a janela de edio com uma function e a Figura 1.4

    mostra a janela de edio com um script. Observe a sintaxe do cabealho

    da function. Observe tambm a forma como os dados esto inclusos no

    corpo do script.

    1.3.1 Estruturas lgicas de um algoritmo

    Um algoritmo uma sequncia determinada de passos para a resoluo

    de algum problema. Do ponto de vista lgico, existem 3 estruturas que

    determinam quais, e como, os passos devem ser executados:

    Sequncia: determina qual passo deve ser executado antes de outro; Deciso: determina se um conjunto de passos deve ou no ser exe-cutado;

    Repetio: determina se (e quantas vezes) um conjunto de passosdeve ser repetido.

    A seguir veremos como essas estruturas lgicas podem ser implemen-

    tadas na linguagem do Matlab, isto , qual a sintaxe dos comandos

    utilizados

  • CAPTULO 1. INTRODUO AO MATLAB 8

    Figura 1.4: A janela de edio de programas com um script.

    1.3.2 Estrutura de sequncia

    No Matlab os comandos so executados um de cada vez (no h processa-

    mento paralelo). E a sintaxe simples: os comandos so escritos um a um

    de cima para baixo. Embora seja possvel, no se recomenda escrever dois

    comando em uma mesma linha.

    Exemplo: Determinao das razes de uma equao quadrtica

    ax2 + bx+ c = 0 com a 6= 0:

    clear all

    clc

    a = 1

    b = 2

    c = -4

    d = b^2 - 4*a*c

    x1 = (-b + sqrt(d))/(2*a)

    x2 = (-b - sqrt(d))/(2*a)

    1.3.3 Estruturas de deciso

    O Matlab possui duas estruturas de deciso bsicas: if...else...end e

    switch...case.

    Exemplo: Clculo da mdia harmnica com if...else...end:

    function [H, C] = MH3(P1, P2, P3)

    % Calcula mdia harmnica

    if P1 = 7.0

  • CAPTULO 1. INTRODUO AO MATLAB 9

    C = 2;

    elseif H >= 6.0

    C = 1;

    else

    C = 0;

    end

    Exemplo: Clculo do intervalo de conana para uma estimativa de

    mdia, com switch...case:

    function [a, b] = ICMed(xb, sig, n, alfa, L)

    switch L

    % IC lateral esquerdo

    case -1

    z_alfa = norminv(1 - alfa);

    a = -inf;

    b = xb + z_alfa * sig / sqrt(n);

    % IC bilateral

    case 0

    z_alfa_2 = norminv(1 - alfa/2);

    a = xb - z_alfa_2 * sig / sqrt(n);

    b = xb + z_alfa_2 * sig / sqrt(n);

    % IC lateral direito

    case +1

    z_alfa = norminv(1 - alfa);

    a = xb - z_alfa * sig / sqrt(n);

    b = +inf;

    end

    1.3.4 Estruturas de repetio

    So duas as estruturas de repetio no Matlab: A estrutura for...end e

    a estrutura while...end.

    Exemplo: Clculo da tabuada com for...end:

    function T = Tabuada(n)

    T = zeros(10,1);

    for i = 1 : 10

    T(i) = i * n;

    end

    Exemplo: Clculo da tabuada com for...end aninhados:

    clear all

    clc

    T = zeros(10,10);

    for j = 1 : 10 % para cada coluna j ...

    for i = 1 : 10 % para cada linha i ...

    T(i,j) = i * j;

    end

    end

    T

    Exemplo: Encontrando uma matriz singular com while...end:

    function [A] = MatrizSingular(n)

    D = 1; % para "entrar" no lao...

    while D ~= 0

    A = fix(20 * rand(n) - 10);

    D = det(A);

    end

    Exemplo: Ordenamento de uma lista com vrias estruturas:

    function [L] = Ordenar(L)

    % Mtodo 'Bubble Sort'

    % Inicializao

    n = length(L);

    cont = 1;

    % Enquanto ocorrerem trocas...

    while cont > 0

    cont = 0;

    % ... faz varredura na lista

  • CAPTULO 1. INTRODUO AO MATLAB 10

    for i = 1 : n - 1

    % Se elementos fora de ordem...

    if L(i) > L(i + 1)

    temp = L(i);

    L(i) = L(i + 1);

    L(i + 1) = temp;

    cont = cont + 1;

    end

    end

    end

    1.4 Problemas

    Comandos do Matlab

    Nos problemas 1.1 a 1.6 a seguir, escreva a linha de comando do Matlab necessria

    para calcular os valores dados. Justique.

    1.1. a = 25, b =

    7.

    1.2. a = e2, b = 3

    2, c = 38.1.3. a = cos(60), b = tg(pi/4).

    1.4. a = log(1000), b = ln(1000), c = log2(1000).

    1.5. a = |5|, b = 9!.1.6. a = 3,5603 104 + 2,0034 103.

    Nos problemas 1.7 a 1.10 a seguir, escreva a linha de comando do Matlab

    necessria para construir os vetores dados. Justique.

    1.7. x = [6 2 0 5] (um vetor-linha), y = [6 2 0 5]T (um vetor-coluna).

    1.8. w = [0,0 0,1 0,2 9,8 9,9 10,0].1.9. z = [0 0 0 0 0 0] (um vetor-linha com 20 zeros).1.10. u = [1 1 1 1 1 1]T (um vetor-coluna com 20 uns).

    Nos problemas 1.11 e 1.12 a seguir, escreva a linha de comando do Matlab

    necessria para construir as matrizes dadas. Justique.

    1.11. A =

    [1 74 3

    ].

    1.12. B =

    0 1 23 3 11 0 3

    2 1 1

    .Nos problemas 1.13 a 1.18 a seguir, determine o resultado do comando no

    Matlab. Justique.

    1.13. >> a = 1 + 2 / 3 - 4 * 5

    1.14. >> x = 30, b = sin(x) * cos(x)

    1.15. >> y = 100, c = sqrt(y) - log(y)

    1.16. >> z = 0.0001, d = abs(log10(z))

    1.17. >> w = pi/2, e = exp(cos(w))

    1.18. >> A = [1 2 3; 4 5 6], [m, n] = size(A)

    Ao se digitar os comandos mostrados nos problemas 1.19 a 1.22 a seguir, se

    obtm mensagens de erro. O que elas signicam? Como corrigir o comando?

    1.19. >> a = ln(5)

    Undefined function 'ln' for input arguments of type 'double'.

    1.20. >> y = 1 + e^3

    Undefined function or variable 'e'.

    1.21. >> t = cos(3,1416)

    Error using cos

    Too many input arguments.

    1.22. >> x = 16, y = sqrt(X)

    Undefined function or variable 'X'.

    1.23. Ao calcular o vetor de coecientes de um polinmio interpolador, um es-

    tudante obteve o seguinte resultado:

    c =

    1.0e+003 *

    0.0033

    0.1742

    -6.6277

  • CAPTULO 1. INTRODUO AO MATLAB 11

    Quais so os valores dos coecientes? Qual o polinmio?

    Nos problemas 1.24 a 1.27 a seguir, desenhe os grcos das funes mostra-

    das. Adicione grade, legenda, rtulos nos eixos x e y e ttulo. Use os comandosplot, grid, legend, xlabel, ylabel, title.

    1.24. f(x) = x2 + x 41.25. g(x) = ex 11.26. h(x) = 2 + 3 cos(pix)

    1.27. i(x) =x+ 1

    x 11.28. Se C uma matriz de ordem nm, p um nmero real e i e j so inteirospositivos tais que 1 i, j n. O que fazem as seguintes linhas de cdigo?Justique. D um exemplo. (Estas operaes sero utilizadas nos algoritmos do

    Captulo 4).

    >> C(i,:) = C(i,:) + p * C(j,:);

    >> T = C(i,:);

    >> C(i,:) = C(j,:);

    >> C(j,:) = T;

    Programao no Matlab

    1.29. (a) Escreva um script que gera um vetor de 5 elementos aleatrios e, em se-

    guida, calcula a mdia aritmtica desses elementos. (b) Escreva uma function que

    recebe um vetor de n elementos e retorna a mdia aritmtica dos seus elementos.(c) Compare os resultados com o comando mean.

    1.30. (a) Escreva um script que gera um vetor de n elementos aleatrios e, emseguida, determina o valor e a localizao do maior elemento do vetor. (b) Escreva

    uma function que recebe um vetor de n elementos e retorna o valor e a posiodo maior elemento do vetor. (c) Compare os resultados com o comando max.

    1.31. Escreva uma function que calcula a soma de todos os elementos de uma

    matriz A dada. Compare o resultado com o comando sum.

    1.32. Com trs segmentos de reta de comprimento a, b e c somente possvelconstruir um tringulo se o comprimento de cada segmento menor que a soma

    dos outros dois. Escreva uma function que recebe os comprimentos a, b e c de3 segmentos de reta e retorna o valor 1 se eles podem representar lados de um

    tringulo e 0 em caso contrrio.

    1.33. Escreva uma function que recebe um inteiro n e retorne um vetor d con-tendo todos os divisores de n entre 1 e n, inclusive. Use os comandos mod ourem.

    1.34. Escreva uma function que recebe um inteiro n e retorna o valor 1 se n primo e 0 se n composto. Compare os resultados com o comando isprime.Sugesto: modique a function do problema anterior.

    1.35. Considere a funo polinomial

    F (x) = 3x4 2x3 + 7x2 5x+ 4.Essa funo pode ser reescrita na forma fatorada de Horner

    1

    :

    H(x) = (((3x 2)x+ 7)x 5)x+ 4.Do ponto de vista computacional, essa forma fatorada preferida por realizar

    uma quantidade menor de operaes.

    (a) Verique esse fato determinando quantas operaes de multiplicao e adio

    so necessrias para calcular F (x) e H(x). Considere que o clculo de xn efetuado com multiplicaes.

    (b) Generalize o resultado do item anterior para o caso de um polinmio de grau

    m.

    1.36. + Implemente o algoritmoVPol que usa a forma de Horner para avaliaopolinomial, isto , recebe um vetor c com os coecientes de uma funo polinomialp, o valor x e determina y = p(x). Use y = y .* x + c(i) para implementara linha 4, assim x pode ser tanto um escalar quanto um vetor. Compare com ocomando polyval do Matlab. (Esse algoritmo ser utilizado no Captulo 5).

    1.37. Em 1674, Leibniz

    2

    mostrou que o nmero pi pode ser calculado pela srie

    pi = 4

    (1 1

    3+

    1

    5 1

    7+

    ),

    1 William George Horner (1786 - 1837), clrigo metodista e estudioso ingls, conhe-cido pelo mtodo (que leva seu nome) de resoluo de equaes algbricas publicado em

    A new method of solving numerical equations of all orders, by continuous approximation

    em 1819. No entanto o mtodo no original, foi antecipado no sculo XIX por Paolo

    Runi na Itlia e, antes disso, no sculo XIII por Zhu Shijie na China [38].

    2 Gottfried Wilhelm von Leibniz (1646 - 1716), matemtico e lsofo alemo,desenvolveu a teoria do Clculo ( dele a notao

    dydx) na mesma poca que Newton.

    conhecido ainda pelos estudos na aritmtica binria e pelo desenvolvimento de uma

    mquina mecnica de calcular. Tanto quanto matemtico, Leibniz foi importante lsofo

    e, entre outros temas, tratou do problema da conciliao da noo do mal em um mundo

    criado por um deus bom [38].

  • CAPTULO 1. INTRODUO AO MATLAB 12

    Algoritmo 1 VPol

    entrada : c, xsada : y1: n tamanho de c2: y 03: para i 1 : n4: y y x+ ci5: m

    [4, p. 132]. Escreva uma function que recebe um valor n e que retorna umaaproximao P (n) para o valor de pi usando os n primeiros termos da srie.Quantos termos so necessrios para se obter uma aproximao P cuja diferenapara o valor exato de pi seja menor que 0,0005?

    1.38. + Implemente o algoritmo MVander, que recebe um vetor x =[x1, x2, . . . , xn]T

    e um inteiro positivo m e retorna a matriz

    X =

    xm1 x21 x1 1xm2 x22 x2 1.

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    xmn x2n xn 1

    ,denominada matriz de Vandermonde

    3

    . Esse algoritmo ser utilizado nos Ca-

    ptulos 5 e 6. Compare com o comando vander do Matlab.

    1.39. A sequncia

    1, 1, 2, 3, 5, 8, 13, 21, . . .

    conhecida como sequncia de Fibonacci

    4

    . Ela pode ser escrita recursivamente

    3 Alexandre-Thophile Vandermonde (1735 - 1796), matemtico francs, conhe-cido como o fundador da teoria do determinante de uma matriz. Embora j utilizados

    na resoluo de sistemas lineares, as propriedades algbricas dos determinantes ainda

    no eram bem conhecidas. de Vandermonde a demonstrao do efeito da permutao

    de linhas ou colunas de uma matriz sobre seu determinante. Dessa propriedade, deduziu

    que se duas linhas ou colunas de uma matriz so iguais, o seu determinante zero [38].

    4 Leonardo Pisano (1170 - 1250), matemtico italiano, mais conhecido por seuapelido Fibonacci, teve papel importante na histria da matemtica. Seu livro Liber

    Abaci de 1202 introduziu a notao decimal posicional com algarismos hindu-arbicos

    que usamos at hoje. A sequncia numrica que leva seu nome a soluo de um

    problema envolvendo a reproduo de coelhos. A revista The Fibonacci Quarterly,

    editada ininterruptamente desde 1963, publica artigos sobre a matemtica relacionada

    a essa sequncia [38] [17, p. 108].

    Algoritmo 2 MVander

    entrada : x, msada : X1: n tamanho de x2: X Zeros(n,m+ 1)3: para i 1 : n4: Xi,m+1 15: para j m : 1 : 16: Xi,j xi Xi,j+17: m

    8: m

    com

    F1 = 1, F2 = 1, Fk = Fk1 + Fk2.

    Escreva uma function que recebe um inteiro positivo k 2 e retorna a razo

    Rk =FkFk1

    .

    Observe que a medida que k aumenta, a razo Rk aproxima-se de um certonmero. Que nmero esse?

    1.40. + Implemente o algoritmo PivotamentoParcial que recebe uma matrizC, seu nmero de linhas n e um inteiro j tal que 1 j n 1. Em seguida,procura entre os elementos da coluna j, nas linhas i j o elemento de maiorvalor absoluto p (denominado piv). Se p est na linha i, sendo i 6= j, entopermuta as linhas i e j entre si. O programa retorna a matriz C pivotada. Essealgoritmo ser utilizado pelo algoritmo SLGauss (p. 37) no Captulo 4.

  • CAPTULO 1. INTRODUO AO MATLAB 13

    Algoritmo 3 PivotamentoParcial

    entrada : C, n, jsada : CInicializao

    1: p |Cj,j |2: k jBusca piv

    3: para i j + 1 : n4: se |Ci,j | > p ento5: p |Ci,j |6: k i7: m

    8: m

    Pivotamento impossvel

    9: se p = 0 ento10: Erro: Pivotamento impossvel

    11: m

    Permutao das linhas j e k12: se k > j ento13: T Cj,:14: Cj,: Ck,:15: Ck,: T16: m

  • Captulo 2

    Erros e Aritmtica Computacional

    Ao contrrio do senso comum, o computador no uma mquina de cal-

    cular perfeita. Os clculos efetuados no computador esto sujeitos a erros

    (em maior ou menor magnitude). A compreenso da natureza desses erros

    permite estabelecer estratgias (algoritmos) para a resoluo de problemas.

    Neste captulo abordaremos a forma com que os nmeros so armazena-

    dos pelo computador e como os erros aparecem. Veremos tambm uma

    estratgia geral de abordagem dos algoritmos numricos: os renamentos

    sucessivos.

    2.1 Resoluo de problemas numricos

    Resolver problemas uma arte. Nas Cincias e Engenharias, o computador

    cumpre um papel importante no processo de resoluo de problemas, espe-

    cialmente naqueles onde o uso de clculos aritmticos intenso. O processo

    de resoluo de problemas numricos segue, em geral, os seguintes passos:

    1. Denio do problema: O que se quer resolver? Qual a natureza

    do problema? terico ou prtico? Quais as informaes dispon-

    veis? Quais reas do conhecimento so aplicveis?

    2. Modelagem matemtica: Como representar o problema matema-

    ticamente? Desenho, esquemas, equaes, frmulas?

    3. Resoluo do problema matemtico: Existe soluo? nica?

    Como determinar a soluo? possvel encontrar soluo exata (ana-

    ltica) ou devemos optar por uma soluo aproximada (numrica)?

    No caso de se optar por uma resoluo numrica:

    1. Determinao do mtodo: Existe algum mtodo (algoritmo) dis-

    ponvel? Qual mtodo mais indicado? Alguma adaptao ou ela-

    borao necessria?

    2. Codicao e implementao: Qual a linguagem a ser utili-

    zada? Em que mquina ou sistema o programa vai rodar? O pro-

    grama est funcionando corretamente?

    3. Processamento: Resolver o problema.

    4. Anlise de resultados: O resultado o esperado? soluo para

    o problema? Qual a estimativa de erro? Qual a preciso do

    resultado?

    Exemplo 2.1. Consideremos o problema seguinte. Uma esfera de

    madeira (densidade relativa e = 0,638) e raio r = 10 cm colocadaa utuar sobre a gua (densidade relativa a = 1) conforme mostraa Figura 2.1. Qual a altura d da esfera que car submersa? [30,p. 43]

    Soluo: Para encontrar o valor de d, inicialmente observamos que, peloPrincpio de Arquimedes

    1

    , o peso da esfera deve ser equilibrado pelo peso

    da gua deslocada por sua poro submersa:

    14

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 15

    dr

    a

    e

    Figura 2.1: Uma esfera utuante.

    Meg = Mag

    e4pir3

    3= a

    d0

    pi[r2 (x r)2

    ]dx

    = apid2(3r d)

    3

    4er3 = ad

    2(3r d). (2.1)

    Aps a substituio de valores, a expresso (2.1) pode ser reescrita como

    d3 30d2 + 2552 = 0. (2.2)

    A soluo do problema consiste em encontrar o valor de d que satisfaz(2.2). A soluo analtica de (2.2), embora existente, um tanto complicada

    (veja o Problema 3.27). A soluo numrica pode ser obtida calculando os

    valores de f(x) = x3 30x2 + 2552 de forma sistemtica.Na primeira tabela mostrada a seguir vemos os valores de x e f(x)calculados no intervalo 0 x 20. Como a funo contnua e troca desinal no intervalo 10 x 12 (assinalado com *), deduzimos que o valorprocurado de d est dentro desse intervalo. A segunda tabela mostra osvalores calculados no intervalo renado 10,0 x 12,0. Por raciocniosemelhante deduzimos que 11,8 < d < 12,0, depois que 11,86 < d < 11,88 epor m 11,860 < d < 11,862.

    x f(x) x f(x) x f(x) x f(x)0 2552 10,0 552,0 11,80 17,83 *11,860 0,4349

    2 2440 10,2 492,0 11,82 12,03 *11,862 -0,1444

    4 2136 10,4 432,1 11,84 6,23 11,864 -0,7235

    6 1688 10,6 372,2 *11,86 0,43 11,866 -1,3027

    8 1144 10,8 312,5 *11,88 -5,36 11,868 -1,8818

    *10 552 11,0 253,0 11,90 -11,14 11,870 -2,4608

    *12 -40 11,2 193,7 11,92 -16,92 11,872 -3,0398

    14 -584 11,4 134,7 11,94 -22,70 11,874 -3,6187

    16 -1032 11,6 76,1 11,96 -28,47 11,876 -4,1977

    18 -1336 *11,8 17,8 11,98 -34,24 11,878 -4,7765

    20 -1448 *12,0 -40,0 12,00 -40,00 11,880 -5,3553

    Assim um valor aceitvel para a poro d da esfera que carsubmersa d 11,861 cm.

    Importante: O Exemplo 2.1 demonstra um recurso muito comum na

    resoluo de problemas numricos: a partir de uma estimativa inicial de

    soluo, segue uma sequncia de renamentos que convergem para uma

    estimativa nal de soluo com a qualidade desejada.

    1 Arquimedes de Siracusa (287 a. C. - 212 a. C.) foi o maior matemtico de suapoca. Seu principal legado so suas contribuies na geometria onde seus mtodos

    para determinao de reas e volumes anteciparam o clculo integral dois mil anos

    antes de Newton e Leibniz. Homem bastante prtico, inventou uma grande variedade

    de mquinas e dispositivos, incluindo polias e bombas d'gua [38].

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 16

    2.2 Representao numrica de ponto utuante

    Na maioria dos computadores, os nmeros so representados na base bin-

    ria normalizada (semelhante a notao cientca). Por exemplo,

    x = (5,125)10

    = 4 + 1 + 0,125

    = 22 + 20 + 23

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

    = (1,01001)2 22= (1,01001)2 2(10)2= (1,f)2 2(e)2 ,onde f = 01001 e e = 10 so, respectivamente, a parte fracionria e oexpoente da representao binria de ponto utuante de x.

    Nos sistemas computacionais que utilizam o padro aritmtico IEEE

    754, um nmero representado por uma sequncia de k dgitos binrios(bits)

    (s, e1, e2, . . . , ep, f1, f2, . . . , ft) .

    O bit s representa o sinal no nmero: s = 0 para nmeros positivos es = 1 para nmeros negativos. Os bits f1f2 . . . ft = f representam a partefracionria do nmero. Os bits e1e2 . . . ep esto associados ao expoente edo nmero. Aqui os detalhes tcnicos so um tanto complicados mas pode-

    mos simplicar um pouco dizendo que o expoente e est em um intervaloespecicado por [emin, emax].

    A mais importante consequncia dessa representao que, ao contrrio

    do conjunto R dos nmeros reais, o conjunto F dos nmeros efetivamenterepresentveis pela mquina intrinsecamente nito, discreto e limitado.

    Isto , nem todo nmero real pode ser representado na mquina.

    A Figura 2.2 mostra os nmeros de ponto utuante (positivos) repre-

    sentveis com os parmetros t = 2, emin = 2 e emax = 2.Observe que apenas vinte valores positivos so representveis (pois F nito). Observe que existe um espao entre cada dois nmeros (pois

    Figura 2.2: Nmeros de ponto utuante com parmetros t = 2, emin = 2e emax = 2.

    F discreto), bem como a existncia de um maior nmero Fmax e de ummenor nmero Fmin (pois F limitado).Nos padro IEEE 754, os nmeros de ponto utuante so representados

    por um conjunto de k = 64 bits com t = 52 bits para a parte fracionria ep = 11 para o expoente.

    Observemos que o espao entre (1.00...00)2 e (1.00...01)2 tem tamanho

    = 2t = 252 2,2204 1016. (2.3)Isso determina a preciso da representao numrica.

    Usando o Matlab: Para obter a preciso da mquina usamos o comando

    >> eps

    ans = 2.2204e-016

    Observe-se que

    >> 1 + eps > 1

    ans = 1 (verdadeiro!)

    >> 1 + eps/2 > 1

    ans = 0 (falso!)

    O algoritmo EpsilonMaq calcula a preciso de qualquer sistema com-

    putacional.

    Com p = 11 dgitos so possveis 211 = 2048 combinaes que repre-sentam 2046 expoentes, desde emin = 1022 at emax = 1023. O maiornmero representvel

    Fmax = (2 ) 2emax = (1,11...11)2 21023 1,7977 10308. (2.4)

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 17

    Algoritmo 4 EpsilonMaq

    entrada : nenhuma

    sada : 1: t 12: enquanto 1 + t > 13: t t/24: m

    5: 2t

    Usando o Matlab: O maior nmero representvel dado pelo comando

    >> realmax

    ans = 1.7977e+308

    Observe-se que,

    >> realmax + 1 > realmax

    ans = 0 (falso!)

    >> 2*realmax

    ans = Inf (overflow!)

    O menor nmero representvel (normalizado)

    Fmin = 1 2emin = (1,00...00)2 21022 2,2251 10308. (2.5)

    Usando o Matlab: O menor nmero representvel dado pelo comando

    >> realmin

    ans = 2.2251e-308

    O menor nmero representvel (no-normalizado)

    (0,00...01)2 21022 = 21022 4,9407 10324.

    Usando o Matlab: No Matlab,

    >> a = eps * 2^-1022

    a = 4.9407e-324

    >> b = a/2

    b = 0 (underflow!)

    As duas combinaes no utilizadas para o expoente so reservadas

    para os valores especiais NaN (Not a Number) que representa resultados

    aritmticos indenidos e Inf que representa overow.

    Usando o Matlab: Alguns resultados de operaes aritmticas:

    >> 1/0

    ans = Inf

    >> 0/0

    ans = NaN

    Exemplo 2.2. Os parmetros utilizados na representao numrica

    mostrada na Figura 2.2 so t = 2, emin = 2 e emax = 2. Determineos valores de , Fmin e Fmax.

    Soluo: Usando as equaes (2.3), (2.4) e (2.5) temos

    = 2t = 22 = 0,25

    Fmin = 1 2emin = 1 22 = 0,25Fmax = (2 ) 2emax = (2 0,25) 22 = 7

    2.3 Erros nos processos numricos

    Em decorrncia do que foi visto nas sees anteriores, os clculos aritm-

    ticos efetuados pela mquina estaro impregnados de algum tipo de im-

    preciso, de erro. Nesta seo descrememos, de forma sucinta, dois tipos

    bsicos de erros: o erro de arredondamento e o erro de truncamento.

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 18

    2.3.1 Erro de arredondamento

    O erro de arredondamento devido a representao numrica nita da

    mquina. Por exemplo, o nmero pi irracional e sua representao decimaltem innitos dgitos. No entanto a mquina armazena e apresenta apenas

    uma quantidade nita de dgitos. O Matlab realiza clculos usando uma

    preciso de 52 dgitos binrios e apresenta seus resultados arredondados

    em, no mximo, 16 dgitos decimais:

    Usando o Matlab:

    >> format long

    >> pi

    ans = 3.141592653589793

    Tambm pode ocorrer erro de arredondamento quando um nmero na

    base 10 convertido para a base 2. Por exemplo, o nmero 0,6 possuirepresentao decimal nita mas representao binria innita:

    (0,6)10 = (0,1001100110011 . . .)2.

    Esse tipo de situao pode acarretar erros de arredondamento nas ope-

    raes aritmticas de ponto utuante. Por exemplo:

    Usando o Matlab:

    >> a = 0.1 + 0.2 + 0.3 + 0.4, b = 0.4 + 0.3 + 0.2 + 0.1

    a =

    1

    b =

    1.0000

    >> a == b

    ans =

    0

    >> format hex, a, b

    a =

    3ff0000000000000

    b =

    3fefffffffffffff

    Cada dgito hexadecimal representa quatro dgitos binrios: (0)16 =(0000)2, (1)16 = (0001)2, (2)16 = (0010)2, ..., (e)16 = (1110)2, (f)16 =(1111)2.

    No formato hexadecimal, os trs primeiros dgitos representam os bits do

    sinal e do expoente e os demais representam os bits da parte fracionria [33].

    Assim, podemos visualizar a diferena na representao binria nos dois valo-

    res a e b.

    2.3.2 Erro de truncamento

    O erro de truncamento devido a interrupo de processos innitos. Por

    exemplo, o processo de clculo do valor de d no Exemplo 2.1 foi interrom-pido no intervalo

    11,860 d 11,862.Poderamos ter levado o processo adiante e ter encontrado o intervalo

    11,861501508120412 d 11,861501508120413.No entanto, no poderamos renar (subdividir) mais esse intervalo pois

    a preciso da mquina no permite distinguir extremos de intervalos de

    tamanho menor que esse.

    Por exemplo, a constante de Euler

    2

    (e = 2,7183 . . .) pode ser obtidapela srie innita

    e =

    +k=0

    1

    k!= 1 + 1 +

    1

    2!+

    1

    3!+

    1

    4!+

    1

    5!+ (2.6)

    Computacionalmente, no possvel somar os innitos termos de (2.6),

    logo a srie deve ser truncada. A soma dos trs primeiros termos 2,5000enquanto a soma dos seis primeiros termos 2,7167. Quanto mais termos,maior ser a quantidade de dgitos corretos.

    2.4 Notao

    No estudo dos erros computacionais, alguns termos e denies (bem como

    sua notao) so importantes. Seguem alguns:

    2

    Ver nota biogrca na p. 86

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 19

    1. Valor exato, x. O valor verdadeiro, correto, real, de uma varivel.Em geral, a soluo procurada de algum problema. Por exemplo,

    x = e = 2,718281828459046...

    2. Valor aproximado, x. Aproximao para o valor exato, estimativa,impregnada de algum erro. Em geral, a resposta de algum processo

    numrico. Valor estimado, valor computado. Por exemplo,

    x =1264

    465 2,718279569892473.

    3. Erro, . Diferena entre valor aproximado e exato:

    = x x.

    Por exemplo,

    =1264

    465 e

    2,718279569892473 2,718281828459046= 2,258566572432841 106.

    4. Erro relativo, rel

    . a razo entre o erro e o valor exato:

    rel

    =x xx

    .

    Por exemplo,

    rel

    =2,718279569892473 2,718281828459046

    2,718281828459046

    = 8,308802085150933 107.

    Note que tanto o erro quanto o erro relativo podem ser positivos

    ou negativos. No entanto, nos critrios de parada dos algoritmos,

    utiliza-se, em geral, o valor absoluto destas quantidades.

    5. Dgitos signicativos exatos, DSE. Se os nmeros x e x so ar-redondados para os primeiros k dgitos decimais e esses dgitos so

    iguais ento esses k dgitos so os dgitos signicativos exatos de xem relao a x. Por exemplo,

    x =1264

    465 2,718279569892473 2,71828

    x = e 2,718281828459046 2,71828 DSE = 6.

    Ateno: Existe uma importante relao entre o erro relativo e a

    quantidade de dgitos signicativos exatos:

    |rel

    | < 0,5 10m DSE m. (2.7)

    Por exemplo,

    |rel

    | 8 107= 0,8 106= 0,08 105 < 0,5 105 DSE 5.

    6. Tolerncia, tol. Valor mximo admitido para o erro relativo (ouerro) em um processo numrico. Em geral, usado como critrio de

    parada em algoritmos iterativos. Para clculos manuais, usa-se, em

    geral, o valor de 0,5 103. Para clculos computacionais, os valo-res tpicos so 0,5 106 (preciso simples) e 0,5 1012 (precisoestendida).

    Exemplo 2.3. Determine o erro, o erro relativo e o nmero de dgitos

    signicativos exatos de x = 227 em relao a x = pi.

    Soluo: Como x = pi = 3,141592653589793 . . . e x = 227 =3,142857142857143 . . . o erro dado por

    = x x 3,142857142857143 3,141592653589793= 0,00126448926735.

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 20

    Algoritmo 5 ErroRel

    entrada : x1, x2sada : rel

    1: se x2 = 0 ento2: rel

    x13: seno

    4: rel

    x1 x2x25: m

    O erro relativo

    rel

    =x xx

    =3,142857142857143 3,141592653589793

    3,141592653589793

    = 4,024994347707008 104.

    Os valores de x e x podem ser arredondados para

    x 3,142857142857143 3,14x 3,141592653589793 3,14 DSE = 3.

    Observemos que se o valor exato x = 0, ento o erro deve ser usado emvez do erro relativo.

    Como o clculo do erro relativo e da diferena relativa so utilizados

    com frequncia, conveniente escrever um algoritmo especco. Veja o

    algoritmo ErroRel.

    Importante: Note que se as entradas do algoritmo, x1 e x2, repre-sentam duas aproximaes para um dado valor exato x ento a sada, rel

    representa a diferena relativa entre as aproximaes. Caso as entradas do

    algoritmo sejam x e x representando uma aproximao e um valor exatoento a sada, rel

    representa o erro relativo entre a aproximao e o valor

    exato.

    2.5 Estimativas para o erro

    Como no possvel conhecer o erro exatamente sem conhecer o valor exato

    x. Em geral assumimos uma aproximao para o erro ou uma tolerncia(cota) para o erro. Em geral essa estimativa ou tolerncia depende de

    algum fato terico sobre o problema a ser resolvido. O exemplo a seguir

    mostra como se pode estimar usando um argumento engenhoso.

    Exemplo 2.4. Encontre, de forma iterativa, uma representao deci-

    mal de x =

    53 usando apenas as quatro operaes aritmticas.

    Soluo: Como a funo dada por f(x) =x estritamente crescentetemos que a < b a < b. Assim, se 49 < 53 < 64 podemosarmar que 7 < x < 8. Fazendo a primeira estimativa

    x1 = 7,5

    tem-se que o erro || = |x x| 0,5. Isto signica que 0,5 uma cota parao erro.

    No entanto, o valor x1 = 7,5 no uma boa estimativa, uma vez que(7,5)2 = 56,25 est um pouco afastado de 53 (um resduo de 3,25). Umraciocnio mais sosticado pode nos levar a resultados melhores.

    Se x =

    53 e = x x ento

    x = x , (2.8)

    logo

    x2 = (x )2,53 = x2 2x+ 2.

    Se || < 1 ento 2 < ||, logo

    53 x2 2x

    e, portanto,

    x2 532x

    =1

    2

    (x 53

    x

    ). (2.9)

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 21

    Da estimativa inicial x1 = 7,5 e de (2.9) podemos estimar

    1 0,2167.

    Assim, a partir de (2.8), podemos obter uma segunda estimativa

    x2 = x1 1= 7,5 0,2167= 7,2833

    Agora, o valor x2 uma estimativa melhor, uma vez que (7,2833)2 =

    53,0469 53 (um resduo de 0,0469). Combinando as equaes (2.8) e (2.9)obtemos

    x 12

    (x+

    53

    x

    ).

    Substituindo x por xk e x por xk1 obtemos uma frmula recursiva:

    xk =1

    2

    (xk1 +

    53

    xk1

    ). (2.10)

    A partir de uma estimativa inicial x1, a frmula recursiva (2.10) forneceuma sequncia de valores x2, x3, x4, . . . que converge rapidamente para

    53como mostra a tabela a seguir.

    k xk diferena relativa DSE (estimativa)

    1 7,500000000000000 - -

    2 7,283333333333333 2,9748 102 13 7,280110602593441 4,4268 104 34 7,280109889280553 9,7981 108 65 7,280109889280518 4,7580 1015 146 7,280109889280518 0 16

    Observaes:

    1. O valor calculado para x6 coincide com o valor exato obtido com oMatlab:

    >> sqrt(53)

    ans = 7.280109889280518

    Algoritmo 6 RaizQuadrada

    entrada : n, x, tol, kmax

    sada : x, rel

    , k1: k 12: rel

    +3: enquanto k < kmax

    e |rel

    | > tol4: k k + 15: u x6: x 12

    (x+ nx

    )7: rel

    ErroRel(u, x)8: m

    2. Os valores de DSE mostrados na tabela so estimados: Durante o

    processo iterativo, o valor exato x desconhecido mas podemos esti-mar o erro relativo usando a diferena relativa de valores sucessivos

    de x:

    rel

    diferena relativa = xk1 xkxk

    .

    3. Na ltima iterao, o DSE estimado vericando que todos os 16

    dgitos de x5 e x6 so iguais. No Matlab, usando o padro IEEE 754,no possvel obter DSE 16.

    O algoritmo RaizQuadrada generaliza o problema. Note que o al-

    goritmo apresenta a estrutura tpica de processos iterativos: estimativa

    inicial, renamentos sucessivos, estimativa para erro relativo, nmero m-

    ximo de passos permitido, tolerncia para erro relativo, etc.

    2.6 Convergncia nos processos numricos

    Nos processos iterativos, as solues so obtidas a partir de uma sucesso

    de estimativas x1, x2, . . . que se aproxima do valor exato x. Dizemos queuma sequencia xk converge para x se, e somente se,

    limk+

    xk = x.

    A velocidade com que a sequncia converge para o valor exato indica quo

    rpida ser a aproximao. Quantomaior for a velocidade de convergncia,

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 22

    menor ser a quantidade necessria de passos para se atingir uma dada

    tolerncia.

    Dada uma sequncia xk que converge para x, se existem constantespositivas c e r tais que

    limk+

    |xk x||xk1 x|r = limk+

    |k||k1|r = c, (2.11)

    ento c dito coeciente assinttico de convergncia e r dito or-dem de convergncia. Quanto maior o valor de r, mais rpida ser aconvergncia da sequncia:

    Se r = 1 e c < 1, ento a convergncia dita de ordem linear; Se r > 1, ento a convergncia dita de ordem superlinear; Se r = 2, ento a convergncia dita de ordem quadrtica.

    Observe que a denio dada pela equao (2.11) equivalente a dizer

    que a medida que o processo iterativo avana tem-se

    |k| c |k1|r .

    De forma intuitiva, a ordem de convergncia est associada ao ganho de

    DSE a cada passo. Para sequncias de ordem linear, a quantidade de DSE

    ganhos a cada passo aproximadamente constante. J para sequncias de

    ordem superlinear, a quantidade de DSE ganhos aumenta a cada passo. Asequncia obtida no Exemplo 2.4 tem convergncia de ordem quadrtica:

    observe como a quantidade de DSE aproximadamente dobra a cada passo.

    A anlise de convergncia dos mtodos numricos no trivial e ser

    omitida nesse texto. No entanto o estudante interessado pode consultar,

    por exemplo, [8], [10] e [30].

    2.7 Problemas

    Representao de ponto utuante

    Nos problemas 2.1 e 2.2 a seguir, suponha que uma mquina tenha representa-

    o de ponto utuante com os parmetros dados. Determine (a) a preciso da

    mquina, (b) o menor nmero representvel Fmin e (c) o maior nmero repre-sentvel Fmax.

    2.1. t = 8, emin = 63, emax = 64.2.2. t = 45, emin = 255, emax = 256.2.3. O que overow? D um exemplo de comando do Matlab que resultaria

    em overow.

    2.4. O que underow? D um exemplo de comando do Matlab que resultaria

    em underow.

    Considere as expresses mostradas nos problemas 2.5 e 2.6 a seguir. Para

    cada uma, (a) determine o seu valor exato algebricamente (resolva mo). (b)

    Determine o seu valor aproximado numericamente (use o Matlab). Use o co-

    mando format hex e verique se o que foi calculado em (a) igual ao calculado

    em (b).

    2.5. x = 16 +16 +

    16 +

    16 +

    16 +

    16 .

    2.6. y =

    4

    11 1

    31

    6 5

    31

    +4

    11.

    2.7. Na aritmtica, a igualdade n ( 1n) = 1 verdadeira para todo n 6= 0. Naaritmtica computacional isso nem sempre verdade. Encontre o menor inteiro

    positivo para o qual a igualdade seja falsa.

    2.8. As vezes, utilizando o Matlab, obtemos um NaN como resultado de uma

    operao aritmtica. O que isso signica? D um exemplo.

    2.9. + Implemente, na sua linguagem favorita, o algoritmo EpsilonMaq edetermine a preciso de seu sistema computacional. Compare o resultado com o

    comando eps do Matlab.

    Erro, Erro relativo, DSE

    Nos problemas 2.10 a 2.13 a seguir, determine (a) o erro , (b) o erro relativorel

    e (c) o nmero de dgitos signicativos exatos DSE obtidos ao se aproximar

    x por x.

    2.10. . x = 123 456, x = 123 400;

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 23

    2.11. . x = 1,000000, x = 0,999999;

    2.12. . x =

    2, x = 577408 ;

    2.13. . x = = (1 +

    5)/2, x = 987610 ;

    2.14. . Hoje sabemos que a rea de um crculo dada por A = pir2, onde r oraio do crculo. No papiro de Ahmes

    3

    a rea do crculo aproximada pela rea de

    um octgono (no regular) circunscrito (recorte A, direita, na gura a seguir)

    e em seguida utilizada para determinar a rea de um campo circular (recorte

    B, esquerda, na gura a seguir). Em linguagem moderna, essa aproximao

    equivalente a:

    A =

    (8

    9d

    )2,

    onde d o dimetro do crculo. Determine uma expresso algbrica para o errorelativo rel

    associado a essa aproximao.

    Nos problemas 2.15 a 2.16 a seguir, o nmero r uma aproximao para ovalor exato r com erro relativo rel

    dado. Estime a quantidade de DSE que rpossui?

    2.15. . rel

    = 7,23 1083 Ahmes (1680? a.C. - 1620? a.C.) escriba egpcio que transcreveu uma srie deproblemas matemticos envolvendo multiplicao, diviso, fraes unitrias, equaes,

    progresses, reas e volumes. O papiro (descoberto em 1858 por Alexander Henry

    Rhind) atualmente se encontra no Museu Britnico [38].

    2.16. . rel

    = 4,92 1012

    2.17. . O nmero s uma aproximao para o valor exato s com, no mximo,5 dgitos signicativos exatos. Qual o erro relativo?

    2.18. + Implemente, na sua linguagem favorita, o algoritmo ErroRel. Veri-que seu funcionamento comparando os resultados com os do Exemplo 2.3.

    2.19. A tabela a seguir mostra algumas aproximaes para pi usadas nos primr-dios da Matemtica [4].

    valor autor poca

    p1 = 318 Babilnios 2000 a. C.

    p2 = (169 )

    2Egpcios 2000 a. C.

    p3 = 3 Chineses 1200 a. C.p4 = 3

    17 Arquimedes 300 a. C.

    p5 =377120 Ptolomeu 200

    p6 =

    10 Chung Hing 300p7 =

    355113 Valentius Otho 1573

    (a) Qual o erro relativo de cada aproximao?

    (b) Quais erram por excesso? Quais erram por falta?

    (c) Qual a melhor aproximao? Qual a pior aproximao?

    2.20. Considere a funo fatorial

    f(n) = n! = n (n 1) 3 2 1.

    Em 1730, Stirling desenvolveu a frmula de aproximao

    f(n) =

    2pin(ne

    )npara a funo fatorial.

    (a) Obtenha os valores de f(n) e f(n) para n = 5, 10, 15, 20.

    (b) Determine o erro relativo rel

    de cada aproximao. Adaptado de [43, p. 48]

    e [26, p. 52].

  • CAPTULO 2. ERROS E ARITMTICA COMPUTACIONAL 24

    2.21. Considere a seguinte expanso em srie para sen(x):

    sen(x) = x x3

    3!+x5

    5! x

    7

    7!+

    (a) Obtenha as aproximaes para t =22 = sen(

    pi4 ) usando os n = 3, 6, 9 pri-meiros termos da srie.

    (b) Determine erro relativo rel

    de cada aproximao.

    Estimativas para o erro

    2.22. Implemente o algoritmo RaizQuadrada na sua linguagem preferida e

    use-o para calcular os valores

    a =

    2 e b =

    834.

    Verique o seu funcionamento comparando os resultados com o comando sqrt

    do Matlab. Use tol = 0,5 1012.2.23. Generalize o algoritmo RaizQuadrada para calcular

    mn. Use-o paracalcular os valores

    a =3

    23 e b =5

    527.

    Sugesto: Leia atentamente a seo 2.5 e obtenha uma frmula recursiva seme-

    lhante a 2.10. Compare os resultados nais com nthroot.

    As sequncias recursivas mostradas nos problemas 2.24 a 2.25 a seguir so

    convergentes para os valores x mostrados. Para cada sequncia, monte uma tabelacontendo (a) os valores de xk para k = 1, . . . , 20, (b) as diferenas relativasxk1xk

    xke (c) os erros relativos

    xkxx . Verique que os valores obtidos em (b)

    so aproximaes razoveis para os valores obtidos em (c).

    2.24. x1 = 1, xk = 1 +1

    xk1, x = 1+

    5

    2

    2.25. x1 = 1, xk =

    2 + xk1, x = 2

    2.26. . Sejam x e y valores aproximados para os valores exatos x (x 6= 0) e y(y 6= 0), respectivamente. Os erro relativos so dados por

    x =x xxe y =

    y yy

    .

    Se z = x+ y (z 6= 0), mostre que o erro relativo para z tal que:

    (a) z =x x+ y y

    x+ y;

    (b) min(x,y) z max(x,y).

    O resultado obtido em (a) ser usado no algoritmo QuadRec (p. 80).

  • Captulo 3

    Zeros de funes

    3.1 Denio do problema

    Seja f : R R. Um nmero z dito zero de f se, e somente se,f(z) = 0.

    O problema que estudaremos consiste em encontrar os zeros de uma funo,

    isto , determinar os valores de z, se existirem, tais que z seja zero de f .

    Exemplo 3.1. Verique que z1 = 1, z2 = 1,465571231876768 e z3 =0,588532743981861 so, respectivamente, zeros de

    f(x) = x3 x2, g(x) = x3 x2 1 e h(x) = ex sen(x).

    Soluo: Inicialmente, veriquemos que, trivialmente,

    f(1) = 13 12 = 1 1 = 0.

    J para g e h a vericao requer um pouco mais de trabalho. NoMatlab:

    >> z2 = 1.465571231876768; g = z2^3 - z2^2 - 1

    g = -4.4409e-16

    >> z3 = 0.588532743981861; h = exp(-z3) - sin(z3)

    h = 1.1102e-16

    Observe que os valores calculados de g(z2) e h(z3) no so exatamente

    zero, mas esto muito prximos de zero, isto , muito prximos da preci-

    so da mquina. Para efeitos computacionais, podem ser considerados

    efetivamente zeros.

    Embora seja fcil vericar que os valores de z1, z2 e z3 so os zeros dasrespectivas funes, encontr-los e que mais trabalhoso. A funo f doexemplo uma funo polinomial de grau 3 e que seus zeros so bvios:

    z = {0, 1}. Sendo z = 0 um zero de multiplicidade 2. J o zero de g no to fcil de encontrar pois no h uma fatorao imediata de g e a frmulaexata um tanto trabalhosa (Veja o Problema 3.27). Ainda, na funo h adeterminao algbrica de z3 impossvel, isto , no se pode encontr-laem termos de funes elementares.

    Os mtodos numricos para determinar zeros de funes consistem,

    basicamente, de duas fases:

    1. Isolamento: Vericao da existncia e unicidade dos zeros (con-

    sideraes tericas). Determinao de um intervalo [a, b] contendoum zero de f ou determinao de uma estimativa inicial x1 z. Namaioria dos casos, uma tabela de valores e um grco da funo so

    sucientes.

    2. Renamento: Processo iterativo em que o intervalo [a, b] reduzidoou que novas estimativas x2, x3, . . . so obtidas at que algum critriode parada seja satisfeito.

    25

  • CAPTULO 3. ZEROS DE FUNES 26

    3.2 Mtodo da bisseo

    O mtodo da bisseo semelhante ao procedimento utilizado na resoluo

    do Exemplo 2.1 e toma por base o seguinte teorema:

    Teorema 3.1. (Teorema do Anulamento) Seja f uma funo contnua emum intervalo [a, b] tal que f(a) e f(b) tenham sinais contrrios. Entoexiste (pelo menos) um z (a, b) tal que f(z) = 0.

    Embora uma prova rigorosa do teorema possa ser encontrada em alguns

    livros de Clculo [23, p. 511], gracamente o seu entendimento imediato:

    se o grco de uma funo est (digamos) abaixo do eixo horizontal em

    x = a e segue continuamente at que que acima do eixo horizontal emx = b ento em algum ponto entre a e b ele passou sobre o eixo horizontal!

    Considere a funo g do Exemplo 3.1. Como toda funo polinomial,g contnua em toda parte. Alm disso, g(1) = 3 e g(2) = 3, isto ,a funo troca de sinal em [1, 2]. Pelo teorema 3.1 existe um zero em(1, 2). Figura 3.1 que mostra o grco da funo bem como a localizaode seu zero.

    O mtodo da bisseo consiste nos seguintes passos

    1. Partir de um intervalo inicial [a, b] tal que f(a) e f(b) tenham sinaiscontrrios;

    2. Dividir o intervalo [a, b] em dois subintervalos [a, x] e [x, b], sendo

    x =a+ b

    2

    o ponto mdio entre a e b;

    3. Decidir qual subintervalo contm o zero de f e obter um novo inter-valo [a, b] tal que f(a) e f(b) tenham sinais contrrios;

    4. Repetir os passos 2 e 3 at atingir a preciso desejada.

    3.2.1 Critrios de parada

    Usualmente so utilizados os seguintes critrios de parada:

    Figura 3.1: O grco da funo g(x) = x3 x2 1 e seu zero.

    1. |rel

    | xk1 xkxk

    < tol;2. |rel

    | bk ak2xk

    < tol;3. |rel

    | = |f(xk)| < tol;

    4. k > kmax

    .

    Os critrios 1 e 2 estabelecem estimativas para o erro relativo rel

    entre

    z e xk. O critrio 3 fornece a magnitude do resduo da funo, isto ,a diferena entre f(z) = 0 e f(xk). O critrio 4 estabelece um nmeromximo de iteraes.

    Exemplo 3.2. Usar o mtodo da bisseo para determinar o zero de

    g(x) = x3 x2 1 com pelo menos 3 DSE.

    Soluo: O grco de g j est desenhado na Figura 3.1. Usando oMatlab, obtemos uma tabela de valores:

  • CAPTULO 3. ZEROS DE FUNES 27

    >> x = 1 : 0.2 : 2

    x =

    1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

    >> y = x.^3 - x.^2 - 1

    y =

    -1.0000 -0.7120 -0.2160 0.5360 1.5920 3.0000

    Vericamos que g troca de sinal no intervalo[1,4; 1,6], isto , isolamos o zeronesse intervalo.

    Agora, com tol = 0,5 103, usamos o mtodo da bisseo para obteros valores mostrados na tabela a seguir

    k ak xk bk g(ak) g(xk) g(bk) rel

    1 1,4000 1,5000 1,6000 -0,2160 0,1250 0,5360 -

    2 1,4000 1,4500 1,5000 -0,2160 -0,0539 0,1250 0,0345

    3 1,4500 1,4750 1,5000 -0,0539 0,0334 0,1250 -0,0169

    4 1,4500 1,4625 1,4750 -0,0539 -0,0108 0,0334 0,0085

    5 1,4625 1,4688 1,4750 -0,0108 0,0112 0,0334 -0,0043

    6 1,4625 1,4656 1,4688 -0,0108 0,0002 0,0112 0,0021

    7 1,4625 1,4641 1,4656 -0,0108 -0,0053 0,0002 0,0011

    8 1,4641 1,4648 1,4656 -0,0053 -0,0026 0,0002 -0,0005

    9 1,4648 1,4652 1,4656 -0,0026 -0,0012 0,0002 -0,0003

    Assim podemos estabelecer z 1,47 com 3 DSE.

    Para obter x = 1,465571231876768 com rel

    = 3,0301 1016 sonecessrias 49 iteraes. Observe, na tabela acima, que o sinal de g(a)e de g(b) permanecem os mesmos durante todo o processo iterativo. Oalgoritmo ZeroBisseo sistematiza o mtodo da bisseo utilizando os

    critrios de parada 1 e 4.

    Convergncia

    Quanto a convergncia do mtodo da bisseo, observemos o seguinte:

    1. As condies necessrias para que o mtodo funcione so mnimas:

    f deve ser contnua e trocar de sinal em um intervalo [a, b] inicial.

    Algoritmo 7 ZeroBisseo

    entrada : f, a, b, tol, kmax

    sada : x, rel

    , kEstimativa inicial

    1: k 12: x 12(a+ b)3: fx f(x)4: fa f(a)5: fb f(b)6: rel

    +Processo iterativo

    7: enquanto k < kmax

    e |rel

    | > tol8: se fa fx 0 ento9: b x10: fb fx11: seno

    12: a x13: fa fx14: m

    15: k k + 116: u x17: x 12(a+ b)18: fx f(x)19: rel

    ErroRel(u, x)20: m

  • CAPTULO 3. ZEROS DE FUNES 28

    Assumida essas condies, do Teorema 3.1, o processo seguramente

    convergente.

    2. Como |k| 12 |k1|, o mtodo possui convergncia linear. So ne-cessrias cerca de 3,3 iteraes para cada DSE adicional: uma con-

    vergncia considerada lenta.

    3.3 Mtodo de Newton-Raphson

    O mtodo de Newton

    1

    -Raphson

    2

    consiste em, a partir de uma estimativa

    inicial x1 para o zero de f , obter aproximaes sucessivas x2, x3, queconvergem para z. O mtodo toma por base a expanso de f em sua sriede Taylor

    3

    :

    f(x) = f(x0) + f(x0)(x x0) + f

    (x0)(x x0)22!

    + + f(k)()(x x0)k

    k!.

    Truncando a srie a partir do terceiro termo, obtm-se a aproximao

    f(x) f(x0) + f (x0)(x x0).1 Isaac Newton (1643 - 1727) cientista ingls. Newton desenvolveu as bases doclculo diferencial e integral. Por seus trabalhos na ptica e gravitao, considerado

    o maior cientista de todos os tempos. Em seu De metodis uxionum et serierum inni-

    tarum Newton descreve o mtodo para encontrar zeros de funes polinomiais, dando

    como exemplo a funo f(x) = x3 2x 5 que possui um zero entre 2 e 3 (veja oProblema 3.13). Embora escrito em 1671, somente foi publicado como Method of uxi-

    ons em 1736. O nome de Newton tambm est relacionado s tcnicas de quadratura

    numrica (veja o captulo 7) quando, em 1676, descreveu o mtodo em uma carta a

    Leibniz [38].

    2 Joseph Raphson (1648 - 1715) matemtico ingls colega de Newton na RoyalSociety. Em seu Analysis aequationum universalis de 1690 descreve, de forma indepen-

    dente, o mesmo mtodo para encontrar zeros de funes [38]. A frmula iterativa (3.1)

    tal como conhecida atualmente devida a Thomas Simpson em seu A new method for

    the solution of equations in numbers de 1740 [37].

    3 Brook Taylor (1685 - 1731) matemtico ingls. Contribuiu signicativamentepara o estabelecimento do Clculo. Criou o clculo de diferenas nitas, inventou a tc-

    nica da integrao por partes, e generalizou a expanso em srie que leva seu nome em

    seu livro Methodus incrementorum directa et inversa de 1715. A importncia desse tra-

    balho foi reconhecida e enaltecida por Lagrange em 1772 como o Teorema Fundamental

    do Clculo Diferencial [38].

    Trocando x0 por x e x por z tem-se

    f(z) f(x) + f (x)(z x) 0,

    pois f(z) = 0. Dessa forma, pode-se resolver a equao para z obtendo

    z x f(x)f (x)

    ,

    que pode ser transformada em uma frmula de iterao:

    xk = xk1 f(xk1)f (xk1)

    . (3.1)

    Geometricamente, xk a projeo sobre o eixo horizontal da reta tan-gente ao grco de f em (xk1, f(xk1)) como mostra a Figura 3.2.

    Figura 3.2: Interpretao geomtrica do mtodo de Newton.

  • CAPTULO 3. ZEROS DE FUNES 29

    Exemplo 3.3. Usar o mtodo de Newton para determinar o zero de

    g(x) = x3 x2 1 com pelo menos 3 DSE.

    Soluo: J sabemos do Exemplo 3.1 que o zero de f encontra-se nointervalo [1,4 : 1,6] ento podemos usar como estimativa inicial o valor x =1,5. Como g(x) = x3 x2 1, temos

    g(x) = 3x2 2x.

    Com tol = 0,5 103, usamos o mtodo de Newton para obter os valoresmostrados na tabela a seguir

    k xk g(xk) g(xk) rel

    1 1,5000 0,1250 3,7500 -

    2 1,4667 0,0039 3,5200 0,0227

    3 1,4656 0,0000 3,5126 0,0007

    4 1,4656 0,0000 3,5126 0,0000

    Assim podemos estabelecer z 1,47 com 3 DSE.

    De fato, na ltima iterao da tabela acima, rel

    = 7,9061 107 tol6: k k + 17: u x8: x x F/D9: F f(x)10: D f (x)11: rel

    ErroRel(u, x)12: m

    2. Embora a convergncia do mtodo de Newton seja, em geral, mais

    rpida que a do mtodo da bisseo, ela no garantida em todos os

    casos. A Figura 3.3 mostra o caso de uma funo em que a aplica-

    o do mtodo de Newton produz uma sequncia de estimativas xkdivergente.

    3. Existem vrios teoremas descrevendo as condies que garantem a

    convergncia do mtodo. No entanto, do ponto de vista prtico,

    pode-se dizer que o mtodo (geralmente) funciona se

    (a) em torno de z, f sucientemente suave (contnua e diferenci-vel);

    (b) a estimativa inicial x1 est sucientemente prxima de z.

    Comparativamente, os mtodos da bisseo e de Newton so comple-

    mentares, sendo a principal caracterstica do primeiro a robustez e do l-

    timo a velocidade.

  • CAPTULO 3. ZEROS DE FUNES 30

    Figura 3.3: Uma sequncia de estimativas divergente para o mtodo de

    Newton.

    Usando o Matlab: Para determinar zeros de funes podemos usar o

    comando fzero.

    >> format long

    >> f = @(x) x^3 - x^2 - 1;

    >> z = fzero(f, 1.5)

    z = 1.465571231876768

    Este recurso utiliza o algoritmo WDB (Wijngaarden-Dekker-Brent) que uma

    combinao dos mtodos de bisseo, interpolao linear e interpolao inversa

    quadrtica [20, p. 161] e [40, p. 454]. Sobre a interpolao linear veja o

    Problema 3.37 e sobre a interpolao inversa veja o Problema 5.29.

    3.4 Problemas

    Mtodo da Bisseo

    Nos problemas 3.1 a 3.4 a seguir so dados a expresso de uma funo f e umintervalo [a, b]. Para cada uma das funes faa o seguinte: (a) Desenhe o grcoda funo no intervalo dado, vericando que a funo contnua e que f(a) ef(b) tem sinais contrrios. (b) Use o mtodo da bisseo e, partindo do intervalodado, preencha uma tabela contendo os valores de k, ak, xk, bk, f(ak), f(xk),f(bk) e rel como no Exemplo 3.2. Preencha a tabela para as 4 primeiras iteraes.

    3.1. . f(x) = x2 53 em [0, 10].3.2. . f(x) =

    x2 + 1 x2 em [0, 3].3.3. . f(x) = x+ cos(x) em [1, 1].3.4. . f(x) = ex + x2 10 em [2, 4].3.5. . No mtodo da bisseo, o tamanho do intervalo em uma dada iteraok a metade do tamanho do intervalo na iterao anterior, isto ,

    Tk =Tk1

    2.

    Determine o nmero k de passos necessrios para que um intervalo inicial detamanho T0 = b a seja reduzido a

    Tk < 0,5 1012 (b a).

  • CAPTULO 3. ZEROS DE FUNES 31

    3.6. + Implemente o algoritmo ZeroBisseo na sua linguagem preferida.Para vericar a correo da implementao, refaa o Exemplo 3.2.

    Nos problemas 3.7 a 3.10 a seguir utilize o algoritmo ZeroBisseo para

    encontrar o zero da funo. Use tol = 0,5 1012.3.7. Funo do Problema 3.1.

    3.8. Funo do Problema 3.2.

    3.9. Funo do Problema 3.3.

    3.10. Funo do Problema 3.4.

    3.11. . Mostre que os critrios de parada 1 e 2 (p. 26) do mtodo da bisseoso equivalentes.

    3.12. Modique o algoritmo ZeroBisseo de modo a empregar os critrios de

    parada 3 e 4 (p. 26). Compare o nmero de iteraes utilizadas pelo algoritmo

    original e pelo modicado para encontrar os zeros das funes dos problemas 3.1

    a 3.4. Use tol = 0,5 1012.

    Mtodo de Newton

    Nos problemas 3.13 a 3.16 a seguir so dadas a expresso de uma funo f ,um intervalo [a, b] e uma aproximao x1 para o zero de f . Para cada uma dasfunes faa o seguinte: (a) Desenhe o grco da funo, vericando que a funo

    contnua e possui um zero no intervalo dado. (b) Encontre uma expresso para

    f (x). (c) Use o mtodo de Newton e, partindo da aproximao x1, preencha umatabela contendo os valores de k, xk, f(xk), f

    (xk) e rel como no Exemplo 3.3.Preencha a tabela para as 4 primeiras iteraes.

    3.13. . f(x) = x3 2x 5 em [3, 3], x1 = 2,5.3.14. . f(x) = x+ ln(x) em (0, 1], x1 = 0,5.

    3.15. . f(x) = x cos(x) em [pi, pi], x1 = 1,0.3.16. . f(x) = x cos(x2) em [1, 2], x1 = 1,2.

    3.17. . Verique que a sequncia recursiva dada pela equao (2.10) pode serobtida atravs da equao (3.1) aplicada a determinao do zero da funo

    f(x) = x2 53pelo mtodo de Newton.

    3.18. + Implemente o algoritmo ZeroNewton na sua linguagem preferida.Para vericar a correo da implementao, refaa o Exemplo 3.3.

    Nos problemas 3.19 a 3.22 a seguir utilize o algoritmo ZeroNewton para

    encontrar o zero da funo dada. Use tol = 0,5 1012.3.19. Funo do Problema 3.13.

    3.20. Funo do Problema 3.14.

    3.21. Funo do Problema 3.15.

    3.22. Funo do Problema 3.16.

    3.23. Modique o algoritmo ZeroNewton de modo a empregar os critrios de

    parada 3 e 4 (p. 26). Compare o nmero de iteraes utilizadas pelo algoritmo

    original e pelo modicado para encontrar os zeros das funes dadas nos proble-

    mas 3.13 a 3.16. Use tol = 0,5 1012.3.24. Omtodo de Newton tem diculdade de encontrar zeros com multiplicidade

    elevada. A funo

    fn(x) = (x 1)npossui um nico zero (z = 1) com multiplicidade n. Determine o nmero deiteraes necessrias para encontrar o zero de cada funo f1, f2, . . . , f10. Use aestimativa inicial x1 = 2.

    O mtodo de Newton pode no ser convergente. Verique que, para as funes

    e estimativas iniciais mostradas nos problemas 3.25 e 3.26 a seguir, o mtodo no

    funciona.

    3.25. f(x) = 110 + xexcom x1 = 2.

    3.26. f(x) = x3 x 3 com x1 = 3.

    Sortidos

    3.27. . Devido a sua praticidade, os mtodos numricos (aproximados) sofrequentemente usados em vez dos mtodos analticos (exatos). A determinao

    de zeros de funes polinomiais de grau 3 (cbicas) um bom exemplo. Pes-

    quise a frmula Frmula de Cardano

    4

    (em [47, 1], por exemplo) para determinar

    exatamente o zero real da funo g(x) = x3 x2 1 dos Exemplos 3.2 e 3.3.4 Girolamo Cardano (1501 - 1576) mdico, astrnomo e matemtico italiano. Seumais famoso trabalho Ars magna, de 1545, considerado o primeiro livro latino dedicado

    apenas a lgebra. Neste tratado, descreve a soluo de equaes polinomiais cbicas e

    qurticas [38].

  • CAPTULO 3. ZEROS DE FUNES 32

    3.28. Determine os zeros das funes dos Problemas 3.25 e 3.26.

    3.29. Reconsidere o Exemplo 2.1 e encontre o zero da equao (2.2).

    3.30. Considere a funo dada por f(x) = ex lnx com x > 0.

    (a) Faa um esboo do grco de f no intervalo (0, 2] e verique que a funopossui um ponto de mnimo nesse intervalo.

    (b) Determine a abscissa xmin

    desse mnimo sabendo que f (xmin

    ) = 0.

    3.31. Um estudante comprou um notebook no valor de R$ 2499,00 e vai pagar

    12 parcelas de R$ 249,00. A matemtica nanceira estabelece que

    P =F i

    1 (1 + i)n ,

    onde F o valor nanciado, P o valor da parcela, n o nmero de parcelas e i a taxa de juros. Qual a taxa de juros do nanciamento?

    3.32. A gura a seguir mostra uma seo circular de rea S.

    r

    S

    Da geometria, sabemos que a rea da seo dada por

    S =r2

    2( sen()),

    onde r o raio do crculo e o ngulo que subtende a seo circular. Determineo ngulo tal que a rea S seo seja um tero da rea do crculo. Uma soluogeomtrica do problema pode ser encontrada em [11].

    3.33. A Lei da Radiao,

    S() =2pic2h

    51

    ehc/kT 1 ,

    descreve a quantidade de energia luminosa S (em watt por metro cbico) emitidapor um corpo de prova na temperatura T (em kelvin) em funo do comprimentode onda (em metros). Nessa expresso, c = 2,9979108m/s, h = 6,62611034Jse k = 1,3807 1023J/K [25].

    (a) Obtenha o grco de S() para a temperatura T = 3500 K. Sugesto: Use no intervalo [0,5; 4,0] 106m.(b) Pode-se mostrar [55, p. 390] que o maior valor de S ocorre em max

    dado por

    max

    =hc

    zkT,

    onde z o zero positivo de

    f(x) =x

    5+ ex 1.

    Encontre z, o zero de f , e em seguida determine o valor de max

    .

    3.34. Em Termodinmica, sob determinadas condies, a relao entre a calor

    Q fornecido a um gs e sua variao de temperatura Tf Ti dada por

    Q = nR

    [A(Tf Ti) + B

    2(T 2f T 2i ) +

    C

    3(T 3f T 3i )

    ].

    Para o gs metano, R = 8,314 J/mol.K, A = 1,702, B = 9,081 103K1, C =2,164 106K2 [46, p. 131]. Em uma cmara, tem-se n = 2 mol de metano atemperatura Ti = 300 K. Qual ser a temperatura nal Tf se 20 kJ de energia absorvido pelo gs?

    3.35. A tenso eltrica sobre o capacitor de um circuito RLC-paralelo dada por

    u(t) = u0et cos(dt), t 0,onde

    u0 a tenso inicial sobre o capacitor,

    =1

    2RC a constante de amortecimento,

    0 =1LC a frequncia angular de oscilao (natural),

    d =20 2 a frequncia angular de oscilao (amortecida).A tenso u dada em volts e o tempo t em segundos [36, p. 177]. Considereum circuito em que R = 200 , L = 0,3 H, C = 40 F e u0 = 50 V. Substituaos valores na equao, desenhe o grco de u(t) e determine os instantes t1, t2 et3 onde a tenso atinge o valor 10 V.

  • CAPTULO 3. ZEROS DE FUNES 33

    3.36. Na lgebra Linear, os autovalores de uma matriz A so denidos comoos zeros do polinmio caracterstico

    pA(x) = det(A Ix).Considere a matriz

    A =

    3 0 30 1 23 2 3

    .(a) Encontre a expresso algbrica de pA(x).

    (b) Encontre os autovalores 1, 2 e 3 de A.

    3.37. Uma variao para o mtodo da bisseo consiste em dividir o intervalo

    [a, b] no ponto c sobre o eixo horizontal que intercepta o reta que passa por(a, f(a)) e (b, f(b)) como mostra a gura a seguir. Essa tcnica denominadainterpolao linear e, em geral, apresenta velocidade de convergncia maior que

    a o mtodo da bisseo.

    (a) Mostre que

    c = a f(a)f(b) f(a) (b a).

    (b) Modique o algoritmo ZeroBisseo de modo a empregar a tcnica da in-

    terpolao linear. Compare o nmero de iteraes necessrias para encontrar

    os zeros das funes dadas nos problemas 3.1 a 3.4 com o algoritmo Zero-

    Bisseo original.

    3.38. Uma variao para o mtodo de Newton, conhecida como mtodo de

    Halley

    5

    , consiste em truncar a srie de Taylor a partir do seu quarto termo e

    usar a informao da segunda derivada de f [51]. A frmula de iterao dadapor

    xk = xk1 2f(xk1)f(xk1)