You are on page 1of 389

Clculo Numrico

Um Livro Colaborativo
Verso Scilab

14 de dezembro de 2017

Veja pgina do projeto em:


https://www.ufrgs.br/numerico
Organizadores

Dagoberto Adriano Rizzotto Justo - UFRGS

Esequia Sauter - UFRGS

Fabio Souto de Azevedo - UFRGS

Leonardo Fernandes Guidi - UFRGS

Matheus Correia dos Santos - 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 desta licena, visite
https://creativecommons.org/licenses/by-sa/3.0/ ou envie uma carta para Crea-
tive Commons, PO Box 1866, Mountain View, CA 94042, USA.

iii
Nota dos organizadores

Estamos escrevendo este livro de forma colaborativa desde 2011 e, recente-


mente, decidimos por abrir a colaboraes externas. Nosso objetivo produzir um
material didtico no nvel de graduao de excelente qualidade e de acesso livre
pela colaborao entre professores e alunos de universidades, institutos de educa-
o e demais interessados na anlise, estudo e aplicao de mtodos numricos nos
mais diversos ramos da cincia e da tecnologia.
O sucesso do projeto depende da colaborao! Edite voc mesmo o livro, d
sugestes ou nos avise de erros e imprecises. Toda a colaborao bem vinda.
Saiba mais visitando o site oficial do projeto:

https://www.ufrgs.br/numerico

Ns preparamos uma srie de aes para ajud-lo a participar. Em primeiro


lugar, o acesso irrestrito ao livro pode se dar atravs do site oficial do projeto.
Disponibilizamos o livro na verso original em PDF e verses adaptadas em HTML,
EPUB e Slides. Alm disso, o livro est escrito em cdigo LATEX disponvel em
repositrio GitHub pblico.
Nada disso estaria completo sem uma licena apropriada colaborao. Por
isso, escolhemos disponibilizar o material do livro sob licena Creative Commons
Atribuio-CompartilhaIgual 3.0 No Adaptada (CC-BY-SA 3.0). Ou seja, voc
pode copiar, redistribuir, alterar e construir um novo material para qualquer uso,
inclusive comercial. Leia a licena para maiores informaes.

Desejamos-lhe timas colaboraes!

iv
Prefcio

Este livro busca abordar os tpicos de um curso de introduo ao clculo num-


rico moderno oferecido a estudantes de matemtica, fsica, engenharias e outros.
A nfase colocada na formulao de problemas, implementao em computador
da resoluo e interpretao de resultados. Pressupe-se que o estudante domine
conhecimentos e habilidades tpicas desenvolvidas em cursos de graduao de cl-
culo, lgebra linear e equaes diferenciais. Conhecimentos prvios em linguagem
de computadores fortemente recomendvel, embora apenas tcnicas elementares
de programao sejam realmente necessrias.
Nesta verso do livro, fazemos nfase na utilizao do software livre Scilab
para a implementao dos mtodos numricos abordados. Recomendamos ao lei-
tor ter sua disposio um computador com o Scilab instalado. No necessrio
estar familiarizado com esta linguagem, mas recomendamos a leitura do Apn-
dice A, no qual apresentamos uma rpida introduo a este pacote computacional.
Alternativamente, existem algumas solues em nuvem que fornecem acesso ao
Scilab via internet. Por exemplo, a plataforma virtual rollApp (https://www.
rollapp.com/app/scilab) ou o Scilab on Cloud (http://cloud.scilab.in/).
Os cdigos computacionais dos mtodos numricos apresentados no livro so
implementados em uma abordagem didtica. Isto , temos o objetivo de que a im-
plementao em linguagem computacional venha a auxiliar o leitor no aprendizado
das tcnicas numricas que so apresentadas no livro. Implementaes computa-
cionais eficientes de tcnicas de clculo numrico podem ser obtidas na srie de
livros Numerical Recipes, veja [10].

v
Sumrio

Capa i

Organizadores ii

Licena iii

Nota dos organizadores iv

Prefcio v

Sumrio x

1 Introduo 1

2 Representao de nmeros e aritmtica de mquina 3


2.1 Sistema de numerao e mudana de base . . . . . . . . . . . . . . 3
2.2 Notao cientfica e notao normalizada . . . . . . . . . . . . . . . 11
2.3 Representao decimal finita . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Arredondamento de nmeros . . . . . . . . . . . . . . . . . . 13
2.4 Representao de nmeros em mquina . . . . . . . . . . . . . . . . 17
2.4.1 Nmeros inteiros . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.2 Sistema de ponto fixo . . . . . . . . . . . . . . . . . . . . . . 19
2.4.3 Sistema de ponto flutuante . . . . . . . . . . . . . . . . . . . 20
2.4.4 Preciso e psilon de mquina . . . . . . . . . . . . . . . . . 23
2.4.5 Distribuio dos nmeros . . . . . . . . . . . . . . . . . . . . 24
2.5 Tipos de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Erros nas operaes elementares . . . . . . . . . . . . . . . . . . . . 29
2.7 Cancelamento catastrfico . . . . . . . . . . . . . . . . . . . . . . . 29
2.8 Condicionamento de um problema . . . . . . . . . . . . . . . . . . . 32
2.9 Exemplos selecionados de cancelamento catastrfico . . . . . . . . . 37

vi
SUMRIO vii

3 Soluo de equaes de uma varivel 47


3.1 Existncia e unicidade . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.2 Mtodo da bisseo . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2.1 Cdigo Scilab: mtodo da bisseo . . . . . . . . . . . . . . 54
3.3 Iterao de ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.1 Teorema do ponto fixo . . . . . . . . . . . . . . . . . . . . . 61
3.3.2 Teste de convergncia . . . . . . . . . . . . . . . . . . . . . . 64
3.3.3 Estabilidade e convergncia . . . . . . . . . . . . . . . . . . 65
3.3.4 Erro absoluto e tolerncia . . . . . . . . . . . . . . . . . . . 66
3.4 Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . 72
3.4.1 Interpretao geomtrica . . . . . . . . . . . . . . . . . . . . 73
3.4.2 Anlise de convergncia . . . . . . . . . . . . . . . . . . . . 74
3.5 Mtodo das secantes . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5.1 Interpretao geomtrica . . . . . . . . . . . . . . . . . . . . 80
3.5.2 Anlise de convergncia . . . . . . . . . . . . . . . . . . . . 81
3.6 Critrios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.7 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4 Soluo de sistemas lineares 91


4.1 Eliminao gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.1.1 Eliminao gaussiana com pivotamento parcial . . . . . . . . 95
4.2 Complexidade de algoritmos em lgebra linear . . . . . . . . . . . . 101
4.3 Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1 Cdigo Scilab: resoluo de um sistema triangular superior . 105
4.3.2 Cdigo Scilab: resoluo de um sistema triangular inferior . 105
4.4 Fatorao LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.4.1 Cdigo Scilab: Fatorao LU . . . . . . . . . . . . . . . . . 108
4.4.2 Custo computacional para resolver um sistema linear usando
fatorao LU . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.4.3 Custo para resolver m sistemas lineares . . . . . . . . . . . . 110
4.4.4 Custo para calcular a matriz inversa de A . . . . . . . . . . 111
4.5 Mtodo da matriz tridiagonal . . . . . . . . . . . . . . . . . . . . . 111
4.6 Condicionamento de sistemas lineares . . . . . . . . . . . . . . . . . 118
4.6.1 Norma de vetores . . . . . . . . . . . . . . . . . . . . . . . . 119
4.6.2 Norma de matrizes . . . . . . . . . . . . . . . . . . . . . . . 120
4.6.3 Nmero de condicionamento . . . . . . . . . . . . . . . . . . 121
4.7 Mtodos iterativos para sistemas lineares . . . . . . . . . . . . . . . 124
4.7.1 Mtodo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . 125
4.7.2 Mtodo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . 128
4.7.3 Anlise de convergncia . . . . . . . . . . . . . . . . . . . . 130
4.8 Clculo de autovalores e autovetores . . . . . . . . . . . . . . . . . 138

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


viii Clculo Numrico

4.8.1 Mtodo da potncia . . . . . . . . . . . . . . . . . . . . . . . 138


4.8.2 Mtodo da iterao inversa . . . . . . . . . . . . . . . . . . . 143
4.9 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

5 Soluo de sistemas de equaes no lineares 147


5.1 Mtodo de Newton para sistemas . . . . . . . . . . . . . . . . . . . 150
5.1.1 Cdigo Scilab: Newton para sistemas . . . . . . . . . . . . . 153
5.2 Linearizao de uma funo de vrias variveis . . . . . . . . . . . . 161
5.2.1 Gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.2.2 Matriz jacobiana . . . . . . . . . . . . . . . . . . . . . . . . 163

6 Interpolao 166
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . 167
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . . . . . . 172
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . 174
6.4 Aproximao de funes reais por polinmios interpoladores . . . . 175
6.5 Interpolao linear segmentada . . . . . . . . . . . . . . . . . . . . 179
6.6 Interpolao cbica segmentada - spline . . . . . . . . . . . . . . . . 180
6.6.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . . . . 183
6.6.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6.6.3 Spline not-a-knot . . . . . . . . . . . . . . . . . . . . . . . . 187
6.6.4 Spline peridico . . . . . . . . . . . . . . . . . . . . . . . . . 188

7 Ajuste de curvas 190


7.1 Ajuste de uma reta . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.2 Ajuste linear geral . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
7.2.1 Ajuste polinomial . . . . . . . . . . . . . . . . . . . . . . . . 201
7.3 Aproximando problemas no lineares por problemas lineares . . . . 205

8 Derivao numrica 211


8.1 Diferenas finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.1.1 Diferenas finitas via srie de Taylor . . . . . . . . . . . . . 213
8.1.2 Erros de arredondamento . . . . . . . . . . . . . . . . . . . . 217
8.2 Diferena finita para derivada segunda . . . . . . . . . . . . . . . . 221
8.3 Obteno de frmulas por polinmios interpoladores . . . . . . . . . 222
8.3.1 Exerccios resolvidos . . . . . . . . . . . . . . . . . . . . . . 225
8.4 Frmulas de diferenas finitas . . . . . . . . . . . . . . . . . . . . . 226
8.5 Derivada via ajuste ou interpolao . . . . . . . . . . . . . . . . . . 228
8.6 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


SUMRIO ix

9 Integrao numrica 231


9.1 Somas de Riemann . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.2 Regras de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . 236
9.2.1 Regra do ponto mdio . . . . . . . . . . . . . . . . . . . . . 237
9.2.2 Regra do trapzio . . . . . . . . . . . . . . . . . . . . . . . . 237
9.2.3 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . 240
9.3 Obteno das regras de quadratura . . . . . . . . . . . . . . . . . . 244
9.4 Regras compostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.4.1 Cdigo Scilab: Regras compostas em geral . . . . . . . . . . 247
9.4.2 Mtodo composto dos trapzios . . . . . . . . . . . . . . . . 248
9.4.3 Cdigo Scilab: trapzio composto . . . . . . . . . . . . . . . 248
9.4.4 Mtodo composto de Simpson . . . . . . . . . . . . . . . . . 249
9.4.5 Cdigo Scilab: Simpson composto . . . . . . . . . . . . . . . 249
9.5 Mtodo de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . 252
9.6 Ordem de preciso . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
9.7 Quadratura de Gauss-Legendre . . . . . . . . . . . . . . . . . . . . 261
9.7.1 Cdigo Scilab: Quadratura gaussiana com N intervalos . . . 265
9.8 Integrais imprprias . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
9.8.1 Integrandos com singularidade do tipo 1/(x a)n . . . . . . 266
9.9 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

10 Problemas de valor inicial 273


10.1 Rudimentos da teoria de problemas de valor inicial . . . . . . . . . 274
10.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
10.3 Mtodo de Euler melhorado . . . . . . . . . . . . . . . . . . . . . . 281
10.4 Soluo de sistemas de equaes diferenciais . . . . . . . . . . . . . 284
10.5 Soluo de equaes e sistemas de ordem superior . . . . . . . . . . 289
10.6 Erro de truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.7 Mtodos de Runge-Kutta explcitos . . . . . . . . . . . . . . . . . . 293
10.7.1 Mtodos de Runge-Kutta com dois estgios . . . . . . . . . . 295
10.7.2 Mtodos de Runge-Kutta com trs estgios . . . . . . . . . . 297
10.7.3 Mtodos de Runge-Kutta com quatro estgios . . . . . . . . 298
10.8 Mtodos de Runge-Kutta implcitos . . . . . . . . . . . . . . . . . . 302
10.8.1 Mtodo de Euler implcito . . . . . . . . . . . . . . . . . . . 302
10.8.2 O mtodo trapezoidal . . . . . . . . . . . . . . . . . . . . . . 303
10.8.3 O mtodo theta . . . . . . . . . . . . . . . . . . . . . . . . . 305
10.9 O mtodo de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . 306
10.10Mtodo de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . . . 307
10.11Mtodo de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . . 312
10.12Mtodo de Adams-Moulton para sistemas lineares . . . . . . . . . . 317
10.13Estratgia preditor-corretor . . . . . . . . . . . . . . . . . . . . . . 318

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


x Clculo Numrico

10.13.1 Exerccios resolvidos . . . . . . . . . . . . . . . . . . . . . . 320


10.14Problemas rgidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.15Validao e Benchmarking . . . . . . . . . . . . . . . . . . . . . . . 320
10.16Convergncia, consistncia e estabilidade . . . . . . . . . . . . . . . 324
10.17Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

11 Problemas de valores de contorno 329


11.1 Mtodo de diferenas finitas . . . . . . . . . . . . . . . . . . . . . . 329

A Rpida introduo ao Scilab 340


A.1 Sobre o Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
A.1.1 Instalao e execuo . . . . . . . . . . . . . . . . . . . . . . 340
A.1.2 Usando o Scilab . . . . . . . . . . . . . . . . . . . . . . . . . 341
A.2 Elementos da linguagem . . . . . . . . . . . . . . . . . . . . . . . . 342
A.2.1 Operaes matemticas elementares . . . . . . . . . . . . . . 343
A.2.2 Funes e constantes elementares . . . . . . . . . . . . . . . 343
A.2.3 Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . 343
A.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
A.3.1 O operador : . . . . . . . . . . . . . . . . . . . . . . . . . 345
A.3.2 Obtendo dados de uma matriz . . . . . . . . . . . . . . . . . 345
A.3.3 Operaes matriciais e elemento-a-elemento . . . . . . . . . 347
A.4 Estruturas de ramificao e repetio . . . . . . . . . . . . . . . . . 348
A.4.1 A instruo de ramificao if . . . . . . . . . . . . . . . . 348
A.4.2 A instruo de repetio for . . . . . . . . . . . . . . . . . 349
A.4.3 A instruo de repetio while . . . . . . . . . . . . . . . . 350
A.5 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
A.6 Grficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

Respostas dos Exerccios 352

Referncias Bibliogrficas 374

Colaboradores 375

ndice Remissivo 376

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 1

Introduo

Clculo numrico a disciplina que estuda as tcnicas para a soluo apro-


ximada de problemas matemticos. Estas tcnicas so de natureza analtica e
computacional. As principais preocupaes normalmente envolvem exatido e de-
sempenho.
Aliado ao aumento contnuo da capacidade de computao disponvel, o desen-
volvimento de mtodos numricos tornou a simulao computacional de problemas
matemticos uma prtica usual nas mais diversas reas cientficas e tecnolgicas.
As ento chamadas simulaes numricas so constitudas de um arranjo de vrios
esquemas numricos dedicados a resolver problemas especficos como, por exemplo:
resolver equaes algbricas, resolver sistemas de equaes lineares, interpolar e
ajustar pontos, calcular derivadas e integrais, resolver equaes diferenciais ordin-
rias etc. Neste livro, abordamos o desenvolvimento, a implementao, a utilizao
e os aspectos tericos de mtodos numricos para a resoluo desses problemas.
Trabalharemos com problemas que abordam aspectos tericos e de utilizao
dos mtodos estudados, bem como com problemas de interesse na engenharia, na
fsica e na matemtica aplicada.
A necessidade de aplicar aproximaes numricas decorre do fato de que esses
problemas podem se mostrar intratveis se dispomos apenas de meios puramente
analticos, como aqueles estudados nos cursos de clculo e lgebra linear. Por
exemplo, o teorema de Abel-Ruffini nos garante que no existe uma frmula alg-
brica, isto , envolvendo apenas operaes aritmticas e radicais, para calcular as
razes de uma equao polinomial de qualquer grau, mas apenas casos particulares:

Simplesmente isolar a incgnita para encontrar a raiz de uma equao do


primeiro grau;

Frmula de Bhaskara para encontrar razes de uma equao do segundo grau;

Frmula de Cardano para encontrar razes de uma equao do terceiro grau;

1
2 Clculo Numrico

Existe expresso para equaes de quarto grau;

Casos simplificados de equaes de grau maior que 4 onde alguns coeficientes


so nulos tambm podem ser resolvidos.

Equaes no polinomiais podem ser ainda mais complicadas de resolver exata-


mente, por exemplo:
cos(x) = x ou xex = 10
Para resolver o problema de valor inicial

y 0 + xy = x,
y(0) = 2,

podemos usar o mtodo de fator integrante e obtemos y = 1 + ex /2 . No en-


2

tanto, no parece possvel encontrar uma expresso fechada em termos de funes


elementares para a soluo exata do problema de valor inicial dado por

y 0 + xy = ey ,
.
y(0) = 2,

Da mesma forma, resolvemos a integral


Z 2
2
xex dx
1

pelo mtodo da substituio e obtemos 21 (e1 e2 ). Porm a integral


Z 2
2
ex dx
1

no pode ser expressa analiticamente em termos de funes elementares, como


uma consequncia do teorema de Liouville.
A maioria dos problemas envolvendo fenmenos reais produzem modelos ma-
temticos cuja soluo analtica difcil (ou impossvel) de obter, mesmo quando
provamos que a soluo existe. Nesse curso propomos calcular aproximaes nu-
mricas para esses problemas, que apesar de, em geral, serem diferentes da soluo
exata, mostraremos que elas podem ser bem prximas.
Para entender a construo de aproximaes necessrio estudar como fun-
ciona a aritmtica implementada nos computadores e erros de arredondamento.
Como computadores, em geral, usam uma base binria para representar nmeros,
comearemos falando em mudana de base.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 2

Representao de nmeros e
aritmtica de mquina

Neste captulo, abordaremos formas de representar nmeros reais em compu-


tadores. Iniciamos com uma discusso sobre representao posicional e mudana
de base. Ento, enfatizaremos a representao de nmeros com quantidade finita
de dgitos, mais especificamente, as representaes de nmeros inteiros, ponto fixo
e ponto flutuante em computadores.
A representao de nmeros e a aritmtica em computadores levam aos cha-
mados erros de arredondamento e de truncamento. Ao final deste captulo, abor-
daremos os efeitos do erro de arredondamento na computao cientfica.

2.1 Sistema de numerao e mudana de base


Usualmente, utilizamos o sistema de numerao decimal para representar n-
meros. Esse um sistema de numerao posicional onde a posio do dgito indica
a potncia de 10 que o dgito representa.
Exemplo 2.1.1. O nmero 293 decomposto como
293 = 2 centenas + 9 dezenas + 3 unidades
(2.1)
= 2 102 + 9 101 + 3 100 .
O sistema de numerao posicional tambm pode ser usado com outras bases.
Vejamos a seguinte definio.
Definio 2.1.1 (Sistema de numerao de base b). Dado um nmero natural
, 0, 1, 2, . . . , b 11}1 , a sequncia de smbolos
b > 1 e o conjunto de smbolos {
(dn dn1 d1 d0 ,d1 d2 )b (2.2)
1
Para b > 10, veja a Observao 2.1.1.

3
4 Clculo Numrico

representa o nmero positivo

dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 + (2.3)

Para representar nmeros negativos usamos o smbolo a esquerda do numeral2 .


Observao 2.1.1 (b 10). Para sistemas de numerao com base b 10 usual
utilizar as seguintes notaes:
No sistema de numerao decimal (b = 10), costumamos representar o n-
mero sem os parnteses e o subndice, ou seja,

dn dn1 . . . d1 d0 ,d1 d2 . . . := (dn dn1 . . . d1 d0 ,d1 d2 . . .)10 . (2.4)

Se b > 10, usamos as letras A, B, C, para denotar os algarismos: A = 10,


B = 11, C = 12, D = 13, E = 14, F = 15.
Exemplo 2.1.2 (Sistema binrio). O sistema de numerao em base dois cha-
mado de binrio e os algarismos binrios so conhecidos como bits (do ingls bi-
nary 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 (2.5)
= 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 = 9,625.
Ou seja, (1001,101)2 igual a 9,625 no sistema decimal.
No Scilab podemos converter o nmero (1001,101)2 para a base decimal com-
putando
--> 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 + 1*2^-1 + 0*2^-2 + 1*2^-3
ans = 9.6250
Exemplo 2.1.3 (Sistema quaternrio). No sistema quaternrio a base b igual a
4 e, portanto, temos o seguinte conjunto de algarismos {0, 1, 2, 3}. Por exemplo:

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

Verifique no computador!
Exemplo 2.1.4 (Sistema octal). No sistema octal a base b = 8. Por exemplo:
(1357,24)8 = 1 83 + 3 82 + 5 81 + 7 80 + 2 81 + 4 82
(2.7)
= 512 + 192 + 40 + 7 + 0,25 + 0,0625 = 751,3125.
Verifique no computador!
2
O uso do smbolo + opcional na representao de nmeros positivos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.1. SISTEMA DE NUMERAO E MUDANA DE BASE 5

Exemplo 2.1.5 (Sistema hexadecimal). O sistema de numerao cuja a base


b = 16 chamado de sistema hexadecimal. Neste, temos o conjunto de algarismos
{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
(2.8)
= 57344 + 512 + 160 + 12 = 58028.

Verifique no computador!

Observao 2.1.2. O Scilab oferece algumas funes para a converso de n-


meros 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.

Nos exemplos acima vimos como converter nmeros representados em um sis-


tema de numerao de base b para o sistema decimal. Agora, vamos estudar
como fazer o processo inverso. Isto , dado um nmero decimal (X)10 queremos
escrev-lo em uma outra base b, isto , queremos obter a seguinte representao:

(X)10 = (dn dn1 d0 ,d1 )b


(2.9)
= dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +

Separando as partes inteira e fracionria de X, isto , X = X i + X f , temos

X i = dn bn + + dn1 bn1 + d1 b1 + d0 b0 (2.10)

e
d1 d2
Xf =
+ 2 + (2.11)
b1 b
Nosso objetivo determinar os algarismos {dn , dn1 , ...}.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6 Clculo Numrico

Primeiramente, vejamos como tratar a parte inteira X i . Calculando sua diviso


de X i por b, temos:

Xi d0
= + d1 + d2 b1 + + dn1 bn2 + dn bn1 . (2.12)
b b

Observe que d0 o resto da diviso de X i por b, pois d1 + d2 b1 + + dn1


bn2 + dn bn1 inteiro e db0 uma frao com d0 < b. Da mesma forma, o resto
da diviso de d1 + d2 b1 + + dn1 bn2 + dn bn1 por b d1 . Ou seja, repetindo
este processo encontramos os algarismos d0 , d1 , d2 , . . ., dn .
Vamos, agora, converter a parte fracionria X f do nmero decimal X para o
sistema de base b. Multiplicando X f por b, temos
d2 d3
bX f = d1 + + 2 + (2.13)
b b
Observe que a parte inteira desse produto d1 e d2
b
+ db3
2 + a parte fracio-

nria. Quando multiplicamos b + b2 + por b novamente, encontramos d2 .


d2 d3

Repetindo este processo encontramos os demais algarismos.


Exemplo 2.1.6. Vamos converter o nmero 9,625 para a base binria (b = 2).
Primeiramente, decompomos 9,625 na soma de suas partes inteira e fracionria.

9,625 = 9 + 0,625. (2.14)

Converso da parte inteira. Para converter a parte inteira, fazemos suces-


sivas divises por b = 2 obtendo

9 = 42+1
= (2 2 + 0) 2 + 1
= 23 + 1.

Ou seja, temos que 9 = (1001)2 . No Scilab, podemos usar os comandos fix (trun-
camento) e modulo (resto da diviso) para computar esta converso da seguinte
forma
-->x = 9
x =
9.
-->d0 = modulo(x,2), x = fix(x/2)
d0 =
1.
x =

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.1. SISTEMA DE NUMERAO E MUDANA DE BASE 7

4.
-->d1 = modulo(x,2), x = fix(x/2)
d1 =
1.
x =
2.
-->d2 = modulo(x,2), x = fix(x/2)
d2 =
1.
x =
1.
-->d3 = modulo(x,2), x = fix(x/2)
d3 =
1.
x =
0.
Converso da parte fracionria. Para converter a parte fracionria, fazemos
sucessivas multiplicaes por b = 2 obtendo

0,625 = 1,25 21 = 1 21 + 0,25 21


= 1 21 + (0,5 21 ) 21 = 1 21 + 0,5 22
= 1 21 + (1 21 ) 22 = 1 21 + 1 23 .

Ou seja, temos que 0,625 = (0,101)2 . No Scilab, podemos computar esta conver-
so da parte fracionria da seguinte forma
-->x = 0.625
x =
0.625
-->d = fix(2*x), x = 2*x - d
d =
1.
x =
0.25
-->d = fix(2*x), x = 2*x - d
d =
0.
x =
0.5
-->d = fix(2*x), x = 2*x - d
d =

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8 Clculo Numrico

1.
x =
0.
Concluso. Da converso das partes inteira e fracionria de 9,625, obtemos
9 = (1001)2 e 0,625 = (0,101)2 . Logo, conclumos que 9,625 = (1001,101)2 .
Observao 2.1.3. O Scilab oferece algumas funes para a converso de n-
meros inteiros em base decimal para uma dada base. Por exemplo, temos:
-->dec2base(9,2)
ans =
1001
-->dec2base(111,8)
ans =
157
-->dec2base(48826,16)
ans =
BEBA
Observao 2.1.4. Uma maneira de converter um nmero dado em uma base b1
para uma base b2 fazer em duas partes: primeiro converter o nmero dado na
base b2 para base decimal e depois converter para a base b1 .

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

ER 2.1.1. Obtenha a representao do nmero 125,583 na base 6.


Soluo. Decompomos 125,583 nas suas partes inteira 125 e fracionria 0,583.
Ento, convertemos cada parte.
Converso da parte inteira. Vamos escrever o nmero 125 na base 6. Para
tanto, fazemos sucessivas divises por 6 como segue:
125 = 20 6 + 5 (125 dividido por 6 igual a 20 e resta 5)
(2.15)
= (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 funes modulo
e int. A primeira calcula o resto da diviso entre dois nmeros, enquanto que a
segunda retorna a parte inteira de um nmero dado. No nosso exemplo, temos:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.1. SISTEMA DE NUMERAO E MUDANA DE BASE 9

-->q = 125, d0 = modulo(q,6)


-->q = int(q/6), d1 = modulo(q,6)
-->q = int(q/6), d2 = modulo(q,6)
Verifique!
Converso da parte fracionria. Para converter 0,583 para a base 6, faze-
mos sucessivas multiplicaes por 6 como segue:

0,583 = 3,5 61 (0,583 multiplicado por 6 igual a 3,5)


= 3 61 + 0,5 61
(2.16)
= 3 61 + (3 61 ) 61
= 3 61 + 3 62 ,

logo 0,583 = (0,33)6 . As contas feitas aqui, tambm podem ser computadas no
Scilab. Voc sabe como?

ER 2.1.2. Obtenha a representao na base 4 do nmero (101,01)2 .

Soluo. Comeamos convertendo (101,01)2 para a base decimal:

(1001,101)2 = 1 22 + 1 20 + 1 22 = 5,25. (2.17)

Ento, convertemos 5,25 para a base 4. Para sua parte inteira, temos

5 = 1 4 + 1 = (11)4 . (2.18)

Para sua parte fracionria, temos

0,25 = 1 41 = (0,1)4 . (2.19)

Logo, (101,01)2 = (11,1)4 . Verifique estas contas no computador!

Exerccios

E 2.1.1. Converta para base decimal cada um dos seguintes nmeros:

a) (100)2

b) (100)3

c) (100)b

d) (12)5

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10 Clculo Numrico

e) (AA)16

f) (7,1)8

g) (3,12)5

E 2.1.2. Escreva os nmeros abaixo na base decimal.

a) (25,13)8

b) (101,1)2

c) (12F,4)16

d) (11,2)3

E 2.1.3. Escreva o nmero 5,5 em base binria.

E 2.1.4. Escreva o nmero 17,109375 em base hexadecimal (b = 16).

E 2.1.5. Escreva cada nmero decimal na base b.

a) 7,6 na base b = 5

b) 29,16 na base b = 6

E 2.1.6. Escreva (12.4)8 em base decimal e binria.

E 2.1.7. Escreva cada nmero dado para a base b.

a) (45,1)8 para a base b = 2

b) (21,2)8 para a base b = 16

c) (1001,101)2 para a base b = 8

d) (1001,101)2 para a base b = 16

E 2.1.8. Quantos algarismos so necessrios para representar o nmero 937163832173947


em base binria? E em base 7? Dica: Qual o menor e o maior inteiro que pode
ser escrito em dada base com N algarismos?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.2. NOTAO CIENTFICA E NOTAO NORMALIZADA 11

2.2 Notao cientfica e notao normalizada


Como vimos, no sistema posicional usual um nmero x na base b representado
por
x = (dn dn1 d0 ,d1 d2 d3 )b , (2.20)
onde dn 6= 0 e di {0, 1, . . . , b 1} o dgito da i-sima posio. Alternativa-
mente, costumeiro usarmos a chamada notao cientfica. Nesta, o nmero x
representado como
x = (M )b be , (2.21)
onde (M )b = (dm dm1 d0 ,d1 d2 d3 )b chamada de mantissa e e Z
chamado de expoente de x.

Exemplo 2.2.1. a) O nmero 602,2141 em notao cientfica pode ser escrito


como
602,2141 100 = 60,22141 101 = 0,6022141 103 . (2.22)

b) O nmero (1010,10)2 pode ser escrito em notao cientfica como (10,1010)2


22 .

Observamos que um nmero pode ser representado de vrias formas equivalen-


tes em notao cientfica. Para termos uma representao nica introduzimos o
conceito de notao normalizada.

Definio 2.2.1. Um nmero x na base b dito estar representado em notao


(cientfica) normalizada quando est escrito na forma

x = (1)s (M )b bE , (2.23)

onde (M )b = (d1 ,d1 d2 d3 )b , com d1 6= 034 , s 0 para positivo e 1 para


negativo, E o expoente.

Exemplo 2.2.2. Vejamos os seguintes casos:

a) O nmero 602,2141 em notao (cientfica) normalizada representado por


6,022141 102 .

b) O nmero (1010,10)2 escrito em notao normalizada (1,01010)2 23 .

Observao 2.2.1. No Scilab, a representao em ponto flutuante decimal com


8 dgitos a padro, por exemplo:
3
Em algumas referncias usado Mb = (0,d1 d2 d3 )b .
4
No caso de x = 0, Mb = (0,00 )b .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


12 Clculo Numrico

-->-%pi
ans =
- 3.14159D+00
Podemos controlar a impresso de nmeros com o comando format. Por exemplo:
-->format('v',12); -%pi
ans =
- 3.141592654
-->format('e',12); -%pi
ans =
- 3.14159D+00
Observamos que, no primeiro caso, obtemos a representao em ponto flutuante
decimal com 10 dgitos (2 posies so reservadas para o sinal e o ponto), enquanto
que na segunda obtemos a representao em notao cientfica normalizada com 6
dgitos (6 posies so reservadas para o sinal, ponto, smbolo D := 10 e expoente).
Alternativamente, podemos usar o comando printf, por exemplo:
-->printf('%1.5f',-%pi)
-3.14159
-->printf('%1.5e',-%pi)
-3.14159e+00

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 2.2.1. Represente os seguintes nmeros em notao cientfica normalizada:

a) 299792,458 b) 66,2607 1035


(2.24)
c) 0,6674 107 d) 9806,65 101

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.3. REPRESENTAO DECIMAL FINITA 13

E 2.2.2. Use o computador para verificar as respostas do Exerccio 2.2.1.

2.3 Representao decimal finita


Em computadores, usual representarmos nmeros usando uma quantidade de
dgitos finita. A quantidade a ser usada normalmente depende da preciso com que
as computaes esto sendo feitas. Ocorre que quando restringimos a representa-
o a um nmero finito de dgitos, muitos nmeros no podem ser representado
de forma exata, por exemplo, as dzimas infinitas e os nmeros irracionais. Este
fenmeno nos leva aos conceitos de nmero de dgitos significativos e de arredon-
damento.

Definio 2.3.1 (Nmero de dgitos significativos). Um nmero decimal x =


d1 ,d1 di di1 din din1 10E dito ter n dgitos significativos quando
dj = 0 para j i e j i n 1.

Exemplo 2.3.1. O nmero 0,0602100 103 tem 4 dgitos significativos.

2.3.1 Arredondamento de nmeros


Quando representamos um nmero x com uma quantidade de dgitos menor
que a de dgitos significativos acabamos com uma aproximao deste. Este pro-
cedimento chamado arredondamento de um nmero. Mais precisamente, seja
dado
x = d0 ,d1 d2 . . . dk1 dk dk+1 . . . dn 10e (2.26)
em notao normalizada, isto , d0 6= 05 . Podemos representar x com k dgitos da
seguinte forma:

1. Arredondamento por truncamento (ou corte): aproximamos x por

x = d0 ,d1 d2 . . . dk 10e

simplesmente descartando os dgitos dj com j > k.

2. Arredondamento por proximidade6 : se dk+1 < 5 aproximamos x por

x = d0 ,d1 d2 . . . dk 10e
5
caso x 6= 0.
6
com desempate infinito.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


14 Clculo Numrico

seno aproximamos x por7

x = (d0 ,d1 d2 . . . dk + 10k ) 10e

3. Arredondamento por proximidade com desempate par: se dk+1 < 5


aproximamos x por
x = d0 ,d1 d2 . . . dk 10e .
Se dk+1 ,dd+2 dk+3 . . . > 5 aproximamos x por

x = (d0 ,d1 d2 . . . dk + 10k ) 10e .

Agora, no caso de empate, i.e. dk+1 ,dk+2 dk+3 . . . = 5, ento x aproximado


por
x = d0 ,d1 d2 . . . dk 10e
caso dk seja par e, caso contrrio, por

x = (d0 ,d1 d2 . . . dk + 10k ) 10e .

Observao 2.3.1. O arredondamento por proximidade frequentemente empre-


gado para arredondamentos de nmeros reais para inteiros. Por exemplo:
x = 1,49 arredonda-se para o inteiro 1.

x = 1,50 arredonda-se para o inteiro 2.

x = 2,50 arredonda-se para o inteiro 3.


No Scilab, temos:
-->round(1.49)
ans =
1.
-->round(1.50)
ans =
2.
-->round(2.50)
ans =
3.
7
Note que essas duas opes so equivalentes a somar 5 no dgito a direita do corte e depois
arredondar por corte, ou seja, arredondar por corte

(d0 ,d1 d2 . . . dk dk+1 + 5 10(k+1) ) 10e (2.27)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.3. REPRESENTAO DECIMAL FINITA 15

Exemplo 2.3.2. Represente os nmeros x1 = 0,567, x2 = 0,233, x3 = 0,675


e x4 = 0,314159265 . . . 101 com dois dgitos significativos por truncamento e
arredondamento.
Soluo. Vejamos cada caso:
Por truncamento:
x1 = 0,56, x2 = 0,23, x3 = 0,67 e x4 = 3,1. (2.28)
No Scilab, podemos obter a representao de x3 = 0,675 fazendo:
-->format('v',5)
-->-int(0.675*1e2)/1e2
ans =
- 0.67
e, em notao normalizada, temos:
-->format('e',8)
-->-int(0.675*1e2)/1e2
ans =
- 6.7D-01
Por arredondamento:
x1 = 0,57; x2 = 0,23; x3 = 0,68 e x4 = 3,1. (2.29)
No Scilab, a representao de nmeros por arredondamento por proximi-
dade com desempate par o padro. Assim, para obtermos a representao
desejada de x3 = 0,675 fazemos:
-->format('v',5)
-->-0.675
ans =
- 0.68
e, em notao normalizada, temos:
-->format('e',8)
-->-0.675
ans =
- 6.8D-01

Observao 2.3.2. Observe que o arredondamento pode mudar todos os dgitos e
o expoente da representao em ponto flutuante de um nmero dado. Por exemplo,
o arredondamento de 0,9999 101 com 3 dgitos significativos 0,1 100 .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


16 Clculo Numrico

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 2.3.1. Aproxime os seguintes nmeros para 2 dgitos significativos por


arredondamento por truncamento.

(a) 1,159

(b) 7,399

(c) 5,901

E 2.3.2. Aproxime os seguintes nmeros para 2 dgitos significativos por


arredondamento por proximidade com desempate par.

(a) 1,151

(b) 1,15

(c) 2,45

(d) 2,45

E 2.3.3. O Scilab usa arredondamento por proximidade com desempate par


como padro. Assim sendo, por exemplo

--> printf('%1.1e\n', 1.25)


1.2e+00

Agora:

--> printf('%1.1e\n', 2.45)


2.5e+00

No deveria ser 2.4? Explique o que est ocorrendo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.4. REPRESENTAO DE NMEROS EM MQUINA 17

2.4 Representao de nmeros em mquina


Os computadores, em geral, usam a base binria para representar os nme-
ros, onde as posies, chamadas de bits, assumem as condies verdadeiro ou
falso, ou seja, 1 ou 0, respectivamente. Os computadores representam os nme-
ros com uma quantidade fixa de bits, o que se traduz em um conjunto finito de
nmeros representveis. Os demais nmeros so tomados por proximidade que-
les conhecidos, gerando erros de arredondamento. Por exemplo, em aritmtica
de
computador, o nmero 2 tem representao exata, logo 2 = 4, mas 3 no tem
2

representao finita, logo ( 3) 6= 3.


2

Veja isso no Scilab:

-->2^2 == 4
ans =
T
-->sqrt(3)^2 == 3
ans =
F

2.4.1 Nmeros inteiros


Tipicamente, um nmero inteiro armazenado em um computador como uma
sequncia de dgitos binrios de comprimento fixo denominado registro.

Representao sem sinal


Um registro com n bits da forma

dn1 dn2 d1 d0

representa o nmero (dn1 dn2 ...d1 d0 )2 .


Assim, possvel representar nmeros inteiros entre 2n 1 e 0, sendo

[111 . . . 111] = 2n1 + 2n2 + + 21 + 20 = 2n 1,


..
.
[000 . . . 011] = 3, (2.30)
[000 . . . 010] = 2,
[000 . . . 001] = 1,
[000 . . . 000] = 0.

Exemplo 2.4.1. No Scilab,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


18 Clculo Numrico

-->uint8( bin2dec('00000011') )
ans = 3
-->uint8( bin2dec('11111110') )
ans = 254

Representao com bit de sinal


O bit mais significativo (o primeiro esquerda) representa o sinal: por conven-
o, 0 significa positivo e 1 significa negativo. Um registro com n bits da forma

s dn2 d1 d0

representa o nmero (1)s (dn2 . . . d1 d0 )2 . Assim, possvel representar nmeros


inteiros entre 2n1 e 2n1 , com duas representaes para o zero: (1000 . . . 000)2
e (00000 . . . 000)2 .

Exemplo 2.4.2. Em um registro com 8 bits, teremos os nmeros

[11111111] = (26 + + 2 + 1) = 127,


..
.
[10000001] = 1,
[10000000] = 0,
[01111111] = 26 + + 2 + 1 = 127, (2.31)
..
.
[00000010] = 2,
[00000001] = 1,
[00000000] = 0.

Representao complemento de dois


O bit mais significativo (o primeiro esquerda) representa o coeficiente de
2 . Um registro com n bits da forma:
n1

dn1 dn2 d1 d0

representa o nmero dn1 2n1 + (dn2 . . . d1 d0 )2 .

Observao 2.4.1. Note que todo registro comeando com 1 ser um nmero
negativo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.4. REPRESENTAO DE NMEROS EM MQUINA 19

Exemplo 2.4.3. O registro com 8 bits [01000011] representa o nmero:

0(27 ) + (1000011)2 = 26 + 2 + 1 = 67. (2.32)

Agora, o registro [10111101] representa:

1(27 ) + (0111101)2 = 128 + 25 + 24 + 23 + 22 + 1 = 67. (2.33)

Note que podemos obter a representao de 67 invertendo os dgitos de 67 em


binrio e somando 1.
Exemplo 2.4.4. Em um registro com 8 bits, teremos os nmeros

[11111111] = 27 + 26 + + 2 + 1 = 1
..
.
[10000001] = 27 + 1 = 127
[10000000] = 27 = 128
[01111111] = 26 + + 2 + 1 = 127 (2.34)
..
.
[00000010] = 2
[00000001] = 1
[00000000] = 0

2.4.2 Sistema de ponto fixo


O sistema de ponto fixo representa as partes inteira e fracionria do nmero
com uma quantidade fixas de dgitos.
Exemplo 2.4.5. Em um computador de 32 bits que usa o sistema de ponto fixo,
o registro

d31 d30 d29 d1 d0

pode representar o nmero


(1)d31 (d30 d29 d17 d16 , d15 d14 d1 d0 )2 se o sinal for representado por um
dgito. Observe que, neste caso, o zero possui duas representaes possveis:

[10000000000000000000000000000000] (2.35)

e
[00000000000000000000000000000000] (2.36)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


20 Clculo Numrico

(d30 d29 d17 d16 )2 d31 (215 216 ) + (0,d15 d14 d1 d0 )2 se o sinal do n-
mero estiver representado por uma implementao em complemento de um.
Observe que o zero tambm possui duas representaes possveis:

[11111111111111111111111111111111] (2.37)

e
[00000000000000000000000000000000] (2.38)

(d30 d29 d17 d16 )2 d31 215 + (0,d15 d14 d1 d0 )2 se o sinal do nmero estiver
representado por uma implementao em complemento de dois. Nesse caso
o zero unicamente representado por

[00000000000000000000000000000000] (2.39)

Observe que 16 dgitos so usados para representar a parte fracionria, 15 so para


representar a parte inteira e um dgito, o d31 , est relacionado ao sinal do nmero.

2.4.3 Sistema de ponto flutuante


O sistema de ponto flutuante no possui quantidade fixa de dgitos para as
partes inteira e fracionria do nmero.
Podemos definir uma mquina F em ponto flutuante de dois modos:

F (,|M |,|E|,BIAS) ou F (,|M |,EM IN ,EM AX ) (2.40)

onde
a base (em geral 2 ou 10),

|M | o nmero de dgitos da mantissa,

|E| o nmero de dgitos do expoente,

BIAS um valor de deslocamento do expoente (veja a seguir),

EM IN o menor expoente,

EM AX o maior expoente.
Considere uma mquina com um registro de 64 bits e base = 2. Pelo padro
IEEE754, 1 bit usado para o sinal, 11 bits para o expoente e 52 bits so usados
para o significando tal que

s c10 c9 c0 m1 m2 m51 m52

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.4. REPRESENTAO DE NMEROS EM MQUINA 21

represente o nmero (o BIAS = 1023 por definio)

x = (1)s M 2cBIAS , (2.41)

onde a caracterstica representada por

c = (c10 c9 c1 c0 )2 = c10 210 + + c1 21 + c0 20 (2.42)

e o significando por
M = (1.m1 m2 m51 m52 )2 . (2.43)

Observao 2.4.2. Em base 2 no necessrio armazenar o primeiro dgito (por


qu?).

Exemplo 2.4.6. O registro

[0|100 0000 0000|1010 0000 0000 . . . 0000 0000]

representa o nmero

(1)0 (1 + 21 + 23 ) 210241023 = (1 + 0.5 + 0.125)2 = 3.25.

O expoente deslocado

Uma maneira de representar os expoentes inteiros deslocar todos eles uma


mesma quantidade. Desta forma permitimos a representao de nmeros negativos
e a ordem deles continua crescente. O expoente representado por um inteiro sem
sinal do qual deslocado o BIAS.
Tendo |E| dgitos para representar o expoente, geralmente o BIAS predefi-
nido de tal forma a dividir a tabela ao meio de tal forma que o expoente um seja
representado pelo sequncia [100 . . . 000].

Exemplo 2.4.7. Com 64 bits, pelo padro IEEE754, temos que |E| := 11. As-
sim, (100 0000 0000)2 = 210 = 1024. Como queremos que esta sequncia represente
o 1, definimos BIAS := 1023, pois

1024 BIAS = 1. (2.44)

Com 32 bits, temos |E| := 8 e BIAS := 127. E com 128 bits, temos |E| := 15
e BIAS := 16383.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


22 Clculo Numrico

Com |E| = 11 temos

[111 1111 1111] = reservado


[111 1111 1110] = 2046 BIAS = 102310 = EM AX
..
.=
[100 0000 0001] = 210 + 1 BIAS = 210
[100 0000 0000] = 210 BIAS = 110
(2.45)
[011 1111 1111] = 1023 BIAS = 010
[011 1111 1110] = 1022 BIAS = 110
..
.=
[000 0000 0001] = 1 BIAS = 1022 = EM IN
[000 0000 0000] = reservado

O maior expoente dado por EM AX = 1023 e o menor expoente dado por


EM IN = 1022.
O menor nmero representvel positivo dado pelo registro

[0|000 0000 0001|0000 0000 0000 . . . 0000 0000] (2.46)

quando s = 0, c = 1 e M = (1.000...000)2 , ou seja,

M IN R = (1 + 0)2 211023 0.2225 10307 . (2.47)

O maior nmero representvel dado por

[0|111 1111 1110|1111 1111 1111 1111] (2.48)

quando s = 0, c = 2046 e M = (1.1111 1111 1111)2 = 2 252 , ou seja,

M AXR = (2 252 ) 220461023 21024 0.17977 10309 .

Observao 2.4.3. O menor nmero positivo, o maior nmero e o menor nmero


subnormal representveis no Scilab so:

-->MINR=number_properties('tiny')
-->MAXR=number_properties('huge')
-->number_properties('tiniest')

Outras informaes sobre a representao em ponto flutuante podem ser obtidas


com help number_properties.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.4. REPRESENTAO DE NMEROS EM MQUINA 23

Casos especiais
O zero um caso especial representado pelo registro

[0|000 0000 0000|0000 0000 0000...0000 0000]

Os expoentes reservados so usados para casos especiais:


c = [0000...0000] usado para representar o zero (se m = 0) e os nmeros
subnormais (se m 6= 0).
c = [1111...1111] usado para representar o infinito (se m = 0) e NaN (se
m 6= 0).
Os nmeros subnormais8 tem a forma

x = (1)s (0.m1 m2 m51 m52 )2 21BIAS . (2.49)

2.4.4 Preciso e psilon de mquina


A preciso p de uma mquina o nmero de dgitos significativos usado para
representar um nmero. Note que p = |M | + 1 em binrio e p = |M | para outras
bases.
O psilon de mquina, mach = , definido de forma que 1 +  seja o menor
nmero representvel maior que 1, isto , 1 +  representvel, mas no existem
nmeros representveis em (1, 1 + ).
Exemplo 2.4.8. Com 64 bits, temos que o psilon ser dado por
1 (1.0000 0000....0000)2 20
 +(0.0000 0000....0001)2 20 = 252 (2.50)
(1.0000 0000....0001)2 20 6= 1

Assim,  = 252 .
Observao 2.4.4. No Scilab, o psilon de mquina representado pela cons-
tante %eps. Observe os seguintes resultados:
-->1 + 1e-16 == 1
ans =
T
-->1 + %eps == 1
ans =
F
8
Note que poderamos definir nmeros um pouco menores que o M IN R.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


24 Clculo Numrico

2.4.5 Distribuio dos nmeros


Utilizando uma mquina em ponto flutuante, temos um nmero finito de n-
meros que podemos representar.
Um nmero muito pequeno geralmente aproximado por zero (underflow) e
um nmero muito grande (overflow) geralmente faz o clculo parar. Alm disso,
os nmeros no esto uniformemente espaados no eixo real. Nmeros pequenos
esto bem prximos enquanto que nmeros com expoentes grandes esto bem
distantes.
Se tentarmos armazenar um nmero que no representvel, devemos utilizar
o nmero mais prximo, gerando os erros de arredondamento.

Observao 2.4.5. O chamado modo de exceo de ponto flutuante controlado


pela funo ieee. O padro do Scilab ieee(0). Estude os seguintes resultados
das seguintes operaes usando os diferentes modos de exceo:

-->2*number_properties('huge'), 1/2^999, 1/0, 1/-0

Exerccios

E 2.4.1. Usando a representao complemento de dois de nmeros inteiros


com 8 bits, escreva o nmero decimal que corresponde aos seguintes barramentos:

a) [01100010].

b) [00011101].

c) [10000000].

d) [11100011].

e) [11111111]

E 2.4.2. Usando a representao complemento de dois de nmeros inteiros


com 16 bits, escreva o nmero decimal que corresponde aos seguintes barramentos:

a) [0110001001100010].

b) [0001110100011101].

c) [1110001011100011].

d) [1111111111111111].

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.5. TIPOS DE ERROS 25

E 2.4.3. Usando a representao de ponto flutuante com 64 bits, escreva o


nmero decimal que corresponde aos seguintes barramentos:
a) [0|10000000000|111000 . . . 0].
b) [1|10000000001|0111000 . . . 0].

E 2.4.4. Explique a diferena entre o sistema de ponto fixo e ponto flutuante.

E 2.4.5. Considere a seguinte rotina escrita para ser usada no Scilab:


x=1
while x+1>x
x=x+1
end

Explique se esta rotina finaliza em tempo finito, em caso afirmativo calcule a ordem
de grandeza do tempo de execuo supondo que cada passo do lao demore 107 s.
Justifique sua reposta.

2.5 Tipos de erros


Em geral, os nmeros no so representados de forma exata nos computadores.
Isto nos leva ao chamado erro de arredondamento. Quando resolvemos problemas
com tcnicas numricas, estamos sujeitos a este e outros tipos de erros. Nesta
seo, veremos quais so estes erros e como control-los, quando possvel.
Quando fazemos aproximaes numricas, os erros so gerados de vrias formas,
sendo as principais delas as seguintes:
1. Incerteza dos dados so devidos aos erros nos dados de entrada. Quando
o modelo matemtico oriundo de um problema fsico, existe incerteza nas
medidas feitas pelos instrumentos de medio, que possuem acurcia finita.
2. Erros de Arredondamento so aqueles relacionados com as limitaes
existentes na forma de representar nmeros em mquina.
3. Erros de Truncamento surgem quando aproximamos um conceito mate-
mtico formado por uma sequncia infinita de passos por de um procedimento
finito. Por exemplo, a definio de integral dada por um processo de limite
de somas. Numericamente, aproximamos por um soma finita. O erro de
truncamento deve ser estudado analiticamente para cada mtodo empregado
e normalmente envolve matemtica mais avanada que a estudado em um
curso de graduao.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


26 Clculo Numrico

Uma questo fundamental a quantificao dos erros imbricados na computa-


o da soluo de um dado problema. Para tanto, precisamos definir medidas de
erros (ou de exatido). As medidas de erro mais utilizadas so o erro absoluto e
o erro relativo.
Definio 2.5.1 (Erro absoluto e relativo). Seja x um nmero real e x, sua apro-
ximao. O erro absoluto da aproximao x definido como
|x x|. (2.51)
O erro relativo da aproximao x definido como
|x x|
, x 6= 0. (2.52)
|x|
Observao 2.5.1. Observe que o erro relativo adimensional e, muitas vezes,
expresso em porcentagens. Mais precisamente, o erro relativo em porcentagem da
aproximao x dado por
|x x|
100%. (2.53)
|x|
Exemplo 2.5.1. Sejam x = 123456,789 e sua aproximao x = 123000. O erro
absoluto
|x x| = |123456,789 123000| = 456,789
e o erro relativo
|x x| 456,789
= 0,00369999 ou 0,36%
|x| 123456,789
Exemplo 2.5.2. Sejam y = 1,23456789 e y = 1,13. O erro absoluto
|y y| = |1,23456789 1,13| = 0,10456789
que parece pequeno se compararmos com o exemplo anterior. Entretanto o erro
relativo
|y y| 0,10456789
= 0,08469999 ou 8,4%
|y| 1,23456789
Note que o erro relativo leva em considerao a escala do problema.
Exemplo 2.5.3. Observe os erros absolutos e relativos em cada caso a seguir:

x x Erro absoluto Erro relativo


0,3 102 0,3 102 0,3 103 10%
0,3 0,3 0,3 102 10%
0,3 102 0,3 102 0,3 101 10%

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.5. TIPOS DE ERROS 27

Outra forma de medir a exatido de uma aproximao numrica contar o


nmero de dgitos significativos corretos em relao ao valor exato.

Definio 2.5.2 (Nmero de dgitos significativos corretos). A aproximao x de


um nmero x tem s dgitos significativos corretos quando9

|x x|
< 5 10s .
|x|

Exemplo 2.5.4. Vejamos os seguintes casos:

a) A aproximao de x = 0,333333 por x = 0,333 tem 3 dgitos significativos


corretos, pois

|x x| 0,000333
= 0,000999 5 1033 . (2.55)
|x| 0,333333

b) Considere as aproximaes x1 = 0,666 e x2 = 0,667 de x = 0,666888. Os


erros relativos so
|x x1 | |0,666888 0,666|
= 0,00133... < 5 103 .
|x| 0,666888

|x x2 | |0,666888 0,667|
= 0,000167... < 5 104 .
|x| 0,666888
Note que x1 possui 3 dgitos significativos corretos e x2 possui 4 dgitos
significativos (o quarto dgito o dgito 0 que no aparece a direita, i.e,
x2 = 0.6670. Isto tambm leva a concluso que x2 aproxima melhor o valor
de x do que x1 pois est mais prximo de x.

c) x = 9,999 aproxima x = 10 com 4 dgitos significativos corretos, pois

|x x| |10 9,999|
= 0,0000999... < 5 104 . (2.56)
|x| 10
9
Esta definio apresentada em [3]. No existe uma definio nica na literatura para o
conceito de dgitos significativos corretos, embora no precisamente equivalentes, elas transmitem
o mesmo conceito. Uma maneira de interpretar essa regra : calcula-se o erro relativo na forma
normalizada e a partir da ordem do expoente temos o nmero de dgitos significativos corretos.
Como queremos o expoente, podemos estimar s por

|x x|
DIGSE(x,x) = s int log10 . (2.54)
|x|

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


28 Clculo Numrico

d) Considere as aproximaes x1 = 1,49 e x2 = 1,5 de x = 1. Da definio,


temos que 1,49 aproxima 1 com um dgito significativo correto (verifique),
enquanto 1,5 tem zero dgito significativo correto, pois:

|1 1,5|
= 5 101 < 5 100 . (2.57)
|1|

Exerccios

E 2.5.1. Calcule os erros absoluto e relativo das aproximaes x para x em


cada caso:

a) x = = 3,14159265358979 . . . e x = 3,141

b) x = 1,00001 e x = 1

c) x = 100001 e x = 100000

E 2.5.2. Arredonde os seguintes nmeros para cinco algarismos significativos:

a) 1,7888544

b) 1788,8544

c) 0,0017888544

d) 0,004596632

e) 2,1754999 1010

f) 2,1754999 1010

E 2.5.3. Represente os seguintes nmeros com trs dgitos significativos


usando arredondamento por truncamento e arredondamento por proximidade.

a) 3276.

b) 42,55.

c) 0,00003331.

E 2.5.4. Usando a Definio 2.5.2, verifique quantos so os dgitos significati-


vos corretos na aproximao de x por x.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.6. ERROS NAS OPERAES ELEMENTARES 29

a) x = 2,5834 e x = 2,6
b) x = 100 e x = 99

E 2.5.5. Resolva a equao 0,1x 0,01 = 12 usando arredondamento com


trs dgitos significativos em cada passo e compare com o resultado exato.

E 2.5.6. Calcule o erro relativo e absoluto envolvido nas seguintes aproxima-


es e expresse as respostas com trs algarismos significativos corretos.
a) x = 3,1415926535898 e x = 3,141593
b) x = 1
7
e x = 1,43 101

2.6 Erros nas operaes elementares


O erro relativo presente nas operaes elementares de adio, subtrao, mul-
tiplicao e diviso da ordem do psilon de mquina. Se estivermos usando uma
mquina com 64 bits, temos que  = 252 2,22E 16.
Este erro bem pequeno para a maioria das aplicaes! Assumindo que x e y
so representados com todos dgitos corretos, temos aproximadamente 15 dgitos
significativos corretos quando fazemos uma das operaes x + y, x y, x y ou
x/y.
Mesmo que fizssemos, por exemplo, 1000 operaes elementares sucessivas em
ponto flutuante, teramos, no pior dos casos, acumulado todos esses erros e perdido
3 casas decimais (1000 1015 1012 ).
Entretanto, quando subtramos nmeros muito prximos, o erro pode se pro-
pagar de forma catastrfico.

2.7 Cancelamento catastrfico


Quando fazemos subtraes com nmeros muito prximos entre si, ocorre o que
chamamos de cancelamento catastrfico, onde podemos perder vrios dgitos de
preciso em uma nica subtrao.
Exemplo 2.7.1. Efetue a operao

0,987624687925 0,987624 = 0,687925 106 (2.58)

usando arredondamento com seis dgitos significativos e observe a diferena se


comparado com resultado sem arredondamento.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


30 Clculo Numrico

Soluo. Os nmeros arredondados com seis dgitos para a mantissa resultam na


seguinte diferena

0,987625 0,987624 = 0,100000 105

Observe que os erros relativos entre os nmeros exatos e aproximados no lado


esquerdo so bem pequenos,
|0,987624687925 0,987625|
= 0,00003159 (2.59)
|0,987624687925|
e
|0,987624 0,987624|
= 0%, (2.60)
|0,987624|
enquanto no lado direito o erro relativo enorme:
|0,100000 105 0,687925 106 |
= 45,36%. (2.61)
0,687925 106

Exemplo 2.7.2. Considere o problema de encontrar as razes da equao de se-
gundo grau
x2 + 300x 0,014 = 0, (2.62)
usando seis dgitos significativos.
Aplicando a frmula de Bhaskara com a = 0,100000 101 , b = 0,300000 103
e c = 0,140000 101 , temos o discriminante:

= b2 4 a c
= 0,300000 103 0,300000 103
+ 0,400000 101 0,100000 101 0,140000 101
= 0,900000 105 + 0,560000 101
= 0,900001 105

e as razes:

0,300000 103
x1 ,x2 =
0,200000 101

0,300000 103 0,900001 105
=
0,200000 101
0,300000 103 0,300000 103
=
0,200000 101

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.7. CANCELAMENTO CATASTRFICO 31

Ento, as duas razes obtidas com erros de arredondamento, so:

0,300000 103 0,300000 103


x1 =
0,200000 101
(2.63)
0,600000 103
= = 0,300000 103
0,200000 101

e
0,300000 103 + 0,300000 103
x2 = = 0,000000 100 (2.64)
0,200000 101
No entanto, os valores das razes com seis dgitos significativos livres de erros de
arredondamento, so:

x1 = 0,300000 103 e x2 = 0,466667 104 . (2.65)

Observe que a primeira raiz apresenta seis dgitos significativos corretos, mas a
segunda no possui nenhum dgito significativo correto.
Observe que isto acontece porque b muito maior que 4ac, ou seja, b
2

b2 4ac, logo a diferena



b + b2 4ac (2.66)

estar prxima de zero. Uma maneira de evitar o cancelamento catastrfico


aplicar procedimentos analticos na expresso para eliminar essa diferena. Um
tcnica padro consiste usar uma expanso em srie de Taylor em torno da origem,
tal como:
1
1 x = 1 x + O(x2 ).
2
Substituindo esta aproximao na frmula de Bhaskara, temos:

b b2 4ac
x =
2a
q
b b 1 4ac
b2
=
2a
 
b b 1 4ac
2b2

2a

Observe que 4ac


b2
um nmero pequeno e por isso a expanso faz sentido. Voltamos

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


32 Clculo Numrico

no exemplo anterior e calculamos as duas razes com o nova expresso

b b + 4ac b c
x1 = 2b
= +
2a a b
0,300000 103 0,140000 101
=
0,100000 101 0,300000 103
= 0,300000 10 0,466667 104
3

= 0,300000 103

b + b 4ac
x2 = 2b
2a
4ac
=
4ab
c 0,140000 101
= = = 0,466667 104
b 0,300000 103

Observe que o efeito catastrfico foi eliminado.


Observao 2.7.1. O cancelamento catastrfico tambm poderia ter sido evitado
atravs do seguinte truque analtico:

b + b2 4ac b + b2 4ac b b2 4ac
x2 = =
2a 2a b b2 4ac
b2 (b2 4ac) 4ac
=   =  
2a b b2 4ac 2a b b2 4ac
2c
=  
b + b2 4ac

2.8 Condicionamento de um problema


Nesta seo, utilizaremos a seguinte descrio abstrata para o conceito de re-
solver um problema: dado um conjunto de dados de entrada, encontrar os dados
de sada. Se denotamos pela varivel x os dados de entrada e pela varivel y os
dados de sada, resolver o problema significa encontrar y dado x. Em termos ma-
temticos, a resoluo de um problema realizada pelo mapeamento f : x y,
ou simplesmente y = f (x).
certo que, na maioria das aplicaes, os dados de entrada do problema
isto , x no so conhecidos com total exatido, devido a diversas fontes de
erros, como incertezas na coleta dos dados e erros de arredondamento. O conceito

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.8. CONDICIONAMENTO DE UM PROBLEMA 33

de condicionamento est relacionado forma como os erros nos dados de entrada


influenciam os dados de sada.
Para fins de anlise, denotaremos por x, os dados de entrada com preciso
absoluta e por x , os dados com erro. Definiremos tambm a soluo y , do
problema com dados de entrada x , ou seja, y = f (x ).
Estamos interessados em saber se os erros cometidos na entrada x = x x
influenciaram na sada do problema y = y y . No caso mais simples, temos
que x R e y R. Assumindo que f seja diferencivel, a partir da srie de Taylor

f (x + x) f (x) + f 0 (x)x (2.67)

obtemos (subtraindo f (x) dos dois lados)

y = f (x + x) f (x) f 0 (x)x (2.68)

Para relacionarmos os erros relativos, dividimos o lado esquerdo por y, o lado


direito por f (x) = y e obtemos
y f 0 (x) xx
(2.69)
y f (x) x
sugerindo a definio de nmero de condicionamento de um problema.
Definio 2.8.1. Seja f uma funo diferencivel. O nmero de condiciona-
mento de um problema definido como
xf 0 (x)

f (x) := (2.70)

f (x)


e fornece uma estimativa de quanto os erros relativos na entrada x sero am-

x
plificados na sada y .

y

De modo geral, quando f depende de vrias variveis, podemos obter


n

f

f = |f (x1 ,x2 ,...,xn ) f (x1 , x2 ,...,xn )| (x1 , x2 ,...,xn ) xi
X

xi
i=1

Uma matriz de nmeros de condicionamento tambm poderia ser obtida como


em [5].

Exemplo 2.8.1. Considere o problema de calcular x em x = 2. Se usarmos
x = 1,999, quanto ser o erro relativo na sada? O erro relativo na entrada
x 2 1,999

= = 0,0005 (2.71)

2

x

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


34 Clculo Numrico

O nmero de condicionamento do problema calcular a raiz



xf 0 (x) 1
1
x
2 x
f (x) :=
= = (2.72)
f (x) 2

x

Ou seja,
os erros na entradasero diminudos pela metade. De fato, usando
y = 2 = 1,4142136... e y = 1,999 = 1,41386..., obtemos

y 2 1,999
= 0,000250031... (2.73)
y 2
Exemplo 2.8.2. Considere a funo f (x) = 10
1x2
e x = 0,9995 com um erro
absoluto na entrada de 0,0001.
Calculando y = f (x ) temos
10
y = 10002,500625157739705173 (2.74)
1 (0,9995)2
Mas qual a estimativa de erro nessa resposta? Quantos dgitos significativos
temos nessa resposta?
Sabendo que f 0 (x) = 20x/(1 x2 )2 , o nmero de condicionamento
xf 0 (x) 2x2

f (x) :=
=
(2.75)
f (x) 1 x2

o que nos fornece para x = 0,9995,


f (0,9995) 1998,5 (2.76)
Como o erro relativo na entrada
x 0,0001

= 0,00010005... (2.77)

0,9995

x

temos que o erro na sada ser aproximadamente


y x

f (x) 1998,5 0,00010005... 0,1999 (2.78)


y x
ou seja um erro relativo de aproximadamente 19,99%.
Note que se usarmos x1 = 0,9994 e x2 = 0,9996 (ambos no intervalo do erro
absoluto da entrada) encontramos
y1 8335,83
y2 12520,50
confirmando a estimativa de 19,99%.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.8. CONDICIONAMENTO DE UM PROBLEMA 35

Exemplo 2.8.3. Seja f (x) = x exp(x). Calcule o erro absoluto ao calcular f (x)
sabendo que x = 2 0,05.

Soluo. Temos que x 2 com erro absoluto de x = 0,05. Neste caso, calculamos
f , isto , o erro absoluto ao calcular f (x), por:

f = |f 0 (x)|x . (2.79)

Como f 0 (x) = (1 + x)ex , temos:

f = |(1 + x)ex | x
= |3e2 | 0,05 = 1,1084.

Portanto, o erro absoluto ao calcular f (x) quando x = 2 0,05 de 1,1084.


2
Exemplo 2.8.4. Calcule o erro relativo ao medir f (x,y) = x x+1
2 e
2y
sabendo que
x 3 conhecido com 10% de erro e y 2 conhecido com 3% de erro.

Soluo. Calculamos as derivadas parciais de f :

f 2x3 (2x3 + 2x) 2y 2e2y


= e = 3
x x4 x
e
f x2 + 1 2y
=2 e
y x2
Calculamos o erro absoluto em termos do erro relativo:
x
= 0,1 x = 3 0,1 = 0,3
|x|

y
= 0,03 y = 2 0,03 = 0,06
|y|
Aplicando a expresso para estimar o erro em f temos

f = f + y y

x x
f

2e4
= 27
0,3 + 2 9+1
9
e4 0,06 = 8,493045557

Portanto, o erro relativo ao calcular f estimado por


f 8,493045557
= 9+1 4 = 14%
|f | 9
e

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


36 Clculo Numrico

Exemplo 2.8.5. No exemplo anterior, reduza o erro relativo em x pela metade e


calcule o erro relativo em f . Depois, repita o processo reduzindo o erro relativo
em y pela metade.

Soluo. Na primeira situao temos x = 3 com erro relativo de 5% e x =


0,05 3 = 0,15. Calculamos f = 7,886399450 e o erro relativo em f de 13%.
Na segunda situao, temos y = 2 com erro de 1,5% e y = 2 0,015 = 0,03.
Calculamos f = 4,853168892 e o erro relativo em f de 8%. Observe que mesma
o erro relativo em x sendo maior, o erro em y mais significante na funo.

Exemplo 2.8.6. Considere um tringulo retngulo onde a hipotenusa e um dos


catetos so conhecidos a menos de um erro: hipotenusa a = 30,01 metros e cateto
b = 2 0,01 metros. Calcule o erro absoluto ao calcular a rea dessa tringulo.

Soluo. Primeiro vamos encontrar a expresso para a rea em funo da hipo-


tenusa a e um cateto b. A tamanho de segundo cateto c dado pelo teorema de
Pitgoras, a2 = b2 + c2 , ou seja, c = a2 b2 . Portanto a rea

bc b a2 b 2
A= = .
2 2
Agora calculamos as derivadas

A ab
= 2 ,
a 2 a b2

A a2 b2 b2
= 2 ,
b 2 2 a b2
e substituindo na estimativa para o erro A em termos de a = 0,01 e b = 0,01:

A A
A +

a a b b


3 5 5
0,01 + 0,01 = 0,01565247584
5 10

Em termos do erro relativo temos erro na hipotenusa de 0,01


3
0,333%, erro no
cateto de 0,01
2
= 0,5% e erro na rea de

0,01565247584

2 32 22
= 0,7%
2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.9. EXEMPLOS SELECIONADOS DE CANCELAMENTO
CATASTRFICO 37

Exerccios

E 2.8.1. Considere que a varivel x 2 conhecida com um erro relativo


de 1% e a varivel y 10 com um erro relativo de 10%. Calcule o erro relativo
associado a z quando:
y4 x
z= e . (2.80)
1 + y4
Suponha que voc precise conhecer o valor de z com um erro de 0,5%. Voc prope
uma melhoria na medio da varivel x ou y? Explique.

E 2.8.2. A corrente I em ampres e a tenso V em volts em uma lmpada se


relacionam conforme a seguinte expresso:

V

I= , (2.81)
V0
onde um nmero entre 0 e 1 e V0 tenso nominal em volts. Sabendo que
V0 = 220 3% e = 0,8 4%, calcule a corrente e o erro relativo associado
quando a tenso vale 220 1%.
Obs:. Este problema pode ser resolvido de duas formas distintas: usando a ex-
presso aproximada para a propagao de erro e inspecionando os valores mximos
e mnimos que a expresso pode assumir. Pratique os dois mtodos.Dica: lembre
que x = e ln(x)

2.9 Exemplos selecionados de cancelamento ca-


tastrfico
Exemplo 2.9.1. Considere o seguinte processo iterativo:
1
x(1) =
3
x(n+1) = 4x(n) 1, n = 1, 2, . . .

Observe que x(1) = 31 , x(2) = 4 13 1 = 31 , x(3) = 13 , ou seja, temos uma sequncia


constante igual a 13 . No entanto, ao calcularmos no computador, usando o sistema
de numerao double, a sequncia obtida no constante e, de fato, diverge. Faa
o teste no Scilab, colocando:

-->x = 1/3

e itere algumas vezes a linha de comando:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


38 Clculo Numrico

-->x = 4*x-1
Para compreender o que acontece, devemos levar em considerao que o nmero
1
3
= 0,3 possui um representao infinita tanto na base decimal quanto na base
binria. Logo, sua representao de mquina inclui um erro de arredondamento.
Seja  a diferena entre o valor exato de 31 e sua representao de mquina, isto ,
x(1) = 13 + . A sequncia efetivamente calculada no computador :
1
x(1) = +
3
1 1
 
x(2) = 4x(1) 1 = 4 +  1 = + 4
3 3
1 1
 
x(3) = 4x(2) 1 = 4 + 4 1 = + 42 
3 3
..
.
1
x(n) = + 4(n1) 
3
Portanto o limite da sequncia diverge,

lim |x(n) | = (2.82)


x

Qual o nmero de condicionamento desse problema?


Exemplo 2.9.2. Observe a seguinte identidade
(1 + x) 1
f (x) = =1
x
Calcule o valor da expresso esquerda para x = 1012 , x = 1013 , x = 1014 ,
x = 1015 , x = 1016 e x = 1017 . Observe que quando x se aproxima do  de
mquina a expresso perde o significado. Veja a Figura 2.1 com o grfico de f (x)
em escala logartmica.

Exemplo 2.9.3. Neste exemplo, estamos interessados em compreender mais de-


talhadamente o comportamento da expresso
1
 n
1+ (2.83)
n
quando n um nmero grande ao comput-la em sistemas de numeral de ponto
flutuante com acurcia finita. Um resultado bem conhecido do clculo nos diz que
o limite de (2.83) quando n tende a infinito o nmero de Euler:
1
 n
lim 1+ = e = 2,718281828459... (2.84)
n n

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.9. EXEMPLOS SELECIONADOS DE CANCELAMENTO
CATASTRFICO 39

Figura 2.1: Grfico na funo do Exemplo 2.9.2.

 n
Figura 2.2: Grfico de 1 + n1 em funo de n em escala linear-logartmica vari-
ando de 100 at 1018 . Veja o Exemplo 2.9.3.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


40 Clculo Numrico

Sabemos tambm que a sequncia produzida por (2.83) crescente, isto :

1 1 1
 1  2  3
1+ < 1+ < 1+ < (2.85)
1 2 3
No entanto, quando calculamos essa expresso no Scilab, nos defrontamos
com o seguinte resultado:

 n  n
n 1+ 1
n
n 1+ 1
n

1 2,0000000000000 102 2,7048138294215


2 2,2500000000000 104 2,7181459268249
3 2,3703703703704 106 2,7182804690957
4 2,4414062500000 108 2,7182817983391
5 2,4883200000000 1010 2,7182820532348
6 2,5216263717421 1012 2,7185234960372
7 2,5464996970407 1014 2,7161100340870
8 2,5657845139503 1016 1,0000000000000
9 2,5811747917132 1018 1,0000000000000
10 2,5937424601000 1020 1,0000000000000
 n
Podemos resumir esses dados no grfico de 1 + n1 em funo de n, veja a
Figura 2.9.
Observe que quando n se torna grande, da ordem de 1015 , o grfico da funo
deixa de ser crescente e apresenta oscilaes. Observe tambm que a expres-
so se torna identicamente igual a 1 depois de um certo limiar. Tais fenmenos
no so intrnsecos da funo f (n) = (1 + 1/n)n , mas oriundas de erros de
arredondamento, isto , so resultados numricos esprios. A fim de pr o com-
portamento numrico de tal expresso, apresentamos abaixo o grfico da mesma
funo, porm restrito regio entre 1014 e 1016 .
Para compreendermos melhor por que existe um limiar N que, quando atin-
gido torna a expresso do exemplo acima identicamente igual a 1, observamos a
sequncia de operaes realizadas pelo computador:

n 1/n 1 + 1/n (1 + 1/n)n (2.86)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.9. EXEMPLOS SELECIONADOS DE CANCELAMENTO
CATASTRFICO 41

Devido ao limite de preciso da representao de nmeros em ponto flutuante,


existe um menor nmero representvel que maior do que 1. Este nmero
1+eps, onde eps chamado de psilon de mquina e o menor nmero que
somado a 1 produz um resultado superior a 1 no sistema de numerao usado.
O psilon de mquina no sistema de numerao double vale aproximadamente
2,22 1016 . No Scilab, o psilon de mquina a constante eps. Observe que:

-->1+%eps
ans =
1.0000000000000002220446

Quando somamos a 1 um nmero positivo inferior ao psilon de mquina, obtemos


o nmero 1. Dessa forma, o resultado obtido pela operao de ponto flutuante
1 + n para 0 < n < 2,22 1016 1.
Portanto, quando realizamos a sequncia de operaes dada em (2.86), toda
informao contida no nmero n perdida na soma com 1 quando 1/n menor
que o psilon de mquina, o que ocorre quando n > 5 1015 . Assim, (1 + 1/n)
aproximado para 1 e a ltima operao se resume a 1n , o que igual a 1 mesmo
quando n grande.
Um erro comum acreditar que o perda de significncia se deve ao fato de 1/n
ser muito pequeno para ser representado e aproximando para 0. Isto falso, o
sistema de ponto de flutuante permite representar nmeros de magnitude muito
inferior ao psilon de mquina. O problema surge da limitao no tamanho da
mantissa. Observe como a seguinte sequncia de operaes no perde significncia
para nmeros positivos x muito menores que o psilon de mquina:

n 1/n 1/(1/n) (2.87)

compare o desempenho numrico desta sequncia de operaes para valores pe-


quenos de n com o da seguinte sequncia:

n 1 + n (1 + n) 1. (2.88)
 n
Finalmente, notamos que quando tentamos calcular 1 + n1 para n grande, existe
perda de significncia no clculo de 1+1/n. Para entendermos isso melhor, vejamos
o que acontece no Scilab quando n = 7 1013 :

-->n=7e13
n =
7.000000000000000000D+13
-->1/n
ans =

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


42 Clculo Numrico

1.428571428571428435D-14
-->y=1+1/n
y =
1.000000000000014211D+00

Observe a perda de informao ao deslocar a mantissa de 1/n. Para evidenciar o


fenmeno, observamos o que acontece quando tentamos recalcular n subtraindo 1
de 1 + 1/n e invertendo o resultado:

-->y-1
ans =
1.421085471520200372D-14
-->1/(y-1)
ans =
7.036874417766400000D+13

Exemplo 2.9.4 (Analogia da balana). Observe a seguinte comparao interes-


sante que pode ser feita para ilustrar os sistemas de numerao com ponto fixo e
flutuante: o sistema de ponto fixo como uma balana cujas marcas esto igual-
mente espaadas; o sistema de ponto flutuante como uma balana cuja distncia
entre as marcas proporcional massa medida. Assim, podemos ter uma ba-
lana de ponto fixo cujas marcas esto sempre distanciadas de 100g (100g, 200g,
300g, ..., 1Kg, 1,1Kg,...) e outra balana de ponto flutuante cujas marcas esto
distanciadas sempre de aproximadamente um dcimo do valor lido (100g, 110g,
121g, 133g, ..., 1Kg, 1,1Kg, 1,21Kg, ...) A balana de ponto fixo apresenta uma
resoluo baixa para pequenas medidas, porm uma resoluo alta para grandes
medidas. A balana de ponto flutuante distribui a resoluo de forma proporcional
ao longo da escala.
Seguindo nesta analogia, o fenmeno de perda de significncia pode ser inter-
pretado como a seguir: imagine que voc deseje obter o peso de um gato (apro-
ximadamente 4Kg). Dois processos esto disponveis: colocar o gato diretamente
na balana ou medir seu peso com o gato e, depois, sem o gato. Na balana de
ponto flutuante, a incerteza associada medida do peso do gato (sozinho) apro-
ximadamente 10% de 4Kg, isto , 400g. J a incerteza associada medida da
uma pessoa (aproximadamente 70Kg) com o gato de 10% do peso total, isto ,
aproximadamente 7Kg. Esta incerteza da mesma ordem de grandeza da medida
a ser realizada, tornado o processo impossvel de ser realizado, j que teramos
uma incerteza da ordem de 14Kg (devido dupla medio) sobre uma grandeza
de 4Kg.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.9. EXEMPLOS SELECIONADOS DE CANCELAMENTO
CATASTRFICO 43

Exerccios resolvidos
ER 2.9.1. Deseja-se medir a concentrao de dois diferentes oxidantes no ar. Trs
sensores eletroqumicos esto disponveis para a medida e apresentam a seguintes
respostas:
v1 = 270[A] + 30[B], v2 = 140[A] + 20[B] e v3 = 15[A] + 200[B] (2.89)
as tenses v1 , v2 e v3 so dadas em mV e as concentraes em milimol/l.
a) Encontre uma expresso para os valores de [A] e [B] em termos de v1 e v2 e,
depois, em termos de v1 e v3 . Dica: Se ad 6= bc, ento a matriz A dada por

a b
A= (2.90)
c d

inversvel e sua inversa dada por



1 d b
A1 = . (2.91)
ad bc c a

b) Sabendo que incerteza relativa associada s sensibilidades dos sensores 1 e 2


de 2% e que a incerteza relativa associada s sensibilidades do sensor 3 10%,
verifique a incerteza associada medida feita com o par 1 2 e o par 1 3.
Use [A] = [B] = 10milimol/l. Dica: Voc deve diferenciar as grandezas [A] e
[B] em relao aos valores das tenses.
Soluo. Em ambos casos, temos a seguinte estrutura:

S11 S12 [A] v1
=
S21 S22 [B] v2

De forma que
1
[A] S11 S12 v1 1 S22 S12 v1
= =
S11 S22 S12 S21 S21

[B] S21 S22 v2 S11 v2

Portanto
S22 v1 S12 v2
[A] =
S11 S22 S12 S21
S21 v1 + S11 v2
[B] =
S11 S22 S12 S21

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


44 Clculo Numrico

Usando derivao logartmica, temos

1 [A] S22
=
[A] S11 S11 S22 S12 S21
1 [A] v2 S21 [A] S22
= + =
[A] S12 S22 v1 S12 v2 S11 S22 S12 S21 [B] S11 S22 S12 S21
1 [A] S12
=
[A] S21 S11 S22 S12 S21
1 [A] v1 S11 [A] S12
= =
[A] S22 S22 v1 S12 v2 S11 S22 S12 S21 [B] S11 S22 S12 S21
e
1 [B] v2 S22 [B] S21
= =
[B] S11 S21 v1 + S11 v2 S11 S22 S12 S21 [A] S11 S22 S12 S21
1 [B] S21
=
[B] S12 S11 S22 S12 S21
1 [B] v1 S21 [B] S11
= + =
[B] S21 S21 v1 + S11 v2 S11 S22 S12 S21 [A] S11 S22 S12 S21
1 [B] S11
=
[B] S22 S11 S22 S12 S21

E o erro associado s medidas pode ser aproximado por

1 1 [A] 1 [A] 1 [A] 1 [A]



[A] = S11 +

S12 +

S21 +



[A] [A] S11 [A] S12 [A] S21 [A] S22 S22
1 [A] [A]
" #
= S22 S11 + S22 S12 + S12 S21 + S12 S22
|det S| [B] [B]

Analogamente, temos:

1 1 [B] [B]
" #
[B] = S21 S11 + S21 S11 + S11 S21 + S11 S22
[B] |det S| [A] [A]

onde no se indicou |Sij | nem |[.]| pois so todos positivos.


Fazemos agora a aplicao numrica:
Caso do par 1-2:
270 30

det S = = 1200 (2.92)


140 20

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


2.9. EXEMPLOS SELECIONADOS DE CANCELAMENTO
CATASTRFICO 45
1 1
[A] = [20 270 2% + 20 30 2% + 30 140 2% + 30 20 2%]
[A] 1200
216
= = 0.18 = 18%
1200
1 1
[B] = [140 270 2% + 140 30 2% + 270 140 2% + 270 20 2%]
[B] 1200
426
= = 0.355 = 35.5%
1200
Caso do par 1-3:

270 30


det S = = 53550 (2.93)


15 200

1 1
[A] = [200 270 2% + 200 30 2% + 30 15 10% + 30 200 10%]
[A] 53550
1804,6
= 0.0337 = 3.37%
52550
1 1
[B] = [15 270 2% + 15 30 2% + 270 15 10% + 270 200 10%]
[B] 53550
5895
= 0.11 = 11%
53550
Concluso, apesar de o sensor 3 apresentar uma incerteza cinco vezes maior na
sensibilidade, a escolha do sensor 3 para fazer par ao sensor 1 parece mais ade-
quada.

Exerccios

E 2.9.1. Considere as expresses:

exp(1/)
(2.94)
1 + exp(1/)
e
1
(2.95)
exp(1/) + 1
com > 0. Verifique que elas so idnticas como funes reais. Teste no compu-
tador cada uma delas para = 0,1, = 0,01 e = 0,001. Qual dessas expresses
mais adequada quando um nmero pequeno? Por qu?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


46 Clculo Numrico

E 2.9.2. Encontre expresses alternativas para calcular o valor das seguintes


funes quando x prximo de zero.

a) f (x) = 1cos(x)
x2

b) g(x) = 1+x1

c) h(x) = x + 106 103

d) i(x) = 1 + ex 2 Dica: Faa y = ex 1

E 2.9.3. Use uma identidade trigonomtrica adequada para mostrar que:


!2
1 cos(x) 1 sen (x/2)
= . (2.96)
x2 2 x/2

Analise o desempenho destas duas expresses no computador quando x vale 105 ,


106 , 107 , 108 , 109 , 10200 e 0. Discuta o resultado. Dica: Para |x| < 105 ,
f (x) pode ser aproximada por 1/2 x2 /24 com erro de truncamento inferior a
1022 .
E 2.9.4. Reescreva as expresses:

e2x + 1 ex e e2x + x2 ex (2.97)

de modo que seja possvel calcular seus valores para x = 100 utilizando a aritmtica
de ponto flutuante ("Double") no computador.

E 2.9.5. Na teoria da relatividade restrita, a energia cintica de uma partcula


e sua velocidade se relacionam pela seguinte frmula:

1
E = mc2 q 1 , (2.98)
1 (v/c)2

onde E a energia cintica da partcula, m a massa de repouso, v o mdulo da


velocidade e c a velocidade da luz no vcuo dada por c = 299792458m/s. Considere
que a massa de repouso m = 9,10938291 1031 Kg do eltron seja conhecida com
erro relativo de 109 . Qual o valor da energia e o erro relativo associado a essa
grandeza quando v = 0,1c, v = 0,5c, v = 0,99c e v = 0,999c sendo que a incerteza
relativa na medida da velocidade 105 ?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 3

Soluo de equaes de uma


varivel

Neste captulo, construiremos aproximaes numricas para a soluo de equa-


es algbricas em uma nica varivel real. Observamos que obter uma so-
luo para uma dada equao equivalente a encontrar um zero de uma funo
real apropriada. Com isso, iniciamos este captulo discutindo condies de exis-
tncia e unicidade de razes de funes de uma varivel real. Ento, apresentamos
o mtodo da bisseo como uma primeira abordagem numrica para a soluo
de tais equaes.
Em seguida, exploramos outra abordagem via iterao do ponto fixo. Desta,
obtemos o mtodo de Newton1 , para o qual estudamos aplicaes e critrios de
convergncia. Por fim, apresentamos o mtodo das secantes como uma das
possveis variaes do mtodo de Newton.

3.1 Existncia e unicidade


O teorema de Bolzano2 nos fornece condies suficientes para a existn-
cia do zero de uma funo. Este uma aplicao direta do teorema do valor
intermedirio.
Teorema 3.1.1 (Teorema de Bolzano). Se f : [a, b] R, y = f (x), uma funo
contnua tal que f (a) f (b) < 03 , ento existe x (a, b) tal que f (x ) = 0.
Demonstrao. O resultado uma consequncia imediata do teorema do valor
intermedirio que estabelece que dada uma funo contnua f : [a, b] R, y =
1
Sir Isaac Newton, 1642 - 1727, matemtico e fsico ingls.
2
Bernhard Placidus Johann Gonzal Nepomuk Bolzano, 1781 - 1848, matemtico do Reino da
Bomia.
3
Esta condio equivalente a dizer que a funo troca de sinal no intervalo.

47
48 Clculo Numrico

f(a)

x b
a x

f(b)

Figura 3.1: Teorema de Bolzano.

f (x), tal que f (a) < f (b) (ou f (b) < f (a)), ento para qualquer d (f (a), f (b))
(ou k (f (b), f (a))) existe x (a, b) tal que f (x ) = k. Ou seja, nestas notaes,
se f (a) f (b) < 0, ento f (a) < 0 < f (b) (ou f (b) < 0 < f (a)). Logo, tomando
k = 0, temos que existe x (a, b) tal que f (x ) = k = 0.
Em outras palavras, se f (x) uma funo contnua em um dado intervalo no
qual ela troca de sinal, ento ela tem pelo menos um zero neste intervalo (veja a
Figura 3.1).
Exemplo 3.1.1. Mostre que existe pelo menos uma soluo da equao ex = x+2
no intervalo (2,0).
Soluo. Primeiramente, observamos que resolver a equao ex = x + 2 equi-
valente a resolver f (x) = 0 com f (x) = ex x 2. Agora, como f (2) = e2 > 0
e f (0) = 2 < 0, temos do teorema de Bolzano que existe pelo menos um zero de
f (x) no intervalo (2, 0). E, portanto, existe pelo menos uma soluo da equao
dada no intervalo (2, 0).
Podemos usar o Scilab para estudarmos esta funo. Por exemplo, podemos
definir a funo f (x) e comput-la nos extremos do intervalo dado com os seguintes
comandos:
-->deff('y=f(x)','y=exp(x)-x-2')
-->f(-2),f(0)
ans =
0.1353353
ans =
- 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.1. EXISTNCIA E UNICIDADE 49

Alternativamente (e com maior preciso), podemos verificar diretamente o sinal


da funo nos pontos desejados com comando sign:

-->sign(f(-2)),sign(f(0))
ans =
1.
ans =
- 1.

Quando procuramos aproximaes para zeros de funes, aconselhvel isolar


cada raiz em um intervalo. Desta forma, gostaramos de poder garantir a existncia
e a unicidade da raiz dentro de um dado intervalo. A seguinte proposio nos
fornece condies suficientes para tanto.

Proposio 3.1.1. Se f : [a, b] R um funo diferencivel, f (a) f (b) < 0 e


f 0 (x) > 0 (ou f 0 (x) < 0) para todo x (a, b), ento existe um nico x (a, b) tal
que f (x ) = 0.

Em outras palavras, para garantirmos que exista um nico zero de uma dada
funo diferencivel em um intervalo, suficiente que ela troque de sinal e seja
montona neste intervalo.

Exemplo 3.1.2. No Exemplo 3.1.1, mostramos que existe pelo menos um zero de
f (x) = ex x 2 no intervalo (2,0), pois f (x) contnua e f (2) f (0) < 0.
Agora, observamos que, alm disso, f 0 (x) = ex 1 e, portanto, f 0 (x) < 0 para
todo x (2,0). Logo, da Proposio 3.1.1, temos garantida a existncia de um
nico zero no intervalo dado.
Podemos inspecionar o comportamento da funo f (x) = ex x 2 e de sua
derivada fazendo seus grficos no Scilab. Para tanto, podemos fazer o seguinte
teste:

-->x = linspace(-2,0,50);
-->deff('y = f(x)','y=exp(x)-x-2') // define f
-->plot(x,f(x));xgrid // grafico de f
-->deff('y = fl(x)','y=exp(x)-1') // a derivada
-->plot(x,fl(x));xgrid // grafico de f'

A discusso feita nesta seo, especialmente o teorema de Bolzano, nos fornece


os fundamentos para o mtodo da bisseo, o qual discutimos na prxima seo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


50 Clculo Numrico

Exerccios

E 3.1.1. Mostre que cos x = x tem soluo no intervalo [0, /2].

E 3.1.2. Mostre que cos x = x tem uma nica soluo no intervalo [0, /2].

E 3.1.3. Interprete a equao cos(x) = kx como o problema de encontrar a


interseco da curva y = cos(x) com y = kx. Encontre o valor positivo k para o
qual essa equao admite exatamente duas razes positivas distintas.

E 3.1.4. Mostre que a equao:


1
ln(x) + x3 = 10 (3.1)
x
possui uma nica soluo positiva.

E 3.1.5. Use o teorema de Bolzano para mostrar que o erro absoluto ao


aproximar o zero da funo f (x) = ex x 2 por x = 1,841 menor que 103 .

E 3.1.6. Mostre que o erro absoluto associado aproximao x = 1,962 para


a soluo exata x de:
ex + sen (x) + x = 10 (3.2)
menor que 104 .

E 3.1.7. Mostre que a equao


1
ln(x) + x =v (3.3)
x
possui uma soluo para cada v real e que esta soluo nica.

3.2 Mtodo da bisseo


O mtodo da bisseo explora o fato de que uma funo contnua f : [a, b]
R com f (a) f (b) < 0 tem um zero no intervalo (a, b) (veja o teorema de Bol-
zano 3.1.1). Assim, a ideia para aproximar o zero de uma tal funo f (x) tomar,
como primeira aproximao, o ponto mdio do intervalo [a, b], isto :
(a + b)
x(0) = . (3.4)
2
Pode ocorrer de f (x(0) ) = 0 e, neste caso, o zero de f (x) x = x(0) . Caso
contrrio, se f (a) f (x(0) ) < 0, ento x (a, x(0) ). Neste caso, tomamos como

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.2. MTODO DA BISSEO 51

f (b)

a x(0)
x(1) b x
f (x(0) )

f (a)

Figura 3.2: Mtodo da bisseo.

segunda aproximao do zero de f (x) o ponto mdio do intervalo [a, x(0) ], isto ,
x(1) = (a + x(0) )/2. No outro caso, temos f (x(0) ) f (b) < 0 e, ento, tomamos
x(1) = (x(0) + b)/2. Repetimos este procedimento at obtermos a aproximao
desejada (veja Figura 3.2).
De forma mais precisa, suponha que queiramos calcular uma aproximao com
uma certa preciso T OL para um zero x de uma dada funo contnua f : [a, b]
R tal que f (a) f (b) < 0. Iniciamos, tomando n = 0 e:

a(n) + b(n)
a(n) = a, b(n) = b e x(n) = . (3.5)
2
Verificamos o critrio de parada, isto , se f (x(n) ) = 0 ou:

|b(n) a(n) |
< T OL, (3.6)
2
ento x(n) a aproximao desejada. Caso contrrio, preparamos a prxima itera-
o n + 1 da seguinte forma: se f (a(n) ) f (x(n) ) < 0, ento definimos a(n+1) = a(n)
e b(n+1) = x(n) ; no outro caso, se f (x(n) ) f (b(n) ) < 0, ento definimos a(n+1) = x(n)
e b(n+1) = b(n) . Trocando n por n + 1, temos a nova aproximao do zero de f (x)
dada por:
a(n+1) + b(n+1)
x(n+1) = . (3.7)
2
Voltamos a verificar o critrio de parada acima e, caso no satisfeito, iteramos
novamente. Iteramos at obtermos a aproximao desejada ou o nmero mximo
de iteraes ter sido atingido.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


52 Clculo Numrico

Tabela 3.1: Iterao do mtodo da bisseo para o Exemplo 3.2.1.


|b(n) a(n) |
n a(n) b(n) x(n) f (a(n) )f (x(n) )
2
0 2 0 1 <0 1
1 2 1 1,5 <0 0,5
2 2 1,5 1,75 <0 0,25
3 2 1,75 1,875 >0 0,125
4 1,875 1,75 1,8125 <0 0,0625

Exemplo 3.2.1. Use o mtodo da bisseo para calcular uma soluo de ex = x+2
no intervalo [2, 0] com preciso T OL = 101 .

Soluo. Primeiramente, observamos que resolver a equao dada equivalente


a calcular o zero de f (x) = ex x 2. Alm disso, temos f (2) f (0) < 0.
Desta forma, podemos iniciar o mtodo da bisseo tomando o intervalo inicial
[a(0) , b(0) ] = [2, 0] e:
a(0) + b(0)
x(0) = = 1. (3.8)
2
Apresentamos as iteraes na Tabela 3.1. Observamos que a preciso T OL =
101 foi obtida na quarta iterao com o zero de f (x) sendo aproximado por
x(4) = 1,8125.
Usando o Scilab neste exemplo, temos:
-->deff('y = f(x)','y = exp(x) - x - 2')
-->a=-2, b=0, x=(a+b)/2, TOL = (b-a)/2, sign(f(a)*f(x))
-->b=x, x=(a+b)/2, TOL = (b-a)/2, sign(f(a)*f(x))
e, assim, sucessivamente. Veja o cdigo completo na Seo 3.2.1.

Vamos agora discutir sobre a convergncia do mtodo da bisseo. O prximo


Teorema 3.2.1 nos garante a convergncia do mtodo da bisseo.

Teorema 3.2.1 (Convergncia do mtodo da bisseo). Sejam f : [a, b] R uma


funo contnua tal que f (a)f (b) < 0 e x o nico zero de f (x) no intervalo (a, b).
Ento, a sequncia {x(n) }n>=0 do mtodo da bisseo satisfaz:

ba
|x(n) x | < , n 0, (3.9)
2n+1
isto , x(n) x quando n .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.2. MTODO DA BISSEO 53

Demonstrao. Notemos que, a cada iterao, a distncia entre a aproximao


x(n) e o zero x da funo menor ou igual que a metade do tamanho do intervalo
[a(n) , b(n) ] (veja Figura 3.2), isto :
b(n) a(n)
|x (n)
x | . (3.10)
2
Por construo do mtodo, temos [a(n) , b(n) ] [a(n1) , b(n1) ] e:
b(n1) a(n1)
b(n) a(n) = . (3.11)
2
Desta forma:
b(n) a(n) b(n1) a(n1) b(0) a(0)
|x(n) x | = = = , n 1. (3.12)
2 22 2n+1
Logo, vemos que:
ba
|x(n) x | n+1 , n 0. (3.13)
2

Observamos que a hiptese de que f (x) tenha um nico zero no intervalo no


realmente necessria. Se a funo tiver mais de um zero no intervalo inicial, as
iteraes ainda convergem para um dos zero. Veja o Exerccio 3.2.3.
Observao 3.2.1. O Teorema 3.2.1 nos fornece uma estimativa para a conver-
gncia do mtodo da bisseo. Aproximadamente, temos:
1
|x(n+1) x | . |x(n) x |. (3.14)
2
Isto nos leva a concluir que o mtodo da bisseo tem taxa de convergncia
linear.
Exemplo 3.2.2. No Exemplo 3.2.1, precisamos de 4 iteraes do mtodo da bis-
seo para computar uma aproximao com preciso de 101 do zero de f (x) =
ex x 2 tomando como intervalo inicial [a, b] = [2, 0]. Poderamos ter estimado
o nmero de iteraes a priori, pois, como vimos acima:
ba
|x(n) x | , n 0. (3.15)
2n+1
Logo, temos:
ba 2
|x(n) x | < = n+1
2n+1 2
= 2 < 101 n > log2 101 3,32.
n

O que est de acordo com o experimento numrico realizado naquele exemplo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


54 Clculo Numrico

O mtodo da bisseo tem a boa propriedade de garantia de convergncia,


bem como de fornecer uma simples estimativa do erro na aproximao calculada.
Entretanto, a taxa de convergncia linear superada por outros mtodos. A
construo de tais mtodos est, normalmente, associada iterao do ponto fixo,
a qual exploramos na prxima seo.

3.2.1 Cdigo Scilab: mtodo da bisseo


O seguinte cdigo uma implementao no Scilab do algoritmo da bisseo.
As variveis de entrada so:

f - funo objetivo

a - extremo esquerdo do intervalo de inspeo [a, b]

b - extremo direito do intervalo de inspeo [a, b]

TOL - tolerncia (critrio de parada)

N - nmero mximo de iteraes

A varivel de sada :

p - aproximao da raiz de f, isto , f (p) 0.

function [p] = bissecao(f, a, b, TOL, N)


i = 1
fa = f(a)
while (i <= N)
//iteracao da bissecao
p = a + (b-a)/2
fp = f(p)
//condicao de parada
if ((fp == 0) | ((b-a)/2 < TOL)) then
return p
end
//bissecta o intervalo
i = i+1
if (fa * fp > 0) then
a = p
fa = fp
else
b = p

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.2. MTODO DA BISSEO 55

end
end
error ('Num. max. de iter. excedido!')
endfunction

Exerccios

E 3.2.1. Considere a equao x = cos(x). Use o mtodo da bisseo com
intervalo inicial [a, b] = [0, 1] e x(1) = (a + b)/2 para calcular a aproximao x(4)
da soluo desta equao.

E 3.2.2. Trace o grfico e isole as trs primeiras razes positivas da funo:


x
 
f (x) = 5 sen (x ) exp
2
(3.16)
10
em intervalos de comprimento 0,1. Ento, use o mtodo da bisseo para obter
aproximaes dos zeros desta funo com preciso de 105 .

E 3.2.3. O polinmio p(x) = 4+8x5x2 +x3 tem razes x1 = 1 e x2 = x3 = 2


no intervalo [1/2, 3].
a) Se o mtodo da bisseo for usando com o intervalo inicial [1/2, 3], para qual
raiz as iteraes convergem?
b) possvel usar o mtodo da bisseo para a raiz x = 2? Justifique sua
resposta.


E 3.2.4. O polinmio f (x) = x4 4x2 + 4 possui razes duplas em 2 e 2.
O mtodo da bisseo pode ser aplicados a f ? Explique.

E 3.2.5. Mostre que a equao do Problema 3.1.7 possui uma soluo no


intervalo [1, v + 1] para todo v positivo. Dica: defina f (x) = ln(x) + x x1 v e
considere a seguinte estimativa:
Z v+1 Z v+1
f (v + 1) = f (1) + f 0 (x)dx v + dx = 0. (3.17)
1 1

Use esta estimativa para iniciar o mtodo de bisseo e obtenha o valor da raiz
com pelo menos 6 algarismos significativos para v = 1, 2, 3, 4 e 5.

E 3.2.6. (Esttica) Considere o seguinte problema fsico: uma plataforma est


fixa a uma parede atravs de uma dobradia cujo momento dado por:
= k, (3.18)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


56 Clculo Numrico

onde angulo da plataforma com a horizontal e k uma constante positiva. A


plataforma feita de material homogneo, seu peso P e sua largura l. Modele
a relao entre o ngulo e o peso P prprio da plataforma. Encontre o valor
de quando l = 1 m, P = 200 N, k = 50 Nm/rad, sabendo que o sistema est
em equilbrio. Use o mtodo da bisseo e expresse o resultado com 4 algarismos
significativos.

E 3.2.7. Considere a equao de Lambert dada por:

xex = t, (3.19)

onde t um nmero real positivo. Mostre que esta equao possui uma nica
soluo x que pertence ao intervalo [0, t]. Usando esta estimativa como intervalo
inicial, quantos passos so necessrio para obter o valor numrico de x com erro
absoluto inferior a 106 quando t = 1, t = 10 e t = 100 atravs do mtodo da
bisseo? Obtenha esses valores.

E 3.2.8. (Eletrnica) O desenho abaixo mostra um circuito no linear envol-


vendo uma fonte de tenso constante, um diodo retificador e um resistor. Sabendo
que a relao entre a corrente (Id ) e a tenso (vd ) no diodo dada pela seguinte
expresso:

vd
   
Id = IR exp 1 , (3.20)
vt

onde IR a corrente de conduo reversa e vt , a tenso trmica dada por vt = kT


q
com k, a constante de Boltzmann, T a temperatura de operao e q, a carga do
eltron. Aqui IR = 1pA = 1012 A, T = 300 K. Escreva o problema como uma
equao na incgnita vd e, usando o mtodo da bisseo, resolva este problema
com 3 algarismos significativos para os seguintes casos:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 57

a) V = 30 V e R = 1 k.

b) V = 3 V e R = 1 k.

c) V = 3 V e R = 10 k.

d) V = 300 mV e R = 1 k.

e) V = 300 mV e R = 1 k.

f) V = 30 V e R = 1 k.

g) V = 30 V e R = 10 k.

Dica: V = RId + vd .

E 3.2.9. (Propagao de erros) Obtenha os valores de Id no Problema 3.2.8.


Lembre que existem duas expresses disponveis:
vd
   
Id = IR exp 1 (3.21)
vt
e
v vd
Id = (3.22)
R
Faa o estudo da propagao do erro e decida qual a melhor expresso em cada
caso.

3.3 Iterao de ponto fixo


Nesta seo, discutimos a abordagem da iterao do ponto fixo para a solu-
o numrica de equaes de uma varivel real. Observamos que sempre podemos
reescrever uma equao da forma f (x) = 0 (problema de encontrar os zeros de uma
funo) em uma equao equivalente na forma g(x) = x (problema de ponto
fixo). Um ponto x = x tal que g(x ) = x chamado de ponto fixo da funo
g(x). Geometricamente, um ponto fixo de uma funo um ponto de interseo
entre a reta y = x com o grfico da funo g(x) (veja Figura 3.3).
Exemplo 3.3.1. Resolver a equao ex = x + 2 equivalente a resolver f (x) = 0,
com f (x) = ex x2. Estes so equivalentes a resolver g(x) = x, com g(x) = ex 2,
isto :
ex = x + 2 ex x 2 = 0 ex 2 = x (3.23)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


58 Clculo Numrico

y
y=x

y = g(x)

x x

Figura 3.3: Ponto fixo g(x ) = x .

Dada uma funo g(x), a iterao do ponto fixo consiste em computar a


seguinte sequncia recursiva:

x(n+1) = g(x(n) ), n 1, (3.24)

onde x(1) uma aproximao inicial do ponto fixo.

Exemplo 3.3.2 (Mtodo babilnico). O mtodo babilnico4 de uma iterao de


ponto fixo para extrair a raiz quadrada de um nmero positivo A, isto , resolver
a equao x2 = A.
Seja r > 0 uma aproximao para A. Temos trs possibilidades:
 
r > A = Ar < A = A Ar , r ;

r= A = A
r
= A;
 
r< A = A
r
> A = A r, Ar .

Ou seja, A sempre est no intervalo entre r e Ar , no qual podemos buscar uma
nova aproximao como, por exemplo, pelo ponto mdio:

r+ A
x= r
. (3.25)
2
4
Heron de Alexandria, 10 d.C. - 70 d.C., matemtico grego.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 59

Aplicando esse mtodo repetidas vezes, podemos construir a iterao (de ponto
fixo):

x(1) = r
x(n) A
x(n+1) = + (n) , n = 1,2,3,...
2 2x

Por exemplo, para obter uma aproximao para 5, podemos iniciar com a
aproximao inicial r = 2 e A = 5. Ento, tomamos x(1) = 2 e da seguem as
aproximaes:

2 2,5
x(2) = + = 2,25
2 2
2,25 2,5
x(3) = + = 2,2361111
2 2,25
2,2361111 2,5
x(4) = + = 2,236068
2 2,2361111
2,236068 2,5
x(5) = + = 2,236068
2 2,236068

O mtodo babilnico sugere que a iterao do ponto fixo pode ser uma abor-
dagem eficiente para a soluo de equaes. Ficam, entretanto, as seguintes per-
guntas:

1. Ser que a iterao do ponto fixo convergente?

2. Caso seja convergente, ser que o limite da sequncia produzida, isto ,


x := limn x(n) um ponto fixo?

3. Caso seja convergente, qual a taxa de convergncia?

A segunda pergunta a mais fcil de ser respondida. No caso de g(x) ser


contnua, se x(n) x Dom (g), ento:
 
x = lim x(n) = lim g(x(n1) ) = g lim x(n1) = g(x ). (3.26)
n n n

Antes de respondermos as outras perguntas acima, vejamos mais um exemplo.

Exemplo 3.3.3. Considere o problema de encontrar o zero da funo f (x) =


xex 10. Uma maneira geral de construir um problema de ponto fixo equivalente
o seguinte:
f (x) = 0 f (x) = 0 x f (x) = x, (3.27)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


60 Clculo Numrico

Tabela 3.2: Iteraes do ponto fixo para o Exemplo 3.3.3.


(n) (n)
n x1 x2
1 1,700 1,700
2 2,047 1,735
3 0,8812 1,743
4 4,3013 1,746
5 149,4 1,746

para qualquer parmetro 6= 0. Consideremos, ento, as seguintes duas funes:

g1 (x) = x 0,5f (x) e g2 (x) = x 0,05f (x). (3.28)

Notamos que o ponto fixo destas duas funes coincide com o zero de f (x). Cons-
truindo as iteraes do ponto fixo:
(n+1) (n) (n+1) (n)
x1 = g1 (x1 ) e x2 = g2 (x2 ), (3.29)

(1) (1)
tomando x1 = x2 = 1,7, obtemos os resultados apresentados na Tabela 3.2.
Observamos que, enquanto, a iterao do ponto fixo com a funo g1 (x) ( = 0,5)
parece divergir, a iterao com a funo g2 (x) ( = 0,05) parece convergir.
No Scilab, podemos computar as iteraes do ponto fixo x(n+1) = g1 (x(n) ) com
o seguinte cdigo:

--> deff('y = f(x)', 'y = x*exp(x)-10')


--> deff('y = g1(x)', 'y = x - 0.5*f(x)')
--> x = 1.7;
--> x = g1(x)
x =
2.0471
--> x = g1(x)
x =
-0.88119

e, assim, sucessivamente. Itere com a funo g2 (x) e verifique a convergncia!

A fim de estudarmos a convergncia da iterao do ponto fixo, apresentamos o


teorema do ponto fixo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 61

3.3.1 Teorema do ponto fixo


O teorema do ponto fixo nos fornece condies suficientes para a existncia e
unicidade do ponto fixo, bem como para a convergncia das iteraes do mtodo.

Definio 3.3.1. Uma contrao uma funo real g : [a, b] [a, b] tal que:

|g(x) g(y)| |x y|, 0 < 1. (3.30)

Observao 3.3.1. Seja g : [a, b] [a, b], y=g(x).

Se g(x) uma contrao, ento g(x) funo contnua.

Se |g 0 (x)| < k, 0 < k < 1, para todo x [a, b], ento g(x) uma contrao.

Teorema 3.3.1 (Teorema do ponto fixo). Se g : [a,b] [a,b] uma contrao,


ento existe um nico ponto x [a, b] tal que g(x ) = x , isto , x ponto fixo
de g(x). Alm disso, a sequncia {x(n) }nN dada por:

x(n+1) = g(x(n) ) (3.31)

converge para x para qualquer x(1) [a, b].

Demonstrao. Comeamos demonstrando que existe pelo menos um ponto fixo.


Para tal definimos a funo f (x) = x g(x) e observamos que:

f (a) = a g(a) a a = 0 (3.32)

e
f (b) = b g(b) b b = 0 (3.33)
Se f (a) = a ou f (b) = b, ento o ponto fixo existe. Caso contrrio, as desigualdades
so estritas e a f (x) muda de sinal no intervalo. Como esta funo contnua, pelo
teorema de Bolzano 3.1.1, existe um ponto x no intervalo (a, b) tal que f (x ) = 0,
ou seja, g(x ) = x . Isto mostra a existncia.
Para provar que o ponto fixo nico, observamos que se x e x so pontos
fixos, eles devem ser iguais, pois:

|x x | = |g(x ) g(x )| |x x |. (3.34)

A desigualdade |x x | |x x | com 0 < 1 implica |x x | = 0.


Para demonstrar a convergncia da sequncia, observamos que:

|x(n+1) x | = |g(x(n) ) x | = |g(x(n) ) g(x )| |x(n) x |. (3.35)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


62 Clculo Numrico

Da, temos:

|x(n) x | |x(n1) x | 2 |x(n2) x | n |x(0) x |. (3.36)

Portanto, como 0 < 1, temos:

lim |x(n) x | = 0,
n
(3.37)

ou seja, x(n) x quando n .


Observao 3.3.2. Do teorema do ponto fixo, temos que se g(x) uma contrao
com constante 0 < 1, ento:

|x(n+1) x | |x(n) x |, n 1. (3.38)

Isto , as iteraes do ponto fixo tm taxa de convergncia linear.


Exemplo 3.3.4. Mostre que o teorema do ponto fixo se aplica a funo g(x) =
cos(x) no intervalo [1/2, 1], isto , a iterao de ponto fixo converge para a soluo
da equao cos x = x. Ento, calcule as iteraes do ponto fixo com aproximao
inicial x(1) = 0,7, estime o erro absoluto da aproximao e verifique a taxa de
convergncia.
Soluo. Basta mostrarmos que:
a) g ([1/2,1]) [1/2,1];
b) |g 0 (x)| < , 0 < < 1, x [1/2,1].
Para provar a), observamos que g(x) decrescente no intervalo, pelo que temos:

0,54 < cos(1) cos(x) cos(1/2) < 0,88 (3.39)

Como [0,54, 0,88] [0,5, 1], temos o item a).


Para provar o item b), observamos que:

g 0 (x) = sen (x). (3.40)

Da mesma forma, temos a estimativa:

0,85 < sen (1) sen (x) sen (1/2) < 0,47. (3.41)

Assim, |g 0 (x)| < 0,85 temos a desigualdade com = 0,85 < 1.


A Tabela 3.3 apresenta o comportamento numrico da iterao do ponto fixo:

x(1) = 0,7
x(n+1) = cos(x(n) ), n 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 63

n x(n) n := |x(n) x |
1 0,70000 3,9E02
2 0,76484 2,6E02
3 0,72149 1,8E02
4 0,75082 1,2E02
5 0,73113 8,0E03
6 0,74442 5,3E03
7 0,73548 3,6E03

Tabela 3.3: Iterao do ponto fixo para o Exemplo 3.3.4.

Figura 3.4: Decaimento do erro n = |x(n) x | da iterao do ponto fixo estudada


no Exemplo 3.3.4.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


64 Clculo Numrico

Para estimar o erro, consideramos x = 0,7390851605. A Figura 3.4 mostrar o


decaimento do erro n = |x(n) x | comparado com a taxa de convergncia linear
com = 0,85.
No Scilab, podemos computar estas iteraes e o erro absoluto com o seguinte
cdigo:
//est. da solucao
deff('y = f(x)', 'y = cos(x)-x')
xe = fsolve(0.7, f)

#funcao do pto. fixo


deff('y = g(x)', 'y = cos(x)')

#aprox. inicial
x0 = 0.7
eps = abs(x0-xe)
disp([x0, eps])

for i=2:7
x = g(x0)
eps = abs(x-xe)
disp([x, eps])
x0 = x
end

3.3.2 Teste de convergncia


Seja g : [a,b] R uma funo C 0 [a,b] e x (a,b) um ponto fixo de g. Ento
x dito estvel se existe uma regio (x ,x + ) chamada bacia de atrao tal

que x(n+1) = g(x(n) ) convergente sempre que x(0) (x ,x + ).


Proposio 3.3.1 (Teste de convergncia). Se g C 1 [a,b] e |g 0 (x )| < 1, ento
x estvel. Se |g 0 (x )| > 1 instvel e o teste inconclusivo quando |g 0 (x )| = 1.

Exemplo 3.3.5. No Exemplo 3.3.3, observamos que a funo g1 (x) nos forne-
ceu uma iterao divergente, enquanto que a funo g2 (x) forneceu uma iterao
convergente (veja a Figura 3.5. Estes comportamentos so explicados pelo teste
da convergncia. Com efeito, sabemos que o ponto fixo destas funes est no
intervalo [1,6, 1,8] e temos:
|g10 (x)| = |1 0,5(x + 1)ex | > 4,8, x [1,6, 1,8], (3.42)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 65

2.0 1.80
y = g2 (x) y=x
1.9 y = g1 (x)
1.75 x(2)
(1)
1.8 x x(1) x
x
1.7 1.70

1.6
y=x 1.65
1.5 x (2)

1.4 1.60
1.60 1.65 1.70 1.75 1.80 1.60 1.65 1.70 1.75 1.80

Figura 3.5: Ilustrao das iteraes do ponto fixo para: (esquerda) y = g1 (x) e
(direita) y = g2 (x). Veja Exemplo 3.3.5.

enquanto:
|g20 (x)| = |1 0,05(x + 1)ex | < 0,962, x [1,6, 1,8]. (3.43)

3.3.3 Estabilidade e convergncia


A fim de compreendermos melhor os conceitos de estabilidade e convergncia,
considere uma funo (x) com um ponto fixo x = g(x ) e analisemos o seguinte
processo iterativo:
 
x(n+1) = g x(n)
x(0) = x
Vamos supor que a funo g(x) pode ser aproximada por seu polinmio de Taylor
em torno do ponto fixo:
 
g(x) = g(x ) + (x x )g 0 (x ) + O (x x )2 , n 0
 
= x + (x x )g 0 (x ) + O (x x )2
x + (x x )g 0 (x )
Substituindo na relao de recorrncia, temos
 
x(n+1) = g x(n) x + (x(n) x )g 0 (x )
Ou seja:  
x(n+1) x (x(n) x )g 0 (x )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


66 Clculo Numrico

Tomando mdulos, temos:



x x(n) x |g 0 (x )| ,
(n+1)
x

| {z } | {z }
n+1 n

onde n = x(n) x .

Observao 3.3.3. A anlise acima, conclumos:


Se |g 0 (x )| < 1, ento, a distncia de x(n) at o ponto fixo x est diminuindo
a cada passo.

Se |g 0 (x )| > 1, ento, a distncia de x(n) at o ponto fixo x est aumentando


a cada passo.

Se |g 0 (x )| = 1, ento, nossa aproximao de primeira ordem no suficiente


para compreender o comportamento da sequncia.

3.3.4 Erro absoluto e tolerncia


Na prtica, quando se aplica uma iterao como esta, no
se conhece de ante-
mo o valor do ponto fixo x . Assim, o erro n = x x precisa ser estimado
(n)

com base nos valores calculados x(n) . Uma abordagem frequente analisar a evo-
luo da diferena entre dois elementos da sequncia:

n = x(n+1) x(n) (3.44)


A pergunta natural : Ser que o erro n = x(n) x pequeno quando


n = x(n+1) x(n) for pequeno?

Para responder a esta pergunta, observamos que

x = lim x(n) (3.45)


n

portanto:
     
x x(N ) = x(N +1) x(N ) + x(N +2) x(N +1) + x(N +3) x(N +2) + . . .
 
= x(N +k+1) x(N +k)
X

k=0

Usamos tambm as expresses:

x(n+1) x + (x(n) x )g 0 (x )
x(n) x + (x(n1) x )g 0 (x )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 67

Subtraindo uma da outra, temos:

x(n+1) x(n) (x(n) x(n1) )g 0 (x )

Portanto:
k
x(N +k+1) x(N +k) (x(N +1) x(N ) ) (g 0 (x ))

E temos:
 
x x(N ) = x(N +k+1) x(N +k)
X

k=0

k
(x(N +1) x(N ) ) (g 0 (x ))
X

k=0
1
= (x(N +1) x(N ) ) , |g 0 (x )| < 1
1 g 0 (x )

Tomando mdulo, temos:




1
x x(N ) x(N +1) x(N )
1 g 0 (x )
N
N
1 g 0 (x )

Observao 3.3.4. Tendo em mente a relao x(n+1) x(n) (x(n) x(n1) )g 0 (x ),


conclumos:

Quando g 0 (x ) < 0, o esquema alternante, isto , o sinal do erro se altera a


cada passo. O erro N pode ser estimado diretamente da diferena N , pois
o denominador 1 g 0 (x ) > 1.

Quando 0 < g 0 (x ) < 1, o esquema montono e 1g10 (x ) > 1, pelo que o


erro N maior que a diferena N . A relao ser to mais importante
quando mais prximo da unidade for g 0 (x ), ou seja, quando mais lenta for
a convergncia. Para estimar o erro em funo da diferena N , observamos
(n+1) (n)
(n1) e
que g 0 (x ) xx(n) xx
n
|g 0 (x )| (3.46)
n1
e portanto
N
N . (3.47)
1 n1
n

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


68 Clculo Numrico

Exerccios

E 3.3.1. Resolver a equao ex = x + 2 equivalente a calcular os pontos


fixos da funo g(x) = ex 2 (veja o Exemplo 3.3.1). Use a iterao do ponto fixo
x(n+1) = g(xn ) com x(1) = 1,8 para obter uma aproximao de uma das solues
da equao dada com 8 dgitos significativos.

E 3.3.2. Mostre que a equao:


cos(x) = x (3.48)
possui uma nica soluo no intervalo [0, 1]. Use a iterao do ponto fixo e encontre
uma aproximao para esta soluo com 4 dgitos significativos.

E 3.3.3. Mostre que a equao xex = 10 equivalente s seguintes equaes:


10
 
x = ln e x = 10ex . (3.49)
x
Destas, considere as seguintes iteraes de ponto fixo:
10
 
a) x (n+1)
= ln (n)
x
(n)
b) x(n+1) = 10ex
Tomando x(1) = 1, verifique se estas sequncias so convergentes.

E 3.3.4. Verifique (analiticamente) que a nica soluo real da equao:


xex = 10 (3.50)
ponto fixo das seguintes funes:
 
a) g(x) = ln 10
x

xex 10
b) g(x) = x 15
xex 10
c) g(x) = x 10+ex

Implemente o processo iterativo x(n+1) = g(x(n) ) para n 0 e compare o compor-


tamento. Discuta os resultados com base na teoria estudada.
E 3.3.5. Verifique (analiticamente) que a nica soluo real da equao:
cos(x) = x (3.51)
ponto fixo das seguintes funes:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 69

a) g(x) = cos(x)

b) g(x) = 0,4x + 0,6 cos(x)

c) g(x) = x + cos(x)x
1+sen (x)

Implemente o processo iterativo x(n+1) = g(x(n) ) para n 0 e compare o compor-


tamento. Discuta os resultados com base na teoria estudada.
E 3.3.6. Encontre a soluo de cada equao com erro absoluto inferior a
10 .
6

a) ex = x + 2 no intervalo (2,0).

b) x3 + 5x2 12 = 0 no intervalo (1,2).



c) x = cos(x) no intervalo (0,1).

E 3.3.7. Encontre numericamente as trs primeiras razes positivas da equao


dada por:
x
cos(x) = (3.52)
10 + x2
com erro absoluto inferior a 106 .
E 3.3.8. Considere os seguintes processos iterativos:


x(n+1) = cos(x(n) )
a
x(1) = .5
e (3.53)


x(n+1) = .4x(n) + .6 cos(x(n) )
b
x(1) = .5

Use o teorema do ponto fixo para verificar que cada um desses processos con-
verge para a soluo da equao x de cos(x) = x. Observe o comportamento
numrico dessas sequncias. Qual estabiliza mais rpido com cinco casas deci-
mais? Discuta.
Dica: Verifique que cos([0.5,1]) [0.5,1] e depois a mesma identidade para a
funo f (x) = 0,4x + 0,6 cos(x).

E 3.3.9. Use o teorema do ponto fixo aplicado a um intervalo adequado para


mostrar que a funo g(x) = ln(100 x) possui um ponto fixo estvel.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


70 Clculo Numrico

E 3.3.10. (Fluidos) Na hidrulica, o fator de atrito de Darcy dado pela


implicitamente pela equao de Colebrook-White:

1 2.51
!

= 2 log10 + (3.54)
f 14.8Rh Re f

onde f o fator de atrito, a rugosidade do tubo em metros, Rh o raio hidrulico


em metros e Re o nmero de Reynolds. Considere = 2mm, Rh = 5cm e
Re = 10000 e obtenha o valor de f pela iterao:

2.51x(n)
!

x(n+1) = 2 log10 + (3.55)
14.8Rh Re

E 3.3.11. Encontre uma soluo aproximada para equao algbrica

180 100x = 0.052 senh 1


(1013 x) (3.56)

com erro absoluto inferior a 103 usando um mtodo iterativo. Estime o erro
associado ao valor de v = 180 100x = 0.052 senh 1 (1013 x), usando cada uma
dessas expresses. Discuta sucintamente o resultado obtido. Dica: Este caso
semelhante ao Problema 3.2.8.
E 3.3.12. Considere que xn satisfaz a seguinte relao de recorrncia:

xn+1 = xn (xn x ) (3.57)

onde e x so constantes. Prove que

xn x = (1 )n1 (x1 x ). (3.58)

Conclua que xn x quando |1 | < 1.

E 3.3.13. (Convergncia lenta) Considere o seguinte esquema iterativo:

x(n+1) = xn + q n ,
x(0) = 0,

onde q = 1 106 .

a) Calcule o limite
x = lim x(n) (3.59)
n

analiticamente.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.3. ITERAO DE PONTO FIXO 71

b) Considere que o problema de obter o limite da sequncia numericamente


usando como critrio de parada que |x(n+1) x(n) | < 105 . Qual o valor
produzido pelo esquema numrico? Qual o desvio entre o valor obtido pelo
esquema numrico e o valor do limite obtido no item a? Discuta. (Dica:
Voc no deve implementar o esquema iterativo, obtendo o valor de x(n)
analiticamente)

c) Qual deve ser a tolerncia especificada para obter o resultado com erro rela-
tivo inferior a 102 ?

E 3.3.14. (Convergncia sublinear) Considere o seguinte esquema iterativo:

x(n+1) = x(n) [x(n) ]3 , x(n) 0 (3.60)

com x(0) = 102 . Prove que {x(n) } sequncia de nmero reais positivos conver-
gindo para zero. Verifique que so necessrios mais de mil passos para que x(n) se
torne menor que 0.9x(0) .

E 3.3.15. (Taxa de convergncia)

a) Use o teorema do ponto fixo para mostrar que a funo g(x) = 1 sen (x)
possui um nico ponto fixo estvel o intervalo [ 10
1
,1]. Construa um mtodo
iterativo x(n+1) = g(x(n) ) para encontrar esse ponto fixo. Use o computador
para encontrar o valor numrico do ponto fixo.

b) Verifique que funo (x) = 12 [x + 1 sen (x)] possui um ponto fixo x


que tambm o ponto fixo da funo g do item a. Use o computador para
encontrar o valor numrico do ponto fixo atravs da iterao x(n+1) = (x(n) ).
Qual mtodo mais rpido?

E 3.3.16. (Esquemas oscilantes)(Esquemas oscilantes)

a) Considere a funo g(x) e funo composta (x) = g g = g (g(x)). Verifique


todo ponto fixo de g tambm ponto fixo de .

b) Considere a funo
g(x) = 10 exp(x) (3.61)
e funo composta (x) = g g = g (g(x)). Mostre que possui dois pontos
fixos que no so pontos fixos de g.

c) No problema anterior, o que acontece quando o processo iterativo x(n+1) =


g(x(n) ) inicializado com um ponto fixo de que no ponto fixo de g?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


72 Clculo Numrico

E 3.3.17. (Acelerao de convergncia - introduo ao mtodo de Newton)


Mostre que se f (x) possui uma raiz x ento a x um ponto fixo de (x) =
x + (x)f (x). Encontre uma condio em (x) para que o ponto fixo x de seja
estvel. Encontre uma condio em (x) para que 0 (x ) = 0.

E 3.3.18. (Acelerao de convergncia - introduo ao mtodo de Newton)


Considere que x(n) satisfaz a seguinte relao de recorrncia:

x(n+1) = x(n) f (x(n) ) (3.62)

onde uma constante. Suponha que f (x) possui um zero em x . Aproxime a


funo f (x) em torno de x por
 
f (x) = f (x ) + f 0 (x )(x x ) + O (x x )2 . (3.63)

Em vista do problema anterior, qual valor de voc escolheria para que a sequncia
x(n) convirja rapidamente para x .

E 3.3.19. Considere o problema da Questo 3.2.8 e dois seguintes esquemas


iterativos. h  i
(n)
I (n+1) = 1 V vt ln 1 + I

,n > 0
R IR
A
I (0) = 0

e
h   i
V RI (n)

I (n+1) = IR exp vt
1 ,n > 0
B
I (0) = 0

Verifique numericamente que apenas o processo A convergente para a, b e c;


enquanto apenas o processo B convergente para os outros itens.

3.4 Mtodo de Newton-Raphson


Nesta seo, apresentamos o mtodo de Newton-Raphson56 para calcular
o zero de funes reais de uma varivel real.
Consideramos que x seja um zero de uma dada funo f (x) continuamente
diferencivel, isto , f (x ) = 0. A fim de usar a iterao do ponto fixo, observamos
que, equivalentemente, x um ponto fixo da funo:

g(x) = x + (x)f (x), (x) 6= 0, (3.64)


5
Joseph Raphson, 1648 - 1715, matemtico ingls.
6
Tambm chamado apenas de mtodo de Newton.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.4. MTODO DE NEWTON-RAPHSON 73

onde (x) uma funo arbitrria, a qual escolheremos de forma que a iterao
do ponto fixo tenha tima taxa de convergncia.
Do teorema do ponto fixo, a taxa de convergncia dada em funo do
valor absoluto da derivada de g(x). Calculando a derivada temos:

g 0 (x) = 1 + (x)f 0 (x) + 0 (x)f (x). (3.65)

No ponto x = x , temos:

g 0 (x ) = 1 + (x )f 0 (x ) + 0 (x )f (x ). (3.66)

Como f (x ) = 0, temos:

g 0 (x ) = 1 + (x )f 0 (x ). (3.67)

Sabemos que o processo iterativo converge to mais rpido quanto menor for
|g 0 (x)| nas vizinhanas de x . Isto nos leva a escolher:

g 0 (x ) = 0, (3.68)

e, ento, temos:
1
(x ) = , (3.69)
f 0 (x )
se f 0 (x ) 6= 0.
A discusso acima nos motiva a introduzir o mtodo de Newton, cujas iteraes
so dada por:  
(n)
f x
x(n+1) = x(n) 0 n , n 1, (3.70)
f (x )
sendo x(1) uma aproximao inicial dada.

3.4.1 Interpretao geomtrica


Seja uma dada funo f (x) conforme na Figura 3.6. Para tanto, escolhemos
uma aproximao inicial x(1) e computamos:

f (x(1) )
x(2) = x(1) . (3.71)
f 0 (x(1) )

Geometricamente, o ponto x(2) a interseo da reta tangente ao grfico da funo


f (x) no ponto x = x(1) com o eixo das abscissas. Com efeito, a equao desta reta
:
y = f 0 (x(1) )(x x(1) ) + f (x(1) ). (3.72)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


74 Clculo Numrico

f(x(1) )

f(x(2) )
x
x(3) x(2) x(1) x

Figura 3.6: Interpretao do mtodo de Newton.

Assim, a interseo desta reta com o eixo das abscissas (y = 0) ocorre quando:

f (x(1) )
f 0 (x(1) )(x x(1) ) + f (x(1) ) = 0 x = x(1) . (3.73)
f 0 (x(1) )

Ou seja, dada aproximao x(n) , a prxima aproximao x(n+1) o ponto de


interseo entre o eixo das abscissas e a reta tangente ao grfico da funo no
ponto x = x(n) . Observe a Figura 3.6.

3.4.2 Anlise de convergncia


Seja f (x) um funo com derivadas primeira e segunda contnuas tal que
f (x ) = 0 e f 0 (x ) 6= 0. Seja tambm a funo g(x) definida como:
f (x)
g(x) = x . (3.74)
f 0 (x)
Expandimos em srie de Taylor em torno de x = x , obtemos:
g 00 (x )  
g(x) = g(x ) + g 0 (x )(x x ) + (x x )2 + O (x x )3 . (3.75)
2
Observamos que:

g(x ) = x
f 0 (x )f 0 (x ) f (x )f 00 (x )
g 0 (x ) = 1 =0
(f 0 (x ))2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.4. MTODO DE NEWTON-RAPHSON 75

Portanto:
g 00 (x )  
g(x) = x + (x x )2 + O (x x )3 (3.76)
2
Com isso, temos:
g 00 (x ) (n)  
x(n+1) = g(x(n) ) = x + (x x )2 + O (x x )3 , (3.77)
2
ou seja: 2
x C x(n) x , (3.78)
(n+1)
x

com constante C = |g 00 (x )/2|. Isto mostra que o mtodo de Newton tem taxa de
convergncia quadrtica. Mais precisamente, temos o seguinte teorema.
Teorema 3.4.1 (Mtodo de Newton). Sejam f C 2 ([a, b]) com x (a, b) tal
que f (x ) = 0 e:

m := min |f 0 (x)| > 0 e M := max |f 00 (x)|. (3.79)


x[a,b] x[a,b]

Escolhendo > 0 tal que:


M
< 1, q := (3.80)
2m
definimos a bacia de atrao do mtodo de Newton pelo conjunto:

K (x ) := {x R; |x x | } [a, b]. (3.81)

Ento, para qualquer x(1) K (x ) a iterao do mtodo de Newton:

f (x(n) )
x (n+1)
=x (n)
0 (n) , (3.82)
f (x )

fornece uma sequncia x(n) que converge para x , isto , x(n) x quando n .
Alm disso, temos a seguinte estimativa de erro a priori:
2m (2n1 )
|x(n) x | q , n 2, (3.83)
M
e a seguinte estimativa de erro a posteriori:
M (n)
|x(n) x | |x x(n1) |2 , n 2. (3.84)
2m
Demonstrao. Para n N, n 2, temos:

f (x(n) ) 1 h i
xn+1 x = x(n) x
= f (x (n)
) + (x
x (n)
)f (x
0 (n)
. (3.85)
f 0 (x(n) ) f (x(n) )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


76 Clculo Numrico

Agora, para estimar o lado direito desta equao, usamos o polinmio de Taylor
de grau 1 da funo f (x) em torno de x = x(n) , isto :
Z x
f (x ) = f (x(n) ) + (x x(n) )f 0 (x(n) ) + f 00 (t)(x t) dt. (3.86)
x(n)

Pela mudana de varivel t = x(n) + s(x(n) x ), observamos que o resto deste


polinmio de Taylor na forma integral igual a:
Z 1  
R(x ,x(n) ) := (x x(n) )2 f 00 x(n) + s(x x(n) ) (1 s) ds. (3.87)
0

Assim, da cota da segunda derivada de f (x), temos:


Z 1
M
|R(x ,x(n) )| M |x x(n) |2 (1 s) ds = |x x(n) |2 . (3.88)
0 2
Se x(n) K (x ), ento de (3.85) e (3.88) temos:
M (n) M 2
|x(n+1) x | |x x |2 < . (3.89)
2m 2m
Isto mostra que se x(n) K (x ), ento x(n+1) K (x ), isto , x(n) K (x ) para
todo n R.
Agora, obtemos a estimativa a priori de (3.4.2), pois:
2n1
2m M (n1) 2m M (1)
 2 
|x (n)
x | |x x | |x x | . (3.90)
M 2m M 2m
Logo:
2m 2n1
|x(n) x |
q , (3.91)
M
donde tambm vemos que x(n) x quando n , pois q < 1.
Por fim, para provarmos a estimativa a posteriori tomamos a seguinte expan-
so em polinmio de Taylor:
f (x(n) ) = f (x(n1) ) + (x(n) x(n1) )f 0 (x(n1) ) + R(x(n) ,x(n1) ). (3.92)
Aqui, temos:
f (x(n1) ) + (x(n) x(n1) )f 0 (x(n1) ) = 0 (3.93)
e, ento, conforme acima:
M (n)
|f (x(n) )| = |R(x(n) ),x(n1) |
|x x(n1) |2 . (3.94)
2
Com isso e do teorema do valor mdio, conclumos:
1 M (n)
|x(n) x | |f (x(n) ) f (x )| |x x(n1) |2 . (3.95)
m 2m

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.4. MTODO DE NEWTON-RAPHSON 77

Exemplo 3.4.1. Estime o raio da bacia de atrao K (x ) para a funo f (x) =


cos(x) x restrita ao intervalo [0, /2].

Soluo. O raio da bacia de atrao tal que:


2m
< (3.96)
M
onde m := min |f 0 (x)| e M := max |f 00 (x)| com o mnimo e o mximo tomados
em um intervalo [a, b] que contenha o zero da funo f (x). Aqui, por exemplo,
podemos tomar [a, b] = [0, /2]. Como, neste caso, f 0 (x) = sen (x) 1, temos
que m = 1. Tambm, como f 00 (x) = cos x, temos M = 1. Assim, conclumos
que < 2 (lembrando que K (x ) [0, /2]). Ou seja, neste caso as iteraes
de Newton convergem para o zero de f (x) para qualquer escolha da aproximao
inicial x(1) [0, /2].

Exerccios

E 3.4.1. Encontre a raiz positiva da funo f (x) = cos(x) x2 pelo mtodo


de Newton inicializando-o com x(0) = 1. Realize a iterao at obter estabilidade
no quinto dgito significativo.

E 3.4.2. Considere o problema de calcular as solues positivas da equao:

tg (x) = 2x2 . (3.97)

a) Use o mtodo grfico para isolar as duas primeiras razes positivas em peque-
nos intervalos. Use a teoria para argumentar quanto existncia e unicidade
das razes dentro intervalos escolhidos.

b) Calcule cada uma das razes pelo mtodo de Newton com oito dgitos signi-
ficativos e discuta a convergncia comparando com o item b).

E 3.4.3. Considere a equao


2
ex = x (3.99)

trace o grfico com auxlio do computador e verifique que ela possui uma raiz
positiva. Encontre uma aproximao para esta razo pelo grfico e use este valor
para inicializar o mtodo de Newton e obtenha uma aproximao para a raiz com 8
dgitos significativos. (Use o comando format('v',16) para alterar a visualizao
no Scilab.)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


78 Clculo Numrico

E 3.4.4. Isole e encontre as cinco primeiras razes positivas da equao com 6


dgitos corretos atravs de traado de grfico e do mtodo de Newton.
cos(10x) = ex . (3.100)
Dica: a primeira raiz positiva est no intervalo (0, 0,02). Fique atento.

E 3.4.5. Encontre as razes do polinmio f (x) = x4 4x2 + 4 atravs do


mtodo de Newton. O que voc observa em relao ao erro obtido? Compare com
a situao do Problema 3.2.4.
5
E 3.4.6. Encontre as razes reais do polinmio f (x) = 100
x
+x4 +3x+1 isolando-
as pelo mtodo do grfico e depois usando o mtodo de Newton. Expresse a soluo
com 7 dgitos significativos.

E 3.4.7. Considere o mtodo de Newton aplicado para encontrar a raiz de


f (x) = x3 2x + 2. O que acontece quando x(0) = 0? Escolha um valor adequado
para inicializar o mtodo e obter a nica raiz real desta equao.

E 3.4.8. Justifique a construo do processo iterativo do mtodo de Newton


atravs do conceito de estabilidade de ponto fixo e convergncia do mtodo da
iterao. Dica: Considere os problemas 3.3.17 e 3.3.18.

E 3.4.9. Entenda a interpretao geomtrica ao mtodo de Newton. Encontre


uma valor para iniciar o mtodo de Newton aplicado ao problema f (x) = xex = 0
tal que o esquema iterativo divirja.

E 3.4.10. (Computao) Aplique o mtodo de Newton funo f (x) = x1 A


e construa um esquema computacional para calcular a inversa de A com base em
operaes de multiplicao e soma/subtrao.

E 3.4.11. (Computao) Aplique o mtodo de Newton


funo f (x) = xn A
e construa um esquema computacional para calcular A para A > 0 com base em
n

operaes de multiplicao e soma/subtrao.

E 3.4.12. (Computao) Aplique o mtodo de Newton funo f (x) = x12 A


e construa um esquema computacional para calcular 1A para A > 0 com base em
operaes de multiplicao e soma/subtrao.

E 3.4.13. Considere a funo dada por


(x) = ln (15 ln(x))
definida para x (0,e15 )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.5. MTODO DAS SECANTES 79

a) Use o teorema do ponto fixo para provar que se x(0) pertence ao intervalo
[1,3], ento a sequncia dada iterativamente por

x(n+1) = (x(n) ),n 0 (3.101)

converge para o nico ponto fixo, x , de . Construa a iterao x(n+1) =


(x(n) ) e obtenha numericamente o valor do ponto fixo x . Expresse a res-
posta com 5 algarismos significativos corretos.

b) Construa a iterao do mtodo de Newton para encontrar x , explicitando a


relao de recorrncia e iniciando com x0 = 2. Use o computador para obter
a raiz e expresse a resposta com oito dgitos significativos corretos.

3.5 Mtodo das secantes


O mtodo das secantes uma variao do mtodo de Newton, evitando a
necessidade de conhecer-se a derivada analtica de f (x). Dada uma funo f (x),
a ideia aproximar sua derivada pela razo fundamental:

f (x) f (x0 )
f 0 (x) , x x0 . (3.102)
x x0
Mais precisamente, o mtodo de Newton uma iterao de ponto fixo da forma:

x(n+1) = x(n) (x(n) )f (x(n) ), n 1, (3.103)

onde x(1) uma aproximao inicial dada e (x(n) ) = 1/f 0 (x(n) ). Usando a apro-
ximao da derivada acima, com x = x(n) e x0 = x(n1) , temos:

1 x(n) x(n1)
(x(n) ) = . (3.104)
f 0 (x(n) ) f (x(n) ) f (x(n1) )

Isto nos motiva a introduzir a iterao do mtodo das secantes dada por:

x(n) x(n1)
x (n+1)
=x (n)
f (x (n)
) , n 2. (3.105)
f (x(n) ) f (x(n1) )

Observe que para inicializarmos a iterao acima precisamos de duas aproximaes


iniciais, a saber, x(1) e x(2) . Maneiras apropriadas de escolher estas aproximaes
podem ser inferidas da interpretao geomtrica do mtodo.

Exemplo 3.5.1. Encontre as razes de f (x) = cos(x) x.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


80 Clculo Numrico

Soluo. Da inspeo do grfico das funes y = cos(x) e y = x, sabemos que esta


equao possui uma raiz em torno de x = 0,8. Iniciamos o mtodo com x0 = 0,7
e x1 = 0,8.

x(n1) x(n) m x(n+1)


f (0,8)f (0,7)
0,80,7
= 0,8 f (0,8)
1,6813548
=
0,7 0,8 1,6813548 0,7385654
0,8 0,7385654 1,6955107 0,7390784
0,7385654 0,7390784 1,6734174 0,7390851
0,7390784 0,7390851 1,6736095 0,7390851

3.5.1 Interpretao geomtrica


Enquanto, o mtodo de Newton est relacionado s retas tangentes ao grfico
da funo objetivo f (x), o mtodo das secantes, como o prprio nome indica, est
relacionado s retas secantes.

y
f(x (1) )

f(x (2) )

f(x (3) )
x
x (4)x (3) x (2)x (1) x

Figura 3.7: Mtodo das secantes.

Sejam f (x) e as aproximaes x(1) e x(2) do zero x desta funo (veja Fi-
gura 3.7). A iterao do mtodo das secantes fornece:

x(2) x(1)
x(3) = x(2) f (x(2) ) . (3.106)
f (x(2) ) f (x(1) )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.5. MTODO DAS SECANTES 81

De fato, x(3) o ponto de interseo da reta secante ao grfico de f (x) pelos pontos
x(1) e x(2) com o eixo das abscissas. Com efeito, a equao desta reta secante :

f (x(2) ) f (x(1) )
y= (x x(2) ) + f (x(2) ). (3.107)
x(2) x(1)
Esta reta intercepta o eixo das abscissas no ponto x tal que y = 0, isto :

f (x(2) ) f (x(1) ) x(2) x(1)


(xx (2)
)+f (x (2)
) x = x (2)
f (x (2)
) . (3.108)
x(2) x(1) f (x(2) ) f (x(1) )

3.5.2 Anlise de convergncia


Uma anlise assinttica semelhante quela feita para o mtodo de Newton na
subseo 3.4.2 nos indica que, para uma funo f (x) duas vezes diferencivel, as
iteraes do mtodo da secante satisfazem:

|x(n+1) x | C|x(n) x ||x(n1) x |, (3.109)

para aproximaes iniciais suficientemente prximas de x , onde f (x ) = 0. Alm


disso, veremos que:

5+1
|x (n+1)
x | C|x x | , p =
(n) p
1,618 (3.110)
2
sob certas condies. Ou seja, o mtodo das secantes tem taxa de convergncia
superlinear.

Teorema 3.5.1 (Mtodo das secantes). Seja f C 2 ([a, b]) uma funo com x
(a, b) tal que f (x ) = 0. Sejam, tambm:

m := min |f 0 (x)| > 0 e M := max |f 00 (x)| < . (3.111)


x[a,b] x[a,b]

Alm disso, seja > 0 tal que:


M
q := < 1, K (x ) := {x R; |x x | } [a, b]. (3.112)
2m
Ento, para aproximaes iniciais x(1) , x(2) K (x ), com x(1) 6= x(2) , temos que
as iteraes do mtodo das secantes x(n) K (x ), n 1, e x(n) x , quando
n . Alm disso, vale a seguinte estimativa de convergncia a priori:
2m n1
|x(n) x | q , n 1, (3.113)
M
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
82 Clculo Numrico

onde {n }nN a sequncia de Fibonacci78 , bem como vale a estimativa a poste-


riori:
M (n)
|x(n) x | |x x(n1) ||x(n1) x(n2) |, n 3. (3.114)
2m
Demonstrao. Sejam n N com n 2 e x(n) , x(n1) K (x ), tal que x(n) 6=
x(n1) , x(n) 6= x e x(n1) 6= x . Seja, tambm:
x(n) x(n1)
g(x(n) ,x(n1) ) := x(n) f (x(n) ) . (3.115)
f (x(n) ) f (x(n1) )
Com isso, temos:
x(n) x(n1)
g(x(n) ,x(n1) ) x = x(n) f (x(n) ) x
f (x ) f (x
(n) (n1) )
f (x ) f (x )
( )
(n) (n1) (n) (n1)
x x
= (x x )
(n)
f (x ) + f (x ) .
(n)
f (x(n) ) f (x(n1) ) x(n) x(n1)

Ento, da cota assumida para primeira derivada de f (x) e do teorema do valor


mdio, temos:
|x(n) x | f (x(n) ) f (x(n1) ) f (x(n) ) f (x )

|g(x(n) ,x(n1) ) x | .
x(n) x(n1) x(n) x

m
(3.116)
Agora, iremos estimar este ltimo termo a direita. Para tanto, comeamos obser-
vando que da expanso em polinmio de Taylor de ordem 0 da funo f (x) com
resto na forma integral, temos:
f (x(n) ) f (x(n1) )
= 0 dr f (x + r(x(n1) x(n) )) x(n) x
R1 d (n) dr
(n1)
x x
(n) (n1)

= 0 f (x + r(x(n1) x(n) )) dr
R 1 0 (n)

De forma anloga, temos:


f (x(n) ) f (x ) Z 1 0 (n)
= f (x + r(x x(n) )) dr (3.117)
x(n) x 0

Logo, temos:
f (x(n) ) f (x(n1) ) f (x(n) ) f (x )
=
x(n) x(n1) x(n) x (3.118)
Z 1h i
f (x
0 (n)
+ r(x (n1)
x (n)
)) f (x
0 (n)
+ r(x x
(n)
)) dr.
0
7
Leonardo Fibonacci, c. 1170 - c. 1250, matemtico italiano.
8
A sequncia de Fibonacci {n }nN definida por 0 = 1 = 1 e n+1 = n n1 , n 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.5. MTODO DAS SECANTES 83

Agora, novamente temos:

f 0 (x(n) + r(x(n1) x(n) )) f 0 (x(n) + r(x x(n) ))


Z r
d 0 (n)
= f (x + r(x(n1) x(n) ) + s(x x(n1) )) ds (3.119)
0 ds
Z r
= f 00 (x(n) + r(x(n1) x(n) ) + s(x x(n1) )) ds(x x(n1) ).
0

Retornando Equao (3.118) e usando a cota para a segunda derivada, obtemos:


f (x(n) ) f (x(n1) ) f (x(n) ) f (x ) M (n1)


|x x |. (3.120)
x(n) x(n1) x(n) x 2

Utilizando a Equao (3.116), obtemos:


M (n) M 2
|g(x(n) ,x(n1) ) x | |x x ||x(n1) x | < . (3.121)
2m 2m
Portanto, conclumos que as iteraes do mtodo da secantes x(n) permanecem no
conjunto K (x ), se comearem nele. Alm disso, temos demonstrado que:
M (n)
|x(n+1) x | |x x ||x(n1) x |. (3.122)
2m
Com isso, temos:
M (n)
n := |x x | n+1 n n1 , n 2. (3.123)
2m
Como 1 q e 2 q, temos n q n1 , n 1. Isto mostra a estimativa de
convergncia a priori:
2m n1
|xn x | q . (3.124)
M
Alm disso, como n quando n e q < 1, temos que as iteraes do
mtodo das secantes x(n) x quando n .
Por fim, mostramos a estimativa de convergncia a posteriori. Para tanto,
da cota assumida para a primeira derivada e do teorema do valor mdio, temos,
para n 3:
1
|x(n) x | |f (x(n) f (x )|
m
1 (n1) f (x ) f (x(n1) )

(n)
= f (x (n1)
) + (x x
(n)
)
x(n) x(n1)

m
1 (n) (n1) f (x ) f (x(n1) ) f (x(n1) )

(n)
= x x + (n) .
x(n) x(n1) x x(n1)

m

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


84 Clculo Numrico

Agora, a iterao do mtodo das secantes fornece:


x(n1) x(n2)
x(n) = x(n1) f (x(n1) ) (3.125)
f (x(n1) ) f (x(n2) )
e temos:
f (x(n1) ) f (x(n1) ) f (x(n2) )
= . (3.126)
x(n) x(n1) x(n1) x(n2)
Portanto:
1 f (x(n1) ) f (x(n) ) f (x(n1) ) f (x(n2) )


|x x | |x(n) x(n1) |
(n)
.

m x(n1) x(n) x(n1) x(n2)
(3.127)
Observamos que o ltimo termo pode ser estimado como feito acima para o termo
anlogo na Inequao (3.116). Com isso, obtemos a estimativa desejada:
M (n)
|x(n) x | |x x(n1) ||x(n) x(n2) |. (3.128)
2m

Proposio 3.5.1 (Sequncia


de Fibonacci). A sequncia de Fibonacci {n }nN
assinttica a n 1 / 5 e:
n+1

n+1
lim = 1 , (3.129)
n
n

onde 1 = (1 + 5)/2 1,618 a poro urea.
Demonstrao. A sequncia de Fibonacci {n }nN definida por 0 = 1 = 1 e
n+1 = n + n1 , n 1. Logo, satisfaz a seguinte equao de diferenas:
n+2 n+1 n = 0, n N. (3.130)
Tomando n = n , 6= 0 temos:

  1 5
n 2 1 = 0 2 1 = 0 1,2 = . (3.131)
2
Portanto, n = c1 n1 + c2 n2 . Como 0 = 1 = 1, as constantes satisfazem:

c1 + c2 = 1 1+ 5 1 5
c1 = , c 2 = . (3.132)
c1 1 + c2 2 = 1 2 5 2 5

Ou seja, obtemos a seguinte forma explcita para os nmeros de Fibonacci:


!n+1 !n+1
1 1+ 5 1 5
n = . (3.133)
5 2 2
Da, segue imediatamente o enunciado.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.6. CRITRIOS DE PARADA 85

Observao 3.5.1. Sob as hipteses do Teorema 3.5.1 e da Proposio 3.5.1,


temos:
|x(n+1) x | M (n)
lim lim|x x |11 |x(n1) x |
n |x(n) x |1 n 2m

2m 11 (21 )n1 /5
 
lim
n q = 0.
M
Isto mostra que o mtodo das secantes (nestas hipteses) tem taxa de convergncia
superlinear (1 1,6).

3.6 Critrios de parada


Quando usamos mtodos iterativos precisamos determinar um critrio de pa-
rada. A Tabela 3.4 indica critrios de parada usuais para os mtodos que estuda-
mos neste captulo.

Tabela 3.4: Quadro comparativo.


Mtodo Convergncia Erro Critrio de parada
Linear 1 bn an
Bisseo n+1 =  < erro
(p = 1) 2 2

|n |
Iterao Linear < erro
0
n+1 | (x )|n 1 n
n1
linear (p = 1) n < n1

Quadrtica 1 f 00 (x )

Newton n+1 0 2n |n | < erro
(p = 2) 2 f (x )


f 00 (x )

5+1 n+1 0 n n1
p = f (x )
Secante 2 |n | < erro
1,618 M n

Observao 3.6.1. O erro na tabela sempre se refere ao erro absoluto esperado.


Nos trs ltimos mtodos, comum que se exija como critrio de parada que a

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


86 Clculo Numrico

condio seja satisfeita por alguns poucos passos consecutivos. Outros critrios
podem ser usados. No mtodos das secantes, deve-se ter o cuidado de evitar
divises por zero quando xn+1 xn muito pequeno em relao resoluo do
sistema de numerao.

Exerccios

E 3.6.1. Refaa as questes 3.4.3, 3.4.4, 3.4.5 e 3.4.6, usando o mtodo das
secantes.
E 3.6.2. D uma interpretao geomtrica ao mtodo das secantes. Qual a
vantagem do mtodo das secantes sobre o mtodo de Newton?

E 3.6.3. Aplique o mtodo das secantes para resolver a equao


2
ex = 2x (3.134)

E 3.6.4. Refaa o Problema 3.2.8 usando o mtodo de Newton e das secantes.

E 3.6.5. Seja uma funo f (x) dada duas vezes continuamente diferencivel.
Faa uma anlise assinttica para mostrar que as iteraes do mtodo das secantes
satisfazem:
|x(n+1) x | C|x(n) x ||x(n1) x |, (3.135)
para aproximaes iniciais x(1) e x(2) suficientemente prximas de x , onde f (x ) =
0.

3.7 Exerccios finais

E 3.7.1. Calcule uma equao da reta tangente a curva y = e(x1) que passa
2

pelo ponto (3, 1/2).

E 3.7.2. Resolva numericamente a inequao:


2
ex < 2x (3.140)

E 3.7.3. A equao
cos(x) = e2x (3.141)
tem infinitas razes. Usando mtodos numricos encontre as primeiras razes dessa
equao. Verifique a j-sima raiz (zj ) pode ser aproximada por j 1/2 para j

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.7. EXERCCIOS FINAIS 87

grande. Use o mtodo de Newton para encontrar uma aproximao melhor para
zj .

E 3.7.4. (Eletricidade) A corrente eltrica, I, em Ampres em uma lmpada


em funo da tenso eltrica, V , dada por
0.8
V

I= (3.142)
150
Qual a potncia da lmpada quando ligada em srie com uma resistncia de valor
R a uma fonte de 150V quando. (procure erro inferior a 1%)

a) R = 0

b) R = 10

c) R = 50

d) R = 100

E) R = 500

E 3.7.5. (Bioqumica) A concentrao sangunea de um medicamente mo-


delado pela seguinte expresso

c(t) = Atet (3.143)

onde t > 0 o tempo em minutos decorrido desde a administrao da droga. A


a quantidade administrada em mg/ml e a constante de tempo em min1 .
Responda:

a) Sendo = 1/3, em que instantes de tempo a concentrao metade do valor


mximo. Calcule com preciso de segundos.

b) Sendo = 1/3 e A = 100mg/ml, durante quanto tempo a concentrao


permanece maior que 10mg/ml.

E 3.7.6. Considere o seguinte modelo para crescimento populacional em um


pas:
P (t) = A + Bet . (3.144)
onde t dado em anos. Use t em anos e t = 0 para 1960. Encontre os parmetros
A, B e com base nos anos de 1960, 1970 e 1991 conforme tabela:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


88 Clculo Numrico

Ano populao
1960 70992343
1970 94508583
1980 121150573
1991 146917459
Use esses parmetros para calcular a populao em 1980 e compare com o valor
do censo. Dica: considere PP (10)P
(31)P (0)
(0)
e reduza o sistema a uma equao apenas na
varivel .

E 3.7.7. (Fluidos) Uma boia esfrica flutua na gua. Sabendo que a boia tem
10` de volume e 2Kg de massa. Calcule a altura da poro molhada da boia.

E 3.7.8. (Fluidos) Uma boia cilndrica tem seco transversal circular de raio
10cm e comprimento 2m e pesa 10Kg. Sabendo que a boia flutua sobre gua com
o eixo do cilindro na posio horizontal, calcule a altura da parte molhada da boia.

E 3.7.9. Encontre com 6 casas decimais o ponto da curva y = ln x mais


prximo da origem.

E 3.7.10. (Matemtica financeira) Um computador vendido pelo valor a


vista de R$2.000,00 ou em 1+15 prestaes de R$200,00. Calcule a taxa de juros
associada venda a prazo.

E 3.7.11. (Matemtica financeira) O valor de R$110.000,00 financiado con-


forme a seguinte programa de pagamentos:
Ms pagamento
1 20.000,00
2 20.000,00
3 20.000,00
4 19.000,00
5 18.000,00
6 17.000,00
7 16.000,00
Calcule a taxa de juros envolvida. A data do emprstimo o ms zero.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


3.7. EXERCCIOS FINAIS 89

E 3.7.12. (Controle de sistemas) Depois de acionado um sistema de aquece-


dores, a temperatura em um forno evolui conforme a seguinte equao

T (t) = 500 800et + 600et/3 . (3.145)

onde T a temperatura em Kelvin e t tempo em horas.


a) Obtenha analiticamente o valor de limt T (t).

b) Obtenha analiticamente o valor mximo de T (t) e o instante de tempo


quando o mximo acontece

c) Obtenha numericamente com preciso de minutos o tempo decorrido at que


a temperatura passe pela primeira vez pelo valor de equilbrio obtido no item
a.

c) Obtenha numericamente com preciso de minutos a durao do perodo du-


rante o qual a temperatura permanece pelo menos 20% superior ao valor de
equilbrio.

x2
E 3.7.13. Encontre os pontos onde a elipse que satisfaz 3
+ y 2 = 1 intersepta
a parbola y = x2 2.

E 3.7.14. (Otimizao) Encontre a rea do maior retngulo que possvel


inscrever entre a curva ex (1 + cos(x)) e o eixo y = 0.
2

E 3.7.15. (Otimizao)Uma indstria consome energia eltrica de duas usinas


fornecedoras. O custo de fornecimento em reais por hora como funo da potncia
consumida em kW dada pelas seguintes funes

C1 (x) = 500 + .27x + 4.1 105 x2 + 2.1 107 x3 + 4.2 1010 x4


C2 (x) = 1000 + .22x + 6.3 105 x2 + 8.5 107 x3

Onde C1 (x) e C2 (x) so os custos de fornecimento das usinas 1 e 2, respectivamente.


Calcule o custo mnimo da energia eltrica quando a potncia total consumida
1500kW . Obs: Para um problema envolvendo mais de duas usinas, veja 5.1.12.

E 3.7.16. (Termodinmica) A presso de saturao (em bar) de um dado


hidrocarboneto pode ser modelada pela equao de Antoine:
  B
ln P sat = A (3.146)
T +C
onde T a temperatura e A, B e C so constantes dadas conforme a seguir:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


90 Clculo Numrico

Hidrocarboneto A B C
N-pentano 9.2131 2477.07 -39.94
N-heptano 9.2535 2911.32 -56.51

a) Calcule a temperatura de bolha de uma mistura de N-pentano e N-heptano


presso de 1.2bar quando as fraes molares dos gases so z1 = z2 = 0.5.
Para tal utilize a seguinte equao:

P = zi Pisat (3.147)
X

b) Calcule a temperatura de orvalho de uma mistura de N-pentano e N-heptano


presso de 1.2bar quando as fraes molares dos gases so z1 = z2 = 0.5.
Para tal utilize a seguinte equao:
1 X zi
= sat
(3.148)
P i Pi

E 3.7.17. Encontre os trs primeiros pontos de mnimo da funo

f (x) = ex/11 + x cos(2x) (3.149)

para x > 0 com erro inferior a 107 .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 4

Soluo de sistemas lineares

Muitos problemas da engenharia, fsica e matemtica esto associados soluo


de sistemas de equaes lineares. Nesse captulo, tratamos de tcnicas numricas
empregadas para obter a soluo desses sistemas. Iniciamos por uma rpida reviso
do mtodo de eliminao gaussiana do ponto de vista computacional. No contexto
de anlise da propagao dos erros de arredondamento, introduzimos o mtodo de
eliminao gaussiana com pivotamento parcial, bem como, apresentamos o conceito
de condicionamento de um sistema linear. Alm disso, exploramos o conceito de
complexidade de algoritmos em lgebra linear. Ento, passamos a discutir sobre
tcnicas iterativas, mais especificamente, sobre os mtodos de Jacobi e Gauss-
Seidel.
Considere o sistema de equaes lineares (escrito na forma algbrica)

a11 x1 + a12 x2 + + a1n xn = b1


a21 x1 + a22 x2 + + a2n xn = b2
.. (4.1)
.
am1 x1 + am2 x2 + + amn xn = bm

onde m o nmero de equaes e n o nmero de incgnitas. Este sistema pode


ser escrito na forma matricial
Ax = b (4.2)
onde:
a11 a12 a1n x1 b1

a21

a22 a2n x2

b

A= ,x = e b = 2, (4.3)

. .. .. ...
.. .

.. . . . ..



am1 am2 amn xn bm

91
92 Clculo Numrico

onde A chamada de matriz dos coeficientes, x de vetor das incgnitas e b


de vetor dos termos constantes.
Definimos tambm a matriz completa (tambm chamada de matriz esten-
dida) de um sistema como Ax = b como [A|b], isto

a11 a12 a1n b1

a21

a22 a2n b2
[A|b] = (4.4)

. .. .. .. ..

.. . . . .


am1 am2 amn bm

Salvo especificado ao contrrio, assumiremos ao longo deste captulo que a


matriz dos coeficientes A uma matriz real no singular (isto , invertvel).
Exemplo 4.0.1. Consideramos o seguinte sistema linear

x+y+z =1
4x + 4y + 2z = 2 (4.5)
2x + y z = 0

. Na sua forma matricial, este sistema escrito como



1 1 1 x 1

Ax = b 4 4 2 y = 2 (4.6)


2 1 1 0

z
| {z } | {z } |{z}
A x b
.
A matriz estendida do sistema acima

1 1 1 1

E := [A|b] = 4

4 2 2

(4.7)

2 1 1 0

4.1 Eliminao gaussiana


A eliminao gaussiana, tambm conhecida como escalonamento, um
mtodo para resolver sistemas lineares. Este mtodo consiste em manipular o
sistema atravs de determinadas operaes elementares, transformando a matriz

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.1. ELIMINAO GAUSSIANA 93

estendida do sistema em uma matriz triangular (chamada de matriz escalonada


do sistema). Uma vez, triangularizado o sistema, a soluo pode ser obtida via
substituio regressiva. Naturalmente estas operaes elementares devem preser-
var a soluo do sistema e consistem em:
1. multiplicao de um linha por uma constante no nula.
2. substituio de uma linha por ela mesma somada a um mltiplo de outra
linha.
3. permutao de duas linhas.
Exemplo 4.1.1. Resolva o sistema
x+y+z =1
4x + 4y + 2z = 2 (4.8)
2x + y z = 0
pelo mtodo de eliminao gaussiana.
Soluo. A matriz estendida do sistema escrita como

1 1 1 1

4

4 2 2

(4.9)

2 1 1 0

No primeiro passo, subtramos da segunda linha o qudruplo da primeira e sub-


tramos da terceira linha o dobro da primeira linha:

1 1 1 1

0 0 2 2 (4.10)


0 1 3 2

No segundo passo, permutamos a segunda linha com a terceira:



1 1 1 1

0

1 3 2

(4.11)

0 0 2 2

Neste momento, a matriz j se encontra na forma triangular (chamada de matriz


escalonada do sistema). Da terceira linha, encontramos 2z = 2, ou seja,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


94 Clculo Numrico

z = 1. Substituindo na segunda equao, temos y 3z = 2, ou seja, y = 1 e


finalmente, da primeira linha, x + y + z = 1, resultando em x = 1.

Neste Exemplo 4.1.1, o procedimento de eliminao gaussiana foi usado para


obtermos um sistema triangular (superior) equivalente ao sistema original. Este,
por sua vez, nos permitiu calcular a soluo do sistema, isolando cada varivel,
comeando da ltima linha (ltima equao), seguindo linha por linha at a pri-
meira.
Alternativamente, podemos continuar o procedimento de eliminao gaussiana,
anulando os elementos da matriz estendida acima da diagonal principal. Isto nos
leva a uma matriz estendida diagonal (chamada matriz escalonada reduzida),
na qual a soluo do sistema original aparece na ltima coluna.

Exemplo 4.1.2. No Exemplo 4.1.1, usamos o procedimento de eliminao gaus-


siana e obtivemos

1 1 1 1 1 1 1 1

4

4 2 2

0

1 3 2 .
(4.12)

2 1 1 0 0 0

2 2
| {z } | {z }
matriz estendida matriz escalonada

Agora, seguindo com o procedimento de eliminao gaussiana, buscaremos anu-


lar os elementos acima da diagonal principal. Comeamos dividindo cada elemento
da ltima linha pelo valor do elemento da sua diagonal, obtemos

1 1 1 1

0 1 3 2 (4.13)


0 0 1 1

Ento, somando da segunda linha o triplo da terceira e subtraindo da primeira a


terceira linha, obtemos
1 1 0 0

0

1 0 1

(4.14)

0 0 1 1

Fixamos, agora, na segunda linha. Dividimos esta linha pelo valor do elemento

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.1. ELIMINAO GAUSSIANA 95

em sua diagonal, isto nos fornece


1 1 0 0

0 1 0 1 (4.15)


0 0 1 1

Por fim, subtramos da primeira linha a segunda, obtendo a matriz escalonada


reduzida

1 0 0 1

0 1 0 1 (4.16)


0 0 1 1

Desta matriz escalonada reduzida temos, imediatamente, x = 1, y = 1 e z = 1,


como no Exemplo 4.1.1.

4.1.1 Eliminao gaussiana com pivotamento parcial

A eliminao gaussiana com pivotamento parcial consiste em fazer uma


permutao de linhas de forma a escolher o maior piv (em mdulo) a cada passo.

Exemplo 4.1.3. Resolva o sistema

x+y+z =1
2x + y z = 0 (4.17)
2x + 2y + z = 1

por eliminao gaussiana com pivotamento parcial.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


96 Clculo Numrico

Soluo. A matriz estendida do sistema



1 1 1 1 2 1 1 0

2 1 1 0 1 1 1 1



2 2 1 1 2 2 1 1


2 1 1 0

0 1/2 3/2 1


0 1 2 1

(4.18)
2 1 1 0

0 1 2 1


0 1/2 3/2 1


2 1 1 0

0 1 2 1


0 0 1/2 1/2

Encontramos 1/2z = 1/2, ou seja, z = 1. Substitumos na segunda equao e


temos y + 2z = 1, ou seja, y = 1 e, finalmente 2x + y z = 0, resultando em
x = 1.
No Scilab, podemos fazer estas computaes da seguinte forma:
E = [1 1 1 1; 2 1 -1 0;2 2 1 1]
disp(E)

//L2 <-> L1
aux = E(2,:)
E(2,:) = E(1,:)
E(1,:) = aux
disp(E)

//zera E(2:3,1)
E(2:3,:) = E(2:3,:) - (E(2:3,1)/E(1,1))*E(1,:)
disp(E)

//zera E(3,2)
E(3,:) = E(3,:) - (E(3,2)/E(2,2))*E(2,:)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.1. ELIMINAO GAUSSIANA 97

disp(E)

//subs regressiva
x = zeros(3,1)
x(3) = E(3,4)/E(3,3)
x(2) = (E(2,4) - E(2,3)*x(3))/E(2,2)
x(1) = (E(1,4) - E(1,3)*x(3) - E(1,2)*x(2))/E(1,1)
disp(x)

A tcnica de eliminao gaussiana com pivotamento parcial ajuda a evitar a


propagao dos erros de arredondamento. Vejamos o prximo exemplo.

Exemplo 4.1.4 (Problema com elementos com grande diferena de escala). Re-
solva o seguinte sistema usando eliminao gaussiana sem e com pivotamento par-
cial. Discuta, em cada caso, o resultado frente a aritmtica de ponto flutuante
quando 0 < ||  1.
2 x 4
= (4.19)
1 y 3

Soluo. Vamos, primeiramente, executar a eliminao gaussiana sem pivota-


mento parcial para 6= 0 e ||  1:

2 4 2 4



1 3 0 2

3 4

Temos
3 4/
y= (4.20)
2/
e
4 2y
x= (4.21)

Observe que a expresso obtida para y se aproximada de 2 quando pequeno:

3 4/ 3 4 4
y= = 2 = 2, quando 0. (4.22)
2/ 2 2

J expresso obtida para x depende justamente da diferena 2 y:


4 2y 2
x= = (2 y) (4.23)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
98 Clculo Numrico

Assim, quando pequeno, a primeira expresso, implementada em um sis-


tema de ponto flutuante de acurcia finita, produz y = 2 e, consequentemente, a
expresso para x produz x = 0. Isto , estamos diante um problema de cancela-
mento catastrfico.
Agora, quando usamos a eliminao gaussiana com pivotamento parcial, faze-
mos uma permutao de linhas de forma a escolher o maior piv a cada passo:

2 4 1 3 1 3



1 3 2 4 0 2 4 3
2

Continuando o procedimento, temos:

4 4
y= (4.24)
2 2
e
x = 3 y (4.25)

Observe que tais expresses so analiticamente idnticas s anteriores, no en-


tanto, so mais estveis numericamente. Quando converge a zero, y converge
a 2, como no caso anterior. No entanto, mesmo que y = 2, a segunda expresso
produz x = 3 y, isto , a aproximao x 3 no depende mais de obter 2 y
com preciso.

Exerccios resolvidos
ER 4.1.1. Resolva o seguinte sistema por eliminao gaussiana com pivotamento
parcial.

2y + 2z = 8
x + 2y + z = 9 (4.26)
x+y+z =6

Soluo. A forma matricial do sistema dado



0 2 2 x 8

1 2 1 y = 9 (4.27)



1 1 1 6

z

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.1. ELIMINAO GAUSSIANA 99

Construmos, ento, a matriz completa e seguimos com o procedimento de elimi-


nao gaussiana com pivotamento parcial:

0 2 2 8 1 2 1 9 1 2 1 9

1 2 1 9 0 2 2 8 0 2 2 8 (4.28)



1 1 1 6 1 1 1 6 0 1 0 3


1 2 1 9 1 2 0 8

0 2 2 8 0 2 0 6 (4.29)



0 0 1 1 0 0 1 1


1 0 0 2


0 2 0 6

(4.30)

0 0 1 1

Portanto x = 2, y = 3 e z = 1.

Exerccios

E 4.1.1. Resolva o seguinte sistema de equaes lineares

x+y+z =0
x + 10z = 48 (4.31)
10y + z = 25

Usando eliminao gaussiana com pivotamento parcial (no use o computador para
resolver essa questo).

E 4.1.2. Resolva o seguinte sistema de equaes lineares

x+y+z = 0 (4.36)
x + 10z = 48 (4.37)
10y + z = 25 (4.38)

Usando eliminao gaussiana com pivotamento parcial (no use o computador para
resolver essa questo).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


100 Clculo Numrico

E 4.1.3. Calcule a inversa da matriz



1 2 1

A= 1

2 0

(4.39)

2 1 1

usando eliminao gaussiana com pivotamento parcial.

E 4.1.4. Demonstre que se ad 6= bc, ento a matriz A dada por:



a b
A= (4.40)
c d

inversvel e sua inversa dada por:



1 d b
A1 = . (4.41)
ad bc c a

E 4.1.5. Considere as matrizes



0 0 1

A = 0 1 0 (4.42)



1 0 0

e
1 1 1

E= 1 1 1 (4.43)


1 1 1

e o vetor
2

v= 3 (4.44)


4

a) Resolva o sistema Ax = v sem usar o computador.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.2. COMPLEXIDADE DE ALGORITMOS EM LGEBRA LINEAR 101

b) Sem usar o computador e atravs da tcnica algbrica de sua preferncia,


resolva o sistema (A + E)x = v considerando ||  1 e obtenha a soluo
exata em funo do parmetro .

c) Usando a expresso analtica obtida acima, calcule o limite lim0 x .

d) Resolva o sistema (A + E)x = v no Scilab usando pivotamento parcial e


depois sem usar pivotamento parcial para valores muito pequenos de como
1010 , 1015 , . . .. O que voc observa?

E 4.1.6. Resolva o seguinte sistema de 5 equaes lineares

x1 x2 = 0 (4.47)
(i3)2
xi1 + 2.5xi xi+1 = e 20
, 2i4 (4.48)
2x5 x4 = 0 (4.49)

representando-o como um problema do tipo Ax = b no Scilab e usando o comando


de contra barra para resolv-lo. Repita usando a rotina que implementa eliminao
gaussiana.

E 4.1.7. Encontre a inversa da matriz



1 1 1

1 1 2



1 1 4

a) Usando eliminao gaussiana com pivotamento parcial mo.

b) Usando a rotina gausspp().

c) Usando a rotina inv() do Scilab.

4.2 Complexidade de algoritmos em lgebra li-


near
Nesta seo, discutiremos um importante conceito em teoria de algoritmos, a
complexidade, isto , uma medida do custo ou eficincia do algoritmo.
Dados dois algoritmos diferentes para resolver o mesmo problema, como po-
demos escolher qual desses algoritmos o melhor? Se pensarmos em termos de

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


102 Clculo Numrico

eficincia (ou custo computacional), queremos saber qual desses algoritmos con-
some menos recursos para realizar a mesma tarefa.
Em geral podemos responder esta pergunta de duas formas: em termos de
tempo ou de espao.
Quando tratamos de eficincia espacial, queremos saber quanta memria
(em geral RAM) utilizada pelo algoritmo para armazenar os dados, sejam eles
matrizes, vetores ou escalares.
Quando tratamos de eficincia temporal, queremos saber quanto tempo um
algoritmo demanda para realizar determinada tarefa. Vamos nos concentrar neste
segundo conceito, que em geral o mais difcil de tratar.
Naturalmente o tempo vai depender do tipo de computador utilizado. ra-
zovel pensar que o tempo vai ser proporcional ao nmero de operaes de ponto
flutuante (flops) feitas pelo algoritmo (observe que o tempo total no depende ape-
nas disso, mas tambm de outros fatores como memria, taxas de transferncias
de dados da memria para o cpu, redes,...). Entretanto vamos nos concentrar na
contagem do nmero de operaes (flops) para realizar determinada tarefa.
No passado (antes dos anos 80), os computadores demoravam mais tempo para
realizar operaes como multiplicao e diviso, se comparados adio ou sub-
trao. Assim, em livros clssicos eram contados apenas o custo das operaes
e /. Nos computadores atuais as quatro operaes bsicas demandam aproxi-
madamente o mesmo tempo. No obstante, como na maioria dos algoritmos de
lgebra linear, o nmero de multiplicaes e divises proporcional ao nmero
somas e subtraes (pois a maioria dessas operaes podem ser escritas como a
combinaes de produtos internos), justificvel dizer que o tempo de computao
continua podendo ser estimado pelo nmero de multiplicaes e divises. Desta
forma, na maior parte deste material, levaremos em conta somente multiplicaes
e divises, a no ser que mencionado o contrrio.
Teremos em mente que a ideia estimar o custo quando lidamos com vetores
e matrizes muito grande, isto , o custo quando estas dimenses crescem infinita-
mente.
Exemplo 4.2.1 (Produto escalar-vetor). Qual o custo para multiplicar um escalar
por um vetor?
Soluo. Seja a R e x Rn , temos que

x = [a x1 , a x2 , ...,a xn ]
ax (4.50)

usando n multiplicaes, ou seja, um custo computacional, C, de

C = n flops. (4.51)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.2. COMPLEXIDADE DE ALGORITMOS EM LGEBRA LINEAR 103

Exemplo 4.2.2 (Produto vetor-vetor). Qual o custo para calcular o produto in-
terno x y ?
Soluo. Sejam x , y Rn , temos que

x y = x1 y1 + x2 y2 + ... + xn yn (4.52)

So realizadas n multiplicaes (cada produto xi por yi ) e n 1 somas, ou seja,


o custo total de operaes de

C := (n) + (n 1) = 2n 1 flops (4.53)


Exemplo 4.2.3 (Produto matriz-vetor). Qual o custo para calcular o produto de
matriz por vetor Ax
x?

Soluo. Sejam A Rnn e x Rn , temos que



a11 a12 a1n x1 a11 x1 + a12 x2 + ... + a1n xn
.. .. .. ..

. . . = . (4.54)



an1 x1 + an2 x2 + ... + ann xn

an1 ann xn

Para obter o primeiro elemento do vetor do lado direito, devemos multiplicar


a primeira linha de A pelo vetor coluna x . Note que esse exatamente o custo
do produto vetor-vetor do exemplo anterior. Como o custo para cada elemento do
vetor do lado direito o mesmo e temos n elementos, teremos que o custo para
multiplicar matriz-vetor 1

C := n (2n 1) = 2n2 n flops. (4.56)

medida que n , temos

O(2n2 n) = O(2n2 ) = O(n2 ) flops. (4.57)


Exemplo 4.2.4 (Produto matriz-matriz). Qual o custo para calcular o produto
de duas matrizes A e B?
1
Contando apenas multiplicaes/divises obtemos

n O(n) = O(n2 ) flops. (4.55)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


104 Clculo Numrico

Soluo. Sejam A, B Rnn temos que



a11 a12 a1n b11 b12 a1n c11 c12 c1n
.. .. .. .. . ..
= ..

. . . . . (4.58)



an1 ann bn1 bnn cn1 cnn

onde o elemento dij o produto da linha i de A pela coluna j de B,

dij = ai1 b1j + ai2 b2j + ... + ai2 b2j (4.59)

Note que este produto tem o custo do produto vetor-vetor, ou seja, 2n 1. Como
temos n n elementos em D, o custo total para multiplicar duas matrizes 2

C = n n (2n 1) = 2n3 n2 flops. (4.61)

4.3 Sistemas triangulares


Considere um sistema linear onde a matriz triangular superior, ou seja,

a11 a12 a1n x1 b1

0 a22 a2n
x2 b

= 2
. .. . . . . .

.. . . .. .. ..



0 ... 0 ann xn bn

tal que todos elementos abaixo da diagonal so iguais a zero.


Podemos resolver esse sistema iniciando pela ltima equao e isolando xn
obtemos
xn = bn /ann (4.62)
Substituindo xn na penltima equao

an1,n1 xn1 + an1,n xn = bn1 (4.63)


2
Contando apenas e / obtemos

n n (n) = n3 flops. (4.60)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.3. SISTEMAS TRIANGULARES 105

e isolando xn1 obtemos

xn1 = (bn1 an1,n xn )/an1,n1 (4.64)

e continuando desta forma at a primeira equao obteremos

x1 = (b1 a12 x2 a1n xn )/a11 . (4.65)

De forma geral, temos que

xi = (bi ai,i+1 xi+1 ai,n xn )/ai,i , i = 2, . . . ,n. (4.66)

4.3.1 Cdigo Scilab: resoluo de um sistema triangular


superior
Para resolver um sistema triangular superior iniciamos da ltima linha em
direo a primeira.
1 function [ x]= solveU (U, b ) // U:= m a t r i z t r i a n g u l a r s u p e r i o r
2 n=s i z e (U, 1 ) // b := v e t o r
3 x ( n)=b ( n ) /U( n , n )
4 for i=n1: 1:1
5 x ( i )=(b ( i )U( i , i +1:n ) x ( i +1:n ) ) /U( i , i )
6 end
7 endfunction

4.3.2 Cdigo Scilab: resoluo de um sistema triangular


inferior
Para resolver um sistema triangular inferior podemos fazer o processo inverso
iniciando da primeira equao.
1 function [ x]= s o l v e L (L , b ) // L : m a t r i z t r i a n g u l a r i n f e r i o r
2 n=s i z e (L , 1 ) // b : v e t o r
3 x (1)=b ( 1 ) / L ( 1 , 1 )
4 for i =2:n
5 x ( i )=(b ( i )L( i , 1 : i 1)x ( 1 : i 1) ) /L( i , i )
6 end
7 endfunction

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


106 Clculo Numrico

Custo computacional
Vamos contar o nmero total de flops para resolver um sistema triangular
inferior. Note que o custo para um sistema triangular superior ser o mesmo.
Na linha 3, temos uma diviso, portanto 1 flop.
Na linha 5 quando i = 2, temos
x(2)=(b(2)-L(2,1:1)*x(1:1))/L(2,2),
ou seja, 1 subtrao+1 multiplicao + 1 diviso = 3 flops.
Quando i = 3,
x(3)=(b(3)-L(3,1:2)*x(1:2))/L(3,3)
temos 1 subtrao+(2 multiplicaes + 1 soma) +1 diviso = 5 flops.
Quando i = 4, temos 1 subtrao+(3 multiplicaes + 2 somas) +1 diviso
= 7 flops.
At que para i = n, temos
x(n)=(b(n)-L(n,1:n-1)*x(1:n-1))/L(n,n),
com 1 subtrao+(n 1 multiplicaes + n 2 somas) + 1 diviso, ou seja,
1 + (n 1 + n 2) + 1 = 2n 1 flops.
Somando todos esses custos3 temos que o custo para resolver um sistema tri-
angular inferior
n n n
1 + 3 + 5 + 7 + ... + 2n 1 = (2k 1) = 2 1 (4.68)
X X X
k
k=1 k=1 k=1

e utilizando que a soma dos k inteiros a soma dos termos de uma progresso
aritmtica4
2(n(n + 1)/2) n = n2 flops. (4.69)

4.4 Fatorao LU
Considere um sistema linear Ax = b, onde a matriz A densa5 . A fim de
resolver o sistema, podemos fatorar a matriz A como o produto de uma matriz L
triangular inferior e uma matriz U triangular superior, ou seja, A = LU .
3
Contando apenas multiplicaes/divises obtemos

(n2 + n)/2 flops. (4.67)

n
X n
X
4
Temos que k = n(n + 1)/2, 1=n
k=1 k=1
5
Diferentemente de uma matriz esparsa, uma matriz densa possui a maioria dos elementos
diferentes de zero.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.4. FATORAO LU 107

Sendo assim, o sistema pode ser reescrito da seguinte forma:

Ax = b (4.70)
(LU )x = b (4.71)
L(U x) = b (4.72)
Ly = b e Ux = y (4.73)

Isto significa que, ao invs de resolvermos o sistema original, podemos resolver o


sistema triangular inferior Ly = b e, ento, o sistema triangular superior U x = y,
o qual nos fornece a soluo de Ax = b.
A matriz U da fatorao6 LU a matriz obtida ao final do escalonamento da
matriz A.
A matriz L construda a partir da matriz identidade I, ao longo do escalona-
mento de A. Os elementos da matriz L so os mltiplos do primeiro elemento da
linha de A a ser zerado dividido pelo piv acima na mesma coluna.
Por exemplo, para zerar o primeiro elemento da segunda linha de A, calculamos

L21 = A21 /A11 (4.74)

e fazemos
A2,: A2,: L21 A1,: (4.75)
Note que denotamos Ai,: para nos referenciarmos a linha i de A. Da mesma
forma, se necessrio usaremos A:,j para nos referenciarmos a coluna j de A.
Para zerar o primeiro elemento da terceira linha de A, temos

L31 = A31 /A11 (4.76)

e fazemos
A3,: A3,: L31 A1,: (4.77)
at chegarmos ao ltimo elemento da primeira coluna de A.
Repetimos o processo para as prximas colunas, escalonando a matriz A e
coletando os elementos Lij abaixo da diagonal7 .

Exemplo 4.4.1. Use a fatorao LU para resolver o seguinte sistema linear:

x1 + x2 + x3 = 2
2x1 + x2 x3 = 1 (4.78)
2x1 x2 + x3 = 3
6
No vamos usar pivotamento nesse primeiro exemplo.
7
Perceba que a partir da segunda coluna para calcular Lij no usamos os elementos de A,
mas os elementos da matriz A em processo de escalonamento

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


108 Clculo Numrico

Soluo. Comeamos fatorando a matriz A dos coeficientes deste sistema:



1 1 1 1 0 0 1 1 1

A= 2 1 = 0 1 0 (4.79)
2 1
1 . 1



2 1 1 0 0 1 2 1 1

| {z }| {z }
I3,3 A

1 0 0 1 1 1

= 2 1 0 (4.80)
0 1 3



2 0 1 0 3 1


1 0 0 1 1 1

=
2 1 0 0 1 3

(4.81)

2 3 1 0 0 8

| {z }| {z }
L U
(4.82)

Completada a fatorao LU, resolvemos, primeiramente, o sistema Ly = b:

y1 = 2
2y1 + y2 = 1 (4.83)
2y1 + 3y2 + y3 = 3

o qual no fornece y1 = 2, y2 = 5 e y3 = 8. Por fim, obtemos a soluo


resolvendo o sistema U x = y:

x1 + x2 + x3 = 2
x2 3x3 = 5 (4.84)
8x3 = 8

o qual fornece x3 = 1, x2 = 2 e x1 = 1.

4.4.1 Cdigo Scilab: Fatorao LU


No Scilab, podemos implementar o algoritmo para fatorao LU da seguinte
forma:
1 function [ L ,A]= fatoraLU (A)
2 n=s i z e (A, 1 )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.4. FATORAO LU 109

3 L=eye ( n , n )
4 for j =1:n1
5 for i=j +1:n
6 L( i , j )=A( i , j ) /A( j , j )
7 A( i , j +1:n)=A( i , j +1:n)L( i , j ) A( j , j +1:n )
8 A( i , j )=0
9 end
10 end
11 endfunction

Custo computacional
Podemos analisar o custo computacional, reduzindo o problema em problemas
menores.
Na linha 4, iniciamos com j = 1. Desta forma i varia de 2 at n na linha 5.
A linha 6 ter sempre 1 flop.
A linha 7, com j = 1 tem um bloco de tamanho 2:n contabilizando n 1 flops
do produto e n 1 flops da subtrao.
Nas linhas 6-8 so feitas (2(n 1) + 1) = 2n 1 flops independente do valor
de i. Como i varia de 2 at n, teremos que o bloco repetido n 1 vezes, ou seja,
o custo das linhas 5-9
(n 1) (2(n 1) + 1) = 2(n 1)2 + (n 1) (4.85)
Voltamos a linha 4 quando j = 2. Das linhas 6-8 teremos n 2 flops (o bloco
ter um elemento a menos) que ser repetido n 2 vezes, pois i=3:n, ou seja,
(n 2) (2(n 2) + 1) = 2(n 2)2 + (n 2) (4.86)
Para j = 3, temos 2(n 3)2 + (n 3).
Para j = n 2, temos 2(2)2 + 2.
Finalmente, para j = n 1, temos 2 12 + 1.
Somando todos esses custos, temos
(n 1) + 2(n 1)2 + (n 2) + 2(n 2)2 + ... + (2) + 2(2)2 + 1 + 2 (4.87)
1
n1
= 2k 2 + k (4.88)
X

k=1
n1 n1
= 2 k +
2
(4.89)
X X
k
k=1 k=1
(n 1)n(2n 1) n(n 1)
= 2 + (4.90)
6 2
2n 3
n2
n
= flops. (4.91)
3 2 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
110 Clculo Numrico

4.4.2 Custo computacional para resolver um sistema linear


usando fatorao LU
Para calcularmos o custo computacional de um algoritmo completo, uma es-
tratgia separar o algoritmo em partes menores, mais fceis de analisar.
Para resolver o sistema, devemos primeiro fatorar a matriz A nas matrizes L e
U . Vimos que o custo
2n3 n2 n
flops. (4.92)
3 2 6
Depois devemos resolver os sistemas Ly = b e U x = y. O custo de resolver os
dois sistemas (devemos contar duas vezes)

2n2 flops. (4.93)

Somando esses 3 custos, temos que o custo para resolver um sistema linear
usando fatorao LU
2n3 3n2 n
+ flops. (4.94)
3 2 6
Quando n cresce, prevalessem os termos de mais alta ordem, ou seja,
2n3 3n2 n 2n3 3n2 2n3
O( + ) = O( + ) = O( ) (4.95)
3 2 6 3 2 3

4.4.3 Custo para resolver m sistemas lineares


Devemos apenas multiplicar m pelo custo de resolver um sistema linear usando
fatorao LU , ou seja, o custo ser
2n3 3n2 n 2mn3 3mn2 mn
m( + )= + (4.96)
3 2 6 3 2 6
e com m = n temos
2n4 3n3 n2
+ . (4.97)
3 2 6
Porm, se estivermos resolvendo n sistemas com a mesma matriz A (e diferente
lado direito b para cada sistema) podemos fazer a fatorao LU uma nica vez e
contar apenas o custo de resolver os sistemas triangulares obtidos.
3 2
Custo para fatorao LU de A: 2n3 n2 n6 .
Custo para resolver m sistemas triangulares inferiores: mn2 .
Custo para resolver m sistemas triangulares superiores: mn2 .
Somando esses custos obtemos
2n3 n2 n
+ 2mn2 (4.98)
3 2 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
4.5. MTODO DA MATRIZ TRIDIAGONAL 111

que quando m = n obtemos


8n3 n2 n
flops. (4.99)
3 2 6

4.4.4 Custo para calcular a matriz inversa de A


Como vemos em lgebra Linear, um mtodo para obter a matriz A1 realizar
o escalonamento da matriz [A|I] onde I a matriz identidade. Ao terminar o
escalonamento, o bloco do lado direito conter A1 .
Isto equivalente a resolver n sistemas lineares com a mesma matriz A e os
vetores da base cannica e i = [0,...,0,1,0,....0]T tal que
xi = e i ,
Ax i=1:n (4.100)
onde x i sero as colunas da matriz A inversa, j que AX = I.
O custo para resolver esses n sistemas lineares foi calculado na seo anterior
como
8n3 n2 n
. (4.101)
3 2 6
Exemplo 4.4.2. Qual o melhor mtodo para resolver um sistema linear: via
fatorao LU ou calculando a inversa de A e obtendo x = A1 b?

4.5 Mtodo da matriz tridiagonal


O mtodo da matriz tridiagonal ou algoritmo de Thomas8 ou ainda TDMA (do
ingls tridiagonal matrix algorithm) o caso particular da eliminao gaussiana
aplicada a matrizes tridiagonais.
Uma matriz tridiagonal uma matriz quadrada cujos nicos elementos no
nulos esto na diagonal principal e nas diagonais imediatamente acima e abaixo
da principal. Um sistema tridiagonal um sistema de equaes lineares cuja matriz
associada tridiagonal, conforme a seguir:

b1 c 1 x1 d1

a2 b2 c2 x2 d2

.

b3 . . = (4.102)

a3 x d .
3 3
.. .. .. ..

. . .
.


cn1


an bn xn dn
8
Llewellyn Hilleth Thomas (21 de outubro de 1903 20 de abril de 1992) foi um matemtico
e fsico britnico.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


112 Clculo Numrico

Observamos que no necessrio armazenar todos os n2 elementos da matriz


em memria, sendo suficiente armazenar os vetores an , bn e cn . Por convenincia,
a partir daqui, definiremos os elementos inexistentes na matriz a1 e cn como zero:

a1 = cn = 0. (4.103)

O algoritmo para a soluo do sistema tridiagonal (4.102) pelo algoritmo de


Thomas dada pelas seguintes expresses:

ci , i=1
c0i = bi
(4.104)
ci
bi ai c0i1
, i = 2, 3, . . . , n 1
e
i=1

di ,
bi
d0i = di ai d0i1 (4.105)
bi ai c0i1
, i = 2, 3, . . . , n.

Finalmente a soluo final obtida por substituio reversa:

xn = d0n (4.106)
xi = d0i c0i xi+1 , i = n 1, n 2, . . . , 1. (4.107)

Teorema 4.5.1. A aplicao da eliminao gaussiana sem pivotamento ao sistema


(4.102) produz o algoritmo dado em (4.104) e (4.106).

Demonstrao. O primeiro passo consiste em dividir todos os elementos da pri-


meira linha de (4.102) por b1 :


1 c01 0
x1 d1

a2 b2 c2 x2 d2

.

b3 . . = (4.108)

a3 x d ,
3 3
... ... .. ..

.
.


cn1


an bn xn dn

onde c01 = cb11 e d01 = db11 .


O segundo passo consiste em substituir a segunda linha por ela mesma sub-

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.5. MTODO DA MATRIZ TRIDIAGONAL 113

trada da linha 1 multiplicada por a2 (l2 l2 a2 l1 ):



1 c01 x1 d01

0 b2 a2 c01 c2 x2 d2 a2 d01

.

b3 . . = (4.109)

a3 x d3 .
3
... ... .. ..

. .


cn1




an bn xn dn
Em seguida, dividimos a segunda linha por b2 a2 c01 , a fim de normalizar a diagonal
principal:

1 c1
0 0
x1 d1

0 1 c02
0
x2 d2

.

b3 . . = (4.110)

a3 x d .
3 3
.. .. .. ..

. . .
.


cn1


an bn xn dn
d a d0
onde c02 = b2 a
c2
0 e d2 = b a c0 .
2 c1
0 2
2
2 1
2 1
O prximo passo consiste em substituir a terceira linha por ela mesma subtrada
da linha 2 multiplicada por a3 (l3 l3 a3 l2 ):

1 c1
0
x1 d01

0 1 c02 x2 d02


.

0 b3 a3 c02 . . = (4.111)

0.


x
3
d
3 a3 d 2
.. .. .. ..

. . . .


cn1




an bn xn dn
A fim de normalizar o elemento da diagonal da terceira linha, dividimos toda a
linha por d3 a3 d02 :

1 c1
0 0
x1 d1

0 1 c02
0
x2 d2

...

0 1 = (4.112)

x d0 .
3 3
... ... .. ..

.
.


cn1


an bn xn dn

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


114 Clculo Numrico

Este procedimento realizado at que se atinja a ltima linha e temos o seguinte


sistema:

1 c1
0 0
x1 d1

0 1 c02
0
x2 d2

..

0 1 . = (4.113)

x d0 .
3 3
... ... .. ..

.
0 .


cn1


0 1 xn d0n

Neste estgio, podemos encontrar os xn atravs de substituio reversa, isto :


a ltima linha diz
xn = d0n . (4.114)
A penltima linha diz

xn1 + c0n1 xn = d0n1 = xn1 = d0n1 c0n1 xn . (4.115)

Esse mesmo procedimento aplicado linha i = 1, . . . n 1, nos d

xi = d0i c0i xi+1 . (4.116)

Exemplo 4.5.1. Considere a resoluo do seguinte sistema tridiagonal pelo algo-


ritmo de Thomas:

2 1 0 0 0 x1 4

1 2 1 0 0 x 4

2
0 1 2 1 0 = 0 . (4.117)

x3



0 0 1 2 1 0

x4



0 0 0 1 2 x5 2

Primeiramente identificamos os vetores a, b, c e d:

a = (0, 1, 1, 1, 1) (4.118)
b = (2, 2, 2, 2, 2) (4.119)
c = (1, 1, 1, 1, 0) (4.120)
d = (4, 4, 0, 0, 2) (4.121)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.5. MTODO DA MATRIZ TRIDIAGONAL 115

Agora, calculamos os vetores c0 e d0 :


c1 1
c01 = = (4.122)
b1 2
c2 1 2
c02 = = = (4.123)
b2 a2 c01 21 2
1
3
c3 1 3
c03 = = = (4.124)
b3 a3 c02 21 3
2
4
c4 1 4
c04 = = 3 = (4.125)
0
b 4 a4 c 3 21 4 5
d1 4
d01 = = =2 (4.126)
b1 2
d2 a2 d01 412 4
d02 = = 1 = (4.127)
0
b 2 a2 c 1 21 2 3
d3 a3 d02 0 1 34
d03 = = = 1 (4.128)
b3 a3 c02 2 1 23
d4 a4 d03 0 1 (1) 4
d04 = = = (4.129)
0
b 4 a4 c 3 21 4 3
5
d5 a5 d04 21 4
d05 = = 5
=1 (4.130)
0
b 5 a5 c 4 21 4
5

Finalmente, calculamos o vetor x:

x5 = d05 = 1 (4.131)
4 4
x4 = d04 c04 x5 = 1=0 (4.132)
5 5
3
x3 = d03 c03 x4 = 1 0 = 1 (4.133)
4
4 2
x2 = d2 c2 x3 = (1) = 2
0 0
(4.134)
3 3
1
x1 = d1 c1 x2 = 2 2 = 1
0 0
(4.135)
2
E assim, obtemos o vetor x = [1, 2, 1, 0, 1].

Cdigo Scilab: Mtodo da matriz tridiagonal


//entradas: vetores coluna a,b,c,d
//saida: vetor coluna x
function x=TDMA(a,b,c,d)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


116 Clculo Numrico

n=size(a,1) // Recupera ordem do sistema.

cl=zeros(n,1) //Inicializa cl
dl=zeros(n,1) //Inicializa dl
x=zeros(n,1) //Inicializa x

cl(1)=c(1)/b(1)
for i=2:n-1
cl(i)=c(i)/(b(i)-a(i)*cl(i-1))
end

dl(1)=d(1)/b(1)
for i=2:n
dl(i)=(d(i)-a(i)*dl(i-1))/(b(i)-a(i)*cl(i-1))
end

x(n)=dl(n)
for i=n-1:-1:1
x(i)=dl(i)-cl(i)*x(i+1)
end
endfunction

Nesse cdigo, usou-se cl e dl para denotar c0 e d0 . Observe que se for desne-


cessrio preservar os valores originais dos vetores c e d, eles podem, com economia
de memria e simplicidade de cdigo, ser sobrescritos pelos vetores c0 e d0 , respec-
tivamente. Eis uma nova implementao:

//entradas: vetores coluna a,b,c,d


//saida: vetor coluna x
function x=TDMA2(a,b,c,d)
n=size(a,1) // Recupera ordem do sistema.
x=zeros(n,1) //Inicializa x

c(1)=c(1)/b(1)
for i=2:n-1
c(i)=c(i)/(b(i)-a(i)*c(i-1))
end

d(1)=d(1)/b(1)
for i=2:n
d(i)=(d(i)-a(i)*d(i-1))/(b(i)-a(i)*c(i-1))

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.5. MTODO DA MATRIZ TRIDIAGONAL 117

end

x(n)=d(n)
for i=n-1:-1:1
x(i)=d(i)-c(i)*x(i+1)
end
endfunction

A soluo do sistema do Exemplo 4.5.1 pode ser obtida atravs dos seguintes
comandos:

-->a=[0; 1; 1; 1; 1];
-->b=[2; 2; 2; 2; 2];
-->c=[1; 1; 1; 1; 0];
-->d=[4; 4; 0; 0; 2];
-->TDMA(a,b,c,d)

E 4.5.1. Considere o problema linear tridiagonal dado por




5 4 0 0 0 0 x1 13

1 3 1 0 0 0 x 10

2

0 2 4 1 0 0 20

x3


= .

(4.136)
0 0 1 2 1 0 x 16

4
0 0 0 2 3 2 35

x5



0 0 0 0 1 2 x6 17

Identifique os vetores a, b, c e d relativos ao algoritmo da matriz tridiagonal.


Depois resolva o sistema usando o computador.

E 4.5.2. Considere o seguinte sistema de equaes lineares:

x1 x2 = 0
xj1 + 5xj xj+1 = cos(j/10), 2 j 10
x11 = x10 /2 (4.142)

Identifique os vetores a, b, c e d relativos ao algoritmo da matriz tridiagonal no


sistema linear dado. Depois resolva o sistema usando o computador. Veja tambm
Exerccio 4.7.4

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


118 Clculo Numrico

4.6 Condicionamento de sistemas lineares


Quando lidamos com matrizes no corpo do nmeros reais (ou complexos), exis-
tem apenas duas alternativas: i) a matriz inversvel; ii) a matriz no inver-
svel e, neste caso, chamada de matriz singular. Ao lidar com a aritmtica de
preciso finita, encontramos uma situao mais sutil: alguns problema lineares
so mais difceis de serem resolvidos, pois os erros de arredondamento se propa-
gam de forma mais significativa que em outros problemas. Neste caso falamos de
problemas bem-condicionados e mal-condicionados. Intuitivamente falando, um
problema bem-condicionado um problema em que os erros de arredondamento
se propagam de forma menos importante; enquanto problemas mal-condicionados
so problemas em que os erros se propagam de forma mais relevante.
Um caso tpico de sistema mal-condicionado aquele cujos coeficiente esto
muito prximos ao de um problema singular. Considere o seguinte exemplo:
Exemplo 4.6.1. Observe que o sistema

71 41 x 100
=
(4.150)
30 y 70

impossvel quando = 7130


41
51,95122.
Considere os prximos trs sistemas:

71 41 x 100 10/3
a)
= , com soluo ,
51 30 y 70 10/3

71 41 x 100 65
b) = , com soluo ,
52 30 y 70 115

71 41 x 100,4 85,35
c)
= , com soluo .
52 30 y 69,3 150,25

Pequenas variaes nos coeficientes das matrizes fazem as solues ficarem bem
distintas, isto , pequenas variaes nos dados de entrada acarretaram em grandes
variaes na soluo do sistema. Quando isso acontece, dizemos que o problema
mal-condicionado.
Precisamos uma maneira de medir essas variaes. Como os dados de entrada
e os dados de sada so vetores (ou matrizes), precisamos introduzir as definies
de norma de vetores e matrizes.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 119

4.6.1 Norma de vetores


Definimos a norma Lp , 1 p , de um vetor em v = (v1 , v2 , . . . , vn ) Rn
por:
n
!1/p
1/p
kvkp := p
= (|v1 |p + |v2 |p + + |vn |p ) , 1 p < . (4.151)
X
|vi |
i=1

Para p = , definimos a norma L (norma do mximo) por:

kvk = max {|vj |}. (4.152)


1jn

Proposio 4.6.1 (Propriedades de normas). Sejam dados R um escalar e os


vetores u,v Rn . Ento, para cada 1 p , valem as seguintes propriedades:
a) kukp = 0 u = 0.

b) kukp = || kukp .

c) ku + vkp kukp + kvkp (desigualdade triangular).

d) kukp kuk quando p .


Demonstrao. Demonstramos cada item em separado.
a) Se u = 0, ento segue imediatamente da definio da norma Lp , 1 p ,
que kukp = 0. Reciprocamente, se kuk = 0, ento, para cada i = 1, 2, . . . , n,
temos:
|ui | max {|uj |} = kuk = 0 ui = 0. (4.153)
1jn

Isto , u = 0. Agora, se kukp = 0, 1 p < , ento:


n
0 = kukpp := |ui |p n kuk kuk = 0. (4.154)
X

i=1

Logo, pelo resultado para a norma do mximo, conclumos que u = 0.

b) Segue imediatamente da definio da norma Lp , 1 p .

c) Em construo ...

d) Em construo ...

Exemplo 4.6.2. Calcule a norma L1 , L2 e L do vetor coluna v = (1, 2, 3, 0).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


120 Clculo Numrico

Soluo.

kvk1 = 1 + 2 + 3 + 0 = 6 (4.155)

kvk2 = 1 + 22 + 32 + 02 = 14 (4.156)
kvk = max{1,2,3,0} = 3 (4.157)

No Scilab podemos computar normas Lp s de vetores usando o comando norm.


Neste exemplo, temos:

-->norm(v,1), norm(v,'inf'), norm(v,2)


ans =
6.
ans =
3.
ans =
3.7416574

4.6.2 Norma de matrizes


Definimos a norma induzida Lp de uma matriz A = [ai,j ]n,n
i,j=1 da seguinte forma:

kAkp = sup kAvkp , (4.158)


kvkp =1

ou seja, a norma p de uma matriz o mximo valor assumido pela norma de Av


entre todos os vetores de norma unitria.
Temos as seguintes propriedades, se A e B so matrizes, I a matriz identidade,
v um vetor e um real (ou complexo):

kAkp = 0 A = 0 (4.159)
kAkp = || kAkp (4.160)
kA + Bkp kAkp + kBkp (desigualdade do tringulo) (4.161)
kAvkp kAkp kvkp (4.162)
kABkp kAkp kBkp (4.163)
kIkp = 1 (4.164)
1 = kIkp = kAA kp kAkp kA kp (se A inversvel)(4.165)
1 1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 121

Casos especiais:
n
n
kAk1 = max (4.166)
X
|aij |
j=1
i=1
q
kAk2 = max{|| : (AA )} (4.167)
n
n
kAk = max (4.168)
X
|aij |
i=1
j=1

onde (M ) o conjunto de autovalores da matriz M .

Exemplo 4.6.3. Calcule as normas 1, 2 e da seguinte matriz:



3 5 7

A=
1 2 4 (4.169)


1

8 7

Soluo.

kAk1 = max{12, 8, 18} = 18 (4.170)


kAk = max{15, 7, 16} = 16 (4.171)
q
kAk2 = max{0,5865124, 21,789128, 195,62436} = 13,98657 (4.172)

No Scilab podemos computar normas Lp s de matrizes usando o comando


norm. Neste exemplo, temos:
-->A = [3 -5 7;1 -2 4;-8 1 -7];
-->norm(A,1), norm(A,'inf'), norm(A,2)
ans =
18.
ans =
16.
ans =
13.986578

4.6.3 Nmero de condicionamento


O condicionamento de um sistema linear um conceito relacionado forma
como os erros se propagam dos dados de entrada para os dados de sada. No

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


122 Clculo Numrico

contexto de um sistema linear Ax = y, temos que a soluo x depende dos dados


de entrada y. Consideremos, ento, o problema

A(x + x ) = y + y (4.173)

Aqui, x representa uma variao (erro) em x e y representa uma variao em y


(erro). Temos:
Ax + Ax = y + y (4.174)
e, portanto,
Ax = y . (4.175)
Queremos avaliar a razo entre o erro relativo em x e o erro relativo em y, isto

kx k / kxk kx k kyk
= (4.176)
ky k /kyk kxk ky k
kA1 y k kAxk
= (4.177)
kxk ky k
kA1 k ky k kAk kxk
(4.178)
kxk ky k
= kAk kA k1
(4.179)

Definio 4.6.1 (Nmero de condicionamento). O nmero de condicionamento


de uma matriz no-singular A

kp (A) := kAkp kA1 kp (4.180)

Observao 4.6.1. O nmero de condicionamento depende da norma esco-


lhida.

O nmero de condicionamento da matriz identidade 1.

O nmero de condicionamento de qualquer matriz inversvel maior ou igual


a 1.
Exemplo 4.6.4. No Exemplo 4.6.1 estudamos a soluo de sistemas lineares com
as seguintes matrizes de coeficientes:

71 41 71 41
A1 =
e A2 =
. (4.181)
51 30 52 30

Calcule os nmeros de condicionamento destes sistemas na norma Lp para p = 1,


2 e .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 123

Soluo. Para a matriz A1 , temos:

k1 (A1 ) := kA1 kkA1


1 k 350,36,

2 k 262,12,
k2 (A1 ) := kA2 kkA1 (4.182)
k (A1 ) := kA kkA1 k 350,36.

Para a matriz A2 , temos:

1 k1 6888,0,
k1 (A2 ) := kA1 k1 kA1
k2 (A2 ) := kA1 k2 kA1
1 k2 5163,0, (4.183)
k (A2 ) := kA1 k kA11 k 6888,0.

No Scilab, podemos computar estes nmeros de condicionamento para a matriz


A1 com o seguinte cdigo:

A1 = [71 41;51 30];


cond(A1,1)
cond(A1,2)
cond(A1,'inf')
e, anlogo para a matriz A2 .

Exerccios

E 4.6.1. Calcule o valor de para o qual o problema




71x + 41y = 10
x + 30y = 4

impossvel, depois calcule os nmeros de condicionamento com norma 1,2 e


quando = 51 e = 52.

E 4.6.2. Calcule o nmero de condicionamento da matriz



3 5 7

A= 1 2 4



1

8 7

nas normas 1, 2 e .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


124 Clculo Numrico

E 4.6.3. Calcule o nmero de condicionamento das matrizes



71 41

52 30
e
1 2 3

2 3 4



4 5 5

usando as normas 1, 2 e .

E 4.6.4. Usando a norma 1, calcule o nmero de condicionamento da matriz



1 2
A=


2+ 4

em funo de quando 0 < < 1. Interprete o limite 0.

E 4.6.5. Considere os sistemas:


100000x 9999.99y = 10
100000x 9999.99y = 9.999
e
9999.99x + 1000.1y = 1 9999.99x + 1000.1y = 1.01

Encontre a soluo de cada um e discuta.

E 4.6.6. Considere os vetores de 10 entradas dados por

(j/10)3
xj = sen (j/10), yj = j/10 zj = j/10 , j = 1, . . . ,10 (4.184)
6
Use o Scilabpara construir os seguintes vetores de erro:
|xj yj | |xj zj |
ej = fj = (4.185)
|xj | xj
Calcule as normas 1, 2 e de e e f

4.7 Mtodos iterativos para sistemas lineares


Na seo anterior, tratamos de mtodos diretos para a resoluo de sistemas
lineares. Em um mtodo direto (por exemplo, soluo via fatorao LU) obtemos

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 125

uma aproximao da soluo depois de realizarmos um nmero finito de operaes


(s teremos a soluo ao final do processo).
Veremos nessa seo dois mtodos iterativos bsicos para obter uma aproxi-
mao para a soluo de um sistema linear. Geralmente em um mtodo iterativo,
iniciamos com uma aproximao para a soluo (que pode ser ruim) e vamos me-
lhorando essa aproximao atravs de sucessivas iteraes.

4.7.1 Mtodo de Jacobi


O mtodo de Jacobi pode ser obtido a partir do sistema linear
a11 x1 + a12 x2 + + a1n xn = y1 (4.186)
a21 x1 + a22 x2 + + a2n xn = y2 (4.187)
..
. (4.188)
an1 x1 + an2 x2 + + ann xn = yn (4.189)
Isolando o elemento x1 da primeira equao temos
 
(k)
(k+1)
y1 a12 x2 + + a1n xn(k)
x1 = (4.190)
a11
(k)
Note que utilizaremos os elementos xi da iterao k (a direita da equao) para
estimar o elemento x1 da prxima iterao.
Da mesma forma, isolando o elemento xi de cada equao i, para todo i = 2,...,n
podemos construir a iterao
 
(k)
(k+1)
y1 a12 x2 + + a1n xn(k)
x1 = (4.191)
a11
 
(k) (k)
(k+1)
y2 a21 x1 + a23 x3 + + a2n xn(k)
x2 = (4.192)
a22
..
. (4.193)
 
(k) (k) (k)
y2 an1 x1 + + an,n2 xn2 + an,n1 xn1
x(k+1)
n = (4.194)
ann
Em notao mais compacta, o mtodo de Jacobi consiste na iterao
x(1) = aproximao inicial (4.195)

n
(k+1) (k)
= (4.196)
X
xi yi aij xj /aii
j=1
j6=i

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


126 Clculo Numrico

Exemplo 4.7.1. Resolva o sistema

10x + y = 23 (4.197)
x + 8y = 26 (4.198)

usando o mtodo de Jacobi iniciando com x(1) = y (1) = 0.

23 y (k)
x(k+1) = (4.199)
10
26 x(k)
y (k+1) = (4.200)
8
23 y (1)
x(2) = = 2,3 (4.201)
10
26 x(1)
y (2) = = 3,25 (4.202)
8
23 y (2)
x(3) = = 1,975 (4.203)
10
26 x(2)
y (3) = = 2,9625 (4.204)
8
Exemplo 4.7.2. Considere o seguinte sistema

3x1 + x2 + x3 = 2
2x1 + 5x2 + x3 = 5 (4.205)
2x1 + 3x2 + 7x3 = 17

Usando o mtodo de Jacobi com aproximao inicial x(1) = (1, 1, 1), obtemos os
seguintes resultados:

k x(k) kx(k) x(k1) k


1 (1, 1, 1) -x-
2 (0,67, 0,80, 3,14) 2,1
3 (1,45, 1,90, 2,58) 1,1
4 (0,90, 2,10, 2,83) 5,5E1
5 (0,91, 1,92, 3,07) 2,4E1
.. .. ..
. . .
10 (1,00, 2,00, 3,00) 6,0E3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 127

Verifique a resposta.

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

Cdigo Scilab: Mtodo de Jacobi

function [x,deltax]=jacobi(A,b,x,tol,N)
n=size(A,1)
xnew =x
convergiu=%F //FALSE;

k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*x(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)= (b(n) -A(n,1:n-1)*x(1:n-1) )/A(n,n)

deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x',deltax]) // depuracao
end
if ~convergiu then
error('Nao convergiu')
end

endfunction

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


128 Clculo Numrico

4.7.2 Mtodo de Gauss-Seidel

Assim, como no mtodo de Jacobi, no mtodo de Gauss-Seidel tambm isola-


(k+1)
mos o elemento xi da equao i. Porm perceba que a equao para x2 depende
(k) (k+1)
de x1 na iterao k. Intuitivamente podemos pensar em usar x1 que acabou
de ser calculado e temos

 
(k+1) (k)
(k+1)
y2 a21 x1 + a23 x3 + + a2n xn(k)
x2 = (4.206)
a22

Aplicando esse raciocnio, podemos construir o mtodo de Gauss-Seidel como

 
(k)
(k+1)
y1 a12 x2 + + a1n x(k)
n
x1 = (4.207)
a11
 
(k+1) (k)
(k+1)
y2 a21 x1 + a23 x3 + + a2n xn(k)
x2 = (4.208)
a22
..
. (4.209)
 
(k+1) (k+1)
y2 an1 x1 + + an(n1) xn1
x(k+1)
n = (4.210)
ann

Em notao mais compacta, o mtodo de Gauss-Seidel consiste na iterao:

x(1) = aproximao inicial (4.211)


Pi1 (k+1) Pn (k)
(k+1) yi j=1 aij xj j=i+1 aij xj
xi = (4.212)
aii

Exemplo 4.7.3. Resolva o sistema

10x + y = 23 (4.213)
x + 8y = 26 (4.214)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 129

usando o mtodo de Gauss-Seidel com condies iniciais x(1) = y (1) = 0.

23 y (k)
x(k+1) = (4.215)
10
26 x(k+1)
y (k+1) = (4.216)
8
23 y (1)
x(2) = = 2,3 (4.217)
10
26 x(2)
y (2) = = 2,9625 (4.218)
8
23 y (2)
x(3) = = 2,00375 (4.219)
10
26 x(3)
y (3) = = 2,9995312 (4.220)
8

Cdigo Scilab: Mtodo de Gauss-Seidel


function [x,deltax]=gauss_seidel(A,b,x,tol,N)
n=size(A,1)
xnew =x
convergiu=%F //FALSE;

k=1
while k<=N & ~convergiu
xnew(1)=(b(1) - A(1,2:n)*x(2:n))/A(1,1)
for i=2:n-1
xnew(i)=(b(i) -A(i,1:i-1)*xnew(1:i-1) ...
-A(i,i+1:n)*x(i+1:n) )/A(i,i)
end
xnew(n)=(b(n) -A(n,1:n-1)*xnew(1:n-1) )/A(n,n)

deltax=max( abs(x-xnew) )
if deltax<tol then
convergiu=%T //TRUE
end
k=k+1
x=xnew // atualiza x
disp([k,x',deltax]) // depuracao
end
if ~convergiu then
error('Nao convergiu')

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


130 Clculo Numrico

end

endfunction

4.7.3 Anlise de convergncia


Nesta seo, analisamos a convergncia de mtodos iterativos para soluo
de sistema lineares. Para tanto, consideramos um sistema linear Ax = b, onde
A = [ai,j ]n,n
i,j=1 a matriz (real) dos coeficientes, b = (aj )j=1 um vetor dos termos
n

constantes e x = (xj )j=1 o vetor incgnita. No decorrer, assumimos que A uma


n

matriz no singular.
Geralmente, mtodos iterativos so construdos como uma iterao de ponto
fixo. No caso de um sistema linear, reescreve-se a equao matricial em um pro-
blema de ponto fixo equivalente, isto :

Ax = b x = T x + c, (4.221)

i,j=1 chamada de matriz da iterao e c = (cj )j=1 de vetor


onde T = [ti,j ]n,n n

da iterao. Construdos a matriz T e o vetor c, o mtodo iterativo consiste em


computar a iterao:
x(k+1) = T x(k) + c, n 1, (4.222)

onde x(1) uma aproximao inicial dada.


A fim de construirmos as matrizes e os vetores de iterao do mtodo de Jacobi
e de Gauss-Seidel, decompomos a matriz A da seguinte forma:

A = L + D + U, (4.223)

onde D a matriz diagonal D = diag (a11 , a22 , . . . , ann ), isto :



a11 0 0 0

0 a22 0 0



D := 0 0 0 (4.224)

a33 ,

.. .. .. . . ..

. . . . .




0 0 0 ann

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 131

e, respectivamente, L e U so as seguintes matrizes triangular inferior e superior:



0 0 0 0 0 a12 a13 a1n

a21 0 0 0 0 0 a23 a2n


L := 0 0 U := 0 0 0 a3n (4.225)

, .
a a32
31
.. .. .. .. .. .. .. .. . . ..

.
. . . .
.
. . . .

an1 an2 an3 0 0 0 0 0

Exemplo 4.7.4. Considere o seguinte sistema linear:


3x1 + x2 x3 = 2 (4.226)
x1 4x2 + x3 = 10 (4.227)
x1 2x2 5x3 = 10 (4.228)
Escreva o sistema na sua forma matricial Ax = b identificando a matriz dos coefi-
cientes A, o vetor incgnita x e o vetor dos termos constantes b. Em seguida, faa
a decomposio A = L + D + U .
Soluo. A forma matricial deste sistema Ax = b, onde:

3 1 1 x1 2

A=
1 4 1

, x=
x2

e b=
10 .

(4.229)

1 10

2 5 x3

A decomposio da matriz A nas matrizes L triangular inferior, D diagonal e U


triangular superior :

3 1 1 0 0 0 3 0 0 0 1 1

1 4 1 = 1 0 0 +
0 4 0 + 0 0 1 . (4.230)



1 1 2 0 0 0 0 0 0

2 5 5
| {z } | {z } | {z } | {z }
A L D U

No Scilab, podemos construir as matrizes L, D e U , da seguinte forma:


-->A = [3 1 -1;-1 -4 1;1 -2 -5];
-->D = eye(A).*A;
-->L = tril(A)-D;
-->U=triu(A)-D;

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


132 Clculo Numrico

Iterao de Jacobi
Vamos, agora, usar a decomposio discutida acima para construir a matriz de
iterao TJ e o vetor de iterao cJ associado ao mtodo de Jacobi. Neste caso,
temos:

Ax = b (L + D + U )x = b (4.231)
Dx = (L + U )x + b (4.232)
x = D1 (L + U ) x + D 1
| {z b} . (4.233)
| {z }
=:cJ
=:TJ

Ou seja, a iterao do mtodo de Jacobi escrita na forma matricial :

x(k+1) = TJ x(k) + cJ , k 1, (4.234)

com x(1) uma aproximao inicial dada, sendo TJ := D1 (L + U ) a matriz de


iterao e cJ = D1 b o vetor da iterao.

Exemplo 4.7.5. Construa a matriz de iterao TJ e o vetor de iterao cJ do


mtodo de Jacobi para o sistema dado no Exemplo 4.7.4.

Soluo. A matriz de iterao dada por:



1
3 0 0 0 1 1 0 13 1
3

TJ := D1 (L + U ) = 0 14 0 1 0 1 = 41 0 1
. (4.235)


4

0 0 1 2 0 0

15 1
5
2
5
| {z }| {z }
D1 (L+U )

O vetor da iterao de Jacobi :



1
3 0 0 2
2
3


cJ := D b =
1
0 14 0 = (4.236)
5
10 .


2
0 0 10

51 2
| {z } | {z }
D1 b

No Scilab, podemos computar TJ e cJ da seguinte forma:


-->TJ = -inv(D)*(L+U);
-->cJ = inv(D)*b;

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 133

Iterao de Gauss-Seidel
A forma matricial da iterao do mtodo de Gauss-Seidel tambm pode ser
construda com base na decomposio A = L + D + U . Para tando, fazemos:

Ax = b (L + D + U )x = b (4.237)
(L + D)x = U x + b (4.238)
x = (L + D)1 U x + (L + D)1 b (4.239)
| {z } | {z }
=:TG =:cG

Ou seja, a iterao do mtodo de Gauss-Seidel escrita na forma matricial :

x(k+1) = TG x(k) + cG , k 1, (4.240)

com x(1) uma aproximao inicial dada, sendo TG := (L + D)1 U a matriz de


iterao e cJ = (L + D)1 b o vetor da iterao.

Exemplo 4.7.6. Construa a matriz de iterao TG e o vetor de iterao cG do


mtodo de Gauss-Seidel para o sistema dado no Exemplo 4.7.4.

Soluo. A matriz de iterao dada por:


1
3 0 0 0 1 1 0 31 1
3

TG = (L + D)1 U = 1 4 0 0 0 1 = 0 1 1
. (4.241)


12 6

1 0 0 0 0 10 0

1
2 5
| {z }| {z }
(L+D)1 U

O vetor da iterao de Gauss-Seidel :


1
3 0 0 2
2
3

cG := (L + D) b =1
0 = (4.242)
7
1 4 10 .


3
1 10

28
2 5 10
| {z } | {z }
(L+D)1 b

No Scilab, podemos computar TG e cG da seguinte forma:


-->TG = -inv(L+D)*U;
-->cG = inv(L+D)*b;

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


134 Clculo Numrico

Condies de convergncia
Aqui, vamos discutir condies necessrias e suficientes para a convergncia de
mtodos iterativos. Isto , dado um sistema Ax = b e uma iterao:
x(k+1) = T x(k) + c, k 1, (4.243)
x(1) dado, estabelecemos condies nas quais x(k) x , onde x a soluo do
sistema dado, isto , x = T x + c ou, equivalentemente, Ax = b.

Lema 4.7.1. Seja T uma matriz real n n. O limite lim T k = 0, 1 p ,
k p
se, e somente se, (T ) < 1.
Demonstrao. Aqui, fazemos apenas um esboo da demonstrao. Para mais
detalhes, veja [8], Teorema 4, pg. 14.
Primeiramente, suponhamos que kT kp < 1, 1 p . Como (veja [8], lema
2, pg. 12):
(T ) kT kp , (4.244)
temos (T ) < 1, o que mostra a implicao.
Agora, suponhamos que (T ) < 1 e seja 0 <  < 1 (T ). Ento, existe
1 p tal que (veja [8], Teorema 3, pgina 12):
kT kp (T ) +  < 1. (4.245)
Assim, temos:
lim kT k kp lim kT km
p = 0. (4.246)
k k
Da equivalncia entre as normas segue a recproca.
Observao 4.7.1. Observamos que:
lim kT k kp = 0, ,1 p , lim tkij = 0, 1 i,j n. (4.247)
k k

Lema 4.7.2. Se (T ) < 1, ento existe (I T )1 e:



(I T )1 = T k. (4.248)
X

k=0

Demonstrao. Primeiramente, provamos a existncia de (I T )1 . Seja um


autovalor de T e x um autovetor associado, isto , T x = x. Ento, (I T )x =
(1 )x. Alm disso, temos || < (T ) < 1, logo (1 ) 6= 0, o que garante que
(I T ) no singular. Agora, mostramos que (I T )1 admite a expanso acima.
Do Lema 4.7.1 e da Observao 4.7.1 temos:
m
(I T ) T k = lim (I T ) T k = lim (I T m+1 ) = I, (4.249)
X X
m m
k=0 k=0

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 135


o que mostra que (I T )1 = T k.
X

k=0

Teorema 4.7.1. A sequncia recursiva {x(k) }kN dada por:

x(k+1) = T x(k) + c (4.250)

converge para soluo de x = T x + c para qualquer escolha de x(1) se, e somente


se, (T ) < 1.

Demonstrao. Primeiramente, assumimos que (T ) < 1. Observamos que:

x(k+1) = T x(k) + c = T (T x(k1) + c) + c (4.251)


= T 2 x(k1) + (I + T )c (4.252)
..
. (4.253)
P 
= T (k) x(1) + k1
k=0 T k c. (4.254)

Da, do Lema 4.7.1 e do Lema 4.7.2 temos:

lim x(k) = (I T )(1) c. (4.255)


k

Ora, se x a soluo de x = T x + c, ento (I T )x = c, isto , x = (I T )1 c.


Logo, temos demonstrado que x(k) converge para a soluo de x = T x + c, para
qualquer escolha de x(1) .
Agora, suponhamos que x(k) converge para x soluo de x = T x + c, para
qualquer escolha de x(1) . Seja, ento, y um vetor arbitrrio e x(1) = x y.
Observamos que:

x x(k+1) = (T x + c) (T x(k) + c) (4.256)


= T (x x(k) ) (4.257)
..
. (4.258)
= T (x x(1) ) = T (k) y.
(k)
(4.259)

Logo, para qualquer 1 p , temos, :

0 = lim x x(k+1) = lim T (k) y. (4.260)


k k

Como y arbitrrio, da Observao 4.7.1 temos lim kT (k) kp = 0, 1 p .


k
Ento, o Lema 4.7.1 garante que (T ) < 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


136 Clculo Numrico

Observao 4.7.2. Pode-se mostrar que tais mtodos iterativos tem taxa de con-
vergncia super linear com:
kx(k+1) x k (T )k kx(1) x k. (4.261)
Para mais detalhes, veja [8], pg. 61-64.
Exemplo 4.7.7. Mostre que, para qualquer escolha da aproximao inicial, ambos
os mtodos de Jacobi e Gauss-Seidel so convergentes quando aplicados ao sistema
linear dado no Exemplo 4.7.4.
Soluo. Do Teorema 4.7.1, vemos que necessrio e suficiente que (TJ ) < 1 e
(TG ) < 1. Computando estes raios espectrais, obtemos (TJ ) 0,32 e (TG )
0,13. Isto mostra que ambos os mtodos sero convergentes.

Condio suficiente
Uma condio suficiente porm no necessria para que os mtodos de Gauss-
Seidel e Jacobi convirjam a que a matriz seja estritamente diagonal domi-
nante.
Definio 4.7.1. Uma matriz A estritamente diagonal dominante quando:
n
|aij | , i = 1,...,n (4.262)
X
|aii | >
j=1
j6=i

Definio 4.7.2. Uma matriz A diagonal dominante quando


n
|aij | , i = 1,...,n (4.263)
X
|aii |
j=1
j6=i

e para ao menos um i, aii estritamente maior que a soma dos elementos fora da
diagonal.
Teorema 4.7.2. Se a matriz A for diagonal dominante9 , ento os mtodos de
Jacobi e Gauss-Seidel sero convergentes independente da escolha inicial x(1) .
Se conhecermos a soluo exata x do problema, podemos calcular o erro relativo
em cada iterao como:
kx x(k) k
. (4.264)
kxk
Em geral no temos x, entretanto podemos estimar o vetor resduo r(k) =
b Ax(k) . Note que quando o erro tende a zero, o resduo tambm tende a zero.
9
Ou se for estritamente diagonal dominante e, consequentemente, diagonal dominante.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 137

Teorema 4.7.3. O erro relativo e o resduo esto relacionados como (veja [3])
kx x(k) k krk
(A) (4.265)
kxk kbk
onde k(A) o nmero de condicionamento.
Exemplo 4.7.8. Ambos os mtodos de Jacobi e Gauss-Seidel so convergentes
para o sistema dado no Exemplo 4.7.4, pois a matriz dos coeficientes deste uma
matriz estritamente diagonal dominante.

Exerccios

E 4.7.1. Considere o problema de 5 incgnitas e cinco equaes dado por

x1 x2 = 1 (4.266)
x1 + 2x2 x3 = 1 (4.267)
x2 + (2 + )x3 x4 = 1 (4.268)
x3 + 2x4 x5 = 1 (4.269)
x4 x5 = 1 (4.270)
a) Escreva na forma Ax = b e resolva usando eliminao gaussiana para =
103 no Scilab.
b) Obtenha o vetor incgnita x com = 103 usando Jacobi com tolerncia
102 . Compare o resultado com o resultado obtido no item d.
c) Obtenha o vetor incgnita x com = 103 usando Gauss-Seidel com tole-
rncia 102 . Compare o resultado com o resultado obtido no item d.
d) Discuta com base na relao esperada entre tolerncia e exatido conforme
estudado na primeira rea para problemas de uma varivel.

E 4.7.2. Resolva o seguinte sistema pelo mtodo de Jacobi e Gauss-Seidel:



5x1 + x2 + x3 = 50






x1 + 3x2 x3 = 10


x1 + 2x2 + 10x3 = 30


Use como critrio de paragem tolerncia inferior a 103 e inicialize com x0 = y 0 =


z 0 = 0.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


138 Clculo Numrico

E 4.7.3. Refaa o Exerccio 4.1.6 construindo um algoritmo que implemente


os mtodos de Jacobi e Gauss-Seidel.
E 4.7.4. Considere o seguinte sistema de equaes lineares:

x1 x2 = 0
xj1 + 5xj xj+1 = cos(j/10), 2 j 10
x11 = x10 /2 (4.271)

Construa a iterao para encontrar a soluo deste problema pelos mtodos de


Gauss-Seidel e Jacobi. Usando esses mtodos, encontre uma soluo aproximada
com erro absoluto inferior a 105 . Veja tambm Exerccio 4.5.2

E 4.7.5. Faa uma permutao de linhas no sistema abaixo e resolva pelos


mtodos de Jacobi e Gauss-Seidel:

x1 + 10x2 + 3x3 = 27 (4.272)


4x1 + x3 = 6 (4.273)
2x1 + x2 + 4x3 = 12 (4.274)

4.8 Clculo de autovalores e autovetores


Considere o problema de autovalores Av = v, onde A uma matriz diago-
nalizvel, isto , existe uma matriz diagonal D e uma matriz ortogonal U tal que
A = U DU 1 .

4.8.1 Mtodo da potncia


O mtodo da potncia para clculo do maior autovalor (em mdulo) consiste
na iterao

x(1) = aprox. inicial do autovetor,
T
(1) = x(1) Ax(1) ,


(4.275)
Ax(k)

x(k+1) = kAx(k) k2
,
, k 1.
(k+1) T
(k+1) = x Ax(k+1) ,

Observao 4.8.1. Observe que na iterao do mtodo da potncia (4.275), temos


Ax(k) = A(k) x(1) .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 139

Exemplo 4.8.1. A seguinte matriz



1 0 0

A = 2 3 0 (4.276)


3 4 2

tem = 3 como maior autovalor (por qu?). Tomando x(1) = (1, 1, 1), a iterao
do mtodo da potncia nos fornece os seguintes resultados:

k x(k) (k)
1 (1, 1, 1) 17
2 (0,08, 0,41, 0,91) 4,10
3 (0,02, 0,34, 0,94) 3,50
4 (0,01, 0,30, 0,95) 3,28
5 (0,00, 0,28, 0,96) 3,16
.. .. ..
. . .
14 (0,00, 0,24, 0,97) 3,00

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

Para entendermos melhor o comportamento assinttico da sequncia {x(n) }n1 ,


primeiro consideramos o caso particular onde A uma matriz diagonal, isto ,

1 0 0 0

0 2 0 0


A= 0 0 0 (4.277)

3 .
.. ...

.




0 0 0 n

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


140 Clculo Numrico

Suponha que um dos autovalores seja estritamente maior que os demais, isto ,
|1 | > |2 | |3 | |n |. Dado x(1) = (1 , 2 , 3 , . . . , n ), ento

1
k
1 1 1
 k
k 2 2
2 2 2


1  1
Ak x(1) = k
= = k1 1 3 3 k (4.278)

A 3 k
3 3 1 1 ,
.. .. ..

. . .



 k
n n
n kn n 1 1

 k
desde que 1 6= 0. Como n1 n1
1
31 21 < 1, ento 1j tende a 0 para
cada j, 2 j n. Devido normalizao realizada em cada passo da sequncia,

Ak x(1)
x(k+1) = (4.279)
kAk x(1) k2

converge para e1 , e1 = (1, 0, 0, . . . , 0). Tambm, a sequncia


T
(k) = x(k) Ax(k) (4.280)

converge para 1 , pois

lim (k) = (e1 )T A(e1 ) = 1 eT1 e1 = 1 . (4.281)


k

Considere, agora, o caso onde A diagonalizvel, ou seja, A = U DU 1 com


U uma matriz ortogonal contendo os autovetores em cada coluna e D uma matriz
diagonal contendo os autovalores:

1 0 0 0

0 2 0 0


D= 0 0 0 (4.282)

3 .
.. ...

.




0 0 0 n

Considere a mesma hiptese sobre os autovalores: |1 | > |2 | |3 | |n |.


Ento

Ak = (U DU 1 )(U DU 1 )(U DU 1 ) (U DU 1 ) = U Dk U 1 (4.283)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 141

visto que U U 1 = I. Suponha que o chute inicial x(1) pode ser escrito da forma

x(1) = U U 1 x(1) = U [1 2 3 n ]T (4.284)

com 1 6= 0. Ento

1
k
1 1 1
 k
k 2 2
2 2 2


1  1
k
Ak x(1) = (U Dk U 1 )U =U = k1 1 U (4.285)

k 3 3 .
3 3 3 1 1
.. .. ..

. . .



 k
n n
n kn n 1 1

Como na discusso anterior, o ltimo vetor converge para e1 e

Ak x(1)
x(k) = (4.286)
kAk x(1) k2

converge para v1 = U e1 que um mltiplo do autovetor associado a 1 . Tambm,


a sequncia
T
(k) = x(k) Ax(k) (4.287)
converge para o autovalor dominante 1 :

lim (k) = v1T Av1 = 1 v1T v1 = 1 . (4.288)


k

Observao 4.8.2. O mtodo da potncia tem duas restries:

i) A aproximao inicial x(1) no pode ser ortogonal ao autovetor associado ao


autovalor dominante.

ii) Um autovalor deve ter o mdulo estritamente maior que os demais. Essa
restrio impede o funcionamento do mtodo no caso em que o autovalor
dominante complexo, pois eles aparecem em pares conjugados, possuindo
o mesmo mdulo.

Outra anlise para a convergncia do mtodo


Aqui, vamos apresentar uma anlise alternativa para a convergncia do mtodo
da potncia: se A Rn,n diagonalizvel, ento existe um conjunto {vj }nj=1 de
autovetores de A tais que qualquer elemento x Rn pode ser escrito como uma
combinao linear dos vj . Sejam {j }nj=1 o conjunto de autovalores associados

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


142 Clculo Numrico

aos autovetores tal que um deles seja dominante, ou seja, |1 | > |2 | |3 |


|n | > 0. Como os autovetores so linearmente independentes, todo vetor
x Rn , x = (x1 ,x2 ,...,xn ), pode ser escrito com combinao linear dos autovetores
da seguinte forma:
n
x= (4.289)
X
j vj .
j=1

Observamos que se x est na forma (4.289), ento Ak x pode ser escrito como
!k
n n n
j j
A x= k
j A vj =
k
j kj vj = 1 k1 v1 + (4.290)
X X X
vj .
j=1 j=1 j=2 1 1

Como 1j < 1 para todo j 2, temos
n
!k
j j
vj 0. (4.291)
X

j=2 1 1
Assim, k
Ak x 1 k1
2 .
= v1 + O (4.292)
kAk xk2 kAk xk 1

Ak x
Como a norma de igual a um, temos
k A k xk

k
1 1
v
1 (4.293)
kAk xk 1

e, portanto,
1

k
1 1
kAk xk
. (4.294)
kv1 k

1 k1
Ou seja, se definimos (k) = , ento
k A k xk
|(k) | 1. (4.295)
Retornando a (4.292), temos:
Ak x
(k) v1 0. (4.296)
kAk xk
Observe que um mltiplo de autovetor tambm um autovetor e, portanto,
Ak x(1)
x(k) = . (4.297)
kAk x(1) k
um esquema que oscila entre os autovetores ou converge para o autovetor v1 .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 143

4.8.2 Mtodo da iterao inversa


Nesta seo, vamos estudar a sequncia
(A I)1 x0 (A I)2 x0 (A I)3 x0
x0 , , , ,
k(A I)1 x0 k2 k(A I)2 x0 k2 k(A I)3 x0 k2
para valores iniciais x0 e . Para o caso onde A diagonalizvel podemos escrever
A = U DU 1 com D diagonal,

1 0 0 0

0 2 0 0



D= 0 0 0

3 .


.. ...

.




0 0 0 n

Assim, A I = U (D I)U 1 e, portanto, (A I)1 = U (D I)1 U 1 .


Observamos que as matrizes A e (A I)1 possuem os mesmos autovetores
associados aos autovalores j e (j )1 , respectivamente. Agora, supomos que
satisfaa |k | < |j | para algum k e para todo j 6= k. Tambm, Supomos
que o chute inicial x0 possa ser escrito da forma
x0 = U U 1 x0 = U [1 2 3 n ]T
com k 6= 0. Ento

1

2



(A I)k x0 = (U (D I)k U 1 )U (4.298)


3

..

.




n
 k
1 i
i 1
(1 )k 1






(2 )k 2


1


= U (3 )k 3 = (i )k 1 U (4.299)

.. .


.

..


.





(n )k n

 k
n i
i n

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


144 Clculo Numrico


Como ji

< 1, o ltimo vetor converge para ei e

(A I)k x0
xk =
k(A I)k x0 k2

converge para U ei = vi que um mltiplo do autovetor associado a i . Tambm,


a sequncia
k = xTk Axk
converge para i :
lim k = viT Avi = i viT vi = i .
k

A mtodo da iterao inversa tem restries semelhantes quelas do mtodo


da potncia:

i) O chute x0 no pode ser ortogonal ao autovetor associado ao autovalor i .

ii) O chute deve estar mais prximo de i do que dos j , j 6= i.

A vantagem que conseguimos calcular qualquer autovalor, no apenas o autovalor


dominante.

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 4.8.1. Calcule o autovalor dominante e o autovetor associado da matriz



4 41 78

48 28 21 .



26 13 11

Expresse sua resposta com seis dgitos significativos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


4.9. EXERCCIOS FINAIS 145

E 4.8.2. Calcule o autovalor dominante e o autovetor associado da matriz



3 4

2 1

usando o mtodo da potncia inciando com o vetor x = [1 1]T .

E 4.8.3. A norma L2 de um matriz A dada pela raiz quadrada do autovalor


dominante da matriz A A (autovalor de maior mdulo), isto :
q
kAk2 = max{|| : (A A)}. (4.300)

Use o mtodo da potncia para obter a norma L2 da seguinte matriz:



69 84 88

A=
15 40 11 .

70 41 20

Expresse sua resposta com seis dgitos significativos.

E 4.8.4. Os autovalores de uma matriz triangular so os elementos da diagonal


principal. Verifique o mtodo da potncia aplicada seguinte matriz:

2 3 1

0 3 1 .



0 0 1

4.9 Exerccios finais

E 4.9.1. O circuito linear da Figura 4.9.1 pode ser modelado pelo sistema
dado a seguir. Escreva esse sistema na forma matricial sendo as tenses V1 , V2 ,
V3 , V4 e V5 as cinco incgnitas. Resolva esse problema quando V = 127 e

a) R1 = R2 = R3 = R4 = 2 e R5 = R6 = R7 = 100 e R8 = 50

b) R1 = R2 = R3 = R4 = 2 e R5 = 50 e R6 = R7 = R8 = 100

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


146 Clculo Numrico

V1 = V (4.301)
V1 V2 V3 V2 V2
+ = 0 (4.302)
R1 R2 R5
V2 V3 V4 V3 V3
+ = 0 (4.303)
R2 R3 R6
V3 V4 V5 V4 V4
+ = 0 (4.304)
R3 R4 R7
V4 V5 V5
= 0 (4.305)
R4 R8
V1 V2 V3 V4 V5

R1 R2 R3 R4

V R5 R6 R7 R8

Complete a tabela abaixo representado a soluo com 4 algarismos significati-


vos:

Caso V1 V2 V3 V4 V5
a
b

Ento, refaa este problema reduzindo o sistema para apenas 4 incgnitas (V2 ,
V3 , V4 e V5 ).

E 4.9.2. Resolva o Problema 4.9.1 pelos mtodos de Jacobi e Gauss-Seidel.

E 4.9.3. (Interpolao) Resolva os seguintes problemas:


a) Encontre o polinmio P (x) = ax2 + bx + c que passa pelos pontos (1, 3),
(1, 1) e (2,9).
b) Encontre os coeficientes A e B da funo f (x) = A sen (x) + B cos(x) tais
que f (1) = 1.4 e f (2) = 2.8.
c) Encontre a funo g(x) = A1 sen (x) + B1 cos(x) + A2 sen (2x) + B2 cos(2x)
tais que f (1) = 1, f (2) = 2, f (3) = 3 e f (4) = 4.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 5

Soluo de sistemas de equaes


no lineares

Neste captulo, estudaremos o mtodo de Newton aplicado resoluo de sis-


temas no lineares de equaes.
O mtodo de Newton aplicado a encontrar a raiz x da funo y = f (x) es-
tudado na Seo 3.4 consiste em um processo iterativo. Em cada passo deste
processo, dispomos de uma aproximao x(k) para x e construmos uma nova
aproximao x(k+1) . Cada passo do mtodo de Newton envolve os seguintes pro-
cedimentos:

Linearizao da funo f (x) no ponto x(k) :


 
f (x) = f (x(k) ) + (x x(k) )f 0 (x(k) ) + O |x x(k) |2 (5.1)

A aproximao x(k+1) definida como o valor de x em que a linearizao


f (x(k) ) + (x x(k) )f 0 (x(k) ) passa por zero.

Queremos, agora, generalizar o mtodo de Newton a fim de resolver proble-


mas de vrias equaes e vrias incgnitas, ou seja, encontrar x1 ,x2 , . . . xn que
satisfazem as seguintes equaes:

f1 (x1 ,x2 , . . . ,xn ) = 0


f2 (x1 ,x2 , . . . ,xn ) = 0
..
.
fn (x1 ,x2 , . . . ,xn ) = 0

147
148 Clculo Numrico

Podemos escrever este problema na forma vetorial definindo o vetor x = [x1 ,x2 , . . . ,xn ]T
e a funo vetorial
f1 (x1 ,x2 , . . . ,xn )


f2 (x1 ,x2 , . . . ,xn )
F (x) =

.
..

.




fn (x1 ,x2 , . . . ,xn )
Exemplo 5.0.1. Suponha que queiramos resolver numericamente o seguinte sis-
tema de duas equaes e duas incgnitas:
x21
+ x22 = 1
3
x2
x21 + 2 = 1
4
Ento definimos

x21
3
+ x22 1

F (x) =



x22
x21 + 1

4

Neste momento, dispomos de um problema na forma F (x) = 0 e precisamos


desenvolver uma tcnica para linearizar a funo F (x). Para tal, precisamos de
alguns conceitos do clculo de vrias variveis.
Observe que F (x) F (x(0) ) pode ser escrito como

(0) (0)
f1 (x1 ,x2 , . . . ,xn ) f1 (x1 ,x2 , . . . ,xn )
(0)


(0) (0)
f2 (x1 ,x2 , . . . ,xn ) f2 (x1 ,x2 , . . . ,x(0)
n )

F (x) F (x ) =
(0)

..

.




(0) (0)
n )
fn (x1 ,x2 , . . . ,xn ) fn (x1 ,x2 , . . . ,x(0)
Usamos a regra da cadeia
n
fi fi fi fi
dfi = dx1 + dx2 + + dxn = (5.2)
X
dxj
x1 x2 xn j=1 xj

e aproximamos as diferenas por derivadas parciais:


n
(0) (0) fi  (0)

fi (x1 ,x2 , . . . ,xn ) fi (x1 ,x2 , . . . ,x(0)
n ) (5.3)
X
xj xj
j=1 xj

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


149

Portanto,

f1 f1 f1
x1 x2
xn

(0)

x1 x 1






f2 f2 f2

x1 x2
xn



(0)



x2 x2

F (x) F (x(0) ) .. .. .. , (5.4)


..

. . . .

..





.




fn fn fn



x1 x2 xn
xn x(0)

n

Definimos, ento, a matriz jacobiana por



f1 f1 f1
x1 x2
xn





f2 f2 f2

x1 x2
xn



(f1 ,f2 , . . . ,fn )


JF = = .. .. .. .

(x1 ,x2 , . . . ,xn )

..

. . . .







fn fn fn



x1 x2 xn

Isto , a matriz jacobiana de uma funo ou simplesmente, o jacobiano de uma


funo F (x) a matriz formada pelas suas derivadas parciais:

fi
(JF )ij = . (5.5)
xj

Nestes termos, podemos reescrever (5.4) como

F (x) F (x(0) ) + JF (x(0) )(x x(0) ) (5.6)

Esta expresso chamada de linearizao de F (x) no ponto x(0) e generaliza a


linearizao em uma dimenso dada por f (x) f (x(0) ) + f 0 (x(0) )(x x(0) ).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


150 Clculo Numrico

5.1 Mtodo de Newton para sistemas


Nesta seo, construiremos o mtodo de Newton ou Newton-Raphson genera-
lizado para sistemas. Assumimos, portanto, que a funo F (x) diferencivel e
que existe um ponto x tal que F (x ) = 0. Seja x(k) uma aproximao para x ,
queremos construir uma nova aproximao x(k+1) atravs da linearizao de F (x)
no ponto x(k) .

Linearizao da funo F (x) no ponto x(k) :


    
F (x) = F (x(k) ) + JF x(k) x x(k) + O kx x(k) k2 (5.7)

A aproximao
  x(k) definida como o ponto x em que a linearizao F (x(k) )+
JF x(k) x x(k) nula, ou seja:
  
F (x(k) ) + JF x(k) x(k+1) x(k) = 0 (5.8)

Supondo que a matriz jacobina seja inversvel no ponto x(k) , temos:


  
JF x(k) x(k+1) x(k) = F (x(k) )
 
x(k+1) x(k) = JF1 x(k) F (x(k) )
 
x(k+1) = x(k) JF1 x(k) F (x(k) )

Desta forma, o mtodo iterativo de Newton-Raphson para encontrar as razes


de F (x) = 0 dado por:
 

x(k+1) = x(k) JF1 x(k) F (x(k) ), n 0
(5.9)
x(0) = dado inicial

Observao 5.1.1. Usamos subndices para indicar o elemento de um vetor e


superndices para indicar o passo da iterao. Assim, x(k) se refere iterao k e
(k)
xi se refere componente i no vetor x(k) .
 
Observao 5.1.2. A notao JF1 x(k) enfatiza que a jacobiana deve ser calcu-
lada a cada passo.

Observao 5.1.3. Podemos definir o passo (k) como

(k) = x(k+1) x(k) (5.10)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.1. MTODO DE NEWTON PARA SISTEMAS 151

 
Assim, (k) = JF1 x(k) F (x(k) ), ou seja, (k) resolve o problema linear:
 
JF x(k) (k) = F (x(k) ) (5.11)

Em geral, menos custoso resolver o sistema acima do que calcular o inverso da


jacobiana e multiplicar pelo vetor F (x(k) ).

Exemplo 5.1.1. Retornamos ao nosso exemplo inicial, isto , resolver numerica-


mente o seguinte sistema no linear:

x21
+ x22 = 1
3
x2
x21 + 2 = 1
4
Para tal, definimos a funo F (x):

x21

+ x22 1
F (x) = 3 (5.12)


x22
x1 +
2
1
4
cuja jacobiana :
2x1

2x2
JF = 3 (5.13)


2x1 x22
Faremos a implementao numrica no Scilab. Para tal definimos as funes
que implementaro F (x) e a JF (x)

function y=F(x)
y(1)=x(1)^2/3+x(2)^2-1
y(2)=x(1)^2+x(2)^2/4-1
endfunction

function y=JF(x)
y(1,1)=2*x(1)/3
y(1,2)=2*x(2)
y(2,1)=2*x(1)
y(2,2)=x(2)/2
endfunction

Alternativamente, estas funes poderiam ser escritas como

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


152 Clculo Numrico

function y=F(x)
y=[x(1)^2/3+x(2)^2-1; x(1)^2+x(2)^2/4-1]
endfunction

function y=JF(x)
y=[2*x(1)/3 2*x(2); 2*x(1) x(2)/2]
endfunction
Desta forma, se x uma aproximao para a raiz, pode-se calcular a prxima
aproximao atravs dos comandos:
delta=-JF(x)\F(x)
x=x+delta
Ou simplesmente
x=x-JF(x)\F(x)
 q q 
Observe que as solues exatas desse sistema so 9
11
, 8
11
.
Exemplo 5.1.2. Encontre uma aproximao para a soluo do sistema

x21 = cos(x1 x2 ) + 1
sen (x2 ) = 2 cos(x1 )

que fica prxima ao ponto x1 = 1,5 e x2 = 0,5.


Soluo. Vamos, aqui, dar as principais ideias para obter a soluo usando o
mtodo de Newton. Comeamos definindo nossa aproximao inicial por x(1) =
(1,5, 0,5). Ento iteramos:

x(n+1) = x(n) JF1 (x)F (x), n 1. (5.14)

onde
x1 cos(x1 x2 ) 1
2
F (x) = (5.15)
sen (x2 ) 2 cos(x1 )
e sua jacobiana

2x1 + x2 sen (x1 x2 ) x1 sen (x1 x2 )
JF (x) = (5.16)
2 sen (x1 ) cos(x2 )

As iteraes convergem para x = (1,3468109, 0,4603195).


No Scilab, podemos implement-las com o seguinte cdigo:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.1. MTODO DE NEWTON PARA SISTEMAS 153

function y=F(x)
y(1) = x(1)^2-cos(x(1)*x(2))-1
y(2) = sin(x(2))-2*cos(x(1))
endfunction

function y=JF(x)
y(1,1) = 2*x(1)+x(2)*sin(x(1)*x(2))
y(1,2) = x(1)*sin(x(1)*x(2))

y(2,1) = 2*sin(x(1))
y(2,2) = cos(x(2))
endfunction

E agora, basta iterar:

x=[1.5; .5]
x=x-JF(x)\F(x) //(5 vezes)

5.1.1 Cdigo Scilab: Newton para sistemas


function [x] = newton(F,JF,x0,TOL,N)
x = x0
k = 1
//iteracoes
while (k <= N)
//iteracao de Newton
delta = -inv(JF(x))*F(x)
x = x + delta
//criterio de parada
if (norm(delta,'inf')<TOL) then
return x
end
k = k+1
end
error('Num. de iter. max. atingido!')
endfunction

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


154 Clculo Numrico

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 5.1.1. Faa o que se pede:

a) Encontre o gradiente da funo

f (x,y) = x2 y + cos(xy) 4 (5.17)

b) Encontre a matriz jacobiana associada funo



x cos(x) + y
F (x,y) = . (5.18)

e2x+y

c) Encontre a matriz jacobiana associada funo



a11 x1 + a12 x2 + a13 x3 y1

L(x) = a21 x1 + a22 x2 + a23 x3 y2 .


a31 x1 + a32 x2 + a33 x3 y3

E 5.1.2. Encontre uma aproximao numrica para o seguinte problema no


linear de trs equaes e trs incgnitas:

2x1 x2 = cos(x1 )
x1 + 2x2 x3 = cos(x2 )
x2 + x3 = cos(x3 )

Partindo das seguintes aproximaes iniciais:

a) x(0) = [1, 1, 1]T

b) x(0) = [0,5, 2, 3]T

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.1. MTODO DE NEWTON PARA SISTEMAS 155

c) x(0) = [2, 3, 4]T

d) x(0) = [0, 0, 0]T

E 5.1.3. Encontre os pontos de interseco entre a parbola y = x2 + 1 e a


elipse x2 + y 2 /4 = 1 seguindo os seguintes passos:

a) Faa um esboo das duas curvas e entenda o problema. Verifique que existem
dois pontos de interseco, um no primeiro quadrante e outro no segundo
quadrante do plano xy.

b) A partir de seu esboo, encontre aproximaes para x e y em cada ponto.



x 0
c) Escreva o problema na forma F =


y 0

d) Encontre a jacobiana JF .

e) Construa a iterao do mtodo de Newton.

f) Implemente no computador.

g) Resolva o sistema analiticamente e compare as respostas.

E 5.1.4. Encontre os pontos de interseco entre a parbola y = x2 e a curva


y = cos(x) seguindo os seguintes passos:

a ) Faa um esboo das duas curvas, entenda o problema. Verifique que existem
dois pontos de interseco, um no primeiro quadrante e outro no segundo
quadrante do plano xy.

b ) A partir de seu esboo, encontre aproximaes para x e y em cada ponto.



x 0
c ) Escreva o problema na forma F
=
y 0

d ) Encontre a jacobiana JF .

e ) Construa a iterao do mtodo de Newton.

f ) Implemente no Scilab.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


156 Clculo Numrico

Figura 5.1: Reta bitangente a uma curva.

g ) Transforme o sistema em um problema de uma nica varivel e compare


com a resposta do Problema 3.4.1.

E 5.1.5. Encontre uma aproximao com erro inferior a 105 em cada incg-
nita para a soluo prxima da origem do sistema

6x 2y + ez = 2
sen (x) y + z = 0
sen (x) + 2y + 3z = 1

E 5.1.6. (Entenda casos particulares)

Considere a funo L(x) = Ax b, onde A uma matriz n n inversvel e


b um vetor coluna em Rn . O que acontece quando aplicamos o mtodo de
Newton para encontrar as razes de L(x)?

Mostre que o mtodo de Newton-Raphson aplicado a uma funo diferenci-


vel do tipo f : R R se reduz ao mtodo de Newton estudado na primeira
rea.

E 5.1.7. Considere a funo f (x) = sen (x)


x+1
, encontre a equao da reta que
tangencia dois pontos da curva y = f (x) prximos ao primeiro e segundo ponto
de mximo no primeiro quadrante, respectivamente. Veja a Figura 5.1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.1. MTODO DE NEWTON PARA SISTEMAS 157

Figura 5.2: Sistema mecnico com dois segmentos.

E 5.1.8. (Esttica) Considere o sistema mecnico constitudo de dois seg-


mentos de mesmo comprimento L presos entre si e a uma parede por articulaes
conforme a Figura 5.2.
O momento em cada articulao proporcional deflexo com constante de
proporcionalidade k. Os segmentos so feitos de material homogneo de peso P . A
condio de equilbrio pode ser expressa em termos dos ngulos 1 e 2 conforme:

3P L
k1 = cos 1 + k (2 1 )
2
PL
k (2 1 ) = cos 2
2
Considere P = 100N , L = 1m e calcule os ngulos 1 e 2 quando:

a) k = 1000 Nm/rad

b) k = 500 Nm/rad

c) k = 100 Nm/rad

d) k = 10 Nm/rad

Obs:Voc deve escolher valores para iniciar o mtodo. Como voc interpretaria
fisicamente a soluo para produzir palpites iniciais satisfatrios? O que se altera
entre o caso a e o caso d?
E 5.1.9. (esttica - problemas de trs variveis) Considere, agora, o sistema
mecnico semelhante ao do Problema 5.1.8, porm constitudo de trs segmentos
de mesmo comprimento L presos entre si e a uma parede por articulaes.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


158 Clculo Numrico

Figura 5.3: interseco entre duas curvas.

O momento em cada articulao proporcional deflexo com constante de


proporcionalidade k. Os segmentos so feitos de material homogneo de peso P .
A condio de equilbrio pode ser expressa em termos dos ngulos 1 , 2 e 3
conforme:
5P L
k1 = cos 1 + k (2 1 )
2
3P L
k (2 1 ) = cos 2 + k (3 2 )
2
PL
k (3 2 ) = cos 3
2
Considere P = 10N, L = 1m e calcule os ngulos 1 , 2 e 3 quando:
a) k = 1000Nm/rad
b) k = 100Nm/rad
c) k = 10Nm/rad

E 5.1.10. Considere o problema de encontrar os pontos de interseco das


curvas descritas por (ver Figura 5.3):
x2 (y 1)2
+ = 1
8 5

tan1 (x) + x = y + y 3
Com base no grfico, encontre solues aproximadas para o problema e use-as para
iniciar o mtodo de Newton-Raphson. Encontre as razes com erro inferior a 105 .

E 5.1.11. Considere o sistema de equaes dado por


(x 3)2 (y 1)2
+ = 1
16 36
tanh(x) + x = 2 sen y 0.01y 3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.1. MTODO DE NEWTON PARA SISTEMAS 159

Usando procedimentos analticos, determine uma regio limitada do plano onde se


encontram necessariamente todas as razes do problema. Encontre as razes desse
sistema com pelo menos quatro dgitos significativos corretos usando o mtodo de
Newton. Voc deve construir o mtodo de Newton indicando as funes envolvidas
e calculando a matriz jacobiana analiticamente. Use que du d
tanh u = 1 tanh2 u,
se precisar.

E 5.1.12. (Otimizao) Uma indstria consome energia eltrica de trs usinas


fornecedoras. O custo de fornecimento em reais por hora como funo da potncia
consumida em kW dada pelas seguintes funes

C1 (x) = 10 + .3x + 104 x2 + 3.4 109 x4


C2 (x) = 50 + .25x + 2 104 x2 + 4.3 107 x3
C3 (x) = 500 + .19x + 5 104 x2 + 1.1 107 x4

Calcule a distribuio de consumo que produz custo mnimo quando a potncia


total consumida 1500kW . Dica: Denote por x1 , x2 e x3 as potncias consumidas
das usinas 1, 2 e 3, respectivamente. O custo total ser dado por C(x1 ,x2 ,x3 ) =
C1 (x1 ) + C2 (x2 ) + C3 (x3 ) enquanto o consumo total x1 + x2 + x3 = 1500. Isto ,
queremos minimizar a funo custo total dada por:

C(x1 ,x2 ,x3 ) = C1 (x1 ) + C2 (x2 ) + C3 (x3 ) (5.24)

restrita condio

G(x1 ,x2 ,x3 ) = x1 + x2 + x3 1500 = 0. (5.25)

Pelos multiplicadores de Lagrange, temos que resolver o sistema dado por:

C(x1 ,x2 ,x3 ) = G(x1 ,x2 ,x3 )


G(x1 ,x2 ,x3 ) = 0

E 5.1.13. Encontre a funo do tipo f (x) = Abx que melhor aproxima os


pontos (0, 3,1), (1, 4,4) e (2, 6,7) pelo critrio dos mnimos quadrados. Dica: Voc
deve encontrar os valores de A e b que minimizam o resduo dado por

R = [3,1 f (0)]2 + [4,4 f (1)]2 + [6,7 f (2)]2 . (5.26)

Dica: Para construir aproximaes para resposta e iniciar o mtodo, considere a


funo f (x) = Abx que passa pelo primeiro e terceiro ponto.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


160 Clculo Numrico

E 5.1.14. Encontre o valor mximo da funo

f (x,y) = x4 y 6 + 3xy 3 x (5.27)

na regio (x,y) [2,0] [2,0] seguindo os seguintes passos:


a) Defina a funo z = f (x,y) = x4 y 6 + 3xy 3 x e trace o grfico de
contorno na regio.

b) Com base no grfico, encontre valores aproximados para as coordenadas xy


do ponto de mximo.

c) Sabendo que o ponto de mximo acontece quando o gradiente nulo, escreva


o problema como um sistema de duas equaes no lineares e duas incgnitas.

d) Implemente o mtodo de Newton.

E 5.1.15. A funo f (x,y,z) = sen (x) + sen (2y) + sen (3z) possui um mximo
quando x = /2, y = /4 e z = /6. Calcule numericamente este ponto.

E 5.1.16. Encontre as raizes do problema

3x cos(yz + z) 1/2 = 0
4x2 25y 2 + 0.4y + 2 = 0
exy + 2x 5z = 10

no cubo |x| < 2, |y| < 2, |z| < 2. Dica: Reduza a um problema de duas incgnitas
e use recursos grficos para aproximar as razes na regio.

E 5.1.17. Considere o seguinte sistema de equaes no lineares:

x1 x2 = 0
xj1 + 5(xj + x3j ) xj+1 = 10 exp(j/3), 2 j 10
x11 = 1 (5.28)

x1

x2

a) Escreva este sistema na forma F (x) = 0 onde x =
. e calcule analitica-

..


x11
mente a matriz jacobiana (F1 ,...,F11 )
(x1 ,...x11 )
. Dica: Use a regularidade nas expresses
para abreviar a notao.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 161

b) Construa a iterao para encontrar a nica soluo deste problema pelo


mtodo de Newton e, usando esse mtodo, encontre uma soluo aproximada
com erro absoluto inferior a 104 .

E 5.1.18. Considere a funo


2 2
e(x1) (y2)
f (x,y) = (5.29)
1 + x2 + y 2

a) Encontre o valor mximo desta funo.

b) Usando multiplicadores de Lagrange, encontre o valor mximo desta funo


restrito condio
(x 1)2 + (y 2)2 = 1. (5.30)

c) Parametrize a circunferncia para transformar o problema de mximo com


restrio em um problema de uma nica varivel. Resolva usando as tcnicas
de equaes lineares de uma varivel.

5.2 Linearizao de uma funo de vrias vari-


veis
Nesta seo, discutimos de forma distinta e mais rigorosa os conceitos de matriz
jacobiana e linearizao de uma funo de vrias variveis.

5.2.1 Gradiente
Considere primeiramente uma funo f : Rn R, ou seja, uma funo que
mapeia n variveis reais em um nico real, por exemplo:

f (x) = x21 + x22 /4 (5.31)

Para construirmos a linearizao, fixemos uma direo no espao Rn , ou seja,


um vetor v:
v = [v1 , v2 , , vn ]T (5.32)
Queremos estudar como a funo f (x) varia quando andamos na direo v
a partir do ponto x(0) . Para tal, inserimos um parmetro real pequeno h, dizemos
que
x = x(0) + hv (5.33)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


162 Clculo Numrico

e definimos a funo auxiliar

g(h) = f (x0 + hv). (5.34)

Observamos que a funo g(h) uma funo de R em R.


A linearizao de g(h) em torno de h = 0 dada por

g(h) = g(0) + hg 0 (0) + O(h2 ) (5.35)


Observamos que g(h) = f (x(0) + hv) e g(0) = f (x(0) ). Precisamos calcular g 0 (0):

d d
g 0 (h) = g(h) = f (x(0) + hv).
dh dh
Pela regra da cadeia temos:
n
d f dxj
f (x(0) + hv) =
X
.
dh j=1 xj dh

(0)
Observamos que xj = xj + hvj , portanto

dxj
= vj (5.36)
dh
Assim:
n
d f
f (x + hv) =
(0)
X
vj .
dh j=1 xj

Observamos que esta expresso pode ser vista como o produto interno entre o
gradiente de f e o vetor v:

f
x1 v1

f
v2

f = v=
x2
. .

.. ..


f
xn
vn

Na notao clculo vetorial escrevemos este produto interno como f v = vf


na notao de produto matricial, escrevemos (f )T v = v T f . Esta quantidade
conhecida como derivada direcional de f no ponto x(0) na direo v, sobretudo
quando kvk = 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 163

Podemos escrever a linearizao g(h) = g(0) + hg 0 (0) + O(h2 ) como

f (x(0) + hv) = f (x(0) ) + hTf (x(0) ) v + O(h2 ) (5.37)

Finalmente, escrevemos x = x(0) + hv, ou seja, hv = x x(0)

f (x) = f (x(0) ) + Tf (x(0) ) (x x(0) ) + O(kx x(0) k2 ) (5.38)

Observao 5.2.1. Observe a semelhana com a linearizao no caso em uma


dimenso. A notao Tf (x(0) ) o transposto do vetor gradiente associado
funo f (x) no ponto x(0) :
     
f x(0) f x(0) f x(0)
T f (x(0) ) = , , , (5.39)
x1 x2 xn

5.2.2 Matriz jacobiana


Interessamo-nos, agora, pela linearizao da funo F : Rn Rn . Lembramos
que F (x) pode ser escrita como um vetor de funes fj : Rn R:

f1 (x)

f2 (x)

F (x) = .
(5.40)
..


fn (x)

Linearizando cada uma das funes fj , temos:


   
f1 x (0)
+ f1 (x ) x x
T (0) (0)
+ O(kx x k )
(0) 2



   
f2 x(0) + Tf2 (x(0) ) x x(0) + O(kx x(0) k2 )




F (x) =


..



.





   
fn x(0) + Tfn (x(0) ) x x(0) + O(kx x(0) k2 )
| {z }
Vetor coluna

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


164 Clculo Numrico

ou, equivalentemente:
 
f1 (x )
(0) T (0)
f1 x



 
Tf2 (x(0) )

(0)

f2 x



 
F (x) = + x x(0) +O(kx x(0) k2 )


.. ..
| {z }


.
. Vetor coluna





 
fn x(0) Tfn (x(0) )
| {z } | {z }
Vetor coluna Matriz jacobiana

Podemos escrever a linearizao de F (x) na seguinte forma mais enxuta:

     2 
F (x) = F x(0) + JF (x(0) ) x x(0) + O x x(0) (5.41)

A matriz jacobiana JF matriz cujas linhas so os gradientes transpostos de


fj , ou seja:

f1 f1 f1
x1 x2
xn





f2 f2 f2

x1 x2
xn



(f1 ,f2 , . . . ,fn )


JF = =
.. .. ... ..

(x1 ,x2 , . . . ,xn )

. . .







fn fn fn



x1 x2 xn

A matriz jacobiana de uma funo ou simplesmente, o jacobiano de uma funo


F (x) a matriz formada pelas suas derivadas parciais:

fi
(JF )ij = (5.42)
xj

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 165

Exemplo 5.2.1. Calcule a matriz jacobiana da funo



x21
3
+ x22 1

F (x) =



x22
x21 + 1

4



f1
x1
f1
x2
2x1
3
2x2

JF = =



2x1

f2 f2 x2
x1 x2 2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 6

Interpolao

Neste captulo, discutimos os problemas de interpolao. Mais precisamente,


dada uma sequncia de n reais x1 < x2 < . . . < xn , um conjunto de pontos
{(xi , yi ) I R}ni=1 , onde I = [x1 ,xn ] e uma famlia de funes FI = { : I R},
o problema de interpolao consiste em encontrar alguma funo f FI tal que

f (xi ) = yi , i = 1, 2, . . . , n. (6.1)

Chamamos uma tal f de funo interpoladora dos pontos dados. Ou ainda,


dizemos que f interpola os pontos dados.

Exemplo 6.0.1. Um dos problemas de interpolao mais simples o de encontrar


a equao da reta que passa por dois pontos dados. Por exemplo, sejam dados o
conjunto de pontos {(1, 1), (2, 2)} e a famlia de funes F[1,2] :

F[1,2] = {f : [1,2] R ; [1,2] 3 x 7 f (x) = a + bx; a,b R} . (6.2)

Para que uma f na famlia seja a funo interpoladora do conjunto de pontos


dados, precisamos que

a + bx1 = y1 a+b=1
isto (6.3)
a + bx2 = y2 a + 2b = 2

o que nos fornece a = 0 e b = 1. Ento, a funo interpoladora f tal que f (x) = x


para um x [1,2]. Os pontos e a reta interpolada esto esboados na Figura 6.1.

Um problema de interpolao cuja a famlia de funes constitui-se de polin-


mios chamado de problema de interpolao polinomial.

166
6.1. INTERPOLAO POLINOMIAL 167

Figura 6.1: Exemplo de interpolao de dois pontos por uma reta, veja o Exem-
plo 6.0.1.

6.1 Interpolao polinomial


Interpolao polinomial um caso particular do problema geral de interpolao,
no qual a famlia de funes constituda de polinmios. A escolha de polinmios
como funes interpolantes natural por diversos motivos, entre eles: se p um
polinmio de grau n, o valor p(x) para um x real calculado atravs de n + 1
operaes de multiplicao e n + 1 operaes de adio. Para tanto, pode-se usar
o algoritmo de Horner1 . Dado um polinmio p de grau n da forma
n
p(x) = ak x k , (6.4)
X

k=0

possvel reescrev-lo como a sequncia de operaes dada por


a0 + x (a1 + x (a2 + x (. . . + x (an1 + xan ) . . .))) . (6.5)
Tambm, derivadas e primitivas de polinmios so tambm polinmios cuja
relao algbrica com o original simples. Alm disso, o teorema da aproximao
de Weierstrass estabelece que qualquer funo contnua definida em um intervalo
fechado pode ser aproximada uniformemente por um polinmio to bem quanto
se queira.
Teorema 6.1.1 (Weierstrass). Seja f uma funo contnua definida no intervalo
fechado [a,b] e seja um nmero positivo. Ento existe um polinmio p, tal que
para todo x [a,b],
|f (x) p(x)| < . (6.6)
1
William George Horner, 1786 - 1837, matemtico britnico.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


168 Clculo Numrico

Observe que para o problema ser bem determinado, necessrio restringirmos


o grau dos polinmios. Dado um conjunto de n pontos a serem interpolados
{(xi ,yi )}ni=1 , xi 6= xj para i 6= j, a famlia de polinmios F = Pn1 deve ser
escolhida, onde:
n1
( )
Pn1 := p : x 7 p(x) = ak x ; {a0 ,a1 , . . . ,an1 } R ,
k
(6.7)
X

k=0

isto , a famlia dos polinmios reais de grau menor ou igual a n 1.


O Exemplo 6.0.1 discute um dos casos mais simples de interpolao polinomial,
o qual consiste em interpolar uma reta por dois pontos. Neste caso, a famlia de
funes consiste de polinmios de grau 1. Se buscarmos interpolar uma parbola
pelos dois pontos dados, o problema fica subdeterminado, pois existem infinitas
parbolas que passam por dois pontos dados. Alm disso, se buscarmos interpolar
uma reta por trs pontos dados, o problema estaria sobredeterminado e poderia
no ter soluo se os pontos no fossem colineares. Veja o Exerccio ??.
Assim, dado um conjunto com n pontos {(xi ,yi )}ni=1 , chamamos de polinmio
interpolador o polinmio de grau menor ou igual a n 1 que os interpola.

Figura 6.2: Polinmio interpolador do conjunto de pontos {(0, 1), (1, 6), (2, 5),
(3, 8)}. Veja o Exemplo 6.1.1.

Exemplo 6.1.1. Encontre o polinmio interpolador do conjunto de pontos {(0, 1),


(1, 6), (2, 5), (3, 8)}.
Soluo. Como o conjunto consiste de 4 pontos, o polinmio interpolador deve
ser da forma:
p(x) = a0 + a1 x + a2 x2 + a3 x3 . (6.8)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.1. INTERPOLAO POLINOMIAL 169

As condies de interpolao so p(xi ) = yi , i = 0, 1, 2, 3, o que nos leva ao sistema


linear:
a0 = 1
a0 + a1 + a2 + a3 = 6
(6.9)
a0 + 2a1 + 4a2 + 8a3 = 5
a0 + 3a1 + 9a2 + 27a3 = 8
cuja soluo a0 = 1, a1 = 6, a2 = 0 e a3 = 1. Portanto, o polinmio interpolador
p(x) = 1 + 6x x3 . Veja Figura 6.2.
No Scilab, podemos encontrar o polinmio interpolador e esboar seu grfico
com os seguintes comandos:
-->xi = [0 1 2 3]';
-->yi = [1 6 5 -8]';
-->A = [xi.^0 xi.^1 xi.^2 xi.^3];
-->a = A\yi;
-->p = poly(a,'x','c')
p =
3
1 + 6x - x
-->xx = linspace(-0.5,3.25);
-->plot(xi,yi,'ro',xx,horner(p,xx),'b-');xgrid

Teorema 6.1.2. Seja {(xi ,yi )}ni=1 um conjunto de n pares ordenados de nmeros
reais tais que xi 6= xj se i 6= j, ento existe um nico polinmio p(x) de grau n 1
ou inferior que passa por todos os pontos dados, isto , p(xi ) = yi , i = 1, . . . , n.
Demonstrao. Observe que o problema de encontrar os coeficientes a0 , a1 ,. . . ,
an1 do polinmio
n1
p(x) = a0 + a1 x + a2 x2 + an1 xn1 = ak x k (6.10)
X

k=0

tal que p(xi ) = yi equivalente a resolver o sistema linear com n equaes e n


incgnitas dado por
a0 + a1 x1 + a1 x21 + + an1 xn1
1 = y1 ,
a0 + a1 x2 + a2 x2 + + an1 x2 = y2 ,
2 n1

.. (6.11)
.
a0 + a1 xn + a2 xn + + an1 xn = yn .
2 n1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


170 Clculo Numrico

O qual pode ser escrito na forma matricial como



1 x1 x1 x1 a0
2 n1
y1

1 x2 x22 x2n1 a y2

1
1 x 3 x 3 x 3 a2 = (6.12)

2 n1
y3


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

.
. . .

1 xn x2n xnn1 an1 yn

A matriz envolvida uma matriz de Vandermonde2 de ordem n cujo determi-


nante dado pelo produtrio duplo

(xj xi ) (6.13)
Y

1i<jn

fcil ver que se as abscissas so diferentes dois a dois, ento o determinante


no nulo. Disto decorre que a matriz envolvida inversvel e, portanto, o sistema
possui uma soluo que nica.
Esta abordagem direta que usamos no Exemplo 6.1.1 e na demonstrao do
Teorema 6.1.2 se mostra ineficiente quando o nmero de pontos grande e quando
existe grande variao nas abscissas. Neste caso, a matriz de Vandermonde mal
condicionada (ver [6]), o que acarreta um aumento dos erros de arredondamento
na soluo do sistema.
Uma maneira de resolver este problema escrever o polinmio em uma base
que produza um sistema bem condicionado.

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

ER 6.1.1. Mostre que:

a) Existem infinitas parbolas que interpolam dois pontos dados {(x1 , y1 ), (x2 , y2 )},
com x1 6= x2 .

b) No existe reta que interpola os pontos {(1, 1), (2, 2,1), (3, 3)}.
2
Alexandre-Thophile Vandermonde, 1735 - 1796, matemtico francs.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.1. INTERPOLAO POLINOMIAL 171

c) No existe parbola de equao y = a0 +a1 x+a2 x2 que interpola dois pontos


dados {(x1 , y1 ), (x1 , y2 )}, com y1 6= y2 . Mas, existem infinitas parbolas de
equao x = a0 + a1 y + a2 y 2 que interpolam estes pontos.

Soluo. a) Uma parbola de equao y = a1 + a2 x + a3 x2 que interpola os


pontos deve satisfazer o sistema:

a1 + a2 x1 + a3 x21 = y1
(6.14)
a1 + a2 x2 + a3 x22 = y2

Sem perda de generalidade, para cada a3 R dado, temos:

a1 + a2 x1 = y1 a3 x21
, (6.15)
a1 + a2 x2 = y2 a3 x22

o qual tem soluo nica, pois x1 6= x2 . Ou seja, para cada a3 R dado,


existem a1 , a2 R tais que a parbola de equao y = a1 + a2 x + a3 x2
interpola os pontos dados.

b) Certamente no existem retas de equao x = a que interpolam os pontos


dados. Consideremos ento retas de equao y = a1 + a2 x. Para uma tal
reta interpolar os pontos dados necessrio que:

a1 + a2 = 1
a1 + 2a2 = 2,1, (6.16)
a1 + 3a2 = 3

o qual um sistema impossvel.

c) No existe uma parbola de equao y = a1 + a2 x + a3 x2 que interpole os


pontos dados, pois tal equao determina uma funo de x em y. Agora,
para mostrar que existem infinitas parbolas de equao x = a1 + a2 y + a3 y 2
que interpolam os pontos dados, basta seguir um raciocnio anlogo ao do
item a), trocando x por y e y por x.

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


172 Clculo Numrico

E 6.1.1. Encontre o polinmio interpolador para o conjunto de pontos {(2, 47),


(0, 3), (1, 4), (2, 41)}. Ento, faa um grfico com os pontos e o polinmio inter-
polador encontrado.

E 6.1.2. Encontre o polinmio interpolador para o conjunto de pontos {(1, 1,25),


(0,5, 0,5), (1, 1,25), (1,25, 1,8125)}.

6.2 Diferenas divididas de Newton


Dado um conjunto com n pontos {(xi , yi )}ni=1 , o mtodo das diferenas
divididas de Newton consiste em construir o polinmio interpolador da forma

p(x) = a1 + a2 (x x1 ) + a3 (x x1 )(x x2 ) +
(6.17)
+ an (x x1 )(x x2 ) (x xn1 ).

Como p(xi ) = yi , i = 1, 2, . . . , n, os coeficientes ai satisfazem o seguinte sistema


triangular inferior:

a1 = y1
a1 + a2 (x2 x1 ) = y2
a1 + a2 (x3 x1 ) + a3 (x3 x1 )(x3 x2 ) = y3 (6.18)
..
.
a1 + a2 (xn x1 ) + + an (xn x1 ) (xn xn1 ) = yn

Resolvendo de cima para baixo, obtemos

a1 = y 1
y 2 a1 y2 y1
a2 = =
x2 x1 x2 x1
y3 y2
y2 y1 (6.19)
y3 a2 (x3 x1 ) a1 (x3 x2 ) (x2 x1 )
a3 = =
(x3 x1 )(x3 x2 ) (x3 x1 )
...

Note que os coeficientes so obtidos por diferenas das ordenadas divididas


por diferenas das abscissas dos pontos dados. Para vermos isso mais claramente,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.2. DIFERENAS DIVIDIDAS DE NEWTON 173

Tabela 6.1: Esquema de diferenas divididas para um conjunto com trs pontos
{(xi , yi )}3i=1 .
j xj f [xj ] f [xj1 ,xj ] f [xj2 ,xj1 ,xj ]
1 x1 f [x1 ] = y1
f [x2 ] f [x1 ]
f [x1 ,x2 ] =
x2 x1
f [x2 ,x3 ] f [x1 ,x2 ]
2 x2 f [x2 ] = y2 f [x1 ,x2 ,x3 ] =
x3 x1
f [x3 ] f [x2 ]
f [x2 ,x3 ] =
x3 x2
3 x3 f [x3 ] = y3

introduzimos a seguinte notao:

f [xj ] := yj (6.20)
f [xj+1 ] f [xj ]
f [xj , xj+1 ] := (6.21)
xj+1 xj
f [xj+1 , xj+2 ] f [xj , xj+1 ]
f [xj , xj+1 , xj+2 ] := (6.22)
xj+2 xj
..
. (6.23)
f [xj+1 , xj+2 , . . . , xj+k ] f [xj , xj+1 , . . . , xj+k1 ]
f [xj , xj+1 , . . . , xj+k ] := (6.24)
xj+k xj

Chamamos f [xj ] de diferena dividida de ordem zero (ou primeira diferena divi-
dida), f [xi ,xj +1] de diferena dividida de ordem 1 (ou segunda diferena dividida)
e assim por diante.
Uma inspeo cuidadosa dos coeficientes obtidos em (6.19) nos mostra que

ak = f [x1 ,x2 , . . . ,xk ] (6.25)

Isto nos permite esquematizar o mtodo conforme apresentado na Tabela 6.1.

Exemplo 6.2.1. Use o mtodo de diferenas divididas para encontrar o polinmio


que passe pelos pontos (1,3),(0,1),(1,3),(3,43).

Soluo. Usando o esquema apresentado na Tabela 6.1, obtemos

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


174 Clculo Numrico

j xj f [xj ] f [xj1 ,xj ] f [xj2 ,xj1 ,xj ] f [xj3 ,xj2 ,xj1 ,xj ]
1 1 3
13
= 2
0 (1)
2 (2)
2 0 1 =2
1 (1)
31 62
=2 =1
10 3 (1)
20 2
3 1 3 =6
30
43 3
= 20
31
4 3 43
Portanto, o polinmio interpolador do conjunto de pontos dados

p(x) = 3 2(x + 1) + 2(x + 1)x + (x + 1)x(x 1) (6.26)

ou, equivalentemente, p(x) = x3 + 2x2 x + 1.


6.3 Polinmios de Lagrange


Outra maneira clssica de resolver o problema da interpolao polinomial
atravs dos polinmios de Lagrange. Dado um conjunto de pontos {xj }nj=1 distintos
dois a dois, definimos os polinmios de Lagrange como os polinmios de grau n 1
que satisfazem

1, se k = j
Lk (xj ) = (6.27)
0, se k 6= j

Assim, o polinmio p(x) de grau n 1 que interpola os pontos dados, isto ,


p(xj ) = yj , j = 1, . . . ,n dado por
n
p(x) = y1 L1 (x) + y2 L2 (x) + + yn Ln (x) = yk Lk (x). (6.28)
X

k=1

Para construir os polinmios de Lagrange, podemos analisar a sua forma fato-


rada, ou seja:
n
Lk (x) = ck (x xj ) (6.29)
Y

j=1
j6=i

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.4. APROXIMAO DE FUNES REAIS POR POLINMIOS
INTERPOLADORES 175
onde o coeficiente ck obtido da condio Lk (xk ) = 1:
n
1
Lk (xk ) = ck (xk xj ) = ck = Y (6.30)
Y
n
j=1
j6=i
(xk xj )
j=1
j6=i

Portanto,
n
(x xj )
Lk (x) = (6.31)
Y

j=1 (xk xj )
j6=i

Observao 6.3.1. O problema de interpolao quando escrito usando como base


os polinmios de Lagrange produz um sistema linear diagonal.
Exemplo 6.3.1. Encontre o polinmio da forma p(x) = a1 + a2 x + a3 x2 + a4 x3
que passa pelos pontos (0, 0), (1, 1), (2, 4), (3, 9).
Soluo. Escrevemos:
(x 1)(x 2)(x 3) 1 11
L1 (x) = = x3 + x2 x + 1 (6.32)
(0 1)(0 2)(0 3) 6 6
x(x 2)(x 3) 1 5
L2 (x) = = x3 x2 + 3x (6.33)
1(1 2)(1 3) 2 2
x(x 1)(x 3) 1 3
L3 (x) = = x3 + 2x2 x (6.34)
2(2 1)(2 3) 2 2
x(x 1)(x 2) 1 1 1
L4 (x) = = x3 x2 + x (6.35)
3(3 1)(3 2) 6 2 3
Assim, temos:
P (x) = 0 L1 (x) + 1 L2 (x) + 4 L3 (x) + 9 L4 (x) = x2 (6.36)

6.4 Aproximao de funes reais por polin-


mios interpoladores
Teorema 6.4.1. Dados n + 1 pontos distintos, x0 , x1 , , xn , dentro de um
intervalo [a,b] e uma funo f com n + 1 derivadas contnuas nesse intervalo
(f C n+1 [a,b]), ento para cada x em [a,b], existe um nmero (x) em (a,b) tal
que
f (n+1) ((x))
f (x) = P (x) + (x x0 )(x x1 ) (x xn ),
(n + 1)!

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


176 Clculo Numrico

onde P (x) o polinmio interpolador. Em especial, pode-se dizer que


M
|f (x) P (x)| |(x x0 )(x x1 ) (x xn )| ,
(n + 1)!

onde
M = max |f (n+1) ((x))|
x[a,b]

Exemplo 6.4.1. Considere a funo f (x) = cos(x) e o polinmio P (x) de grau


2 tal que P (0) = cos(0) = 1, P ( 21 ) = cos( 21 ) e P (1) = cos(1). Use a frmula
de Lagrange para encontrar P (x). Encontre o erro mximo que se assume ao
aproximar o valor de cos(x) pelo de P (x) no intervalo [0,1]. Trace os grficos de
f (x) e P (x) no intervalo [0,1] no mesmo plano cartesiano e, depois, trace o grfico
da diferena cos(x) P (x). Encontre o erro efetivo mximo | cos(x) P (x)|.

Soluo. Usando polinmios de Lagrange, obtemos

(x 12 )(x 1)
P (x) = 1
(0 12 )(0 1)
1 (x 0)(x 1)
 
+ cos
2 ( 12 0)( 12 1)
(x 0)(x 12 )
+ cos(1) (6.37)
(1 0)(1 12 )
1 0,0299720583066x 0,4297256358252x2 (6.38)

No Scilab, podemos computar o polinmio interpolador da seguinte forma:


L1=poly([.5 1],'x');L1=L1/horner(L1,0)
L2=poly([0 1],'x');L2=L2/horner(L2,0.5)
L3=poly([0 .5],'x');L3=L3/horner(L3,1)
P=L1+cos(.5)*L2+cos(1)*L3
x=[0:.05:1]
plot(x,cos)
plot(x,horner(P,x),'red')
plot(x,horner(P,x)-cos(x))
Para estimar o erro mximo, precisamos estimar a derivada terceira de f (x):

|f 000 (x)| = | sen (x)| sen (1) < 0,85 (6.39)

e, assim,
1
 
max x x (x 1) .

x[0,1] 2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.4. APROXIMAO DE FUNES REAIS POR POLINMIOS
INTERPOLADORES 177
 
O polinmio de grau trs Q(x) = x x 1
2
(x 1) tem um mnimo (negativo) em

x1 = 3+ 3
6
e um mximo (positivo) em x2 = 3 3
6
. Logo:

1
 
max x x (x 1) max{|Q(x1 )|, |Q(x2 )|} 0,0481125.

x[0,1] 2

Portanto:

0,85
|f (x) P (x)| < 0,0481125 0,0068159 < 7 103
3!

Para estimar o erro efetivo mximo, basta encontrar o mximo de |P (x)


cos(x)|. O mnimo (negativo) de P (x) cos(x) acontece em x1 = 4,29 103 e o
mximo (positivo) acontece em x2 = 3,29 103 . Portanto, o erro mximo efetivo
4,29 103 .

Exemplo 6.4.2. Considere o problema de aproximar o valor da integral 01 f (x)dx


R

pelo valor da integral do polinmio P (x) que coincide com f (x) nos pontos x0 = 0,
x1 = 21 e x2 = 1. Use a frmula de Lagrange para encontrar P (x). Obtenha o
valor de 01 P (x)dx e encontre uma expresso para o erro de truncamento.
R

O polinmio interpolador de f (x)

(x 12 )(x 1) 1 (x 0)(x 1) (x 0)(x 12 )


 
P (x) = f (0) +f + f (1)
(0 21 )(0 1) 2 ( 12 0)( 12 1) (1 0)(1 12 )
1
 
= f (0)(2x2 3x + 1) + f (4x2 + 4x) + f (1)(2x2 x)
2

e a integral de P (x) :

Z 1
2 3 3 2 1
1 4 1
      
P (x)dx = f (0) x x +x + f x3 + 2x2
0 3 2 0 2 3 0
2 3 1 2
  1
+ f (1) x x
3 2 0
2 3 1 4 2 1
      
= f (0) +1 +f + 2 + f (1)
3 2  2 3 3 2
1 2 1 1
= f (0) + f + f (1)
6 3 2 6

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


178 Clculo Numrico

Para fazer a estimativa de erro usando o Teorema 6.4.1 e temos


Z 1 Z 1 Z 1
(x)dx (x)dx = f (x) P (x)dx


f P

0 0 0
Z 1
|f (x) P (x)|dx
0
M Z 1 1
 
(x 1) dx

x x
6 "0 2
M Z 1/2 
1

= x x (x 1)dx
6 0 2
1
Z 1   #
x x (x 1)dx
1/2 2
M 1 1 M
  
= = .
6 64 64 192
Lembramos que M = maxx[0,1] |f 000 (x)|.
Observao 6.4.1. Existem estimativas melhores para o erro de truncamento
para este esquema de integrao numrica. Veremos com mais detalhes tais esque-
mas na teoria de integrao numrica.
Exemplo 6.4.3. Use o resultado do exemplo anterior para aproximar o valor das
seguintes integrais:
Z 1
a) ln(x + 1)dx
0
Z 1
2
b) ex dx
0
Soluo. Usando a frmula obtida, temos que
Z 1
1
ln(x + 1)dx 0,39
0 96
Z 1
2 3,87
ex dx 0,75
0 192

Exerccios

E 6.4.1. Use as mesmas tcnicas usadas o resultado do Exemplo 6.4.2 para


obter uma aproximao do valor de:
Z 1
f (x)dx (6.40)
0
atravs do polinmio interpolador que coincide com f (x) nos pontos x = 0 e x = 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.5. INTERPOLAO LINEAR SEGMENTADA 179

6.5 Interpolao linear segmentada


Considere o conjunto (xi ,yi )nj=1 de n pontos. Assumiremos que xi+1 > xi , ou
seja, as abscissas so distintas e esto em ordem crescente. A funo linear que
interpola os pontos xi e xi+1 no intervalo i dada por

(xi+1 x) (x xi )
Pi (x) = yi + yi+1 (6.41)
(xi+1 xi ) (xi+1 xi )

O resultado da interpolao linear segmentada a seguinte funo contnua


definida por partes no intervalo [x1 ,xn ]:

f (x) = Pi (x), x [xi ,xi+1 ] (6.42)

Exemplo 6.5.1. Construa uma funo linear por partes que interpola os pontos
(0,0), (1,4), (2,3), (3,0), (4,2), (5,0).
A funo procurada pode ser construda da seguinte forma:




0 x1
01
+ 1 x0
10
, 0x<1


4 x2 + 3 x1 , 1x<2



12 21




f (x) = 3 x3
23
+ 0 x2
32
, 2x<3 (6.43)


0 x4 + 2 x3 , 3x<4





34 43

2 x5 + 0 x4 , 4x5



45 54

Simplificando, obtemos:




x, 0x<1


x + 5, 1x<2







f (x) = 3x + 9, 2x<3 (6.44)



2x 6, 3x<4







2x + 10, 4 x 5


A Figura 6.3 um esboo da funo f (x) obtida.


Ela foi gerada no Scilab usando os comandos:

//pontos fornecidos
xi = [0;1;2;3;4;5]
yi = [0;4;3;0;2;0]

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


180 Clculo Numrico

//numero de pontos
n = 6
//funcao interpoladora
function [y] = f(x)
for i=1:n-2
if ((x>=xi(i)) & (x<xi(i+1))) then
y = yi(i)*(x-xi(i+1))/(xi(i) - xi(i+1)) ...
+ yi(i+1)*(x-xi(i))/(xi(i+1) - xi(i));
end
end

if ((x>=xi(n-1)) & (x<=xi(n))) then


y = yi(n-1)*(x-xi(n))/(xi(n-1) - xi(n)) ...
+ yi(n)*(x-xi(n-1))/(xi(n) - xi(n-1));
end
endfunction
//graficando
xx = linspace(xi(1),xi(n),500)';
clear yy
for i=1:max(size(xx))
yy(i) = f(xx(i))
end
plot(xi,yi,'r.',xx,yy,'b-')

6.6 Interpolao cbica segmentada - spline


A ideia empregada na interpolao linear segmentada pode ser estendida atra-
vs da utilizao de polinmios de grau superior. A escolha de polinmios de grau
superior implica uma maior liberdade (h um nmero maior de coeficientes) na
construo da interpolao. Parte dessa liberdade pode ser utilizada na exigncia
de suavidade para a interpolao.
Definio 6.6.1 (spline de ordem m). Dado um conjunto de n pontos I =
{(xj ,yj )}nj=1 tais que xj+1 > xj , ou seja, as abscissas so distintas e esto em
ordem crescente; um spline de ordem m que interpola estes pontos uma funo
s com as seguintes propriedades:
i) Em cada intervalo [xj ,xj+1 ), j = 1,2, . . . n 2 e no segmento [xn1 ,xn ] s
um polinmio de grau menor ou igual a m;
ii) Em algum dos intervalos s um polinmio de grau m;

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 181

3.5

2.5

1.5

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Figura 6.3: Interpolao linear segmentada.

iii) Em cada xj I, s(xj ) = yj , isto , o spline interpola os pontos dados;


iv) s uma funo de classe C m1 , isto , funo m 1 vezes continuamente
diferencivel.
So n 1 intervalos e em cada um deles h m + 1 coeficientes a se determinar.
As condies iii e iv impostas pela definio correspondem respectivamente a n e
m(n2) equaes. Estas ltimas, se devem exigncia de continuidade nos pontos
internos, ou seja, os pontos de I com ndices j = 2,3, . . . ,n 1. Portanto, h m 1
coeficientes a mais do que o nmero de equaes e, exceo do caso m = 1
(interpolao linear segmentada), o problema subdeterminado. Ou seja, uma
vez fixada a ordem m > 1, existem infinitos splines de ordem m que interpolam os
pontos do conjunto I.
O caso m = 3, denominado spline cbico, de grande interesse pois reproduz
o comportamento fsico de rguas delgadas com estrutura elstica homognea e
perfil uniforme sujeitas aos vnculos representados pelos pontos do conjunto I. A
equao diferencial que rege o comportamento do perfil dessas rguas um caso
particular do equao da viga de Euler-Bernoulli. Neste caso, a equao tem a
forma
d4 y
= 0, (6.45)
dx4
cuja soluo geral um polinmio de grau 3.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


182 Clculo Numrico

Vamos supor que um spline cbico que interpola o conjunto de pontos I


conhecido. Como esse spline uma funo de classe C 2 , as suas derivadas nos
pontos do conjunto I so conhecidas tambm. Seja yj0 , o valor dessa derivada em
x = xj . Agora, vamos considerar dois pares de pontos sucessivos de I, (xj ,yj )
e (xj+1 ,yj+1 ). A forma do spline cbico no intervalo [xj ,xj+1 ) pode ser identifi-
cada com a soluo da equao diferencial (6.45) no intervalo (xj ,xj+1 ) sujeita s
condies de contorno

y(xj ) = yj , y 0 (xj ) = yj0 , y(xj+1 ) = yj+1 e y 0 (xj+1 ) = yj+1


0
. (6.46)

A soluo desse problema de contorno escrita de modo conveniente como

sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3 , (6.47)

onde as constantes aj , bj , cj e dj se relacionam s do problema de contorno. As


duas primeiras seguem imediatamente das condies de contorno em xj :

aj = y j e bj = yj0 . (6.48)

As duas ltimas so obtidas pela soluo do sistema de equaes formado pelas


condies de contorno em xj+1 :
yj+1 yj 0
yj+1 + 2yj0 yj+1 yj 0
yj+1 + yj0
cj = 3 e dj = 2 + (6.49)
(xj+1 xj )2 xj+1 xj (xj+1 xj )3 (xj+1 xj )2
Esta relao entre o conjunto de valores para a derivada de um spline cbico
{yj0 }nj=1 nos pontos de interpolao I e os coeficientes dos polinmios em cada
intervalo de interpolao pode ser resumida na seguinte proposio:
Proposio 6.6.1. Seja s um spline cbico que interpola o conjunto de pontos
I = {(xj ,yj )}nj=1 R2 tais que xj+1 > xj . Se {yj0 }nj=1 o conjunto dos valores da
derivada de s em xj , ento em cada intervalo [xj ,xj+1 ) (fechado tambm direita
quando j = n 1) o spline igual a sj :

sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3 , (6.50)

onde
yj+1 yj 0
yj+1 + 2yj0
aj = yj , cj = 3 ,
h2j hj
0
+ yj0 (6.51)
yj+1 yj yj+1
bj = yj0 , dj = 2 +
h3j h2j
e
hj = xj+1 xj , j = 1,2, . . . ,n 1 (6.52)
a distncia entre as abscissas de dois pontos de interpolao consecutivos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 183

De acordo com a proposio anterior, toda informao sobre um spline cbico


armazenada no conjunto {(xj ,yj ,yj0 )}nj=1 . Por construo, uma funo s definida
a partir de (6.50), (6.51) e (6.52) com um conjunto {(xj ,yj ,yj0 )}nj=1 R3 , onde
xj+1 > xj de classe C 1 mas no necessariamente um spline cbico. Para ser um
spline cbico, os valores do conjunto {yj0 }nj=1 devem garantir a continuidade da
derivada segunda de s em todo intervalo (x1 ,xn ). Ou seja, devemos ter

lim s00j (x) = s00j+1 (xj+1 ) (6.53)


x%xj+1

em todos os pontos internos j = 1,2, . . . ,n 2. Em termos dos coeficientes dos


polinmios cbicos (6.50), a equao anterior assume a forma

2cj + 6dj hj = 2cj+1 , j = 1,2, . . . ,n 2. (6.54)

Esta ltima equao e (6.51) permitem construir um sistema de equaes lineares


para as variveis yj0 :

Proposio 6.6.2. Dado o conjunto de pontos I = {(xj ,yj )}nj=1 R2 tais que
xj+1 > xj , as derivadas de um spline cbico que interpola os pontos I, yj0 , j =
1,2, . . . ,n satisfazem o sistema de equaes algbricas lineares
!
yj yj1 yj+1 yj
0
hj yj1 + 2(hj1 + hj )yj0 + hj1 yj+1
0
= 3 hj + hj1 , (6.55)
hj1 hj

onde j = 2,3, . . . ,n 1 e hj = xj+1 xj .

O sistema de equaes (6.55) subdeterminado. So n variveis e n 2 equa-


es. A incluso de duas equaes adicionais linearmente independentes das n 2
equaes (6.55) possibilita a existncia de uma nica soluo. Tipicamente essas
equaes adicionais envolvem o comportamento do spline na fronteira ou na sua
vizinhana. A seguir, veremos quatro escolhas mais conhecidas.

6.6.1 Spline natural


Uma forma de definir as duas equaes adicionais para completar o sistema
(6.55) impor condies de fronteira livres (ou naturais), ou seja,

s00 (x1 ) = s00 (xn ) = 0. (6.56)

De acordo com (6.50) essas equaes implicam respectivamente

c1 = 0 e 2cn1 + 6dn1 hn1 = 0, (6.57)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


184 Clculo Numrico

ou seja,
y2 y1


2y10 + y20 = 3
h1





. (6.58)
yn yn1


+ 2yn0 = 3

0
yn1



hn1

Essas duas equaes em conjunto com as equaes (6.55) formam um sistema de


n equaes algbricas lineares Ay 0 = z, onde

2 1 0 0 0 0

h2 2(h1 + h2 ) h1 0 0 0

0 h3 2(h2 + h3 ) h2 0 0
A=
.. .. .. .. .. .. .. ,

(6.59)

. . . . . . .


0 0 0 hn1 2(hn1 + hn2 ) hn2
0 0 0 0 1 2


y2 y1
h1

h2 y2hy + h1 y3hy

y10

1
1
2
2


0
h3 y3hy + h2 y4hy


y2 2 3
y = 0
e z= 3 (6.60)
2 3
.. .. .

. .




yn2
hn1 yn1hn2 + hn2 ynhy

yn0
n1
n1


yn yn1
hn1

Observe que a matriz A diagonal dominante estrita e, portanto, o sistema Ay 0 = z


possui soluo nica. Calculado y 0 , os valores dos aj , bj , cj e dj so obtidos
diretamente pelas expresses (6.51).

Exemplo 6.6.1. Construa um spline cbico natural que passe pelos pontos (2, 4,5),
(5, 1,9), (9, 0,5) e (12, 0,5).

Soluo. O spline desejado uma funo definida por partes da forma:



a1 + b1 (x 2) + c1 (x 2)2 + d1 (x 2)3 , 2 x < 5






s(x) = a2 + b2 (x 5) + c2 (x 5)2 + d2 (x 5)3 , 5 x < 9 . (6.61)


a3 + b3 (x 9) + c3 (x 9)2 + d3 (x 9)3 , 9 x 12


Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 185

As variveis y10 , y20 , y30 e y40 resolvem o sistema Ay 0 = z, onde



2 1 0 0 2 1 0 0

4 2(4 + 3) 3 0 4 14 3 0

A= = (6.62)

,
0 3 2(3 + 4) 4 0 3 14 4



0 0 1 2 0 0 1 2

0
y1
1
3
(1,9
4,5) 6,4

3 (1,9 4,5) + 4 (0,5 (1,9))
0 4 3
y2 20,2

y= e z= 3
= . (6.63)
3 (0,5 (1,9)) + 4 (0.5 (0,5)) 1,4
0
y
3 4 3

y40 1
3
(0,5 (0.5)) 1
A soluo y10 = 2,83, y20 = 0,73, y30 = 0,46 e y40 = 0,73. Calculamos os
coeficientes usando as expresses (6.51):

a1 = y1 = 4,5, b1 = y10 = 2,83,


a2 = y2 = 1,9, b2 = y20 = 0,73,
a3 = y3 = 0,5. b3 = y30 = 0,46,
(6.64)
c1 = 0, d1 = 0,07,
c2 = 0,7, d2 = 0,0916,
c3 = 0,4, d3 = 0,04.

Portanto:




4,5 2,83(x 2) + 0,07(x 2)3 ,2 x < 5

S(x) =
1,9 0,73(x 5) + 0,7(x 5)2 0,0916(x 5)3 , 5 x < 9 . (6.65)


0,5 + 0,46(x 9) 0,4(x 9)2 + 0,04(x 9)3

, 9 x 12

No Scilab, podemos utilizar:


xi = [2;5;9;12]
yi = [4.5;-1.9;0.5;-0.5]
hi = xi(2:4)-xi(1:3)
A = [2 1 0 0;hi(2) 2*(hi(1)+hi(2)) hi(1) 0; ...

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


186 Clculo Numrico

0 hi(3) 2*(hi(2)+hi(3)) hi(2);0 0 1 2 ]


z = 3*[(yi(2)-yi(1))/hi(1); ...
hi(2)/hi(1)*(yi(2)-yi(1))+hi(1)/hi(2)*(yi(3)-yi(2));...
hi(3)/hi(2)*(yi(3)-yi(2))+hi(2)/hi(3)*(yi(4)-yi(3));...
(yi(4)-yi(3))/hi(3)]
dyi = A\z
a=yi(1:3)
b=dyi(1:3)
c(1)=0
c(2:3)=3*(yi(3:4)-yi(2:3))./hi(2:3).^2 ...
- (dyi(3:4)+2*dyi(2:3))./hi(2:3)
d=-2*(yi(2:4)-yi(1:3))./hi.^3 + (dyi(2:4)+dyi(1:3))./hi.^2
for i=1:3
P(i) = poly([a(i) b(i) c(i) d(i)],'x','coeff')
z = [xi(i):.01:xi(i+1)]
plot(z,horner(P(i),z-xi(i)))
end
O mesmo resultado obtido atravs das instrues splin e interp do Scilab:
xi = [2;5;9;12]
yi = [4.5;-1.9;0.5;-0.5]
dyi=splin(xi,yi,'natural')
z=linspace(xi(1),xi($))
plot(z,interp(z,xi,yi,dyi))

6.6.2 Spline fixado


O spline fixado s obtido pela escolha dos valores das derivadas nas extremi-
dades do intervalo de interpolao. Isto diminui o nmero de variveis para n 2
pois y10 e yn0 deixam de ser incgnitas.
As equaes (6.55) formam um sistema de n 2 equaes Ay 0 = z, onde

2(h1 + h2 ) h1 0 0 0 0

h3 2(h2 + h3 ) h2 0 0 0

0 h4 2(h3 + h4 ) h3 0 0
A=
.. .. .. .. .. .. .. ,


. . . . . . .


0 0 0 hn2 2(hn3 + hn2 ) hn3
0 0 0 0 hn1 2(hn2 + hn1 )
(6.66)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 187


h2 y2hy 1
+ h1 y3hy 2
h2 y10
y20 1 2

h3 y3hy h2 y4hy

2 3
+
y30 2 3

..

y0 = e z= 3 . (6.67)

.. .
.

yn3 yn2
hn2 yn2 + hn3 yn1


0
hn3 hn2
yn1
yn2

hn1 yn1
hn2 + hn2 ynhyn1
n1
hn2 yn0

Observe que a matriz A diagonal dominante estrita e, portanto, o sistema Ay 0 = z


possui soluo nica.

6.6.3 Spline not-a-knot


O spline not-a-knot definido com um spline cbico que satisfaz as equaes
adicionais

lim s000
1 (x) = s2 (x2 ) e
000
lim s000
n2 (x) = sn1 (xn1 ).
000
(6.68)
x%x2 x%xn1

Em termos dos coeficientes (6.50), as equaes anteriores correspondem a

d1 = d2 e dn2 = dn1 , (6.69)

ou seja,

y2 y1 y3 y2
 
h22 y10 + (h22 h21 )y20 h21 y30 =2 h22 h21

h1 h2

!
.

yn1 yn2 yn yn1

0
h2n1 yn2 + (h2n1 h2n2 )yn1
0
h2n2 yn0 = 2 h2n1 h2n2

hn2 hn1

(6.70)
Essas duas equaes agregadas s equaes (6.55) formam um sistema de n equa-
es Ay 0 = z, onde

h22 h22 h21 h21 0 0 0

h2 2(h1 + h2 ) h1 0 0 0

0 h3 2(h2 + h3 ) h2 0 0
A= , (6.71)

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

. . . . . . .


0 0 0 hn1 2(hn2 + hn1 ) hn2
0 0 0 h2n1 h2n1 h2n2 h2n2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


188 Clculo Numrico

y2 y1 y3 y2
 
2 h22 h21

h 1 h2 
y10


y2 y1 y3 y2
3 h2 h1 + h1 h2


y20


..
y0 = z= (6.72)


e . .
..


.
 
yn1 yn2 yn yn1

3 hn1 hn2 + hn2 hn1


yn0


yn1 y n2 yn yn1


2
2 hn1 2 hn2
hn2 hn1
Se reduzirmos esse sistema pela eliminao das incgnitas y10 e yn0 , o sistema re-
sultante possui uma matriz de coeficientes diagonal dominante estrita, portanto,
a soluo nica.
O termo not-a-knot (no n) relaciona-se nomenclatura dos splines. O termo
n utilizado para os pontos interpolados. Neles, a derivada terceira da funo
spline descontnua, portanto, quando impomos a continuidade dessa derivada em
x2 e xn1 como se esses pontos deixassem de ser ns.

6.6.4 Spline peridico


Se o conjunto de n pontos da interpolao I for tal que y1 = yn , ento
possvel construir o spline peridico, definido com um spline cbico que satisfaz as
seguintes condies de periodicidade
s01 (x1 ) = s0n1 (xn ) e s001 (x1 ) = s00n1 (xn ). (6.73)
Em termos dos coeficientes (6.50)
b1 = bn1 e 2c1 = 2cn1 + 6dn1 hn1 , (6.74)
ou seja,




y10 yn0 = 0



! .
y2 y1 yn yn1


2hn1 y10 + hn1 y20 + h1 yn1
0
+ 2h1 yn0 = 3 hn1 + h1





h1 hn1
(6.75)
Essas duas equaes agregadas s equaes (6.55) formam um sistema de n equa-
es Ay 0 = z, onde

1 0 0 0 0 1

h2 2(h1 + h2 ) h1 0 0 0

0 h3 2(h2 + h3 ) h2 0 0
A= , (6.76)

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

. . . . . . .


0 0 0 hn1 2(hn2 + hn1 ) hn2
2hn1 hn1 0 0 h1 2h1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 189


0
y10

h2 y2hy + h1 y3hy

1 2
y20 1 2

..

y0 = e z= 3 . (6.77)

.. .
.

y
y
+ hn2 ynhy

h n1 n2 n1
n1 hn2
yn0 n1

hn1 y2hy
1
1
+ h1 ynhy
n1
n1

Neste caso tambm, se reduzirmos esse sistema pela eliminao das incgnitas y10
e yn0 , o sistema resultante possui uma matriz de coeficientes diagonal dominante
estrita, portanto, a soluo nica.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 7

Ajuste de curvas

Neste captulo, abordamos os problemas de ajuste de curvas pelo mtodo


dos mnimos quadrados. Mais precisamente, dado um conjunto de N pontos
N
{(xj , yj ) R2 }j=1 e uma famlia de funes F = {f : R R; y = f (x)}, o
problema de ajuste de curvas consiste em encontrar uma funo da famlia F que
melhor se ajusta aos pontos dados, no necessariamente que os interpola.

Figura 7.1: Exemplo de um problema de ajuste de uma reta entre trs pontos,
veja o Exemplo 7.0.1.

Aqui, o termo melhor se ajusta entendido no sentido de mnimos quadrados,


isto , buscamos encontrar uma funo f F tal que f (x) resolve o seguinte
problema de minimizao

N
min (f (xj ) yj )2 , (7.1)
X
f F
j=1

190
7.1. AJUSTE DE UMA RETA 191

ou seja, f (x) a funo da famlia F cujo erro quadrtico entre yj e f (xj ), j =


1, 2, . . . , N , mnimo. A expresso

N
R := (f (xj ) yj )2
X

j=1 (7.2)
= (f (x1 ) y1 )2 + (f (x2 ) y2 )2 + + (f (xN ) yN )2

chamada de resduo e consiste na soma dos quadrados das diferenas entre a


ordenadas yj e o valor da funo procurada f (xj ).

Exemplo 7.0.1. Dado o conjunto de pontos {(1, 1,2), (1,5, 1,3), (2, 2,3)} e a fam-
lia de retas f (x) = a + bx, podemos mostrar que f (x) = 0,05 + 1,1x a reta que
melhor aproxima os pontos dados no sentido de mnimos quadrados. Os pontos e
a reta ajustada e so esboados na Figura 7.1.

Na sequncia, discutimos o procedimento de ajuste de uma reta, ento, mos-


tramos a generalizao da tcnica para problemas lineares de ajuste e, por fim,
discutimos alguns problemas de ajuste no lineares.

7.1 Ajuste de uma reta


Nesta seo, discutiremos o procedimento de ajuste de uma reta a um conjunto
de pontos dados. Em outras palavras, discutiremos o mtodo de soluo para o
problema de encontrar o polinmio do primeiro grau que melhor se aproxima a um
dado conjunto de pontos pelo mtodo dos mnimos quadrados.
Seja, ento, {(x1 ,y1 ), (x2 ,y2 ), . . . , (xN ,yN )} um conjunto de N pontos dados.
Buscamos encontrar a funo f (x) = a1 + a2 x tal que o resduo

N
R= (f (xj ) yj )2 (7.3)
X

j=1

seja mnimo.
Para tal, primeiro observamos que f (xj ) = a1 + a2 xj e, portanto, o resduo
pode ser escrito explicitamente como uma funo de a1 e a2 conforme a seguinte
expresso:
N
R(a1 ,a2 ) = (a1 + a2 xj yj )2 . (7.4)
X

j=1

Observamos que R(a1 ,a2 ) uma forma quadrtica e que seu mnimo ocorre

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


192 Clculo Numrico

quando suas derivadas parciais primeiras so iguais a zero, isto ,

N
R X
= (a1 + a2 xj yj )2 = 0,
a1 a1 j=1
N
R X
= (a1 + a2 xj yj )2 = 0.
a2 a2 j=1

Ou seja,

N
2 (a1 + a2 xj yj ) 1 = 0,
X

j=1
N
2 (a1 + a2 xj yj ) xj = 0,
X

j=1

e isolando as incgnitas temos

N N N
1 + a2 xj =
X X X
a1 yj ,
j=1 j=1 j=1
N N N
x j + a2 x2j =
X X X
a1 y j xj .
j=1 j=1 j=1

Observando que N j=1 1 = N , o sistema linear acima pode ser escrito na forma
P

matricial M a = w, isto ,

PN PN
N j=1 xj a1 j=1 yj
= P . (7.5)

P
N PN 2 N
j=1 xj j=1 xj a2 j=1 xj yj
| {z } | {z } | {z }
M a w

Este sistema linear de duas equaes e duas incgnitas admite uma nica so-
luo quando o determinante da matriz dos coeficientes for no nulo, isto ,
2
N N
x2j xj 6= 0
X X
N
j=1 j=1

Pode-se mostrar usando a desigualdade de CauchySchwarz que isto acon-


tece quando existem pelo menos duas abscissas diferentes envolvidas no ajuste.
Usando a frmula da inversa de uma matriz dois-por-dois, chegamos s seguintes

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.1. AJUSTE DE UMA RETA 193

frmulas para os coeficientes a1 e a2 :


PN PN PN PN
j=1 x2j j=1 yj j=1 xj j=1 xj y j
a1 = PN P 2
N
N j=1 x2j j=1 xj
PN PN PN (7.6)
N j=1 xj y j j=1 xj j=1 yj
a2 = PN P 2
N
N j=1 x2j j=1 xj
Por fim, observamos que o sistema M a = w descrito na Equao (7.5) pode
ser reescrito na forma V T V a = V T y, onde V := [1 x] a matriz dos coeficientes
do seguinte sistema linear sobre determinado:
a1 + a2 x 1 = y 1
a1 + a2 x 2 = y 2
.. (7.7)
.
a1 + a2 x N = y N
Se os pontos dados no so colineares, este sistema no tem soluo. Mas, sempre
que pelo menos duas abscissas foram diferentes, M = V T V uma matriz invertvel
e (veja o Exerccio 7.1.1), ento
 1
a = V TV V T y, (7.8)
nos fornece a chamada soluo por mnimos quadrados do sistema (7.7). Note que
esta uma forma de obter os coeficientes a = (a1 , a2 ) equivalente quela dada em
(7.6).
Exemplo 7.1.1. Retornemos ao Exemplo 7.0.1. Isto , dado o conjunto de pontos
{(1, 1,2), (1,5, 1,3), (2, 2,3)}, encontrar a funo do tipo f (x) = a1 +a2 x que melhor
se ajusta os pontos dados no sentido de mnimos quadrados.
Soluo. Usando as frmulas em (7.6), obtemos
7,25 4,8 4,5 7,75
a1 = = 0,05,
3 7,25 20,25
3 7,75 4,5 4,8
a2 = = 1,1.
3 7,25 20,25
Ou seja, verificamos que, de fato, a funo f (x) = 0,05 + 1,1x corresponde reta
que melhor ajusta os pontos dados no sentido de mnimos quadrados. Os pontos
e a reta ajustada esto esboados na Figura 7.1.
Deixamos ao leitor a verificao de que os coeficientes a1 e a2 tambm podem
ser obtidos pela expresso (7.8).
Os coeficientes a1 e a2 podem ser rapidamente calculados no Scilab usando a
expresso (7.8). Para tando, digitamos:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


194 Clculo Numrico

-->xj = [1, 1.5, 2]';


-->yj = [1.2, 1.3, 2.3]';
-->V = [ones(3,1) xj];
-->a = inv(V'*V)*V'*yj
a =
- 0.05
1.1

Ento, o grfico da funo ajustada e dos pontos pode ser obtido com os comandos:

-->deff('y = f(x)','y = a(1) + a(2)*x')


-->xx = linspace(0.5,2.5);
-->plot(xj,yj,'ro',xx,f(xx),'b-')

O procedimento apresentado de ajuste de uma reta por mnimos quadrados


pode ser generalizado para qualquer famlia de funes que seja um espao ve-
torial de dimenso finita. Problemas de ajuste com tais famlias de funes o
que chamamos de problemas de ajuste linear, os quais exploramos em detalhe na
prxima seo.

Exerccio resolvido
ER 7.1.1. a) Mostre que o sistema linear M a = w descrito na Equao 7.5 pode
ser reescrito na forma V T V a = V T y, onde V = [1 x].

b) Mostre que V , como definido no item a), tem posto igual a 2 quando pelo menos
duas abscissas do conjunto de pontos {(xj , yj )}N
j=1 so diferentes. E, portanto,
M = V V uma matriz invertvel.
T

Soluo. a) Basta observar que



1 x1


1 1 1 1
PN

x2 N x
j=1 j
V TV = = =M (7.9)

.
..
.
P
. . N N 2
x1 x2
P
xN
j=1 xj j=1 xj

1 xN

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.1. AJUSTE DE UMA RETA 195

e
y1



1 1 1
PN
y2

j=1 yj
V Ty = = P = w. (7.10)

.


.

x1 x2 xN .


N
j=1 xj y j

yN

b) Sejam xi 6= xj duas abscissas diferentes. Ento, a i-sima e j-sima linhas na


matriz V so linearmente independentes e, portanto, o posto de V igual a 2.
Por fim, V T V no singular, pois, se u tal que V T V u = 0, ento
0 = uT V T V u = (V u)T (V u) = (V u) (V u) V u = 0. (7.11)
Agora, V u = 0 uma combinao linear das linhas de V igual a zero, logo
u = 0, pois as linhas de V so linearmente independentes como mostrado
antes. Conclumos que se V T V u = 0, ento u = 0, isto , V T V no singular.

Exerccios

E 7.1.1. Sejam dados o conjunto de pontos {(0,23, 0,54), (0,30, 0,54),


(0,04, 0,57)}. Encontre a funo f (x) = a1 + a2 x que melhor se ajusta no sentido
de mnimos quadrados aos pontos dados. Faa, ento, um grfico com os pontos e
o esboo da funo ajustada.

E 7.1.2. Seja dado o conjunto de pontos {(0,35, 0,2), (0,15, 0,5), (0,23, 0,54),
(0,35, 0,7)}. Encontre a funo f (x) = a1 + a2 x que melhor se ajusta no sentido
de mnimos quadrados aos pontos dados. Faa, ento, um grfico com os pontos e
o esboo da funo ajustada.

E 7.1.3. Seja dado o conjunto de pontos {(1,94, 1,02), (1,44, 0,59), (0,93, 0,28),
(1,39, 1,04)}. Encontre a funo f (x) = a1 + a2 x que melhor se ajusta no sentido
de mnimos quadrados aos pontos dados. Ento, responda cada item:
a) Encontre o valor de f (1).
b) Encontre o valor de f (0,93).
c) Encontre o valor de |f (0,93) (0,28)|.
d) Encontre o valor do resduo R = j=1 (f (xj ) yj )2 .
PN

Fornea os valores calculados com 7 dgitos significativo por arredondamento.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


196 Clculo Numrico

7.2 Ajuste linear geral


O problema geral de ajuste linear consiste em dada uma famlia F gerada
pelo conjunto de m funes {f1 (x), f2 (x), . . . , fm (x)} e um conjunto de n pares
ordenados {(x1 , y1 ), (x2 , y2 ), . . ., (xn , yn )}, calcular os coeficientes a1 , a2 , . . ., am
tais que a funo dada por
m
f (x) = aj fj (x) = a1 f1 (x) + a2 f2 (x) + . . . + am fm (x) (7.12)
X

j=1

minimiza o resduo
n
R= [f (xi ) yi ]2 . (7.13)
X

i=1

Aqui, a minimizao feita por todas as possveis escolhas dos coeficientes a1 , a2 ,


. . ., am .
Com o objetivo de tornar a desenvolvimento mais claro, vamos escrever R como
a soma dos resduos parciais:
n
R= Ri , onde Ri := [f (xi ) yi ]2 . (7.14)
X

i=1

Do fato que f (xi ) = aj fj (xi ), temos que cada resduo pode ser escrito como
Pm
j=1

2
m
Ri = aj fj (xi ) yi . (7.15)
X

j=1

A fim de encontrar o ponto de mnimo, resolvemos o sistema oriundo de igualar


a zero cada uma das derivadas parciais de R em relao aos m coeficientes aj , isto
, devemos resolver:

n n m
R Ri
= 2 =2 aj fj (xi ) yi f1 (xi ) = 0,
X X X

a1 i=1 a 1 i=1 j=1

n n m
R Ri
= 2 =2 aj fj (xi ) yi f2 (xi ) = 0,
X X X

a2 i=1 a 2 i=1 j=1
..
.
n n m
R Ri
= 2 =2 aj fj (xi ) yi fm (xi ) = 0.
X X X

am i=1 a m i=1 j=1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.2. AJUSTE LINEAR GERAL 197

Dividindo cada equao por 2 e escrevendo na forma matricial, obtemos M a =


w, onde a matriz M dada por:
n n n
f1 (xi )2 f2 (xi )f1 (xi ) fm (xi )f1 (xi )
P P P
i=1 i=1 i=1

n n n
f1 (xi )f2 (xi ) f2 (xi )
2
fm (xi )f2 (xi )
P

P P

i=1 i=1 i=1
n n n
M= f1 (xi )f3 (xi ) f2 (xi )f3 (xi ) fm (xi )f3 (xi )
P
.
P P

i=1 i=1 i=1
.. .. .. ..

.


. . .


n n n
f1 (xi )fm (xi ) f2 (xi )fm (xi ) fm (xi )
2
P P P
i=1 i=1 i=1

E os vetores a e w so dados por:


n
i=1 f1 (xi )yi
P

a1

n
f2 (xi )yi
P


i=1

a2
n

a= e w= f3 (xi )yi

.. .
P
.

i=1
..



.
am


n
fm (xi )yi
P
i=1

Agora, observamos que M = V T V e w = V T y, onde a matriz V dada por:



f1 (x1 ) f2 (x1 ) fm (x1 )

f1 (x2 ) f2 (x2 ) fm (x2 )


V = f (x ) f2 (x3 ) fm (x3 ) (7.16)

1 3
.. .. .. ..

.
. . .

f1 (xn ) f2 (xn ) fm (xn )

e y o vetor coluna y = (y1 , y2 , . . . , yN ).


Assim, o problema de ajuste se reduz a resolver o sistema linear M a = w, ou
V T V a = V T y. Este sistema linear tem soluo nica se a matriz M for inversvel.
O teorema a seguir mostra que isto acontece sempre a matriz V possui posto m,
ou seja, o nmero de linhas linearmente independentes for igual ao nmero de
colunas.1
1
Nota-se que o posto no pode ultrapassar o nmero de colunas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


198 Clculo Numrico

Teorema 7.2.1. A matriz M = V T V quadrada de ordem m e inversvel


sempre que o posto da matriz V igual a nmero de colunas m.

Demonstrao. Para provar que M inversvel, precisamos mostrar que se v um


vetor de ordem m e M v = 0, ento v = 0. Suponha, ento, que M v = 0, isto ,
V T V v = 0. Tomando o produto interno da expresso V T V v = 0 com v, temos:
D E
0 = V T V v,v = hV v,V vi = kV vk2 (7.17)

Portanto M v = 0 implica obrigatoriamente V v = 0. Como o posto de V igual


ao nmero de colunas, v precisar ser o vetor nulo.

Observao 7.2.1. Este problema equivalente a resolver pelo mtodos dos m-


nimos quadrados o seguinte sistema linear:

f1 (x1 ) f2 (x1 ) fm (x1 ) y1

a1
f1 (x2 ) f2 (x2 ) fm (x2 ) y2


a2

f (x ) f2 (x3 ) fm (x3 ) = (7.18)

.
y
..
1 3 3
.. .. ... .. ..

. . . .


am


f1 (xn ) f2 (xn ) fm (xn ) yn

Observao 7.2.2. O caso de ajuste de um reta para um conjunto de pontos


um caso particular de ajuste linear.

Exemplo 7.2.1. Encontre a reta que melhor se ajusta aos pontos dados na se-
guinte tabela:

i 1 2 3 4 5
xi 0,01 1,02 2,04 2,95 3,55
yi 1,99 4,55 7,20 9,51 10,82

Soluo. O problema consiste em ajustar uma funo da forma f (x) = a1 +a2 x no


conjunto de pontos dados. Notamos que f (x) uma funo da famlia gerada pelo
conjunto de funes {f1 (x) = 1, f2 (x) = x}. Ento, aplicando o procedimento
acima, temos que o vetor dos coeficientes a = (a1 , a2 ) soluo por mnimos

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.2. AJUSTE LINEAR GERAL 199

Figura 7.2: Grfico da soluo do problema apresentado no Exemplo 7.2.1.

quadrados do sistema linear V a = y, onde:



f1 (x1 ) f2 (x1 ) 1 0,01

f1 (x2 ) f2 (x2 ) 1 1,02


V = f (x ) f2 (x3 ) = 1 2,04 (7.19)

1 3 .

f1 (x4 ) f2 (x4 ) 1 2,95



f1 (x5 ) f2 (x5 ) 1 3,55

Ou seja, a soluo do sistema V T V a = V T y dado por



5 9,57 a1 34,07

= (7.20)
9,57 26,5071 a2 85,8144

A soluo desse sistema a1 = 1,9988251 e a2 = 2,5157653. A Figura 7.2, apre-


senta um grfico dos pontos e da reta ajustada.

Exemplo 7.2.2. Encontre a funo f (x) = a1 sen (x) + a2 cos(x) que melhor se
ajusta pelo critrios dos mnimos quadrados aos seguintes pontos dados

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


200 Clculo Numrico

Figura 7.3: Grfico da soluo do problema apresentado no Exemplo 7.2.2.

i 1 2 3 4 5
xi 0,00 0,25 0,50 0,75 1,00
yi 153 64 242 284 175

Soluo. Pelo procedimento visto nesta seo, temos que os coeficientes a1 e a2


so dados pela soluo por mnimos quadrados do seguinte sistema linear V a = y

a1 sen (x1 ) + a2 cos(x1 ) = y1


a1 sen (x2 ) + a2 cos(x2 ) = y2
a1 sen (x3 ) + a2 cos(x3 ) = y3 (7.21)
a1 sen (x4 ) + a2 cos(x4 ) = y4
a1 sen (x5 ) + a2 cos(x5 ) = y5

cuja matriz de coeficientes V :



sen (0) cos(0)

sen (0,25) cos(0,25)


V = sen (0,5) cos(0,5) (7.22)



sen (0,75) cos(0,75)



sen () cos()

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.2. AJUSTE LINEAR GERAL 201

Ento, a soluo por mnimos quadrados



244,03658
a = (V T V )1 V T y =
. (7.23)
161,18783

Ou seja, f (x) = 244,03658 sen (x) 161,18783 cos(x) a funo ajustada ao


conjunto de pontos dados. A Figura 7.3 apresenta o grfica de f (x) e dos pontos
dados.
No Scilab, podemos computar os coeficientes da funo f (x) da seguinte
forma:

-->xi = [0 0.25 0.5 0.75 1]';


-->yi = [-153 64 242 284 175]';
-->V = [sin(%pi*xi) cos(%pi*xi)];
-->a = inv(V'*V)*V'*yi
a =
244.03658
- 161.18783

Observao 7.2.3. No Scilab, quando resolvemos um sistema Ax = b usando

-->x = inv(A)*b

estamos computando a inversa da matriz A e multiplicando por b. Podemos evitar


a computao da inversa de A usando o operador contra barra (/). Neste caso,
escrevemos

-->x = A/b

Quando o sistema A no uma matriz quadrada, A/b retorna a soluo por m-


nimos quadrados do sistema Ax = b, enquanto inv(A)*b retorna um erro, pois A
no uma matriz quadrada e, portanto, no invertvel.

7.2.1 Ajuste polinomial


O ajuste polinomial o caso particular do ajuste linear para funes poli-
nomiais, isto , funes do tipo

p(x) = a1 + a2 x + + am xm1 . (7.24)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


202 Clculo Numrico

Figura 7.4: Grfico da soluo do problema apresentado no Exemplo 7.2.3.

Neste caso, a matriz V associada ao ajuste dos pontos {(x1 , y1 ), (x2 , y2 ), (x3 , y3 ),
. . ., (xn ,yn )} dada por:

1 x1 x21 xm1
1

1 x2 x22 xm1

2

V = 1 (7.25)

x3 x23 xm1
3


.. .. .. .
..

.
. .


1 xn x2n xm1
n

Ento, os coeficientes ai , i = 1, 2, . . . , m, so dados pela soluo do sistema linear


V T V a = v T y:
n n n

xm1
P P P
n xj j a

yj
j=1 j=1 1 j=1
n n n
n
P P
m
x2j
P P
x x j a2 xy
j=1 j j=1 j j

= (7.26)

j=1 j=1 .

.. .. .. . ..

. . . . .



n n n n
P P
m1
xm xj2m1 ap+1 m1
P P
xj xj yj

j
j=1 j=1 j=1 | {z } j=1
| {z } a | {z }
VTV VTy

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.2. AJUSTE LINEAR GERAL 203

Exemplo 7.2.3. Entre o polinmio de grau 2 que melhor se ajusta aos pontos
dados na seguinte tabela:

i 1 2 3 4 5
xi 0,00 0,25 0,50 0,75 1,00
yi 153 64 242 284 175

Soluo. Um polinmio de grau 2 pode ser escrito na seguinte forma:

p(x) = a1 + a2 x + a3 x2 . (7.27)

Assim, o problema se resume em encontrarmos a soluo por mnimos quadrados


do seguinte sistema linear:

a1 + a2 x1 + a3 x21 = y1
a2 + a2 x2 + a3 x22 = y2
a3 + a2 x3 + a3 x23 = y3 (7.28)
a4 + a2 x4 + a3 x24 = y4
a5 + a2 x5 + a3 x25 = y5

Ou, escrita na forma matricial, V a = y, onde:



1 x1 x1
2

1 x2 x22


V = 1 (7.29)

2
x 3 x3

1 x24

x4

1 x5 x25

A soluo por mnimos quadrados , ento:



165,37143

a = (V T V )1 V T y = 1250,9714

(7.30)


900,57143

Ou seja, o polinmio de grau 2 que melhor ajusta os pontos dados no sentido de


mnimos quadrados p(x) = 165,37143+1250,9714x900,57143x2 . A Figura 7.4
mostra o grfico do polinmio ajustado e os pontos dados.
No Scilab, podemos computar o polinmio p(x) da seguinte forma:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


204 Clculo Numrico

-->xi = [0 0.25 0.5 0.75 1]';


-->yi = [-153 64 242 284 175]';
-->V = [ones(5,1) xi xi.^2];
-->a = V\yi;
-->p = poly(a,'x','c')
p =
2
- 165.37143 + 1250.9714x - 900.57143x
Para fazermos o grfico do polinmio e dos pontos, digitamos:
-->xx = linspace(-0.25,1.25);
-->plot(xi,yi,'ro',xx,horner(p,xx),'b-');xgrid

Exerccios

E 7.2.1. Encontre o polinmio p(x) = a1 + a2 x + a3 x2 que melhor se ajusta


no sentido de mnimos quadrados aos pontos:

i 1 2 3 4
xi 1,50 0,50 1,25 1,50
yi 1,15 0,37 0,17 0,94

E 7.2.2. Encontrar a parbola y = ax2 +bx+c que melhor aproxima o seguinte


conjunto de dados:

i 1 2 3 4 5
xi 0,01 1,02 2,04 2,95 3,55
yi 1,99 4,55 7,20 9,51 10,82

E 7.2.3. Dado o seguinte conjunto de dados

xi 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
yi 31 35 37 33 28 20 16 15 18 23 31

a) Encontre a funo do tipo f (x) = a + b sen (2x) + c cos(2x) que melhor


aproxima os valores dados.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.3. APROXIMANDO PROBLEMAS NO LINEARES POR
PROBLEMAS LINEARES 205
b) Encontre a funo do tipo f (x) = a + bx + cx2 + dx3 que melhor aproxima os
valores dados.

7.3 Aproximando problemas no lineares por pro-


blemas lineares
Eventualmente, problemas de ajuste de curvas podem recair em um sistema
no linear. Por exemplo, para ajustar funo y = Aebx ao conjunto de pontos
(x1 ,y1 ), (x2 ,y2 ) e (x3 ,y3 ), temos que minimizar o resduo2
R = (Aex1 b y1 )2 + (Aex2 b y2 )2 + (Aex3 b y3 )2
ou seja, resolver o sistema
R
= 2(Aex1 b y1 )ex1 b + 2(Aex2 b y2 )ex2 b + 2(Aex3 b y3 )ex3 b = 0
A
R
= 2Ax1 (Aex1 b y1 )ex1 b + 2Ax2 (Aex2 b y2 )ex2 b
b
+ 2Ax3 (Aex3 b y3 )ex3 b = 0
que no linear em A e b. Esse sistema pode ser resolvido pelo mtodo de Newton-
Raphson, o que pode se tornar custoso, ou mesmo invivel quando no dispomos
de uma boa aproximao da soluo para inicializar o mtodo.
Felizmente, algumas famlias de curvas admitem uma transformao que nos
leva a um problema linear. No caso da curva y = Aebx , observe que ln y = ln A+bx.
Assim, em vez de ajustar a curva original y = Aebx a tabela de pontos, ajustamos
a curva submetida a transformao logartmica
y := a1 + a2 x = ln A + bx. (7.31)
Usamos os pontos (xj ,yj ) := (xj , ln yj ), j = 1,2,3 e resolvemos o sistema linear

y1

a1

V TV = VT
y2 ,

(7.32)
a2


y3
onde
1 x1

V = 1 x2 . (7.33)


1 x3

2
A soma do quadrado dos resduos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


206 Clculo Numrico

Exemplo 7.3.1. Encontre uma curva da forma y = Aebx que melhor ajusta os
pontos (1, 2), (2, 3) e (3, 5).

Soluo. Aplicando o logaritmo natural de ambos os lados da equao y = Aebx ,


temos
ln y = ln A + bx. (7.34)
Ento, denotando y := ln y, a1 := ln A e a2 := b, o problema reduz-se a ajustar a
reta y = a1 + a2 x aos pontos (1, ln 2), (2, ln 3) e (3, ln 5). Para tanto, resolvemos o
sistema
1 1 ln 2

a1
1 2 a = ln 3 (7.35)

a2

1 3 | {z } ln 5

| {z } | {z }
V y

por mnimos quadrados, isto ,


 1
V T V a = V T y a = V T V V T y. (7.36)

A soluo do sistema , ento, a1 = 0,217442 e a2 = 0,458145. Portanto, A =


ea1 = 1,24289 e b = a2 = 0,458145.
No Scilab, podemos resolver este problema com o seguinte cdigo:
x = [1 2 3]'
y = [2 3 5]'
V = [ones(3,1) x]
a = V\log(y) //a = inv(V'*V)*V'*log(y)
A = exp(a(1))
b = a(2)

Observao 7.3.1. Os coeficientes obtidos a partir dessa linearizao so apro-


ximados, ou seja, so diferentes daqueles obtidos quando
X aplicamos mnimos qua-
drados no linear. Observe que estamos minimizando [ln yi ln(f (xi ))]2 em vez
i
de [yi f (xi )]2 . No exemplo resolvido, a soluo do sistema no linear original
X

i
seria A = 1,19789 e b = 0,474348

Observao 7.3.2. Mesmo quando se deseja resolver o sistema no linear, a


soluo do problema linearizado pode ser usada para construir condies iniciais
para o problema no linear.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.3. APROXIMANDO PROBLEMAS NO LINEARES POR
PROBLEMAS LINEARES 207
A prxima tabela apresenta algumas curvas e transformaes que linearizam o
problema de ajuste.

Curva Transformao Problema Linearizado


y = aebx y = ln y y = ln a + bx
y = axb y = ln y y = ln a + b ln x
y = axb ecx y = ln y y = ln a + b ln x + cx
(b+cx)2
y = ae y = ln y y = ln a + b2 + bcx + c2 x2
a 1 b 1
y= y = y = + x
b+x y a a
y = A cos(x + ) x y = a cos(x) b sen (x)
conhecido a = A cos(), b = A sen ()

Exemplo 7.3.2. Encontre a funo f da forma y = f (x) = A cos(2x + ) que


ajusta a tabela de pontos

xi yi
0,0 9,12
0,1 1,42
0,2 - 7,76
0,3 - 11,13
0,4 - 11,6
0,5 - 6,44
0,6 1,41
0,7 11,01
0,8 14,73
0,9 13,22
1,0 9,93

Soluo. Usando o fato que y = A cos(2x + ) = a cos(2x) b sen (2x), onde


a = A cos() e b = A sen (), z = [ a b ]T soluo do problema

B T Bz = B T y,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


208 Clculo Numrico

onde

1. 0.

0,8090170 0,5877853





0,3090170 0,9510565



0,3090170 0,9510565
cos(2x0 ) sen (2x0 )


0,8090170 0,5877853


cos(2x1 ) sen (2x1 )

B = = 0,0000000

1,0000000 .
..
.


0,8090170 0,5877853


cos(2x10 ) sen (2x10 )



0,3090170 0,9510565


0,3090170 0,9510565




0,8090170 0,5877853



1,0000000 0,0000000

Assim, a = 7,9614704 e b = 11,405721 e obtemos o seguinte sistema:




A cos() = 7,9614704
.
A sen () = 11,405721

Observe que
A2 = 7,96147042 + 11,4057212
e, escolhendo A > 0, A = 13,909546 e
11,405721
sen () = = 0,8199923
13,909546
Assim, como cos tambm positivo, um ngulo do primeiro quadrante:

= 0,9613976

Portanto f (x) = 13,909546 cos(2x + 0,9613976). Observe que nesse exemplo a


soluo do problema linear a mesma do problema no linear.

Exerccios resolvidos
ER 7.3.1. Encontre a funo f da forma y = f (x) = b+xa
que ajusta a seguinte
tabela de pontos usando uma das transformaes tabeladas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


7.3. APROXIMANDO PROBLEMAS NO LINEARES POR
PROBLEMAS LINEARES 209

i xi yi
1 0,0 101
2 0,2 85
3 0,4 75
4 0,6 66
5 0,8 60
6 1,0 55

Soluo. Usando o fato que Y = 1


y
= ab + a1 x, z = [ b
a
1
a
]T soluo do problema

AT Az = AT Y,

onde


1 x1
1 0,0
1 x 1 0,2

2

1 x3 1 0,4


A=
=


1 x4 1 0,6



1 x5 1 0,8




1 x6 1 1,0

e


1/y1
0,0099010
1/y2 0,0117647




1/y3 0,0133333


Y =


=



1/y4 0,0151515



1/y5 0,0166667




1/y6 0,0181818

Assim, a1 = 0,0082755 e ab = 0,0100288 e, ento, a = 120,83924 e b = 1,2118696,


ou seja, f (x) = 1,2118696+x
120,83924
.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


210 Clculo Numrico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 8

Derivao numrica

Nesta seo, trataremos das estratgias numricas para aproximao de deri-


vadas de funes reais. Com as tcnicas abordadas, possvel calcular aproxi-
madamente a derivada de uma funo a partir de um conjunto discreto de pontos
{(xi , yi )}ni=1 . Comeamos discutindo as chamadas aproximaes por diferenas
finitas e, ento, as aproximaes de derivadas via ajuste ou interpolao.

8.1 Diferenas finitas


Uma diferena finita uma expresso da forma f (x + b) f (x + a), que ao ser
dividida por (ba) chama-se um quociente de diferenas. A tcnica de diferenas
finitas consiste em aproximar a derivada de uma funo via frmulas discretas
que requerem apenas um conjunto finito de pares ordenados {(xi , yi )}ni=1 , onde
geralmente denotamos yi = f (xi ).
Essas frmulas podem ser obtidas de vrias maneiras. Comeamos com a fr-
mula mais simples que pode ser obtida do clculo diferencial. Seja f uma funo
diferencivel, a derivada de f no ponto x0 , por definio,

f (x0 + h) f (x0 )
f 0 (x0 ) = lim . (8.1)
h0 h
Deste limite, tomando h 6= 0 pequeno (no muito pequeno para evitar o cance-
lamento catastrfico), esperado que possamos obter uma aproximao razovel
para f 0 (x0 ). Assim, a diferena finita progressiva de ordem 1

f (x0 + h) f (x0 )
D+,h f (x0 ) := f 0 (x0 ) (8.2)
h
uma aproximao para f 0 (x0 ).

211
212 Clculo Numrico

Exemplo 8.1.1. Usando a diferena finita progressiva de ordem 1, calcule apro-


ximaes da derivada de f (x) = cos(x) no ponto x = 1 usando h = 101 , 102 ,
103 , 104 , 1012 e 1014 . Calcule o erro |D+,h f (1) f 0 (1)| obtido para cada valor
de h.

Soluo. Usando a diferena progressiva em (8.2), devemos calcular

cos(1 + h) cos(1)
D+,h f (1) = (8.3)
h

Fazendo isso, obtemos:

h D+,h f (1) |f 0 (1) D+,h f (1)|


101 8,67062E01 2,55909E02
102 8,44158E01 2,68746E03
103 8,41741E01 2,70011E04
104 8,41498E01 2,70137E05
1012 8,41549E01 7,80679E05
1014 8,43769E01 2,29851E03

No Scilab, podemos calcular a aproximao da derivada f 0 (1) com h = 0,1


usando as seguintes linhas de cdigo:

--> deff('y = f(x)','y = cos(x)')


--> x0 = 1
--> h = 0.1
--> df = (f(x0+h) - f(x0))/h

E, similarmente, para outros valores de x0 e h.

Exploremos o Exemplo 8.1.1 um pouco mais. Observamos que, para valo-


res moderados de h, o erro |f 0 (1) D+,h f (1)| diminui linearmente com h (veja
Figura 8.1). Isto consequncia da ordem de truncamento da frmula de diferen-
as finitas aplicada (que de ordem 1). Porm, para valores muito pequenos de
h < 108 , o erro passa a aumentar quando diminumos h. Isto devido ao efeito
de cancelamento catastrfico.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.1. DIFERENAS FINITAS 213

Figura 8.1: Erro absoluto das derivadas numricas no Exemplo 8.1.1.

8.1.1 Diferenas finitas via srie de Taylor


Podemos construir frmulas de diferenas finitas para uma funo f (x) (su-
ave ) no ponto x = x0 a partir de seu polinmio de Taylor. Em alguns casos,
1

este procedimento acaba por nos fornecer, tambm, a ordem de truncamento da


frmula.

Diferena finita progressiva de ordem 1

Podemos obter uma aproximao para f 0 (x0 ) a partir da srie de Taylor

2f ()
00
f (x0 + h) = f (x0 ) + hf (x0 ) + h
0
, h > 0, (x0 ,x0 + h). (8.4)
2

Isolando f 0 (x0 ), obtemos

f (x0 + h) f (x0 ) f 00 ()
f 0 (x0 ) = h , (8.5)
| h
{z } | {z } 2
D+,h O(h)

1
Uma funo suave uma funo infinitamente continuamente diferencivel, isto , f

C (R). Uma anlise mais cuidadosa, revela que hipteses mais fracas podem ser assumidas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


214 Clculo Numrico

o que mostra que o erro de truncamento da diferena finita progressiva2

f (x0 + h) f (x0 )
D+,h f (x0 ) := (8.6)
h
de ordem h.

Diferena finita regressiva de ordem 1


Outra aproximao para a derivada primeira pode ser obtida da srie de Taylor
de f em torno de (x0 h) dada por

f 00 ()
f (x0 h) = f (x0 ) hf 0 (x0 ) + h2 , h > 0, (x0 , x0 + h). (8.7)
2
Isolando f 0 (x0 ), obtemos

f (x0 ) f (x0 h) f 00 ()
f 0 (x0 ) = +h . (8.8)
| h
{z } | {z2 }
D,h O(h)

que fornece a diferena finita regressiva3

f (x0 ) f (x0 h)
D,h f (x0 ) := , (8.9)
h
que possui erro de truncamento de ordem h.

Diferena finita central de ordem 2


Para obter uma aproximao para a derivada primeira com um erro menor,
podemos utilizar as sries de Taylor:
000 ( )
f (x0 + h) = f (x0 ) + hf 0 (x0 ) + h2 f 00 (x0 ) + h3 f 3!
+
, (8.10)
000
f (x0 h) = f (x0 ) hf 0 (x0 ) + h2 f 00 (x0 ) + h 3 f ( )
3!
(8.11)

Fazendo a primeira equao menos a segunda, obtemos

f 000 (+ ) f 000 ( )
!
f (x0 + h) f (x0 h) = 2hf 0 (x0 ) + h3 . (8.12)
3!
2
Tambm chamada de diferena finita progressiva de dois pontos ou diferena pra frente.
3
Tambm chamada de diferena regressiva de dois pontos ou diferena pra trs.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.1. DIFERENAS FINITAS 215

Dividindo por 2h e isolando f 0 (x0 ) obtemos

f (x0 + h) f (x0 h) f 000 (+ ) f 000 ( )


!
f (x0 ) =
0
h2 . (8.13)
| 2h
{z } 2 3!
| {z }
D0,h
O(h2 )

Assim, a diferena finita central4

f (x0 + h) f (x0 h)
D0,h f (x0 ) := , (8.14)
2h
uma aproximao para f 0 (x0 ) com erro de truncamento de ordem h2 , ou sim-
plesmente ordem 2.
1
Exemplo 8.1.2. Calcule a derivada numrica da funo f (x) = e 2 x no ponto
x = 2 usando a diferena progressiva, diferena regressiva e diferena central com
h = 101 , h = 102 e h = 104 . Tambm, calcule o erro absoluto da aproximao
obtida em cada caso.

Soluo. Usando a diferena progressiva, devemos calcular


1 1
f (x + h) f (x) e 2 (x+h) e 2 x
D+,h = = . (8.15)
h h
Com a diferena regressiva, calculamos
1 1
f (x) f (x h) e 2 x e 2 (xh)
D,h = = . (8.16)
h h
Por fim, usando a diferena central temos
1 1
f (x + h) f (x h) e 2 (x+h) e 2 (xh)
D0,h = = . (8.17)
2h 2h
As aproximaes e os erros absolutos calculados em cada caso esto apresen-
tados na seguinte tabela:

h D+,h f (2) Erro D,h Erro D0,h Erro


101 1,39369 3,5E02 1,32572 3,3E02 1,35971 5,7E04
102 1,36254 3,4E03 1,35575 3,4E03 1,35915 5,7E06
104 1,35917 3,4E05 1,35911 3,4E05 1,35914 5,7E10

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


216 Clculo Numrico

Figura 8.2: Erro absoluto das derivadas numricas no Exemplo 8.1.2.

Observao 8.1.1. O experimento numrico realizado no Exemplo 8.1.2, nos


mostra que o erro absoluto na derivao numrica no da ordem do erro de
truncamento. Entretanto, este erro tende a variar com h na mesma ordem do erro
de truncamento. A Figura 8.1.2 apresenta o erro absoluto das derivadas numricas
computadas para o Exemplo 8.1.2. Note que, devido ao efeito de cancelamento
catastrfico, o erro absoluto deixa de variar na ordem do erro de truncamento para
valores muito pequenos de h.
Exemplo 8.1.3. Estime o erro absoluto no clculo da derivada de f (x) = ex
para x > 0 utilizando a diferena progressiva.
Soluo. Da Equao 8.5, temos:
f 00 ()
f (x) = D+,h f (x) h
0
, > 0, (8.18)
2
ou seja:
f 00 ()

|f (x) D+,h f (x)| =
0
h, > 0. (8.19)

2

Agora, como |f 00 (x)| = |ex | < 1 para x > 0, conclumos que:


1
|f 0 (x) D+,h f (x)| h, x > 0. (8.20)
2
4
Tambm chamada de diferena finita central de trs pontos. Note que o ponto f (x0 ) possui
coeficiente 0, por isso 3 pontos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.1. DIFERENAS FINITAS 217

8.1.2 Erros de arredondamento


Para entender como os erros de arredondamento se propagam ao calcular as
derivadas numricas vamos analisar a frmula de diferenas finitas progressiva
f (x + h) f (x)
D+,h f (x) = . (8.21)
h
Nesse contexto temos o valor exato f 0 (x) para a derivada, a sua aproximao
numrica D+,h f (x) e a representao em nmero de mquina do operador D+,h f (x)
que denotaremos por D+,h f (x). Denotando por (x,h) o erro de arredondamento
ao calcularmos a derivada, vamos assumir que

f (x + h) f (x)
D+,h f (x) = D+,h f (x)(1 + (x,h)) = (1 + (x,h)). (8.22)
h
Tambm, consideremos

|f (x + h) f (x + h)| = (x,h) (8.23)

e
|f (x) f (x)| = (x,0) , (8.24)
onde f (x + h) e f (x) so as representaes em ponto flutuante dos nmeros f (x+h)
e f (x), respectivamente.
Ento, da Equao (8.22), a diferena do valor da derivada e sua aproximao
representada em ponto flutuante pode ser estimada por:

f (x + h) f (x)


f (x) D+,h f (x) = f (x) (1 + (x,h)) . (8.25)
0 0
h

Podemos reescrever o lado direito desta equao, da seguinte forma

f (x + h) f (x) f (x + h) f (x + h)


f (x) D+,h f (x) = f (x) + (8.26)
0 0
h h
f (x) f (x)
!

+ (1 + ) (8.27)

h
f (x + h) f (x) f (x + h) f (x + h)


= f (x) + (8.28)
0

h h
f (x) f (x)
!

+ (1 + ) . (8.29)

h

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


218 Clculo Numrico

Ento, separando os termos e estimando, obtemos:


f (x + h) f (x) f (x + h) f (x + h)


f (x) D+,h f (x) f (x) + (8.30)
0 0



h h
f (x) f (x) f (x + h) f (x)
!
+ |1 + | + (8.31)


h h
!

M h + + |1 + | + |f 0 (x)| (8.32)
h h
2
!
Mh + |1 + | + |f 0 (x)| (8.33)
h
onde
1
M= max |f 00 (y)|
2 xyx+h
est relacionado com o erro de truncamento.
Por fim, obtemos a seguinte estimativa para o erro absoluto na computao da
derivada numrica:
2
!

f (x) D+,h f (x) M h + |1 + | + |f 0 (x)|. (8.34)
0
h
Esta estimativa mostra que se o valor de h for muito pequeno o erro ao calcular
a aproximao numrica cresce. Isso nos motiva a procurar o valor timo de h que
minimiza o erro.
Exemplo 8.1.4. No Exemplo 8.1.2, computamos a derivada numrica da funo
1
f (x) = e 2 x no ponto x = 2 usando as frmulas de diferenas finitas progressivas,
regressivas e central. A Figura 8.2, mostra que, para valores h muito pequenos,
os erros de arredondamento passam a dominar os clculos e, por consequncia, o
erro da derivada numrica passa a aumentar. Pela figura, podemos inferir que a
escolha tima de h para as frmulas progressiva e regressivas h 107 . Agora,
para a frmula central, h 105 parece ser a melhor escolha.
Observao 8.1.2. Note que a estimativa (8.34), mostra que o erro na compu-
tao da derivada numrica depende da funo que est sendo derivada. Assim,
o h timo depende no somente da frmula de diferenas finitas, mas tambm da
funo a ser derivada.

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.1. DIFERENAS FINITAS 219

ER 8.1.1. Aproxime a derivada de f (x) = sen (2x) x2 no ponto x = 2 usando a


frmula de diferenas finitas progressiva de ordem 1 com: a) h = 0,1 e b) h = 0,01.
Compute, tambm, o erro absoluto de cada aproximao computada.
Soluo. A frmula de diferenas finitas de ordem 1 para uma funo y = f (x)
em um ponto x = x0 dada por:
f (x0 + h) f (x0 )
D+,h f (x0 ) = . (8.35)
h
Substituindo f (x) = sen (2x) x2 e x0 = 2, obtemos:

(sen (2(x0 + h)) (x0 + h)2 ) (sen (2x0 ) x20 )


D+,h f (x0 ) =
h
sen (2(x0 + h)) x20 + 2x0 h + h2 sen (2x0 ) + x20 )
= (8.36)
h
sen (4 + 2h) + 4h + h2 sen (4))
= .
h
Ento, tomando h = 0,1, podemos computar a derivada numrica e o erro associ-
ado:

D+,0,1 f (2) = 5,247733, |f 0 (2) D+,0,1 f (2)| = 5,96 102 , (8.37)

onde f 0 (x) = 2 sen (2x) 2x a derivada analtica. Tomando h = 0,01 temos:

D+,0,1 f (2) = 5,302065, |f 0 (2) D+,0,1 f (2)| = 5,22 103 . (8.38)

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 8.1.1. Use os esquemas numricos de diferena finita regressiva de ordem 1,


diferena finita progressiva de ordem 1 e diferena finita central de ordem 2 para
aproximar as seguintes derivadas:
a) f 0 (x) onde f (x) = sen (x) e x = 2.

b) f 0 (x) onde f (x) = ex e x = 1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


220 Clculo Numrico

Use h = 102 e h = 103 e compare com os valores obtidos atravs da avaliao


numrica das derivadas exatas.
E 8.1.2. Expanda a funo suave f (x) em um polinmio de Taylor adequado
para obter as seguintes aproximaes:

a) f 0 (x) = f (x+h)f (x)


h
+ O(h)

b) f 0 (x) = f (x)f (xh)


h
+ O(h)

c) f 0 (x) = f (x+h)f (xh)


2h
+ O(h2 )

E 8.1.3. Use a expanso da funo f (x) em torno de x = 0 em polinmios de


Taylor para encontrar os coeficientes a1 , a2 e a3 tais que

a) f 0 (0) = a1 f (0) + a2 f (h) + a3 f (2h) + O(h2 )

b) f 0 (0) = a1 f (0) + a2 f (h) + a3 f (2h) + O(h2 )

c) f 0 (0) = a1 f (h1 ) + a2 f (0) + a3 f (h2 ) + O(h2 ), |h1 |, |h2 | = O(h)

E 8.1.4. As tenses na entrada, vi , e sada, vo , de um amplificador foram


medidas em regime estacionrio conforme tabela abaixo.

0,0 0,50 1,00 1,50 2,00 2,50 3,00 3,50 4,00 4,50 5,00
0,0 1,05 1,83 2,69 3,83 4,56 5,49 6,56 6,11 7,06 8,29

onde a primeira linha a tenso de entrada em volts e a segunda linha tenso


de sada em volts. Sabendo que o ganho definido como
vo
. (8.39)
vi
Calcule o ganho quando vi = 1 e vi = 4.5 usando as seguintes tcnicas:

a) Derivada primeira numrica de primeira ordem usando o prprio ponto e o


prximo.

b) Derivada primeira numrica de primeira ordem usando o prprio ponto e o


anterior.

c) Derivada primeira numrica de segunda ordem usando o ponto anterior e o


prximo.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.2. DIFERENA FINITA PARA DERIVADA SEGUNDA 221

d) Derivada primeira analtica da funo do tipo v0 = a1 vi + a3 vi3 que melhor


se ajusta aos pontos pelo critrio dos mnimos quadrados.

Caso a b c d
vi = 1
vi = 4.5

E 8.1.5. Estude o comportamento da derivada de f (x) = ex no ponto


2

x = 1,5 quando h fica pequeno.

8.2 Diferena finita para derivada segunda


Para aproximar a derivada segunda, considere as expanses em srie de Taylor
h2 00 h3
f (x0 + h) = f (x0 ) + hf 0 (x0 ) + f (x0 ) + f 000 (x0 ) + O(h4 )
2 6
h2 00 h3
f (x0 h) = f (x0 ) hf 0 (x0 ) + f (x0 ) f 000 (x0 ) + O(h4 ).
2 6
Somando as duas expresses, temos:

f (x0 + h) + f (x0 h) = 2f (x0 ) + h2 f 00 (x0 ) + O(h4 )

ou seja, uma aproximao de segunda ordem para a derivada segunda em x0


f (x0 + h) 2f (x0 ) + f (x0 h)
f 00 (x0 ) = + O(h2 ) := D0,h
2
f (x0 ) + O(h2 ),
h2
onde
f (x0 + h) 2f (x0 ) + f (x0 h)
2
D0,h f (x0 ) = .
h2
Exemplo 8.2.1. Calcule a derivada segunda numrica de f (x) = ex em x = 1,5
2

para h = 0,1, h = 0,01 e h = 0,001.


Soluo. A tabela mostra os resultados:

h h = 0,1 h = 0,01 h = 0,001


2
D0,h f (1,5) 0,7364712 0,7377814 0,7377944

Observe que f 00 (x) = (4x2 2)ex e f 00 (1,5) = 0,7377946.


2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


222 Clculo Numrico

Exerccios resolvidos

Esta seo carece de exerccios resolvidos. Participe da sua escrita.


Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

Esta seo carece de exerccios. Participe da sua escrita.


Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 8.2.1. Use a expanso da funo f (x) em torno de x = 0 em polinmios de


Taylor para encontrar os coeficientes a1 , a2 e a3 tais que

a) f 00 (0) = a1 f (0) + a2 f (h) + a3 f (2h) + O(h)

b) f 00 (0) = a1 f (0) + a2 f (h) + a3 f (2h) + O(h)

8.3 Obteno de frmulas por polinmios inter-


poladores
Para aproximar a derivada de uma funo f (x) em x0 , x1 ou x2 usaremos os
trs pontos vizinhos (x0 ,f (x0 )), (x1 ,f (x1 )) e (x2 ,f (x2 )). Uma interpolao usando
polinmios de Lagrange para esses trs pontos da forma:

(x x1 )(x x2 ) (x x0 )(x x2 )
f (x) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
(8.42)
(x x0 )(x x1 ) f ((x))
000
+ f (x2 ) + (x x0 )(x x1 )(x x2 ).
(x2 x0 )(x2 x1 ) 6

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.3. OBTENO DE FRMULAS POR POLINMIOS
INTERPOLADORES 223
A derivada de f (x)

2x x1 x2 2x x0 x2
f 0 (x) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
2x x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
(8.43)
f ((x))
000
+ ((x x1 )(x x2 ) + (x x0 )(2x x1 x2 ))
6
f 000 ((x))
!
+ Dx (x x0 )(x x1 )(x x2 ).
6

Trocando x por x0 , temos

2x0 x1 x2 2x0 x0 x2
f 0 (x0 ) = f (x0 ) + f (x1 )
(x0 x1 )(x0 x2 ) (x1 x0 )(x1 x2 )
2x0 x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
(8.44)
f ((x0 ))
000
+ ((x0 x1 )(x0 x2 ) + (x0 x0 )(2x0 x1 x2 ))
6
f 000 ((x0 ))
!
+ Dx (x0 x0 )(x0 x1 )(x0 x2 ).
6

Considerando uma malha equiespaada onde x1 = x0 + h e x2 = x0 + 2h, temos:

3h 2h
f 0 (x0 ) = f (x0 ) + f (x1 )
(h)(2h) (h)(h)
h f ((x0 ))
000
+ f (x2 ) + ((h)(2h)) (8.45)
(2h)(h) 6
1 3 1 f 000 ((x0 ))
 
= f (x0 ) + 2f (x1 ) f (x2 ) + h2
h 2 2 3

Similarmente, trocando x por x1 ou trocando x por x2 na expresso (8.43), temos


outras duas expresses

1 1 1 f 000 ((x1 ))
 
f (x1 ) =
0
f (x0 ) + f (x2 ) + h2 (8.46)
h 2 2 6
1 1 3 f 000 ((x2 ))
 
f 0 (x2 ) = f (x0 ) 2f (x1 ) + f (x2 ) + h2 (8.47)
h 2 2 3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


224 Clculo Numrico

Podemos reescrever as trs frmulas da seguinte forma:

1 3 1 f 000 ((x0 ))
 
f (x0 ) =
0
f (x0 ) + 2f (x0 + h) f (x0 + 2h) + h2 (8.48)
h 2 2 3
1 1 1 f 000 ((x0 + h))
 
f 0 (x0 + h) = f (x0 ) + f (x0 + 2h) + h2 (8.49)
h 2 2 6
1 1 3 f 000 ((x0 + 2h))
 
f (x0 + 2h) =
0
f (x0 ) 2f (x0 + h) + f (x0 + 2h) + h2 (8.50)
h 2 2 3
ou ainda
1 f 000 ((x0 ))
f 0 (x0 ) = [3f (x0 ) + 4f (x0 + h) f (x0 + 2h)] + h2 (8.51)
2h 3
1 f 000 ((x0 ))
f 0 (x0 ) = [f (x0 + h) f (x0 h)] + h2 (8.52)
2h 6
1 f 000 ((x0 ))
f 0 (x0 ) = [f (x0 2h) 4f (x0 h) + 3f (x0 )] + h2 (8.53)
2h 3
Observe que uma das frmulas exatamente as diferenas centrais obtida anteri-
ormente.
Analogamente, para construir as frmulas de cinco pontos tomamos o polinmio
de Lagrange para cinco pontos e chegamos a cinco frmulas, sendo uma delas a
seguinte:

1 h4 (5)
f (x0 ) =
0
[f (x0 2h) 8f (x0 h) + 8f (x0 + h) f (x0 + 2h)]+ f ((x0 ))
12h 30
(8.54)

Exemplo 8.3.1. Calcule a derivada numrica de f (x) = ex em x = 1,5 pelas


2

frmulas de trs e cinco pontos para h = 0,1, h = 0,01 e h = 0,001.

Soluo. No Scilab, podemos computar estas derivadas numricas com h = 0.1


da seguinte forma:
--> deff('y=f(x)','y=exp(-x^2)')
--> x=1.5
--> h=0.1
--> //progressivas de ordem 1
--> dp1 = (f(x+h)-f(x))/h
--> //regressivas de ordem 1
--> dr1 = (f(x)-f(x-h))/h
--> //central de ordem 2
--> dc2 = (f(x+h)-f(x-h))/(2*h)
--> //progressivas de ordem 2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.3. OBTENO DE FRMULAS POR POLINMIOS
INTERPOLADORES 225

Diferenas Finitas h = 0,1 0,01 0,001


Progressiva O(h) 0,2809448 0,3125246 0,3158289
Regressiva O(h) 0,3545920 0,3199024 0,3165667
Progressiva O(h2 ) 0,3127746 0,3161657 0,3161974
Central O(h2 ) 0,3177684 0,3162135 0,3161978
Regressiva O(h2 ) 0,3135824 0,3161665 0,3161974
Central O(h4 ) 0,3162384 0,3161977 0,31619767

Tabela 8.1: Derivadas numricas de f (x) = ex em x = 1,5. Veja o Exemplo 8.3.1.


2

--> dp2 = (-3*f(x)+4*f(x+h)-f(x+2*h))/(2*h)


--> //regressivas de ordem 2
--> dr2 = (f(x-2*h)-4*f(x-h)+3*f(x))/(2*h)
--> //central de ordem 4
--> dc4 = (f(x-2*h)-8*f(x-h)+8*f(x+h)-f(x+2*h))/(12*h)

e, anlogo, para h = 0.01 e h = 0.001. O valor analtico da derivada f 0 (1,5)


0,3161976736856. A Tabela 8.1 mostra os resultados computados com as deri-
vadas numricas.

8.3.1 Exerccios resolvidos


Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


226 Clculo Numrico

8.4 Frmulas de diferenas finitas


Veremos nessa seo uma outra maneira de obter frmulas de diferenas finitas
para derivadas de qualquer ordem de tal forma que elas possuam alta ordem de
preciso.
Dados n + 1 pontos {x1 , x2 , . . . , xn }, queremos obter uma aproximao para a
derivada de f (x) calculada em x do tipo

f 0 (x ) c1 f (x1 ) + c2 f (x2 ) + . . . + cn f (xn ) (8.55)

que seja exata para polinmios at ordem n 1.


Seja q(x) = c1 1 (x) + c2 2 (x) + . . . + cn n (x) o polinmio de ordem n que
aproxima f (x). Fixe a base k (x) = xk . Como a regra (8.55) deve ser exata para
qualquer q(x) at ordem n 1, ento tambm deve ser exata para qualquer funo
da base. Substituindo f (x) por 1 (x) = 1 em (8.55) obtemos

01 (x)|x = (1)0 |x = (8.56)


0 = c1 1 (x1 ) + c2 1 (x2 ) + . . . + cn 1 (xn ) (8.57)
0 = c1 + c2 + . . . + cn (8.58)

Da mesma forma para k = 1, . . . ,n 1, obtemos

(x)0x = 1 = c1 x 1 + c2 x 2 + . . . + cn x n (8.59)
(x2 )0x = 2x = c1 x21 + c2 x22 + . . . + cn x2n (8.60)
(x3 )0x = 3(x )2 = c1 x31 + c2 x32 + . . . + cn x3n (8.61)
.. .
. = .. (8.62)
(xn1 )0x = (n 1)(x ) n2
= c1 xn1
1 + c1 x1n1 + . . . + cn xnn1 (8.63)

que pode ser escrito na forma matricial



1 1 ... 1 c1 0

x1 x2 ... xn c 1

2


= 2x (8.64)


x21 x22 ... x2n
c3




.. .. .. .. ..

. . .
. .




xn1
1 xn1
2 . . . xnn1 cn (n 1)(x )n2

Resolvendo o sistema, obtemos os coeficientes ck para a regra de diferenciao.


Exemplo 8.4.1. Sejam {x1 , x2 , x3 } = {h, 0, h} e x = x2 = 0, obtenha uma
regra de diferenciao para aproximar f 0 (x ).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.4. FRMULAS DE DIFERENAS FINITAS 227

Soluo. A regra ter a forma

f 0 (x ) c1 f (x1 ) + c2 f (x2 ) + c3 f (x3 ) (8.65)

Considere a base polinomial {1 (x), 2 (x), 3 (x)} = {1, x, x2 } e substitua f (x) por
k (x) obtendo

(1)0x=0 = 0 = c1 (1) + c2 (1) + c3 (1) (8.66)


(x)x=0 = 1 = c1 (h) + c2 (0) + c3 (h)
0
(8.67)
(x2 )0x=0 = 0 = c1 (h)2 + c2 (0)2 + c3 (h)2 (8.68)

que pode ser escrito na forma matricial



1 1 1 c1 0

h 0 h = 1 (8.69)
c2



0 h2 0

h2 c3

Resolvendo o sistema, obtemos {c1 , c2 , c3 } = { 2h


1
, 0, 2h
1
} fornecendo a regra
1 1
f 0 |x=x1 f (x1 ) + f (x3 ) (8.70)
2h 2h
f (x3 ) f (x1 )
(8.71)
2h

Exerccios resolvidos
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
https://www.ufrgs.br/numerico/participe.html

Exerccios

E 8.4.1. Seja {x0 , x1 , x2 } = {0, h, 2h} e x = x0 = 0, obtenha uma regra


unilateral de diferenciao para aproximar f 0 (x0 ).

E 8.4.2. Seja {x0 , x1 , x2 } = {h, 0, h} e x = x1 = 0, obtenha uma regra de


diferenciao para aproximar f 00 (x ).

E 8.4.3. Seja {x0 , x1 , . . . , x4 } = {2h, h, 0, h, 2h} e x = 0, obtenha uma


regra de diferenciao para aproximar f 0 (x ).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


228 Clculo Numrico

E 8.4.4. Seja [x0 ,x1 , . . . ,x4 ] = [2h, h,0,h,2h] e x = 0, obtenha uma regra
de diferenciao para aproximar f 00 (x ).

E 8.4.5. Seja [x0 ,x1 , . . . ,x4 ] = [0,h,3h,6h,10h] e x = 0, obtenha uma regra de


diferenciao para aproximar f 0 (x ).

8.5 Derivada via ajuste ou interpolao

Dados os valores


 de uma funo em um conjuntos de pontos {(xi ,yi )}N i=1 , as
derivadas dx podem ser obtidas atravs da derivada de uma curva que melhor
dy
i
ajusta ou interpola os pontos. Esse tipo de tcnica necessrio quando os pontos
so muito espaados entre si ou quando a funo oscila muito. Por exemplo, dados
os pontos (0,1), (1,2), (2,5), (3,9), a parbola que melhor ajusta os pontos

Q(x) = 0,95 + 0,45x + 0,75x2 .

Usando esse ajuste para calcular as derivadas, temos:

Q0 (x) = 0,45 + 1,5x

y 0 (x1 ) Q0 (x1 ) = 0,45, y 0 (x2 ) Q0 (x2 ) = 1,95, (8.72)


y 0 (x3 ) Q0 (x3 ) = 3,45 e y 0 (x4 ) Q0 (x4 ) = 4,95 (8.73)

Agora olhe o grfico da seguinte tabela de pontos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


8.5. DERIVADA VIA AJUSTE OU INTERPOLAO 229

x y
0 1,95
1 1,67
2 3,71
3 3,37
4 5,12
5 5,79
6 7,50
7 7,55
8 9,33
9 9,41
10 11,48

12

11

10

1
0 1 2 3 4 5 6 7 8 9 10

Observe que as derivadas calculadas por diferenas finitas oscilam entre um


valor pequeno e um grande em cada intervalo e alm disso, a frmula progressiva
difere da regressiva significantemente. Por exemplo, por diferenas regressivas
f 0 (7) (7,557,50)
1
= 0,05 e por diferenas progressivas f 0 (7) (9,337,55)
1
= 1,78. A
melhor forma de calcular a derivada aqui fazer um ajuste de curva. A reta que

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


230 Clculo Numrico

melhor ajusta os dados da tabela y = f (x) = 1,2522727 + 0,9655455x. Usando


esse ajuste, temos f 0 (7) 0,9655455.

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

8.6 Exerccios finais


Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
https://www.ufrgs.br/numerico/participe.html

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 9

Integrao numrica

Neste captulo discutiremos tcnicas numricas para aproximar integrais de-


finidas de funes reais. Mais precisamente, considere o problema de calcular (ou
aproximar) a integral de f (x) no intervalo [a,b], ou seja,
Z b
I= f (x) dx. (9.1)
a

Geometricamente, I corresponde a rea1 entre o grfico de f (x) e o eixo das


abscissas (eixo x). Uma maneira de aproximar I consiste em subdividir o intervalo
[a,b] em n 1 subintervalos a partir de um conjunto ordenado de pontos a = x1 <
x2 < ... < xn = b. Ento, temos:
Z b
I= f (x) dx
Zax2 Z x3 Z xn
= f (x) dx + f (x) dx + + f (x) dx (9.2)
x1 x2 xn1
n1
X Z xi+1
= f (x) dx
i=1 xi

Agora, supondo que o tamanho de cada cada subintervalo hi = xi+1 xi su-


ficientemente pequeno, podemos aproximar f (x) no intervalo (xi , xi+1 ) por f (xi )
escolhendo arbitrariamente xi [xi , xi+1 ]. Desta forma, temos
Z xi+1
f (x) dx f (xi )hi . (9.3)
xi

Isto equivalente a aproximar a rea entre o grfico de f (x) e o eixo x restrito


ao intervalo [xi , xi+1 ] pelo retngulo de base hi e altura f (xi ) (veja Figura 9.1).
1
rea lquida

231
232 Clculo Numrico

Figura 9.1: Aproximao da integral definida de uma funo.

Consequentemente, de (9.2) temos


Z b n1
X Z xi+1
I = f (x) dx = f (x) dx (9.4)
a i=1 xi
n1
f (xi )hi . (9.5)
X
I
i=1

Exemplo 9.0.1. A Figura 9.2 mostra um exemplo quando f (x) = x2 + 1, 0


x 2. Temos a aproximao por um retngulo com base h1 = 2, depois com dois
retngulos de base h2 = 1 e, finalmente com quatro retngulos de bases h3 = 0,5.
Os valores aproximados para a integral so dados na seguinte tabela:
Z 2
(x2 + 1) dx
0
h1 = 2 h1 f (1) = 4
h2 = 1 h2 f (0,5) + h2 f (1,5) = 4,5
h3 = 0,5 4,625
h4 = 0,25 4,65625

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


233

4.5

3.5

2.5

1.5

0.5

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figura 9.2: Aproximao por retngulos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


234 Clculo Numrico

Observe que:
#2
8
"
Z 2
x3
(x + 1) dx =
2
+x = + 2 = 4,6666667. (9.6)
0 3 0
3

Uma tal aproximao de uma integral definida


Z b
f (x) dx f (xi )wi , (9.7)
X
a i

chamada de quadratura numrica, onde os nmeros xi denota seu i-simo ponto


e wi seu i-simo peso. Nas prximas sees, mostraremos como obter diferentes
quadraturas numricas e discutiremos sobre suas caractersticas.

9.1 Somas de Riemann


O mtodo mais simples de aproximar
Z b
I= f (x) dx. (9.8)
a

com apenas um intervalo, aproximar f (x) por um polinmio constante no in-


tervalo [a,b], ou seja, f (x) = c. Se aproximarmos f (x) pelo ponto a esquerda do
intervalo temos que f (x) f (a) e
Z b
I = f (x) dx
a
Z b
f (a) dx
a
Z b
= f (a) dx
a
= f (a)(b a)

Esta a regra de quadratura local para 1 intervalo.


Quando subdividimos [a,b] em n intervalos com tamanho h = (b a)/n nos
pontos xi = a + (i 1)h , em cada intervalo i aproximamos a rea por

Si f (xi )h (9.9)

tal que a rea total ser aproximada pelas somas de Riemann esquerda
n1 n1
S= Si = f (xi )h (9.10)
X X

i=1 i=1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.1. SOMAS DE RIEMANN 235

Podemos obter uma frmula similar se usarmos os pontos a direita do intervalo,


ou seja, as somas de Riemann direita
n1
S= f (xi+1 )h (9.11)
X

i=1

Uma terceira opo utilizar o ponto mdio do intervalo [xi ,xi+1 ] o qual fornece
a regra do ponto mdio
n1
xi + xi+1
S= f (i )h, i = (9.12)
X
.
i=1 2

Exemplo 9.1.1. A integral de f (x) = ex sen (x) no intervalo [0,1, 0,2]


Z 1
f (x) dx 2,45837E1. (9.13)
0

Usando somas de Riemann esquerda com 10 intervalos, obtemos


Z 1 10
f (x) dx f (xi )h = 2,29433 101 . (9.14)
X
0 i=1

onde h = 0,1 e xi = (i 1)h. Analogamente, usando somas de Riemann direita,


obtemos
Z 1 10
f (x) dx f (xi+1 )h = 2,60389 101 . (9.15)
X
0 i=1

E, usando a regra do ponto mdio, temos


Z 1
xi + xi+1
10  
f (x) dx h = 2,46300 101 . (9.16)
X
f
0 i=1 2

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


236 Clculo Numrico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

9.2 Regras de Newton-Cotes


O mtodo bsico para encontrar as regras de integrao consiste em aproximar
a integral de f por uma combinao linear de n valores de yi := f (xi ), ou seja,
Z b n
I= f (x) dx (9.17)
X
Ai yi .
a i=1

Podemos obter os coeficientes Ai aproximando a funo f pelo polinmio de


Lagrange pn1 que interpola {(xi ,yi )}ni=1 , tal que,

f (x) = pn (x) + ELAG


n
(x) (9.18)
n
= yi Li (x) + ELAG
n
(x) (9.19)
X

i=1

onde o erro na interpolao de Lagrange

f (n) ((x)) Yn
n
ELAG (x) = (x xi ). (9.20)
n! i=1

Substituindo na integral, obtemos:


n
Z b " Z b # Z b
f (x) dx = Li (x) dx + n
(x) dx. (9.21)
X
yi ELAG
a i=1 a a

A frmula de quadratura ento


Z b n
f (x) dx (9.22)
X
Ai yi ,
a i=1

onde
Z b
Ai = Li (x) dx. (9.23)
a

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.2. REGRAS DE NEWTON-COTES 237

9.2.1 Regra do ponto mdio


A regra do ponto mdio (9.12) uma quadratura de Newton-Cotes de um
ponto. Neste caso, temos x1 = (a + b)/2 e o polinmio interpolador o polinmio
de grau zero
p(x) = f (x1 )L1 (x) = f (x1 ), (9.24)
uma vez que L1 (x) 1. Ento, temos
Z b Z b
f (x) dx p(x) dx
a a
Z b
= f (x1 ) dx
a
Z b (9.25)
= f (x1 ) dx
a
a+b
= hf ( ),
2
onde h = b a.

Exemplo 9.2.1. Usando a regra do ponto mdio, temos


Z 0,3
a+b
ex sen (x) dx f ( )
0,1 2 (9.26)
= 0,2e0,2 sen (0,2) = 3,25313 102 .

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

9.2.2 Regra do trapzio


A regra do trapzio consiste em aproximar a funo f (x) por um polinmio
de grau 1. O nome do mtodo vem do fato que a regio entre o eixo x e a reta
que liga o pontos sobre o grfico da funo nos extremos do intervalo forma um
trapzio.
Aqui, utilizamos x1 := a, x2 := b, h = x2 x1 e a notao yi = f (xi ), obtemos
atravs da interpolao de Lagrange o polinmio

p1 (x) = y1 L1 (x) + y2 L2 (x) (9.27)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


238 Clculo Numrico

Aproximando f (x) por p1 (x) e integrando, obtemos:

Z b Z b
f (x) dx p1 (x) dx
a a
Z b
= y1 L1 (x) + y2 L2 (x) dx
a
Z b Z b
= y1 L1 (x) dx + y2 L2 (x) dx
a a
= A1 y1 + A2 y2 ,

onde
# x2
(x x1 )2
"
Z b
x x1
A1 = dx =
a x2 x1 2h x1
(x2 x1 )2 h2 1
= = = h.
2h 2h 2

Da mesma forma,

Z b
(x x2 ) 1
A2 = dx = h,
a (x1 x2 ) 2

de onde obtemos a regra do trapzio dada por:


Z b
1 1
 
f (x) dx f (a) + f (b) h. (9.28)
a 2 2

Erro na regra do trapzio

O erro na regra do trapzio pode ser obtido integrando o erro da interpolao


de Lagrange,

Z b Z b
f 00 ((x))
ET RAP = 2
ELAG (x) dx = (x x1 )(x x2 ) dx.
a a 2!

Pelo teorema do valor mdio, existe a b tal que

f 00 () Z b
ET RAP = (x x1 )(x x2 ) dx,
2! a

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.2. REGRAS DE NEWTON-COTES 239

portanto
# x2
f 00 () x3 x2
"
ET RAP = (x2 + x1 ) + x1 x2 x
2 3 2 x1
f ()
00
!
x32 x22 x3 x2
= (x2 + x1 ) + x1 x2 x2 1 + 1 (x2 + x1 ) x1 x2 x1
2 3 2 3 2
f () 2x2 3x2 (x2 + x1 ) + 6x2 x1 2x1 + 3x21 (x2 + x1 ) 6x2 x21
00 3 2 2 3
=
2 6
f 00 ()  3  f 00 ()
= x1 3x21 x2 + 3x22 x1 x32 = (x1 x2 )3
12 12
f 00 () 3
= h.
12
Assim, o erro na regra do trapzio
f 00 () 3
ET RAP =
h = O(h3 ).
12
Exemplo 9.2.2. Use a regra do trapzio para aproximar a integral
Z 1
2
ex dx.
0
Depois divida a integral em duas
Z 1/2 Z 1
x2 2
e dx + ex dx.
0 1/2

e aplique a regra do trapzio em cada uma delas. Finalmente, repita o processo


dividindo em quatro integrais.
Usando o intervalo [0,1], temos h = 1, x0 = 0 e x1 = 1. A regra do trapzio
resulta em Z 1
2 1
ex dx (e0 + e1 ) = 0,6839397.
0 2
Usando dois intervalos, [0,1/2] e [1/2,1] e usando a regra de Simpson em cada um
dos intervalos, temos:
Z 1
2 0,5  0  0,5  1/4 
ex dx e + e1/4 + e + e1
0 2 2
= 0,4447002 + 0,2866701 = 0,7313703.
Agora, usando quatro intervalos, temos
Z 1
2 0,25  0  0,25  1/16 
ex dx e + e1/16 + e + e1/4
0 2 2
0,25  1/4  0,25  9/16 
+ e + e9/16 + e + e1
2 2
= 0,7429841.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


240 Clculo Numrico

9.2.3 Regra de Simpson


Na regra de Simpson aproximamos f por um polinmio de grau 2, portanto
precisamos de trs pontos do intervalo [a,b]. Utilizando, por definio,

a+b
x1 := a, x2 := e x3 := b (9.29)
2
com h = x3 x
2
1
, isto , a distncia entre dois pontos consecutivos, podemos obter
o polinmio de Lagrange

p2 (x) = y1 L1 (x) + y2 L2 (x) + y3 L3 (x), (9.30)

onde yi = f (xi ), i = 1,2,3.


Aproximando f (x) por p2 (x) e integrando temos
Z b Z b
f (x) dx p2 (x) dx (9.31)
a a
Z b
= y1 L1 (x) + y2 L2 (x) + y3 L3 (x) dx (9.32)
a
= y1 A1 + y2 A2 + y3 A3 (9.33)

onde
Z b
Ai = Li (x) dx (9.34)
a

Calculando essas integrais obtemos a regra de Simpson:

1 4 a+b 1
Z b ! !
f (x) dx = f (a) + f + f (b) h. (9.35)
a 3 3 2 3

Exemplo 9.2.3. Obtenha os coeficientes Ai do mtodo de Simpson integrando os


polinmios de Lagrange Li (x).
Fazendo uma translao para a origem (subtraindo x1 de x2 e x3 )
Z x3
(x x2 )(x x3 )
A1 = dx
x1 (x1 x2 )(x1 x3 )
Z 2h
(x h)(x 2h) 1 Z 2h
= dx = 2 (x h)(x 2h) dx
0 (0 h)(0 2h) 2h 0
1 Z 2h  2 1 1 3 3 2
   h
= x 3hx + 2h dx = 2
2
x hx + 2h x
2

2h 0
2 2h 3 2 0
1 1 3 3 3 h
 
= h h + 2h3 = .
2h2 3 2 3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.2. REGRAS DE NEWTON-COTES 241

Apesar de longa, apenas a integral de um polinmio de grau 2. De forma seme-


lhante podemos obter

4 1
A2 = h, A3 = h
3 3

Assim, lembrando que h = ba


2
, temos:

a+b
" ! #
Z b
ba
f (x)dx f (a) + 4f + f (b) . (9.36)
a 6 2

Erro na regra de Simpson

Se usarmos a mesma metodologia da regra dos trapzios, teremos

Z b Z b Z b
(x x1 )(x x2 )(x x3 ) 000
f (x) dx = p2 (x) dx + f ((x)) dx
a a a 6

e obteremos o frmula de Simpson com um erro de quarta ordem. O fato que a


regra de Simpson tem ordem cinco e, para isso, usaremos uma abordagem alter-
nativa.
Considere o polinmio de Taylor em x2 ,

f 00 (x2 ) f 000 (x2 ) f (4) ((x))


f (x) = f (x2 )+f 0 (x2 )(xx2 )+ (xx2 )2 + (xx2 )3 + (xx2 )4 ,
2 6 24

onde x1 (x) x3 e integre no intervalo [a,b] = [x1 ,x3 ]:

(x x2 )2 f 00 (x2 )
Z b "
f (x) dx = f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
a 2 6
#x
f 000 (x2 ) 3

+ (x x2 )4 (9.37)
24 x1
1 Z x3 (4)
+ f ((x))(x x2 )4 dx,
24 x1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


242 Clculo Numrico

Pelo teorema do valor mdio, existe x1 x3 tal que


(x x2 )2 f 00 (x2 )
Z b "
f (x) dx = f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
a 2 6
#x3
f 000 (x2 )
+ (x x2 )4
24 x1
f ()
(4) Z x3
+ (x x2 )4 dx
24 x1
(9.38)
(x x2 )2 f 00 (x2 )
"
= f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
2 6
#x3
f (x2 )
000
+ (x x2 )4
24 x1
f (4) () h ix3
+ (x x2 )5 .
120 x1

Usando o fato que


(x3 x2 )3 (x1 x2 )3 = 2h3 ,
(x3 x2 )4 (x1 x2 )4 = 0
e
(x3 x2 )5 (x1 x2 )5 = 2h5 ,
temos Z b
h3 00 h5 f (4) ()
f (x) dx = hf (x2 ) +
f (x2 ) + .
a 3 60
Usando a frmula de diferenas finitas centrais para a derivada segunda:
f (x1 ) 2f (x2 ) + f (x3 ) h2 (4)
f 00 (x2 ) = + f (2 ),
h2 12
x1 2 x3 , temos
f (x1 ) 2f (x2 ) + f (x3 ) h2 (4)
!
Z b
h3
f (x) dx = 2hf (x2 ) + + f (2 )
a 3 h2 12
h5 f (4) ()
+
60
h h5 1 (4) 1
 
= (f (x1 ) + 4f (x2 ) + f (x3 )) f (2 ) f (4) () .
3 12 3 5
Pode-se mostrar que possvel escolher 3 que substitua e 2 com a seguinte
estimativa
Z b
h h5
f (x) dx = (f (x1 ) + 4f (x2 ) + f (x3 )) f (4) (3 ).
a 3 90

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.2. REGRAS DE NEWTON-COTES 243

Exemplo 9.2.4. Use a regra de Simpson para aproximar a integral


Z 1
2
ex dx.
0

Depois divida a integral em duas


Z 1/2 Z 1
2 2
ex dx + ex dx.
0 1/2

e aplica a regra de Simpson em cada uma delas.


Usando o intervalo [0,1], temos h = 1/2, x0 = 0, x1 = 1/2 e x2 = 1. A regra
de Simpson resulta em
Z 1
2 0,5 0
ex dx (e + 4e1/4 + e1 ) = 0,7471804.
0 3
Usando dois intervalos, [0,1/2] e [1/2,1] e usando a regra do trapzio em cada um
dos intervalos, temos:
Z 1
2 0,25 0 0,25 1/4
ex dx (e + 4e1/16 + e1/4 ) + (e + 4e9/16 + e1 ) = 0,7468554.
0 3 3

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 9.2.1. Calcule numericamente as seguintes integrais:


Z 1
a) ex dx b)
R1 2
x dx
0
0
Z 1
c) x3 dx d)
R1 2
0 xex dx
0
Z 1
1
e) e)
R1 x
dx dx
0 x +1
2 0 x2 +1

usando os mtodos simples do ponto mdio, Trapzio e Simpson. Calcule, tambm,


o valor analtico destas integrais e o erro nas aproximaes dadas pelas quadraturas
numricas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


244 Clculo Numrico

E 9.2.2. D a interpretao geomtrica dos mtodos do ponto mdio, tra-


pzio e Simpson. A partir desta construo geomtrica, deduza as frmulas para
aproximar
Z b
f (x) dx. (9.39)
a

Verifique o mtodo de Simpson pode ser entendido como uma mdia aritmtica
ponderada entre os mtodos de trapzio e ponto mdio. Encontre os pesos envol-
vidos. Explique o que so os mtodos compostos.

E 9.2.3. Calcule numericamente o valor de 25 e4x dx usando os mtodos


R 2

compostos do ponto mdio, trapzio e Simpson. Obtenha os resultados utilizando,


em cada quadratura, o nmero de pontos indicado.

n Ponto mdio Trapzios Simpson


3
5
7
9

9.3 Obteno das regras de quadratura


Na seo anterior, obtivemos as regras de quadraturas pela aproximao do
integrando por polinmios interpoladores de Lagrange. Aqui, veremos um outro
mtodo para obter regras de quadratura, que torna-se bastante til para quando
temos muitos pontos ou quando o intervalo entre os pontos no uniforme.
Dados n pontos [t1 , t2 , . . . ,tn ], queremos obter uma aproximao para
Z b
f (t) dt w1 f (t1 ) + w2 f (t2 ) + . . . + wn f (tn ) (9.42)
a

que seja exata para polinmios2 at ordem n 1.


Aproxime f (t) pelo polinmio p(t) = w1 1 (t) + . . . + wn n (t) de ordem n 1.
Escolha uma base, como por exemplo k (t) = tk1 . Como a regra de quadratura
deve ser exata para qualquer polinmio at ordem n 1, ento tambm deve ser
2
Por exemplo, se n = 2, ento a regra exata para retas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.3. OBTENO DAS REGRAS DE QUADRATURA 245

exata para qualquer funo da base. Substituindo f (t) por 1 (t) = 1 em (9.42).
obtemos:
Z b
1 (t) dt = t|ba = w1 1 (t1 ) + w2 1 (t2 ) + . . . + wn 1 (tn ) (9.43)
a
b a = w1 + w2 + . . . + wn . (9.44)
Da mesma forma para k (t), k = 2, . . . ,n, obtemos:
b2 a2
(t 2
=
/2)|ba = w1 t1 + w2 t2 + . . . + wn tn (9.45)
2
b 3 a3
(t3 /3)|ba = = w1 t21 + w2 t22 + . . . + wn t2n (9.46)
3
..
. (9.47)
n n
b a
= w1 tn1
1 + w2 t2n1 + . . . + wn tn1
n , (9.48)
n
que pode ser escrito na forma matricial a seguir:

1 1 ... 1 w1 b a

2
b a 2
t1 t2 ... tn w

2
2

t n w3 = 3 (9.49)
3 3
b a

t21 t22 ... 2
.
.. .. .. .. ..

. . . . .




bn an
tn1
1 tn1
2 ... tn1
n wn n

Resolvendo o sistema, obtemos os coeficientes wk para a regra de integrao.


Exemplo 9.3.1. Seja n = 3, [a, b] = [0, h], onde (t1 , t2 , t3 ) = (0, h/2, h). Obtenha
uma regra de integrao para aproximar ab f (t) dt.
R

Soluo. A regra ter a forma


Z b
f (t) dt w1 f (t1 ) + w2 f (t2 ) + w3 f (t3 ) (9.50)
a
w1 y1 + w2 y2 + w3 y3 . (9.51)
Considere a base polinomial [1 (t),2 (t),3 (t)] = [1, t, t2 ] e substitua f (t) por k (t)
obtendo
Z h
1 dt = h = w1 (1) + w2 (1) + w3 (1) (9.52)
0
Z h
t dt = h2 /2 = w1 (0) + w2 (h/2) + w3 (h) (9.53)
0
Z h
t2 dt = h3 /3 = w1 (0)2 + w2 (h/2)2 + w3 (h)2 (9.54)
0

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


246 Clculo Numrico

que pode ser escrito na forma matricial



1 1 1 w1 h

0 h/2 h = 2
(9.55)
w2
h /2



0 h2 /4 h2

w3 h3 /3

Note que podemos simplificar h tal que o sistema fique



1 1 1 w1 1

0 1/2 1 = h 1/2 (9.56)
w2



0 1/4 1 1/3

w3

1 4 1
 
Resolvendo o sistema, obtemos (w1 , w2 , w3 ) = h , , , o que fornece a
6 6 6
regra de Simpson:
Z h
h 4h h
f (t) dt f (0) + f (h/2) + f (h). (9.57)
0 6 6 6

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

9.4 Regras compostas


Em todas as estimativas de erro que derivamos, o erro depende do tamanho do
intervalo de integrao. Uma estratgia para reduzir o erro consiste em particionar

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.4. REGRAS COMPOSTAS 247

o intervalo de integrao em diversos subintervalos menores de forma que


Z b n Z xi+1
f (x) dx = f (x) dx (9.58)
X
a i=1 xi

onde a = x1 < ... < xn+1 = b, sendo n o nmero de subintervalos da partio do


intervalo de integrao. No caso uniforme xi = a + (i 1)h, h = (b a)/n.
Depois, aplica-se um mtodo simples de integrao em cada subintervalo,
Z xi+1
f (x) dx Si
xi

e a integral ser aproximada por


Z b n
f (x) dx S = Si .
X
a i=1

9.4.1 Cdigo Scilab: Regras compostas em geral


Devemos fazer um lao3 sobre todos os intervalos e para cada intervalo aplica-
mos uma regra de quadratura.

function S=simpson(a,b,n)
h=(b-a)/n // n numero de intervalos
x=linspace(a,b,n+1)

S=0
for i=1:n
x1=x(i)
x3=x(i+1)
x2=x1+h/2
A1 =1/6; A2 =4/6; A3=1/6
dS =(A1*f(x1)+A2*f(x2)+A3*f(x3))*h
S=S+dS
end
endfunction

function y=f(x)
y=exp(x)
endfunction
3
Em computao, muitas vezes se usa o anglicismo loop.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


248 Clculo Numrico

Acumulamos o valor da integral em S. No cdigo acima temos o mtodo de


Simpson, mas basta trocarmos a frmula para termos outras quadraturas.
Note que esta no a implementao mais eficiente, pois recalcula os termos no
contorno dos intervalos. Nas prximas sees veremos regras compostas especficas
para alguns mtodos.

9.4.2 Mtodo composto dos trapzios


A regra composta dos trapzios assume a seguinte forma:
Z b n Z xi+1
f (x) dx = f (x) dx
X
a i=1 xi
n
xi+1 xi
[f (xi ) + f (xi+1 )] .
X

i=1 2

Como h = xi+1 xi , temos:


Z b Ni
hX
f (x) dx [f (xk ) + f (xk+1 )]
a 2 k=1
h
= [f (x1 ) + 2f (x2 ) + 2f (x3 ) + + 2f (xNi ) + f (xNi +1 )]
2
Ni
h
= [f (x1 ) + f (xNi +1 )] + h f (xi )
X
2 i=2

9.4.3 Cdigo Scilab: trapzio composto


O cdigo Scilab abaixo uma implementao do mtodo do trapzio composto
para calcular:
Z b n
h
f (x) dx = [f (x1 ) + f (xn+1 )] + h f (xi ) + O(h3 ), (9.59)
X
a 2 i=2

onde h = (b a)/n e xi = a + (i 1)h, i = 1,2, . . . ,n + 1. Os parmetros de entrada


so: f o integrando definido como uma funo no Scilab, a o limite inferior de
integrao, b o limite superior de integrao, n o nmero de subintervalos desejado.
A varivel de sada y e corresponde a aproximao calculada de ab f (x) dx.
R

function [y] = trap_comp(f,a,b,n)


h = (b-a)/n
x = linspace(a,b,n+1)
y = h*(f(x(1)) + f(x(n+1)))/2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.4. REGRAS COMPOSTAS 249

for i = 2:n
y = y + h*f(x(i))
end
endfunction

9.4.4 Mtodo composto de Simpson


J a regra composta de Simpson assume a seguinte forma:
Z b n Z xk+1
f (x) dx = f (x) dx
X
a k=1 xk
n
xx+1 xk xk+1 + xk
   
f (xk ) + 4f + f (xk+1 )
X

k=1 6 2

onde, como anteriormente, xk = a + (k 1)h, h = (b a)/n e i = 1,2, . . . ,n + 1,


sendo n o nmero de subintervalos da partio do intervalo de integrao. Podemos
simplificar o somatrio acima, escrevendo:
n1 n
Z b " #
h
f (x) dx f (x1 ) + 2 f (x2i+1 ) + 4 f (x2i ) + f (x2n+1 ) + O(h5 ) (9.60)
X X
a 3 i=1 i=1

onde, agora, h = (b a)/(2n), xi = a + (i 1)h, i = 1,2, . . . ,2n + 1.

9.4.5 Cdigo Scilab: Simpson composto


O cdigo Scilab abaixo uma implementao do mtodo de Simpson composto
para calcular:
n1 n
Z b " #
h
f (x) dx = f (x1 ) + 2 f (x2i+1 ) + 4 f (x2i ) + f (x2n+1 ) + O(h3 ), (9.61)
X X
a 3 i=1 i=1

onde h = (b a)/(2n) e xi = a + (i 1)h, i = 1,2, . . . ,2n + 1. Os parmetros


de entrada so: f o integrando definido como uma funo no Scilab, a o limite
inferior de integrao, b o limite superior de integrao, n o nmero de subinter-
valos desejado. A varivel de sada y e corresponde a aproximao calculada de
a f (x) dx.
Rb

function [y] = simp_comp(f,a,b,n)


h = (b-a)/(2*n)
x = linspace(a,b,2*n+1)
y = f(x(1))
for i = 1:n-1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


250 Clculo Numrico

y = y + 2*f(x(2*i+1))
end
for i = 1:n
y = y + 4*f(x(2*i))
end
y = y + f(x(2*n+1))
y = h*y/3
endfunction

Exemplo 9.4.1. Calcule numericamente a integral


Z 2
2
x2 ex dx (9.62)
0

pelas regras compostas do ponto mdio, trapzio e Simpson variando o nmero de


intervalos n = 1, 2, 3, 6, 12, 24, 48 e 96.

Soluo. As aproximaes calculadas so apresentadas na seguinte tabela:

n Ponto mdio Trapzios Simpson


1 5,4365637 218,3926 76,421909
2 21,668412 111,91458 51,750469
3 31,678746 80,272022 47,876505
6 41,755985 55,975384 46,495785
12 45,137529 48,865685 46,380248
24 46,057757 47,001607 46,372373
48 46,292964 46,529682 46,37187
96 46,352096 46,411323 46,371838

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.4. REGRAS COMPOSTAS 251

Exerccios

E 9.4.1. Use as rotinas computacionais para calcular numericamente o valor


das seguintes integrais usando o mtodo composto dos trapzios para os seguintes
nmeros de pontos:
Z 1
2
Z 1
1 Z 1 Z 1
21
n e4x dx dx x4 (1 x)4 dx e
x +1 dx
0 0 1 + x2 0 0

17 0,4409931
33 0,4410288
65 0,4410377
129 0,4410400
257 0,4410405
513 0,4410406
1025 0,4410407 0,7853981 1,5873015873016E-3 4,6191723776309E-3

E 9.4.2. O valor exato da integral imprpria x ln(x) dx dado por


R1
0
! 1
Z 1
x2 x2
x ln(x) dx = ln x = 1/4. (9.63)

2 4

0
0

Aproxime o valor desta integral usando a regra de Simpson para n = 3, n = 5 e


n = 7. Como voc avalia a qualidade do resultado obtido? Por que isso acontece.

E 9.4.3. O valor exato da integral imprpria dx dado por .
R x2
0 e 2
Escreva esta integral como
Z 1 Z 1 Z 1 
x2 2 1/u2 2 2
I= e dx + u e du = ex + x2 e1/x dx (9.64)
0 0 0

e aproxime seu valor usando o esquema de trapzios e Simpson para n = 5, n = 7


e n = 9.
E 9.4.4. Estamos interessados em avaliar numericamente a seguinte integral:
Z 1
ln(x) sen (x) dx (9.65)
0

cujo valor com 10 casas decimais corretas .2398117420.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


252 Clculo Numrico

a) Aproxime esta integral via Gauss-Legendre com n = 2, n = 3, n = 4, n = 5,


n = 6 e n = 7.

b) Use a identidade
Z 1 Z 1 Z 1
ln(x) sen (x) dx = ln(x)x dx + ln(x) [sen (x) x] dx
0 0 0
! 1
x2 x2
Z 1
= ln x + ln(x) [sen (x) x] dx
2 4

0 0
1 Z1
= + ln(x) [sen (x) x] dx
4 0

e aproxime a integral 01 ln(x) [sen (x) x] dx numericamente via Gauss-Legendre


R

com n = 2, n = 3, n = 4, n = 5, n = 6 e n = 7.

c) Compare os resultados e discuta levando em considerao as respostas s se-


guintes perguntas: 1)Qual funo mais bem-comportada na origem? 2)Na
segunda formulao, qual poro da soluo foi obtida analiticamente e, por-
tanto, sem erro de truncamento?

9.5 Mtodo de Romberg


O mtodo de Romberg um algoritmo projetado para construir quadraturas
de alta ordem de forma iterativa a partir do mtodo dos trapzios.
Considere o mtodo de trapzios composto aplicado integral
Z b
f (x) dx. (9.66)
a

Defina I(h) a aproximao desta integral pelo mtodo dos trapzios composto com
malha de largura constante igual a h. Aqui h = ba
Ni
para algum Ni inteiro, isto :

Ni
h ba
I(h) = f (a) + 2 f (xj ) + f (b) , Ni = (9.67)
X
2 j=2 h

Teorema 9.5.1. Se f (x) uma funo analtica no intervalo (a,b), ento a funo
I(h) admite uma representao na forma

I(h) = I0 + I2 h2 + I4 h4 + I6 h6 + . . . (9.68)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.5. MTODO DE ROMBERG 253

Para um demonstrao, veja [4]. Em especial observamos que


Z b
f (x) dx = lim I(h) = I0 (9.69)
a h0

Ou seja, o valor exato da integral procurada dado pelo coeficiente I0 .


A ideia central do mtodo de Romberg, agora, consiste em usar a extrapolao
de Richardson para construir mtodos de maior ordem a partir do mtodos dos
trapzios para o intervalo (a,b)
Exemplo 9.5.1. Construo do mtodo de quarta ordem.
I(h) = I0 + I2 h2 + I4 h4 + I6 h6 + . . .
!
h h2 h4 h6
I = I0 + I2 + I4 + I6 + . . .
2 4 16 64

Usamos agora uma eliminao gaussiana para obter o termo I0 :


4I(h/2) I(h) 1 5
= I0 I4 h4 I6 h6 + . . .
3 4 16
Vamos agora aplicar a frmula para h = b a,
h
I(h) = [f (a) + f (b)]
2
h a+b
I(h/2) = [f (a) + 2f (c) + f (b)] , c = .
4 2

4I(h/2) I(h) h h
= [f (a) + 2f (c) + f (b)] [f (a) + f (b)]
3 3 6
h
= [f (a) + 4f (c) + f (b)] .
6
Note que este esquema obtido coincide com o mtodo de Simpson.
A partir de agora, a fim de deduzir o caso geral, utilizaremos a seguinte notao:
R1,1 = I(h),
R2,1 = I(h/2),
R3,1 = I(h/4),
..
.
Rn,1 = I(h/2n1 ).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


254 Clculo Numrico

Observamos que os pontos envolvidos na quadratura Rk,1 so os mesmos pontos


envolvidos na quadratura R(k 1,1) acrescidos dos pontos centrais, assim, temos
a seguinte frmula de recorrncia:

k2
1 h 2X
!
h
Rk,1 = Rk1,1 + k1 f a + (2i 1) k1 (9.70)
2 2 i=1 2

Definimos Rk,2 para k 2 como o esquema de ordem quatro obtido da frmula


do Exemplo 9.5.1:
4Rk,1 Rk1,1
Rk,2 = (9.71)
3

Os valores Rk,2 representam ento os valores obtidos pelo mtodo de Simpson


composto aplicado a uma malha composta de 2k1 + 1 pontos.
Similarmente os valores de Rk,j so os valores obtidos pela quadratura de ordem
2j obtida via extrapolao de Richardson. Pode-se mostrar que

Rk,j1 Rk1,j1
Rk,j = Rk,j1 + . (9.72)
4j1 1

Exemplo 9.5.2. Construa o esquema de Romberg para aproximar o valor de


dx com erro de ordem 8.
R 2 x2
0 e
O que nos fornece os seguintes resultados:
55,59815 0,000000 0,000000 0,000000
30,517357 22,157092 0,000000 0,000000
20,644559 17,353626 17,033395 0,000000
17,565086 16,538595 16,484259 16,475543
Ou seja, temos:
Z 2
2
ex dx 16,475543 (9.73)
0

usando uma aproximao de ordem 8.

Exemplo 9.5.3. Construa o esquema de Romberg para aproximar o valor de


dx com erro de ordem 12.
R 2 2 x2
0 xe
O que nos fornece:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.5. MTODO DE ROMBERG 255

218,3926
111,91458 76,421909
66,791497 51,750469 50,105706
51,892538 46,926218 46,604601 46,549028
47,782846 46,412949 46,378731 46,375146 46,374464
46,72661 46,374531 46,37197 46,371863 46,37185 46,371847
Ou seja, temos:
Z 2
2
x2 ex dx 46,371847 (9.74)
0

com uma aproximao de ordem 12.

Exerccios

E 9.5.1. Para cada integrando, encontre o funo I(h) = a0 + a1 h + a2 h2 +


a3 h3 + a4 h4 que melhor se ajusta aos dados, onde h = n1
1
. Discuta os resultados
com base no teorema envolvido na construo do mtodo de Romberg.

E 9.5.2. Calcule os valores da quadratura de Romberg de R1,1 at R4,4 para


sen (x) dx. No use rotinas prontas neste problema.
R
0

E 9.5.3. Sem usar rotinas prontas, use o mtodo de integrao de Romberg


para obter a aproximao R3,3 das seguintes integrais:

a)
R 1 x2
0 e dx
R2q
b) 0 2 cos(x) dx

c)
R2
0
1
dx
2cos(x)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


256 Clculo Numrico

E 9.5.4. Encontre uma expresso para R2,2 em termos de f (x) e verifique o


mtodo de Romberg R2,2 equivalente ao mtodo de Simpson.

E 9.5.5. Considere o problema de aproximar numericamente o valor de


Z 100 
1

e 2 cos(x) 1 dx (9.79)
0

pelo mtodo de Romberg. Usando rotinas prontas, faa o que se pede.


a) Calcule R(6,k), k = 1, . . . ,6 e observe os valores obtidos.
b) Calcule R(7,k), k = 1, . . . ,6 e observe os valores obtidos.
c) Calcule R(8,k), k = 1, . . . ,6 e observe os valores obtidos.
d) Discuta os resultados anteriores e proponha uma estratgia mais eficiente para
calcular o valor da integral.

9.6 Ordem de preciso


Todos os mtodos de quadratura que vimos at o momento so da forma
Z b N
f (x) dx wj f (xj ) (9.80)
X
a j=1

Exemplo 9.6.1. a) Mtodo do trapzio


Z b
ba
f (x) dx [f (a) + f (b)]
a 2
ba ba
= f (a) + f (b)
2 2
2
:= w1 f (x1 ) + w2 f (x2 ) = wj f (xj )
X

j=1

b) Mtodo do trapzio com dois intervalos


a+b
" ! #
Z b
ba
f (x) dx f (a) + 2f + f (b)
a 2 4
a+b
!
ba ba ba
= f (a) + f + f (b)
4 2 2 4
3
:= w1 f (x1 ) + w2 f (x2 ) + w3 f (x3 ) = wj f (xj )
X

j=1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.6. ORDEM DE PRECISO 257

c) Mtodo de Simpson

a+b
" ! #
Z b
ba
f (x) dx f (a) + 4f + f (b)
a 2 6
2(b a) a+b
!
ba ba
= f (a) + f + f (b)
6 3 2 6
3
:= wj f (xj )
X

j=1

d) Mtodo de Simpson com dois intervalos

3a + b a+b
Z b " ! !
f (x) dx f (a) + 4f + 2f
a 4 2
a + 3b
! #
ba
+ 4f + f (b)
4 12
3a + b a+b
! !
ba ba ba
= f (a) + f + f
12 3 4 6 2
a + 3b
!
ba ba
+ f + f (b)
3 4 12
5
:= wj f (xj )
X

j=1

A principal tcnica que temos usado para desenvolver os mtodos numricos


o polinmio de Taylor:

f (x) = a0 + a1 x + a2 x2 + . . . + an xn + Rn (x) (9.81)

Integrando termo a termo, temos:


Z b Z b Z b Z b
f (x) dx = a0 dx + a1 x dx + a2 x2 dx + . . . +
a a a a
Z b Z b
an xn dx + Rn (x) dx
a a
b a2
2
b 3 a3
= a0 (b a) + a1 + a2 + ... +
2 3
bn+1 an+1 Z b
an + Rn (x) dx
n+1 a

Neste momento, natural investigar o desempenho de um esquema numrico


aplicado a funes do tipo f (x) = xn .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


258 Clculo Numrico

Definio 9.6.1. A ordem de preciso ou ordem de exatido de um esquema


de quadratura numrica definida como o maior inteiro positivo n para o qual o
esquema exato para todas as funes do tipo xk com 0 k n, ou seja, um
esquema dito de ordem n se
n Z b
wj f (xj ) = f (x) dx, f (x) = xk , k = 0,1, . . . n (9.82)
X

j=1 a

ou, equivalentemente:
n Z b
bk+1 ak+1
wj xkj = x dx =
k
k = 0,1, . . . n (9.83)
X
,
j=1 a k+1

Observao 9.6.1. Se o mtodo tem ordem 0 ou mais, ento


n
wj = b a (9.84)
X

j=1

Exemplo 9.6.2. A ordem de preciso do esquema de trapzios 1:


2
Z b
ba X
f (x) dx [f (a) + f (b)] = wj f (xj ) (9.85)
a 2 j=1

onde wj = ba
2
, x1 = a e x2 = b.

(k = 0) : wj = b a
Pn
j=1
b2 a2
(k = 1) : wj xj = (a + b) ba =
Pn
j=1 2 2
b3 a3
(k = 2) : wj x2j = (a2 + b) 2 =
Pn 2 ba
j=1 6 3

Exemplo 9.6.3. A ordem de preciso do esquema de Simpson 3:

a+b 3
" ! #
Z b
ba X
f (x) dx f (a) + 4f + f (b) = wj f (xj ) (9.86)
a 2 6 j=1

onde w1 = w3 = ba
6
, w2 = 4 ba
6
, x1 = a, x2 = a+b
2
e x3 = b

(k = 0) : wj = (1 + 4 + 1) ba =ba
Pn
j=1 6
b2 a2
(k = 1) : wj xj = (a + 4 a+b + b) ba = (a + b) ba =
Pn
j=1 2 6 2 2
 2
b3 a3
(k = 2) : j=1 wj xj = (a + 4 + b2 ) ba =
Pn 2 2 a+b
2 6 3
 3
b4 a4
(k = 3) : j=1 wj xj = (a + 4 + b3 ) ba =
Pn 3 3 a+b
2 6 4
 4
b5 a5
(k = 4) : j=1 wj xj = (a + 4 + b4 ) ba 6=
Pn 4 4 a+b
2 6 4

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.6. ORDEM DE PRECISO 259

Exemplo 9.6.4. Encontre os pesos wj e as abscissas xj tais que o esquema de


dois pontos
Z 1
f (x) dx = w1 f (x1 ) + w2 f (x2 ) (9.87)
1

de ordem 3.

Soluo. Temos um sistema de quatro equaes e quatro incgnitas dado por:

w1 + w2 = 2
x1 w1 + x2 w2 = 0
2
x21 w1 + x22 w2 =
3
x1 w1 + x2 w2 = 0
3 3

Da segunda e quarta equao, temos:

w1 x2 x32
= = 3 (9.88)
w2 x1 x1

Como x1 6= x2 , temos x1 = x2 e w1 = w2 . Da primeira equao, temos w1 =


w2 = 1. Da terceira equao, temos x1 = x2 = 33 .
Esse esquema de ordem de preciso trs e dois pontos chama-se quadratura de
Gauss-Legendre com dois pontos:

! !
Z 1
3 3
f (x) dx = f +f (9.89)
1 3 3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


260 Clculo Numrico

f (x) Exato Trapzio Simpson G

e1 + 4e0 + e1
e e1 e1 + e
ex 3
2,35040 3,08616 2,36205

Exemplo 9.6.5. Comparao


16 4
2
p
9 9 2
x 3+ x3 3,41421 1,13807
1,14924

3
ee1
x2 ex 3 0,78347 3,08616 1,02872

Exerccios

E 9.6.1. Encontre os pesos w1 , w2 e w3 tais que o esquema de quadratura


dado por Z 1
f (x) dx w1 f (0) + w2 f (1/2) + w3 f (1) (9.90)
0
apresente mxima ordem de exatido. Qual a ordem obtida?

E 9.6.2. Encontre a ordem de exatido do seguinte mtodo de integrao:


! !#
2 2 2
Z 1 "
f (x) dx f + f (0) + f (9.91)
1 3 2 2

E 9.6.3. Encontre a ordem de exatido do seguinte mtodo de integrao:


Z 1
1 0 136 62 136 1 0
f (x) dx = f (1) + f (1/2) f (0) + f (1/2) + f (1)
1 210 105 105 105 210
(9.92)

E 9.6.4. Encontre os pesos w1 , w2 e w3 tal que o mtodo de integrao


Z 1
f (x) dx w1 f (1/3) + w2 f (1/2) + w3 f (2/3) (9.93)
0

tenha ordem de exatido mxima. Qual ordem obtida?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.7. QUADRATURA DE GAUSS-LEGENDRE 261

E 9.6.5. Quantos pontos so envolvidos no esquema de quadratura R3,2 ? Qual


a ordem do erro deste esquema de quadratura? Qual a ordem de exatido desta
quadratura?

9.7 Quadratura de Gauss-Legendre


Utilizando n pontos para aproximar a integral de f (x) em [1,1] podemos
encontrar a regra de quadratura de Gauss-Legendre
Z 1 n
f (t) dt wj f (tj ) (9.94)
X
1 j=1

cuja ordem de exatido 2n 1.


Note que temos n coeficientes wj e n pontos tj para determinar. O problema
de encontrar os n pesos e n abscissas equivalente a um sistema no linear
com 2n equaes e 2n incgnitas.
Pode-se mostrar que este problema sempre tem soluo e que a soluo
nica se t1 < t2 < . . . < tn
Os ns xj so dados pelos zeros do polinmio de Legendre, Pn (t).
Os pesos so dados por
2
wj =   . (9.95)
1 t2j [Pn0 (tj )]2

A Tabela 9.1 lista os ns e os pesos da quadratura de Gauss-Legendre para


n = 1, 2, 3, 4 e 5.
Exemplo 9.7.1. Aproxime
Z 1
I= 1 + x2 dx (9.96)
1

pelo mtodo de Gauss-Legendre com 2, 3, 4 e 5 pontos.


Soluo. A aproximao desta integral usando o mtodo de Gauss-Legendre con-
siste em computar
Z 1 n
I= f (x) dx wi f (ti ), (9.97)
X
1 i=1

onde f (x) = 1 + x2 , wi o i-simo peso, ti o i-simo nodo, i = 1, . . . , n, e n
o nmero de nodos (ou pesos) da quadratura. Usando os nodos e pesos dados na
Tabela 9.1, obtemos os seguintes resultados:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


262 Clculo Numrico

Tabela 9.1: Nodos e pesos para quadratura de Gauss-Legendre.

n tj wj

1 0 2

3
2 1
3
8
0
3 s
9
3 5

5 9
s
q 
3 2 6/5 /7 18+ 30
36
4 s
q 
3 + 2 6/5 /7 18 30
36

128
0
225
v s
1u 10 322 + 13 70
u
5
t
52
3 7 900
v s
1u 10 322 13 70
u
5+2
t
3 7 900

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.7. QUADRATURA DE GAUSS-LEGENDRE 263

n I
2 2,3094011
3 2,2943456
4 2,2957234
5 2,2955705

No Scilab, temos:

deff('y=f(x)','y=sqrt(1 + x^2)')

//G-L n=2
x2 = sqrt(3)/3
w2 = 1
I2 = w2(1)*f(x2(1)) + w2(1)*f(-x2(1))
disp(I2)

//G-L n=3
x3 = [0 -sqrt(3/5) sqrt(3/5)]
w3 = [8/9 5/9 5/9]
I3 = w3(1)*f(x3(1)) + w3(2)*f(x3(2)) + w3(2)*f(-x3(2))
disp(I3)

//G-L n=4
x4 = [sqrt((3-2*sqrt(6/5))/7) sqrt((3+2*sqrt(6/5))/7)]
w4 = [(18+sqrt(30))/36 (18-sqrt(30))/36]
I4 = w4(1)*f(x4(1)) + w4(1)*f(-x4(1)) ...
+ w4(2)*f(x4(2)) + w4(2)*f(-x4(2))
disp(I4)

//G-L n=5
x5 = [0 1/3*sqrt(5-2*sqrt(10/7)) 1/3*sqrt(5+2*sqrt(10/7))]
w5 = [128/225 (322+13*sqrt(70))/900 (322-13*sqrt(70))/900]
I5 = w5(1)*f(x5(1)) + w5(2)*f(x5(2)) + w5(2)*f(-x5(2)) ...
+ w5(3)*f(x5(3)) + w5(3)*f(-x5(3))
disp(I5)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


264 Clculo Numrico

Mudana de intervalo
Os coeficientes da quadratura de Gauss-Legendre foram obtidos no intervalo
[1,1]. Para aproximar a integral de f (x) no intervalo [a,b] devemos fazer a mu-
dana de varivel

xi = ti + , = (b a)/2, = (b + a)/2 (9.98)

tal que
Z b n
f (x) dx wi f (xi )(b a)/2
X
a i=1

Quando subdividimos o intervalo inicial [a,b] em N intervalos com extremos


[xi ,xi+1 ] a transformao torna-se

xi = ti + , = (xi+1 xi )/2, = (xi+1 + xi )/2

e Z xi+1 n
f (x) dx wi f (xi )(xi+1 xi )/2
X
xi i=1

Exemplo 9.7.2. Aproximar


Z 1
I= 1 + x2 dx (9.99)
0

pelo mtodo de Gauss-Legendre com 3 pontos.


Soluo. Para tanto, fazemos a mudana de variveis u = 2x 1:
Z 1
I= 1 + x2 dx
0
s (9.100)
1Z 1 u+1
 2
= 1+ du.
2 1 2
E, ento aplicamos a quadratura gaussiana nesta ltima integral, o que nos fornece
I 1,1478011. No Scilab, podemos computar estas aproximaes com o seguinte
cdigo:
deff('y = f(u)', 'y = sqrt(1+(u+1)^2/4)/2')

x3 = [0 -sqrt(3/5) sqrt(3/5)]
w3 = [8/9 5/9 5/9]
I3 = f(x3(1))*w3(1) + f(x3(2))*w3(2) + f(-x3(2))*w3(2)
disp(I3)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.7. QUADRATURA DE GAUSS-LEGENDRE 265

9.7.1 Cdigo Scilab: Quadratura gaussiana com N inter-


valos
Exemplo 9.7.3. Aproxime a integral de sen (x) em [0,1] utilizando 5 intervalos
iguais e em cada intervalo utilize uma quadratura gaussiana com 3 ns.

O cdigo Scilab abaixo uma implementao da quadratura gaussiana com


subdiviso de intervalos. Devemos definir a funo f (x) = sen (x) e chamar a
funo gaussiana(0,1,5).

function S=gaussiana(a,b,n)
h=(b-a)/n // n intervalos
x=linspace(a,b,n+1)

w1=5/9; t1=-sqrt(3/5);
w2=8/9; t2=0;
w3=w1; t3=-t1;

S=0
for i=1:n
alpha=(x(i+1)-x(i))/2
bet =(x(i+1)+x(i))/2
x1=alpha*t1+bet;
x2=alpha*t2+bet;
x3=alpha*t3+bet;

A =(w1*f(x1)+w2*f(x2)+w3*f(x3))* h/2
S=S+A
end
endfunction

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


266 Clculo Numrico

E 9.7.1. Encontre aproximaes para a integral


Z 1
5
x4 ex dx (9.101)
1

usando a quadratura de Gauss-Legendre com 2, 3, 4 e 5 pontos. Ento, compare


com o seu valor exato.
E 9.7.2. Encontre aproximaes para as seguintes integrais via Gauss-Legendre
com 4 e 5 pontos:
Z 1
4
a) ex dx
0
Z 4
b) log(x + ex )dx
1
Z 1
2
c) ex dx
0

9.8 Integrais imprprias


A aplicao de quadraturas numricas para integrais imprprias geralmente
demanda alguns cuidados adicionais. Aqui, abordaremos apenas alguns aspectos,
comeando por integrandos com singularidade no intervalo de integrao.

9.8.1 Integrandos com singularidade do tipo 1/(x a)n


Consideremos a integral imprpria4
Z b
f (x)
dx, 0 < p < 1, (9.102)
a (x a)p
Observamos, que para uma tal integral, no possvel aplicar, diretamente, as
regras do trapzio e de Simpson. Alternativamente, podemos aplicar a regra do
ponto mdio e quadraturas gaussianas, por exemplo. Entretanto, aplicaes diretas
de tais quadraturas fornecem resultados pouco precisos (veja o Exemplo 9.8.1).
Exemplo 9.8.1. Aplicando as regras compostas do ponto mdio e quadratura
gaussiana com dois pontos integral
Z 1
ex
dx (9.103)
0 x1/2
obtemos os seguintes resultados (n nmero de subintervalos):
4
convergente com f (x) suficientemente suave, por hiptese.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.8. INTEGRAIS IMPRPRIAS 267

n h Ponto Mdio G-L(2)


1 1 0,8577 1,1363
10 101
1,3007 1,3829
102 102 1,4331 1,4587
10 3
103
1,4745 1,4826
104 104 1,4876 1,4902

Aqui, cabe um cdigo Scilab explicativo. Escreva voc mesmo o cdigo.


Veja como participar da escrita do livro em:
https://github.com/livroscolaborativos/CalculoNumerico

Uma estratgia para se computar uma tal integral imprpria


Z b
f (x)
I= dx (9.104)
a (x a)p

reescrev-la da forma
Z b
f (x) p(x) Z b
p(x)
I= dx + dx (9.105)
a (x a)n a (x a)n
| {z } | {z }
I1 I2

onde p(x) escolhida de forma que a singularidade esteja presente somente em I2 e


esta possa ser calculada de forma analtica, restando computar I1 numericamente.
Isto pode ser feito, escolhendo p(x) como a expanso em polinmio de Taylor da
funo f (x) em torno do ponto x = a, i.e.

f 00 (a) f (m) (a) (9.106)


p(x) = f (a) + f 0 (a)(x a) + (x a)2 + + (x a)m
2! m!
Com esta escolha, o integrando de I1 passa a ter uma singularidade removvel

f (x) p(x)
lim = 0. (9.107)
xa (x a)p

e pode ser computada numericamente. A integral I2 pode ser calculada analitica-


mente, de fato
b
Z b
p(x) f (a) f (m) (a)
. (9.108)

dx = (x a) 1p
+ + (x a) mp
a (x a)p 1!(1 p) m!(m p)
a

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


268 Clculo Numrico

Exemplo 9.8.2. Consideremos a integral imprpria


Z 1 x
e
I= dx. (9.109)
0 x

Computando o polinmio de Taylor de grau 4 de f (x) = ex em torno de x = 0,


obtemos
x2 x3 x4
p(x) = 1 x + + . (9.110)
2 3 4
Ento, escrevemos
Z 1 x
e p(x) Z 1
p(x)
I= dx + dx . (9.111)
0 x 0 x
| {z } | {z }
I1 I2

Calculando I2 analiticamente, temos


Z 1
p(x)
I2 = dx
0 x
2 3/2 2 (5/2) 2 7/2 2 9/2 1

= 2x x + x
1/2
x + x (9.112)
3 10 42 216 0
2 2 2 2
=2 + +
3 10 42 216
= 1,4950.

Agora, computamos a integral I1 numericamente usando a regra composta do


ponto mdio. A seguinte tabela apresenta os resultados para as aproximaes
obtidas para I1 e consequentemente para I = I1 + I2 :

n h I2 I
1 1 3,39657E4 1,49463
10 101 1,31240E3 1,49366
10 2
10 2
1,32515E3 1,49365
103 103 1,32528E3 1,49365

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.9. EXERCCIOS FINAIS 269

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

9.9 Exerccios finais

E 9.9.1. Considere o problema de calcular numericamente a integral I =


1 f (x)dx quando f (x) =
.
cos(x)
R1
|x|

a) O que acontece quando se aplica diretamente a quadratura gaussiana com um


nmero impar de abscissas?

b) Calcule o valor aproximado por quadratura gaussiana com n = 2, n = 4, n = 6


e n = 8.

c) Calcule o valor aproximado da integral removendo a singularidade


Z 1
cos(x) Z 1
cos(x) 1 Z 1
1
I = q dx = q dx + q dx
1 |x| 1 |x| 1 |x|
Z 1
cos(x) 1 Z 1
1 Z 1
cos(x) 1
= q dx + 2 dx = q dx + 4
1 |x| 0 x 1 |x|

e aplicando quadratura gaussiana com n = 2, n = 4, n = 6 e n = 8.

d) Calcule o valor aproximado da integral removendo a singularidade, conside-


rando a paridade da funo
 
Z 1
cos(x) 1 Z 1
cos(x) 1 Z 1 cos 1+u 1
I = 4+ dx = 4 + 2 dx = 4 + 2 2 du
1+u
q
1 |x| 0 x 1

e aplicando quadratura gaussiana com n = 2, n = 4, n = 6 e n = 8.

e) Expandindo a funo cos(x) em srie de Taylor, truncando a srie depois do


n-simo termos no nulo e integrando analiticamente.

f) Aproximando a funo cos(x) pelo polinmio de Taylor de grau 4 dado por

x2 x4
P4 (x) = 1 + (9.113)
2 24
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
270 Clculo Numrico

e escrevendo
Z 1
cos(x) Z 1
cos(x) P4 (x) Z 1
P4 (x)
I = q dx = q dx + q dx
1 |x| 1 |x| 1 |x|
cos(x) P4 (x)
!
Z 1 Z 1
x3/2 x7/2
= 2 dx +2 x1/2 + dx
0 x 0 2 24
| {z } | {z }
Resolver numericamente Resolver analiticamente

E 9.9.2. Calcule numericamente o valor das seguintes integrais com um erro


relativo inferior a 104 .
Z 1
sen (x)
a) dx
0 x
Z 1
sen (x)
b) dx
0 x(1 x)
 
Z 1 sen
2
x
c) q dx
0 x(1 x)
Z 1
d) ln(x) cos(x)dx
0

R 1 ex R 1 ex
E 9.9.3. Calcule as integrais 0 |x|1/4 dx e 0 |x|4/5 dx usando procedimentos
analticos e numricos.
E 9.9.4. Use a tcnica de integrao por partes para obter a seguinte identi-
dade envolvendo integrais imprprias:
Z
cos(x) Z
sen (x)
I= dx = dx. (9.116)
0 1+x 0 (1 + x)2

Aplique as tcnicas estudadas para aproximar o valor de I e explique por que a


integral da direita mais bem comportada.

E 9.9.5. Resolva a equao


Z x
2
x+ ey dy = 5 (9.117)
0

com 5 dgitos significativos.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


9.9. EXERCCIOS FINAIS 271

E 9.9.6. (Cincia dos materiais) O calor especfico (molar) de um slido pode


ser aproximado pela teoria de Debye usando a seguinte expresso
3 Z T /T
T y 4 ey

D
CV = 9N kB dy (9.118)
TD 0 (ey 1)2
onde N a constante de Avogrado dado por N = 6,022 1023 e kB a constante
de Boltzmann dada por kB = 1,38 1023 . TD temperatura de Debye do slido.
a) Calcule o calor especfico do ferro em quando T = 200K, T = 300K e T = 400K
supondo TD = 470K.
b) Calcule a temperatura de Debye de um slido cujo calor especfico a tempe-
ratura de 300K 24J/K/mol. Dica: aproxime a integral por um esquema
numrico com um nmero fixo de pontos.
c) Melhore sua cultura geral: A lei de Dulong-Petit para o calor especfico dos s-
lidos precede a teoria de Debye. Verifique que a equao de Debye consistente
com Dulong-Petit, ou seja:

lim Cv = 3N kB . (9.119)
T

Dica: use ey 1 + y quando y 0

E 9.9.7. Explique por qu quando um mtodo simples tem estimativa de


erro de truncamento local de ordem hn , ento o mtodo composto associado tem
estimativa de erro de ordem hn1 .
E 9.9.8. Encontre os pesos w1 e w2 e as abcissas x1 e x2 tais que
Z 1
f (x) = w1 f (x1 ) + w2 f (x2 ) (9.120)
1

quando f (x) = xk , k = 0,1,2,3, isto , o mtodo que apresente mxima ordem de


exatido possvel com dois pontos.
Use esse mtodo para avaliar o valor da integral das seguintes integrais e com-
pare com os valores obtidos para Simpson e trapzio, bem como com o valor exato.
Z 1  
a) 2 + x 5x2 + x3 dx
1
Z 1
b) ex dx
1
Z 1
dx
c)
1 x2 + 1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


272 Clculo Numrico

E 9.9.9. Encontre os pesos w1 , w2 e w3 tal que o mtodo de integrao


! !
Z 1
3 3
f (x)dx w1 f + w2 f (0) + w3 f (9.121)
1 3 3

tenha ordem de exatido mxima. Qual ordem obtida?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 10

Problemas de valor inicial

Neste captulo, vamos estudar metodologias numricas para aproximar a so-


luo de problema de valor inicial (problema de valor inicial) para equaes dife-
renciais ordinrias. Primeiramente, daremos ateno aos problemas de primeira
ordem e, depois, mostraremos que estas tcnicas podem ser estendidas para pro-
blemas e sistemas de ordem superior. Considere um problema de valor inicial de
primeira ordem dado por:

u0 (t) = f (t, u(t)), t > t(1) (10.1a)


u(t(1) ) = a (condio inicial). (10.1b)

A incgnita de um problema de valor inicial uma funo que satisfaz a equao


diferencial (10.1a) e a condio inicial (10.1b).
Considere os prximos trs exemplos:

Exemplo 10.0.1. O seguinte problema linear no homogneo:

u0 (t) = t
(10.2)
u(0) = 2

Exemplo 10.0.2. O seguinte problema linear homogneo:

u0 (t) = u(t) (10.3)


u(0) = 1 (10.4)

Exemplo 10.0.3. O seguinte problema no linear e no homogneo:

u0 (t) = sen (u(t)2 + sen (t)) (10.5)


u(0) = a (10.6)

273
274 Clculo Numrico

A soluo do primeiro exemplo u(t) = t2 /2 + 2 pois satisfaz a equao di-


ferencial e a condio inicial. A soluo do segundo tambm facilmente obtida:
u(t) = et . Porm como podemos resolver o terceiro problema?
Para muitos problemas de valor inicial da forma (10.1), no possvel encontrar
uma expresso analtica fechada, ou seja, sabe-se que a soluo existe e nica,
porm no podemos express-la em termos de funes elementares. Por isso
necessrio calcular aproximaes numricas para a soluo.
Existem uma enorme famlia de metodologias para construir solues numricas
para problemas de valor inicial. Aqui, vamos nos limitar a estudar mtodos que
aproximam u(t) em um conjunto finito de valores de t. Este conjunto de valores
ser chamado de malha e ser denotado por {t(i) }N i=1 = {t , t , t , . . . , t
(1) (2) (3) (N )
}.
Desta forma, aproximamos a soluo u(t ) por u em cada ponto da malha
(i) (i)

usando diferentes esquemas numricos.

10.1 Rudimentos da teoria de problemas de valor


inicial
Uma questo fundamental no estudo dos problemas de valor iniciais consiste
em analisar se um dado problema um problema bem posto. Ou seja,
Existe uma soluo para o problema de valor inicial?
A soluo nica?
A soluo do problema de valor inicial pouco sensvel a pequenas pertur-
baes nas condies iniciais?
A fim de responder tais questes, precisamos definir o conceito de funo Lips-
chitz contnua, ou simplesmente, funo Lipschitz
Definio 10.1.1. Uma funo f (t, u) Lipschitz contnua em um intervalo I em
u se existe uma constante L, tal que t [a, b] e u, v R,
|f (t, u) f (t, v)| L|u v|, t I. (10.7)
O seguinte resultado estabelece a existncia e unicidade de soluo para deter-
minada classe de problemas de valor inicial:
Teorema 10.1.1 (Teorema de Picard-Lindelf). Seja f (t, u) contnua em t e Lips-
chitz em u. Ento o seguinte problema de valor inicial
u0 (t) = f (t, u(t)),
(10.8)
u(t(1) ) = a,
Admite uma nica soluo em um intervalo [t(1) ,t(f ) ) com t(f ) > t(1) .

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.2. MTODO DE EULER 275

Teorema 10.1.2 (Dependncia contnua na condio inicial). Se u(t) e v(t) so


solues do problema de valor inicial (10.8), isto , com f (t, u) contnua em t e
Lipschitz em u Lipschitz com u(a) = u(1) , v(a) = v (1) , ento
(1) )
|u(t) v(t)| eL(tt |u(1) v1 |. (10.9)

Exerccios resolvidos

ER 10.1.1. A funo f (t,u) = u, u 0 no uma funo Lipschitz em u, pois

|f (t,u) f (t,0)| u 1
lim = lim = lim = (10.10)
u0+ |u 0| u0+ u u0+ u
Mostre que o seguinte problema de valor inicial no admite soluo nica:
du
= u, u > 0, (10.11)
dt
u(0) = 0. (10.12)

Soluo. A funo identicamente nula, u(t) = 0, satisfaz a equao diferencial


e a condio de contorno, logo uma soluo do problema de valor inicial. No
2
entanto, a funo1 u(t) =qt4 satisfaz a condio inicial, pois u(0) = 0 e a equao
diferencial pois du = 2t = t4 .
2
dt
De fato, qualquer funo do tipo

0, 0 t t0
u(t) = )2
(tt0 , t > t0
4

soluo do problema de valor inicial dado.

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.2 Mtodo de Euler


Nesta seo, contruiremos o mais simples dos mtodos para resolver problemas
de valor inicial: o mtodo de Euler com passo constante. Por passo constante,
1
Esta soluo pode ser obtida por separao de variveis.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


276 Clculo Numrico

queremos dizer que os pontos da malha esto todos igualmente espaados, isto :
t(i) = (i 1)h, i = 1,2, . . . ,N. (10.13)
onde h passo, ou seja, a distncia entre dois pontos da malha.
Considere ento o problema de valor inicial dado por:
u0 (t) = f (t,u(t)), t > t(1)
(10.14)
u(t(1) ) = a.

Ao invs de tentar solucionar o problema para qualquer t > t(1) , iremos aproximar
u(t) em t = t(2) .
Integrando (10.14) de t(1) at t(2) , obtemos:
Z t(2) Z t(2)
u0 (t) dt = f (t,u(t)) dt (10.15)
t(1) t(1)
Z t(2)
u(t(2) ) u(t(1) ) = f (t,u(t)) dt (10.16)
t(1)
Z t(2)
u(t ) = u(t ) +
(1) (1)
f (t,u(t)) dt (10.17)
t(1)

Seja un a aproximao de u(tn ). Para obter o mtodo numrico mais simples


aproximamos f em [t(1) ,t(2) ] pela funo constante f (t,u(t)) f (t(1) ,u(1) ),
Z t(2)
u (2)
= u (1)
+ f (t ,u )
(1) (1)
dt (10.18)
t(1)
u(2) = u(1) + f (t(1) ,u(1) )(t (2)
t(1) ) (10.19)
u(2) = u(1) + hf (t(1) ,u(1) ) (10.20)
Este procedimento pode ser repetido para t(3) , t(4) , . . ., obtendo, assim, o cha-
mado mtodo de Euler:
u(n+1) = u(n) + h f (t(n) ,u(n) ),
(10.21)
u(1) = u(1) = u(t(1) ) (condio inicial).
Exemplo 10.2.1. Considere o problema de valor inicial
u0 (t) = 2u(t)
(10.22)
u(0) = 1
cuja soluo u(t) = e2t . O mtodo de Euler aplicado a este problema produz
o esquema:
u(k+1) = u(k) + 2hu(k) = (1 + 2h)u(k)
(10.23)
u(1) = 1,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.2. MTODO DE EULER 277

Suponha que queremos calcular o valor aproximado de u(1) com h = 0,2. Ento
os pontos t(1) = 0, t(2) = 0,2, t(3) = 0,4, t(4) = 0,6, t(5) = 0,8 e t(6) = 1,0 formam
os seis pontos da malha. As aproximaes para a soluo nos pontos da malha
usando o mtodo de Euler so:
u(0) u(1) = 1
u(0,2) u(2) = (1 + 2h)u(1) = 1,4u(1) = 1,4
u(0,4) u(3) = 1,4u(2) = 1,96
(10.24)
u(0,6) u(4) = 1,4u(3) = 2,744
u(0,8) u(5) = 1,4u(4) = 3,8416
u(1,0) u(6) = 1,4u(5) = 5,37824
Essa aproximao bem grosseira quando comparamos com a soluo do problema
em t = 1: u(1) = e2 7,38906. No obstante, se tivssemos escolhido um passo
menor, teramos obtido uma aproximao melhor. Veja tabela abaixo com valores
obtidos com diferentes valores de passo h.
h 101 102 103 104 105 106 107
u(N ) 6,1917 6,7275 7,0400 7,2096 7,2980 7,3432 7,3660
De fato, podemos mostrar que quando h se aproxima de 0, a soluo apro-
ximada via mtodo de Euler converge para a soluo exata e2 . Para isto, basta
observar que a soluo da relao de recorrncia (10.23) dada por

u(k) = (1 + 2h)k1 . (10.25)

Como t(k) = (k 1)h e queremos a soluo em t = 2, a soluo aproximada pelo


mtodo de Euler com passo h em dada por:
2
u(k) = (1 + 2h)k1 = (1 + 2h) h . (10.26)

Aplicando o limite h 0+, temos:


2
lim (1 + 2h) h = e2 . (10.27)
h0+

Vamos agora, analisar o desempenho do mtodo de Euler usando um exemplo


mais complicado, porm ainda simples suficiente para que possamos obter a soluo
exata:
Exemplo 10.2.2. Considere o problema de valor inicial relacionado equao
logstica:
u0 (t) = u(t)(1 u(t))
(10.28)
u(0) = 1/2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


278 Clculo Numrico

Podemos obter a soluo exata desta equao usando o mtodo de separao


de variveis e o mtodo das fraes parciais. Para tal escrevemos:

du(t)
= dt (10.29)
u(t)(1 u(t))

O termo u(t)(1u(t))
1
pode ser decomposto em fraes parciais como 1
u
+ 1
1u
e che-
gamos na seguinte equao diferencial:

1 1
!
+ du = dt. (10.30)
u(t) 1 u(t)

Integrando termo-a-termo, temos a seguinte equao algbrica relacionando u(t) e


t:
ln(u(t)) ln (1 u(t)) = t + C (10.31)
Onde C a constante de integrao, que definida pela condio inicial, isto ,
u = 1/2 em t = 0. Substituindo, temos C = 0. O que resulta em:
!
u(t)
ln =t (10.32)
1 u(t)

Equivalente a

u(t)
= et = u(t) = (1 u(t))et = (1 + et )u(t) = et (10.33)
1 u(t)
t
E, finalmente, encontramos a soluo exata dada por u(t) = 1+e
e
t.

Vejamos, agora, o esquema iterativo produzido pelo mtodo de Euler:

u(k+1) = u(k) + hu(k) (1 u(k) ),


(10.34)
u(1) = 1/2.

O seguinte cdigo pode ser usado para implementar no Scilab a recurso


acima:

function u=euler(h,Tmax)
u= .5;
itmax = Tmax/h;
for n=1:itmax
u= u + h*u*(1-u);
end
endfunction

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.2. MTODO DE EULER 279

o qual pode ser invocado da seguinte forma (h = 1e 1, t = 2):


-->euler(1e-1,2)
ans =

0.8854273
Para fins de comparao, calculamos a soluo exata e aproximada para alguns
valores de t e de passo h e resumimos na tabela abaixo:
t Exato Euler h = 0,1 Euler h = 0,01
0 1/2 0,5 0,5
e1/2
1/2 1+e1/2
0,6224593 0,6231476 0,6225316
1 e
1+e
0,7310586 0,7334030 0,7312946
e2
2 1+e2
0,8807971 0,8854273 0,8812533
3
3 e
1+e3
0,9525741 0,9564754 0,9529609

Exerccios Resolvidos
ER 10.2.1. Aproxime a soluo do problema de valor inicial

u0 (t) = 0,5u(t) + 2 + t (10.35)


u(0) = 8 (10.36)

Usando os seguinte passos: h = 101 , h = 102 , h = 103 , h = 104 e h = 105 e


compare a soluo aproximada em t = 1 com a soluo exata dada por:

u(t) = 2t + 8et/2 = u(1) = 2 + 8e1/2 6,85224527770107 (10.37)

Soluo. Primeramente itentificamos f (t,u) = 0,5u + 2 + t e construmos o


processo iterativo do mtodo de Euler:

u(n+1) = u(n) + h(0,5u(n) + 2 + t(n) ), n = 1,2,3, . . . (10.38)


u(1) = 8 (10.39)

O seguinte cdigo pode ser usado para implementar no Scilab a recurso


acima:
function u=euler(h,Tmax)
u= 8;
t= 0;
itmax = Tmax/h;
for n=1:itmax

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


280 Clculo Numrico

t= (n-1)*h;
u= u + h*(-0.5*u+2+t);
end
endfunction
o qual pode ser invocado da seguinte forma:
-->euler(1e-1,1)
ans =

6.7898955
Podemos construir um vetor com as cinco solues da seguinte forma:
-->S=[euler(1e-1,1) euler(1e-2,1) euler(1e-3,1) euler(1e-4,1) euler(1e-5,1)]
S =

6.7898956 6.846163 6.851639 6.852185 6.8522392


A seguinte tabela resume os resultados obtidos:

h 101 102 103 104 105


Euler 6,7898955 6,8461635 6,8516386 6,8521846 6,8522392
rel 9,1e-03 8,9e-04 8,9e-05 8,9e-06 8,9e-07

Exerccios

E 10.2.1. Resolva o problema de valor inicial a seguir envolvendo uma equao


no autnoma, isto , quando a funo f (t,u) depende explicitamente do tempo.
Use passo h = 0,1 e h = 0,01. Depois compare com a soluo exata dada por
u(t) = 2et + t 1 nos intantes t = 0, t = 1, t = 2 e t = 3.

u0 (t) = u(t) + t,
(10.40)
u(0) = 1.

E 10.2.2. Resolva o prolema de valor inicial envolvendo uma equao no


linear usando passo h = 0,1 e h = 0,01.

u0 (t) = cos(u(t))
(10.41)
u(0) = 0,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.3. MTODO DE EULER MELHORADO 281

Depois compare com a soluo exata dada por


e2t 1
!
u(t) = tan 1
.
2et
nos intantes t = 0, t = 1, t = 2 e t = 3.

E 10.2.3. Resolva a seguinte problema de valor inicial linear com passo h =


10 via mtodo de Euler e compare a soluo obtida com o valor exato y(t) =
4

esen (t) em t = 2:
y 0 (t) = cos(t)y(t)
(10.42)
y(0) = 1.

10.3 Mtodo de Euler melhorado


O mtodo de Euler estudado na Seo 10.2 aplicao bastante restrita devido
sua pequena preciso, isto , normalmente precisamos escolher um passo h muito
pequeno para obter solues de boa qualidade, o que implica um nmero elevado
de passos e, consequentemente, alto custo computacional.
Nesta seo, contruiremos o mtodo de Euler melhorado ou mtodo de
Euler modificado ou, ainda, mtodo de Heun. Para tal, considere o problema
de valor inicial dado por:
u0 (t) = f (t,u(t)), t > t(1)
(10.43)
u(t(1) ) = a.
Assim como fizemos para o mtodo de Euler, integramos (10.43) de t(1) at t(2)
e obtemos:
Z t(2) Z t(2)
u0 (t) dt = f (t,u(t)) dt (10.44)
t(1) t(1)
Z t(2)
u(t(2) ) u(t(1) ) = f (t,u(t)) dt (10.45)
t(1)
Z t(2)
u(t(2) ) = u(t(1) ) + f (t,u(t)) dt (10.46)
t(1)

A invs de aproximar f (t,u(t)) como uma constante igual ao seu valor em t = t(1) ,
aplicamos a regra do trapzio (ver 9.2.2) integral envolvida no lado direito da
expresso, isto :
   
f t(1) ,u(t(1) ) + f t(2) ,u(t(2) )

Z t(2)
f (t,u(t)) dt = h + O(h3 ) (10.47)
t(1) 2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


282 Clculo Numrico

onde h = t(2) t(1) . Como o valor de u(t(2) ) no conhecido antes de o passo ser
realizado, aproximamos seu valor aplicando o mtodo de Euler:
 
u(t(2) ) = u(t(1) ) + hf t(1) ,u(t(1) ) (10.48)

Assim obtemos:
Z t(2)
u(t ) = u(t ) +
(2) (1)
f (t,u(t)) dt (10.49)
t(1)
   
f t(1) ,u(t(1) ) + f t(2) ,u(t(2) )

u(t (1)
)+ h (10.50)
2
   
f t(1) ,u(t(1) ) + f t(2) ,u(t(2) )

u(t(1) ) + h (10.51)
2
(10.52)

onde
 
k1 = f t(1) ,u(t(1) ) (10.53)
e (10.54)
   
k2 = f t(2) ,u(t(2) ) = f t(2) , u(t(1) ) + hk1 (10.55)

Portanto, o mtodo recursivo de Euler melhorado assume a seguinte forma:

u(k+1) = u(k) + hf (t(k) ,u(k) ),


h  (k) (k)
(10.56)

u(k+1) = u(k) + f (t ,u ) + f (t(k) ,u(k) ) ,
2
u = a (condio inicial).
(1)

Que pode ser escrito equivalentemente como:

k1 = f (t(k) ,u(k) ),
k2 = f (t(k+1) ,u(k) + k1 ),
k1 + k2 (10.57)
u(k+1) = u(k) + h ,
2
u(1) = a (condio inicial).
Aqui k1 e k2 so variveis auxiliares que representam as inclinaes e devem ser cal-
culadas a cada passo. Esta notao compatvel com a notao usada nos mtodos
de Runge-Kutta, uma famlia de esquemas iterativos para aproximar problemas de
valor inicial, da qual o mtodo de Euler e o mtodo de Euler melhorado so casos
particulares. Veremos os mtodos de Runge-Kutta na Seo 10.7.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.3. MTODO DE EULER MELHORADO 283

Exerccios Resolvidos
ER 10.3.1. Resolva pelo mtodo de Euler melhorado problema de valor inicial do
Exerccio Resolvido 10.2.1:
u0 (t) = 0,5u(t) + 2 + t (10.58)
u(0) = 8 (10.59)
Usando os seguinte passos: h = 101 , h = 102 , h = 103 , h = 104 e h = 105
e compare a soluo aproximada em t = 1 com a soluo obtida pelo mtodo de
Euler e a soluo exata dada por:
u(t) = 2t + 8et/2 = u(1) = 2 + 8e1/2 6,85224527770107 (10.60)
Soluo. Primeramente itentificamos f (t,u) = 0,5u + 2 + t e construmos o
processo iterativo do mtodo de Euler melhorado:
k1 = f (t(n) ,u(n) ) = 0,5u(n) + 2 + t(n)
u = u(n) + hk1
k2 = f (t(n+1) ,u) = 0,5u + 2 + t(n+1)
u(n+1) = u(n) + h(k1 + k2 ), n = 1,2,3, . . .
u(1) = 8 (condio inicial).
O seguinte cdigo pode ser usado para implementar no Scilab a recurso
acima:
function u=euler_mod(h,Tmax)
u= 8;
itmax = Tmax/h;

for n=1:itmax
t=(n-1)*h;
k1 = (-0.5*u + 2 + t);
u_til = u + h*k1;
k2 = (-0.5*u_til + 2 + t + h);
u= u + h * (k1 + k2)/2;
end
endfunction
o qual pode ser invocado da seguinte forma:
-->euler_mod(1e-1,1)
ans =

6.8532941

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


284 Clculo Numrico

Podemos construir um vetor com as cinco solues da seguinte forma:

-->S=[euler_mod(1e-1,1) euler_mod(1e-2,1) euler_mod(1e-3,1) euler_mod(1e-4,1) e


S =

6.8532949 6.8522554 6.8522454 6.8522453 6.8522453

A seguinte tabela resume os resultados obtidos:

h 101 102 103 104 105


Euler 6,7898955 6,8461635 6,8516386 6,8521846 6,8522392
rel 9,1e-03 8,9e-04 8,9e-05 8,9e-06 8,9e-07
Euler mod. 6,8532949 6,8522554 6,8522454 6,8522453 6,8522453
rel 1,5e-04 1,5e-06 1,5e-08 1,5e-10 1,5e-12

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.4 Soluo de sistemas de equaes diferenci-


ais
Nas sees 10.2 e 10.3, construimos dois mtodos numricos para resolver pro-
blemas de valor inicial. Nestas sees, sempre consideremos problemas envolvendo
equaes diferenciais ordinrias de primeira ordem, isto :

u0 (t) = f (t,u(t)), t > t(1)


u(t(1) ) = a.

Estas tcnicas podem ser diretamente estendidas para resolver numericamente pro-
blemas de valor inicial envolvendo sistemas de equaes diferenciais ordinrias de

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.4. SOLUO DE SISTEMAS DE EQUAES DIFERENCIAIS 285

primeira ordem, isto :

u01 (t) = f1 (t,u1 (t), u2 (t), u3 (t), . . . , un (t)), t > t(1) ,


u02 (t) = f2 (t,u1 (t), u2 (t), u3 (t), . . . , un (t)), t > t(1) ,
u03 (t) = f3 (t,u1 (t), u2 (t), u3 (t), . . . , un (t)), t > t(1) ,
..
.
u0n (t) = f (n) (t,u1 (t), u2 (t), u3 (t), . . . , un (t)), t > t(1) ,
(10.61)
u(t(1) ) = a1 ,
u(t(2) ) = a2 ,
u(t(3) ) = a3 ,
..
.
u(t(n) ) = an .

O Problema (10.61) pode ser escrito como um problema de primeira ordem en-
volvendo uma nica incgnita, u(t), dada como um vetor de funes uj (t), isto
:
u1 (t)



u2 (t)


u(t) =
u3 (t)


..
.



un (t)

De forma que o Problema (10.61) assuma a seguinte forma:

u0 (t) = f (t,u(t)), t > t(1)


u(t(1) ) = a.

onde
f1 (t,u1 (t), u2 (t), u3 (t), . . . , un (t))



f2 (t,u1 (t), u2 (t), u3 (t), . . . , un (t))


f (t,u(t)) =

f3 (t,u1 (t), u2 (t), u3 (t), . . . , un (t))


..
.



f (n) (t,u1 (t), u2 (t), u3 (t), . . . , un (t))

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


286 Clculo Numrico

e

a1


a2


a= a3



..
.



an

Veja o o Exemplo 10.62

Exemplo 10.4.1. Considere o problema de resolver numericamente pelo mtodo


de Euler o seguinte sistema de equaes diferenciais ordinrias com valores iniciais:

x0 (t) = y(t), (10.62a)


y 0 (t) = x(t), (10.62b)
u(0) = 1. (10.62c)
v(0) = 0. (10.62d)

Para aplicar o mtodo de Euler a este sistema, devemos encarar as duas incgnitas
do sistema como entradas de um vetor, ou seja, escrevemos:

x(t)
u(t) = . (10.63)
y(t)

e, portanto, o sistema pode ser escrito como:



(k+1) (k) (k)
x x y

(k+1)
= (k)
+ h .
y y x(k)

Observe que este processo iterativo equivalente a discretiza as equaes do sis-


tema uma-a-uma, isto :

x(k+1) = x(k) hy (k) ,


y (k+1) = y (k) + hx(k) ,
x(1) = 1,
y (1) = 0,

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.4. SOLUO DE SISTEMAS DE EQUAES DIFERENCIAIS 287

Exerccios Resolvidos
ER 10.4.1. Resolva pelo mtodo de Euler melhorado o seguinte problema de valor
inicial para aproximar o valor de x e y entre t = 0 e t = 1:

x0 (t) = x(t) y(t),


y 0 (t) = x(t) y(t)3 ,
u(0) = 1.
v(0) = 0.

Soluo. Primeiramente, identificamos u(t) como o vetor incgnita:



x(t)
u(t) = . (10.64)
y(t)

Depois aplicamos a recurso do mtodo de Euler melhorado dada por:

u(k+1) = u(k) + hf (t(k) ,u(k) ),


h  (k) (k) 
u(k+1) = u(k) + f (t ,u ) + f (t(k) ,u(k) ) ,
2

isto :
 
x(k+1) = x(k) + h x(k) y (k)
 3
y (k+1) = y (k) + h x(k) y (k)
h h (k)   i
x(k+1) = x(k) + x y (k) + x(k) y (k)
2
h h 3  3 i
y (k+1) = y (k) + x(k) y (k) + x(k) y (k)
2

A tabela a seguir resume os resultados obtidos:

h t = 0,2 t = 0,4 t = 0,6 t = 0,8 t = 1,0


x 1.1986240 1.3890564 1.5654561 1.7287187 1.8874532
102
y 0.2194288 0.4692676 0.7206154 0.9332802 1.0850012
x 1.1986201 1.3890485 1.5654455 1.7287066 1.8874392
103
y 0.2194293 0.4692707 0.7206252 0.9332999 1.0850259
x 1.1986201 1.3890484 1.5653609 1.7287065 1.8874390
104
y 0.2194293 0.4692707 0.7205062 0.9333001 1.0850262

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


288 Clculo Numrico

A seguinte rotina pode ser usada para implementar a soluo do sistema:

function [x,y]=euler_mod(h,Tmax,u1)
itmax = Tmax/h;
x=zeros(itmax+1);
y=zeros(itmax+1);
x(1)=u1(1);
y(1)=u1(2);

for n = 1:itmax
t=(n-1)*h;
kx1 = (x(n)-y(n));
ky1 = (x(n)-y(n)^3);
x_til = x(n) + h*kx1;
y_til = y(n) + h*ky1;

kx2 = (x_til-y_til);
ky2 = (x_til-y_til^3);

x(n+1)=x(n)+h*(kx1+kx2)/2;
y(n+1)=y(n)+h*(ky1+ky2)/2;
end
endfunction

Que pode ser invocada como:

h=1e-2
Tmax=1
itmax=Tmax/h
[x,y]=euler_mod(h,Tmax,[1,0]);
[x(1) x(1+itmax*.2) x(1+itmax*.4) x(1+itmax*.6) x(1+itmax*.8) x(1+itmax)]
[y(1) y(1+itmax*.2) y(1+itmax*.4) y(1+itmax*.6) y(1+itmax*.8) y(1+itmax)]

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.5. SOLUO DE EQUAES E SISTEMAS DE ORDEM
SUPERIOR 289
10.5 Soluo de equaes e sistemas de ordem
superior
Na Seo 10.4, estendemos os mtodos de Euler e Euler melhorado visto nas
sees 10.2 e 10.3 para resolver numericamente problemas de valor inicial envol-
vendo sistemas de equaes diferenciais ordinrias de primeira ordem. Nesta seo,
estenderemos estas tcnicas para resolver alguns tipos de problemas de ordem su-
perior. Para tal, converteremos a equao diferencial em um sistema, incluindo as
derivadas da incgnita como novas incgnitas. Vejamos um exemplo:
Exemplo 10.5.1. Resolva o problema de valor inicial de segunda ordem dado por
y 00 + y 0 + y = cos(t),
y(0) = 1,
y 0 (0) = 0,
A fim de transformar a equao diferencial dada em um sistema de equaes de
primeira ordem, introduzimos a substituio w = y 0 , de forma que obteremos o
sistema:
y0 = w
w0 = w y + cos(t)
y(0) = 1
w(0) = 0
Este sistema pode ser resolvido usando as tcnicas da Seo 10.4.

Exerccios resolvidos
ER 10.5.1. Considere o seguinte sistema envolvendo uma equao de segunda
ordem e uma de primeira ordem:
x00 (t) (1 0,1z(t))x0 (t) + x(t) = 0
10z 0 (t) + z(t) = x(t)2
sujeito a condies iniciais dadas por:
x(0) = 3
x0 (0) = 0
z(0) = 10

Rescreva este sistema como um sistema de trs equaes de primeira ordem.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


290 Clculo Numrico

Soluo. Definimos y(t) = x0 (t), pelo que o sistema se torna:


x0 (t) = y(t)
y 0 (t) (1 0,1z(t))y(t) + x(t) = 0
10z 0 (t) + z(t) = x(t)2
defina o vetor u(t) como:

x(t)
u(t) = y(t)


z(t)
De forma que:


x0 (t) y(t)
u (t) = y (t) = [1 0,1z(t)] y(t) x(t)
0 0


z 0 (t) [x(t)2 z(t)] /10
ou
u0 (t)
1
u2 (t)
u (t) = u2 (t) = [1 0,1u3 (t)] u2 (t) u1 (t)
0 0


u03 (t) [u1 (t)2 u3 (t)] /10
sujeito s condies iniciais dadas por:


x0 (0) 3
u0 (0) = y 0 (0)

= 0


z 0 (0) 10

Exerccios

E 10.5.1. Resolva o problema de valor inicial dado por



x0 = 2x + y
y0 = x y
x(0) = 0
y(0) = 2

com passo h = 2 101 h = 2 102 , h = 2 103 e h = 2 104 para obter


aproximaes para x(2) e y(2).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.6. ERRO DE TRUNCAMENTO 291

E 10.5.2. Considere o problema de segunda order dado por:

x00 (t) + x0 (t) + sen (x(t)) = 1,

sujeito s condies iniciais dadas por:

x(0) = 2,
x0 (0) = 0.

Resolva numericamente para obter o valor de x(0,5), x(1), x(1,5) e x(2) com passo
h = 102 e h = 103 via mtodo de Euler modificado.

10.6 Erro de truncamento


Nas sees 10.2 e 10.3, construimos dois mtodos numricos para resolver pro-
blemas de valor inicial. No Exerccio Resolvido 10.3.1, vimos que o erro do m-
todo de Euler de do mtodo de Euler melhorado caem quando se reduz o passo
h, ademais, o erro do mtodo de Euler melhorado cai conforme o quadrado de h,
enquando o do mtodo de Euler cai conforme h2 . Este fenmeno motiva a defino
de ordem de preciso.

Definio 10.6.1. O erro de truncamento local definido como o erro intro-


duzido em cada passo pelo truncamento da equao diferencial supondo conhecida
a soluo exata no incio do intervalo. Um mtodo numrico dito ter ordem de
preciso p se o erro de truncamento local for da ordem de hp+1 .

Exemplo 10.6.1. O mtodo de Euler tem erro de truncamento local de ordem 1.


Para obter este resultado, observamos via expanso de Taylor que:

h2 00
u(t + h) = u(t) + hu0 (t) + u (t) + O(h3 ). (10.65)
2
Se escolhermos nesta expresso t = t(n) e, portanto, t + h = t(n) + h = t(n+1) ,
temos:
h2
t(n+1) = t(n) + hu0 (t(n) ) + u00 (t(n) ) + O(h3 ) (10.66)
2
2
Agora notamos que o termo principal do erro dado por h2 u00 (t(n) ), como a deri-
vada segunda da soluo no depende de h, o erro local de truncamento decresce
conforme h2 e assim a ordem de preciso do mtodo 1.

Definio 10.6.2. O erro de truncamento global definido como erro acu-


mulado ao longo de todos os passo de resoluo, supondo a condio inicial exata.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


292 Clculo Numrico

A relao entre o erro de truncamento global e o erro de truncamento local


depende da funo f (t,u) envolvida. Diante de suficiente regularidade, o erro
acumulado da mesma ordem de grande do erro de truncamento local acumulado
ao longo do processo, isto , pode ser estimado multiplicando o erro local pelo
nmero de passos. Como o nmero de passos N necessrios para calcular a soluo
t
de um problema de valor inicial no ponto t = tf dado por N = hf , temos que a
erro de truncamento global uma ordem inferior ao erro de truncamento local e
equivale ordem de preciso do mtodo.
Usamos tambm a notao ET L para o erro de truncamento local e ET G para
o erro de truncamento global. De forma que, para o mtodo de Euler, temos:
ET LEuler = O(h2 ) e ET GEuler = O(h). (10.67)
Exemplo 10.6.2. Vamos obter o erro de truncamento local do mtodo de Euler
melhorado. Partimos da construo do esquema iterativo de Euler melhorado:
Z t(2) Z t(2)
u (t) dt =
0
f (t,u(t)) dt (10.68)
t(1) t(1)
Z t(2)
u(t(2) ) u(t(1) ) = f (t,u(t)) dt (10.69)
t(1)
Z t(2)
u(t(2) ) = u(t(1) ) + f (t,u(t)) dt (10.70)
t(1)

Neste ponto, usamos o erro de truncamento do mtodo de trapzios para aproximar


a integral envolvida:
Z t(2)
h h  (1)   i
f (t,u(t)) dt = f t ,u(t(1) ) + f t(2) ,u(t(2) ) + O(h3 )
t(1) 2
Assim, temos que o erro de truncamento local do mtodo de Euler melhorado
O(h3 ) e, portanto, um mtodo de ordem 2.

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.7. MTODOS DE RUNGE-KUTTA EXPLCITOS 293

E 10.6.1. Aplique o mtodo de Euler e o mtodo de Euler melhorado para


resolver o problema de valor inicial dado por

u0 = 2u + u
u(0) = 1

com passo h = 101 , h = 102 , h = 103 , h = 104 e h = 105 para obter


aproximaes para u(1). Compare com a soluo exata dada do problema dada por
u(t) = (1 + 2et + e2t ) /4 atravs do erro relativo e observe a ordem de preciso
do mtodo.
E 10.6.2. Resolva o problema de valor inicial dado por

u0 = cos(tu(t))
u(0) = 1

com passo h = 101 , h = 102 , h = 103 , h = 104 e h = 105 para obter


aproximaes para u(2)

10.7 Mtodos de Runge-Kutta explcitos


Nas sees anteriores, exploramos os mtodos de Euler e Euler modificado para
resolver problemas de valor inicial. Neste momento, deve estar claro ao leitor que
o mtodo de Euler melhorado produz solues de melhor qualidade que o mtodo
de Euler para a maior parte dos problemas estudados. Isso se deve, conforme
Seo 10.6, ordem de preciso do mtodo.
Os mtodos de Runge-Kutta generalizam o esquema do mtodo de Euler me-
lhorado, inserindo mais estgios de clculo e buscando ordens de preciso mais
altas. Nesta seo, trataremos dos mtodos de Runge-Kutta explcitos2
Para tal, considere o problema de valor inicial:

u0 (t) = f (t,u(t)), (10.71)


u(t0 ) = a. (10.72)

Integrando a EDO em [t(n) ,t(n+1) ] obtemos


Z t(n+1)
u(n+1) = u(n) + f (t,u(t)) dt (10.73)
t(n)

2
Existem tambm os mtodos implcitos que sero abordados na Seo 10.8. Ver Observa-
o 10.7.1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


294 Clculo Numrico

O mtodo de Euler aproxima a integral no lado direito da expresso acima utili-


zando apenas o valor de f (t,u) em t = t(n) , o mtodo de Euler melhorado aproxima
esta integral utilizando os valores de f (t,u) t = t(n) e t = t(n+1) . Os mtodos de
Runge-Kutta explcitos admitem estgios intermedirios, utilizando outros valores
de f (t,u) nos pontos {1 ,2 , . . . , } dentro do intervalo [tn ,t(n+1) ]. Veja esquema
abaixo:

un un+1
| |
t(n) t(n+1)
1 2
t (n)
t(n)
+ c2 h (n)
t + c h

Observe que j = t(n) + cj h com 0 = c1 c2 c 1, isto , o primeira


ponto sempre coincide com o extremo esquerdo do intervalo, mas o ltimo ponto
no precisa ser o extremo direito. Ademais, um mesmo ponto pode ser usado mais
de uma vez com aproximaes diferentes para u(j ).
Desta forma, aproximamos a integral por um esquema de quadratura com
pontos:
Z t(n+1)
f (t,u(t)) dt un + h bj f (j ,u(j )) (10.74)
X
t(n) j=1

onde bj so os pesos da quadratura numrica que aproxima a integral. Assim como


na construo do mtodo de Euler melhorado, no dispomos dos valores u(j ) antes
de calcul-los e, por isso, precisamos estim-los com base nos estgios anteriores:

u1 = u(n)
u2 = un + ha21 k1
u3 = un + h [a31 k1 + a32 k2 ]
u4 = un + h [a41 k1 + a42 k2 + a43 k3 ] (10.75)
..
.
u = un + h [a1 k1 + a2 k2 + + a k ]
u (n+1)
= un + h[b1 k1 + b2 k2 + + b k ],

onde kj = f (j ,uj ), A := (aij ) a matriz Runge-Kutta (triangular inferior com


diagonal zero), bj so os pesos Runge-Kutta e cj so os ns Runge-Kutta. Estes
coeficientes podem ser escritos de forma compacta em uma tabela conforme a
seguir:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.7. MTODOS DE RUNGE-KUTTA EXPLCITOS 295

c1 0 0 0 c1
c A c2 a21 0 0 c2 a21
= =
c3 a31 a22 0 c3 a31 a22
b T
b1 b2 b3 . b1 b2 b3 .
Na tabela mais direita, omitimos os termos obrigatoriamente nulos.

Exemplo 10.7.1. O mtodo de Euler modificado pode ser escrito conforme:

u1 = u(n)
u2 = u(n) + hk1
1 1
 
u(n+1) = u(n) + h k1 + k2
2 2

Identificando os coeficientes, obtemos = 2, c1 = 0, c2 = 1, a21 = 1, b1 = 1


2
e
b2 = 21 . Escrevendo na forma tabular, temos:

0
c A
= 1 1
1 1
b 2 2

Observao 10.7.1. Nos mtodos chamados explcitos, os elementos da diagonal


principal (e acima dela) da matriz A devem ser nulos, pois a aproximao em cada
estgio calculada com base nos valores dos estgios anteriores. Nos mtodos
implcitos, essa restrio removida, neste caso, o clculo da aproximao em um
estgio envolve a soluo de uma equao algbrica.

Observao 10.7.2. Alm da condio fixa c1 = 0, para que um mtodo seja de


ordem pelo menos unitria, isto , p 1.

10.7.1 Mtodos de Runge-Kutta com dois estgios


Os mtodos de Runge-Kutta com dois estgios ( = 2) so da seguinte forma:

u1 = u(n) (10.76)
u2 = u(n) + ha21 k1 (10.77)
u(n+1) = u(n) + h[b1 k1 + b2 k2 ], (10.78)

onde k1 = f (t(n) ,u(n) ) e k2 = f (t(n) + c2 h,u2 )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


296 Clculo Numrico

Assumindo suavidade suficiente em f , usamos o polinnio de Taylor:


k2 = f (t(n) + c2 h, u2 ) (10.79)
= f (t(n) + c2 h, u(n) + a21 hk1 ) (10.80)
" #
f f
= f (t , u ) + h c2
(n) (n)
+ a21 k1 + O(h2 ) (10.81)
t u
!
f f
= k1 + h c2 + a21 k1 + O(h2 ) (10.82)
t u
fazendo com que (10.78) se torne
u(n+1) = u(n) + hb1 k1 + hb2 k2 (10.83)
" ! #
f f
= un + hb1 k1 + hb2 k1 + h c2 + a21 k1 + O(h2 ) (10.84)
t u
!
f f
= un + h(b1 + b2 )k1 + h2 b2 c2 + a21 k1 + O(h3 ) (10.85)
t u
Usando a equao diferencial ordinria que desejamos resolver e derivando-a em t,
obtemos:
u0 (t) = f (t,u(t)), (10.86)
f f 0 f f
u00 (t) = + u (t) = + f (t,u(t)). (10.87)
t u t u
Agora, expandimos em srie de Taylor a soluo exata u(t) em t = t(n) ,
h2 00
u(t(n+1) ) = u(t(n) + h) = u(n) + hu0 (t) + u (t) + O(h3 ) (10.88)
2
h2 d
= u(n) + hf (t,u(n) ) + f (t,u(t)) + O(h3 ) (10.89)
2 dt !
2
h f f
= u(n) + hf (t,u(n) ) + + u0 (t(n) ) + O(h3 ) (10.90)
2 t u
!
h2 f f
= u + hf (t,u ) +
(n) (n)
+ f (t,u ) + O(h3 )
(n)
(10.91)
2 t u
!
2
h f f
= u(n) + hf (t,u(n) ) + + k1 + O(h3 ) (10.92)
2 t u
Finalmente comparamos os termos em (10.85) e (10.92) de forma a haver concor-
dncia na expanso de Taylor at segunda ordem, isto , restanto apenas o erro
de ordem 3 e produzindo um mtodo de ordem de preciso p = 2:
1
b1 + b2 = 1, b2 c2 = e a21 = c2 (10.93)
2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
10.7. MTODOS DE RUNGE-KUTTA EXPLCITOS 297

Este sistema formada por trs equaes e quatro incgnitas, pelo que admite
infinitas solues. Para construir toda a famlia de solues, escolha um parmetro
(0,1] e defina a partir de (10.93):
1 1
b1 = 1 , b2 = , c2 = , a21 = (10.94)
2 2
Portanto, obtemos o seguinte esquema genrico:

c A
= c2 a21 = , 0 < 1.
 
b b1 b2 1 1
2
1
2

Algumas escolhas comuns so = 12 , = 2


3
e = 1:

0 0 0
1
2
1
2
, 2
3
2
3
e 1 1 .
0 1 1
4
3
4
1
2
1
2

Note que a tabela da direita fornece o mtodo Euler modificado ( = 1). O es-
quema iterativo assume a seguinte forma:

u1 = u(n) (10.95)
u2 = u(n) + hk1 (10.96)
1 1
  
u(n+1) = u(n) + h 1 k1 + k2 , (10.97)
2 2
onde k1 = f (t(n) ,u(n) ) e k2 = f (t(n) + h,u2 ). Ou, equivalentemente:

k1 = f (t(n) ,u(n) ) (10.98)


k2 = f (t(n) + h,u(n) + hk1 ) (10.99)
1 1
  
u (n+1)
= u +h 1
(n)
k1 + k2 , (10.100)
2 2

10.7.2 Mtodos de Runge-Kutta com trs estgios


Os mtodos de Runge-Kutta com 3 estgios podem ser descritos na forma
tabular como:
0
c2 a21
c3 a31 a32
b1 b2 b3

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


298 Clculo Numrico

Seguindo um procedimento similar ao da Seo 10.7.1, podemos obter as condi-


es equivalentes s condies (10.93) para um mtodo com = 3 e ordem p = 3,
as quais so:

b1 + b2 + b3 = 1, (10.101)
1
b2 c 2 + b3 c 3 = , (10.102)
2
1
b2 c22 + b3 c23 = , (10.103)
3
1
b3 a32 c2 = , (10.104)
6
a21 = c2 , (10.105)
a31 + a32 = c3 . (10.106)

Assim, temos 6 condies para determinar 8 incgnitas, o que implica a existncia


de uma enorme famlia de mtodos de Runge-Kutta com trs estgios e ordem
p = 3. Se fixarmos os coeficientes c2 e c3 , podemos os outros de forma nica:
1 1 1
b1 = 1 +
2c2 2c3 3c2 c3
3c3 2
b2 =
6c2 (c3 c2 )
2 3c2
b3 =
6c3 (c3 c2 )
a21 = c2
1
a31 = c3
6b3 c2
1
a32 =
6b3 c2
Alguns exemplos de
 mtodos de Runge-Kutta
 de 3 estgios so
 o mtodocls-
sico de Runge-Kutta c2 = 21 e c3 = 1 e o mtodo de Nystrm c2 = c3 = 32 :

0 0
1 1 2 2
2 2
e 3 3
.
1 1 2 2
3
0 2
3
1 4 1 2 3 3
6 6 6 8 8 8

10.7.3 Mtodos de Runge-Kutta com quatro estgios


As tcnicas utilizadas nas sees 10.7.1 e 10.7.2 podem ser usadas para obter
mtodos de quarta ordem (p = 4) e quatro estgios ( = 4). As seguintes tabelas

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.7. MTODOS DE RUNGE-KUTTA EXPLCITOS 299

descrevem os dois esquemas mais conhecidos de Runge-Kutta quarta ordem com


quatro estgios. O primeiro denominado mtodo de Runge-Kutta 3/8 e o
segundo chamado de mtodo de Runge-Kutta clssico.

0 0
1 1 1 1
3 3 2 2
2
3
13 1 e 1
2
0 1
2
1 1 1 1 1 0 0 1
1 3 3 1 1 2 2 1
8 8 8 8 6 6 6 6

O mtodo de Runge-Kutta clssico certamente o mais notrio dos mtodos


de Runge-Kutta e seu esquema iterativo pode ser escrito como a seguir:
 
k1 = hf t(n) ,u(n)
 
k2 = hf t(n) + h/2,u(n) + hk1 /2
 
k3 = hf t(n) + h/2,u(n) + hk2 /2
 
k4 = hf t(n) + h,u(n) + hk3
k1 + 2k2 + 2k3 + k4
u(n+1) = u(n) +
6
A seguinte heurstica, usando o mtodo de Simpson para quadratura numrica,
pode ajudar a compreender os estranhos coeficientes:
Z t(n+1)
u(t(n+1)
) u(t (n)
) = f (t,u(s))ds
t(n)
h h  (n)   
f t ,u(t(n) ) + 4f t(n) + h/2,u(t(n) + h/2)
6 i
+ f t(n) + hu(t(n) + h)
k1 + 4( k2 +k
2
3
) + k4
h
6
onde k1 e k4 representam os valores de f (t,u) nos extremos; k2 e k3 so duas
aproximaes diferentes para a inclinao no meio do intervalo.

Exerccios resolvidos
ER 10.7.1. Construa o esquema iterativo o mtodo clssico de Runge-Kutta trs
estgios cuja tabela dada a seguir:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


300 Clculo Numrico

0
1 1
2 2
1 1 2
1 4 1
6 6 6

Soluo.
 
k1 = f t(n) ,u(n)
 
k2 = f t(n) + h/2,u(n) + k1 /2
 
k3 = f t(n) + h,u(n) k1 + 2k2
k1 + 4k2 + k4
u(n+1) = u(n) + h
6

ER 10.7.2. Utilize o mtodo clssico de Runge-Kutta trs estgios para calcular
o valor de u(2) com passos h = 101 e h = 102 para o seguinte problema de valor
inicial:

u0 (t) = u(t)2 + t,
u(0) = 0.

Aplicando o processo iterativo obtido no Problema Resolvido 10.7.1, obtemos a


seguinte rotina:
function [y]= f(t,u)
y= t-u**2
endfunction

function [u] = RK3_classico(h,Tmax,u1)


itmax = Tmax/h;
u=zeros(itmax+1)
u(1)=u1

for i = 1:itmax
t=(i-1)*h
k1 = f(t, u(i))
k2 = f(t+h/2, u(i) + h*k1/2)
k3 = f(t+h, u(i) + h*(2*k2-k1))

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.7. MTODOS DE RUNGE-KUTTA EXPLCITOS 301

u(i+1) = u(i) + h*(k1+4*k2+k3)/6


end
endfunction

A qual pode ser invocada com:


->sol=RK3_classico(1e-2,2,0);sol(201)
ans =

1.1935760016451

-->sol=RK3_classico(1e-3,2,0);sol(2001)
ans =

1.1935759753635

Exerccios

E 10.7.1. Aplique o esquema de Runge-Kutta segunda ordem com dois es-


0
tgios cujos coeficientes so dados na tabela a seguir 23 23 para resolver o
1 3
4 4
problema de valor inicial dado por:
x0 (t) = sen (x(t)),
x(0) = 2.
para t = 2 com h = 1e 1, h = 1e 2 e h = 1e 3. Expresse sua resposta com
oito dgitos significativos corretos.

E 10.7.2. Resolva pelo mtodo de Euler, Euler melhorado, Runge-Kutta


clssico trs estgios e Runge-Kutta clssico quatro estgios o problema de valor
inicial tratados nos exerccios resolvidos 10.2.1 e 10.3.1 dado por:
u0 (t) = 0,5u(t) + 2 + t (10.107)
u(0) = 8 (10.108)
Usando os seguinte passos: h = 1, h = 101 , h = 102 e h = 103 e compare a
soluo aproximada em t = 1 com as solues obtidas com a soluo exata dada
por:
u(t) = 2t + 8et/2 = u(1) = 2 + 8e1/2 6,85224527770107 (10.109)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


302 Clculo Numrico

E 10.7.3. Aplique o mtodo de Euler, o mtodo de Euler melhorado, o mtodo


clssico de Runge-Kutta trs estgios e o mtodo clssico de Runge-Kutta quatro
estgios para resolver o problema de valor inicial dado por

u0 = u + t
u(0) = 1

com passo h = 1, h = 101 , h = 102 e h = 103 para obter aproximaes para


u(1). Compare com a soluo exata dada do problema dada por u(t) = 2et t 1
atravs do erro relativo e observe a ordem de preciso do mtodo. Expresse a sua
resposta com oito dgitos significativos para a soluo e 2 dgitos significativos para
o erro relativo.

10.8 Mtodos de Runge-Kutta implcitos


Nas sees anteriores contrumos os mtodos de Runge-Kutta implcito, nesta
seo veremos uma nova famlia de mtodos chamados implcitos. Nos mtodos im-
plcitos o processo recursivo produz uma equao implcita para y (n+1) em termos
de y (n) , como por exemplo:

y (n+1) = y (n) + hy (n+1)


(10.110)
y (1) = 1

para resolver o problema de valor inicial dado por:

y 0 (t) = y(t) (10.111)


y(0) = 1 (10.112)

Note que este mtodo implcito pois a expresso que define a iterao depende
de u(n+1) dos dois lados da Equao (10.110), exigindo que o termo seja isolado
para a aplicao do mtodo.

10.8.1 Mtodo de Euler implcito


Contruiremos, agora, o mais simples dos mtodos para resolver problemas de
valor inicial: o mtodo de Euler implcito, uma variante do mtodo de Euler
(explcito) que vimos na Seo 10.2. Seguinte o mesmo racioccio daquela seo,
integramos o problema de valor inicial dado por

u0 (t) = f (t,u(t)) (10.113)


u(t(1) ) = a (10.114)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.8. MTODOS DE RUNGE-KUTTA IMPLCITOS 303

de t(1) at t(2) obtemos (como feito anteriormente) para obter


Z t(2)
u(t(2) ) = u(t(1) ) + f (t,u(t)) dt (10.115)
t(1)

Diferentemente do mtodo de Euler estudado, o mtodo de Euler implcito


aproxima a funo f (t,u) pela uma funo constante f (t,u(t)) f (t(2) ,u(2) ) e,
assim, obtemos o seguinte esquema:

u(2) = u(1) + hf (t(2) ,u(2) ) (10.116)

Generalizando este procedimento para tn obtemos o mtodo de Euler im-


plcito

u(n+1) = u(n) + h f (t(n+1) ,u(n+1) ). (10.117)

Note que este mtodo implcito (a equao implcita) pois depende de un+1
dos dois lados da equao. Se a funo f for simples o suficiente, podemos resolver
a equao isolando o termo un+1 . Se isso no for possvel, devemos usar um dos
mtodos vistos anteriormente para calcular as razes da equao (por exemplo,
mtodo da bisseco e mtodo de Newton).

Exemplo 10.8.1. Considere o problema de valor inicial dado por

u0 (t) = u(t) (10.118)


u(0) = 1 (10.119)

A relao de recorrncia do mtodo de Euler implcito dado por:

y (n+1) = y (n) hy (n+1)


y (1) = 1

Isolando a y (n+1) na primeira equao, obtemos o processo iterativo dado por:

y (n)
y (n+1) =
1 h
y (1) = 1

10.8.2 O mtodo trapezoidal


O mtodo de Euler aproxima a funo f (t,u) como uma constante no intervalo
[t ,t(2) ]. O mtodo trapezoidal muito semelhante ao mtodo de Euler melhorado
(1)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


304 Clculo Numrico

estudado na Seo 10.3, integramos de t(1) at t(2) a equao diferencial envolvida


no problema de valor inicial
u0 (t) = f (t,u(t)), t > t(1)
(10.120)
u(t(1) ) = a.
para obter:
Z t(2) Z t(2)
u0 (t) dt = f (t,u(t)) dt (10.121)
t(1) t(1)
Z t(2)
u(t(2) ) u(t(1) ) = f (t,u(t)) dt (10.122)
t(1)
Z t(2)
u(t(2) ) = u(t(1) ) + f (t,u(t)) dt (10.123)
t(1)

Exatamente como no mtodo de Euler melhorado, aplicamos a regra do trapzio


(ver 9.2.2) integral envolvida no lado direito da expresso, isto :
   
f t(1) ,u(t(1) ) + f t(2) ,u(t(2) )

Z t(2)
f (t,u(t)) dt = h + O(h3 )
t(1) 2

onde h = t(2) t(1) .


Repetindo este procedimento para cada n, obtemos o esquema iterativo do
mtodo trapezoidal:
h  (n) (n) 
u(n+1) = u(n) + f (t ,u ) + f (t(n+1) ,u(n+1) ) (10.124)
2
u(1) = a (10.125)
Exemplo 10.8.2. Considere o problema de valor inicial dado por
u0 (t) = u(t) (10.126)
u(0) = 1 (10.127)
onde uma constante. A relao de recorrncia do mtodo de Euler trapezoidal
dado por:
h h (n+1) i
y (n+1) = y (n) y + y (n)
2
y (1) = 1
Isolando a y (n+1) na primeira equao, obtemos o processo iterativo dado por:
1 + h/2 (n)
y (n+1) = y
1 h/2
y (1) = 1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.8. MTODOS DE RUNGE-KUTTA IMPLCITOS 305

10.8.3 O mtodo theta

O mtodo theta uma generalizao dos mtodos de Euler e trapezoidal. A


relao de recorrncia do mtodo theta dada por:

u(n+1) = u(n) + h(f (t(n) ,u(n) ) + (1 )f (t(n+1) ,u(n+1) )) (10.128)

Observe que quando = 1, a relao recai no mtodo de Euler, quando = 12 , no


mtodo trapezoidal e quando = 0, no mtodo de Euler implcito.

Exerccios resolvidos

ER 10.8.1. Considere o problema de valor inicial dado por:

y 0 (t) = y(t) (1 y(t)) ,


1
y(0) = .
2

Construa a recurso via mtodo de Euler implcito e explicite o termo y (n+1) .

Soluo. O mtodo de Euler implcito produz a seguinte recurso:

 
y (n+1) = y (n) + hy (n+1) 1 y (n+1) (10.129)

a qual pode ser escrita como:

h i2
h y (n+1) + (1 h)y (n+1) y (n) = 0 (10.130)

Usando a frmula da equao quadrtica temos:

q
(1 h) (1 h)2 + 4hy (n)
y (n+1)
= (10.131)
2h
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
306 Clculo Numrico

Como a condio inicial positiva, fcil ver que y(t) > 0 para todo t e, portanto:
q
(1 h) + (1 h)2 + 4hy (n)
y (n+1)
=
r2h
4hy (n)
1 + 1+ (1h)2
= (1 h)
2h
v
(1 h) 4hy (n)
u
= t1 + 1
u
2h (1 h)2
(1 h) 4hy (n) 1
=
2h (1 h)
r 
2
4hy (n)
1 + (1h) 2 + 1
2 1
=  y (n)
(1 h) 1 + 1 +
 r
4hy (n)
(1h)2

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.9 O mtodo de Taylor


Uma maneira alternativa de aumentar a ordem dos mtodos de Euler anteri-
ormente descritos consiste em truncar a srie de Taylor de u(t + h):

h2 00 h3
u(t + h) = u(t) + hu0 (t) + u (t) + u000 (t) + . . . (10.132)
2! 3!
Utilizando dois termos temos o mtodo de Euler. Utilizando os trs primeiros
termos da srie e substituindo u0 (t) = f (t,x) e u00 (t) = df
dt
(t,x) temos o mtodo
de Taylor de ordem 2

u(n+1) = u(n) + hf (t(n) ,u(n) ) (10.133)


" #
h2
+ f (t ,u ) +
(n) (n)
f (t ,u )f (t ,u )
(n) (n) (n) (n)
(10.134)
2! t u

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.10. MTODO DE ADAMS-BASHFORTH 307

onde usamos a regra da cadeida para obter:


d
f (t,u) = f (t,u) + f (t,u)u0 (t) = f (t,u) + f (t,u)f (t,u) (10.135)
dt t u t u
O mtodo de Taylor de ordem 3
h2 df (n) (n) h3 d2 f (n) (n)
u(n+1) = u(n) + hf (t(n) ,u(n) ) + (t ,u ) + (t ,u )
2! dt 3! dt2

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.10 Mtodo de Adams-Bashforth


Seja o problema de valor inicial

u0 (t) = f (t,u(t)) (10.136)


u(t0 ) =a (10.137)
 
Nos mtodos de passo simples, os valores calculados para f t(n) ,u(t(n) ) nos
passos anteriores so desprezados ao calcular o prximo passo. Nos mtodos de
passo mltiplo, os valores de f (t,u)), nos passos n, n+1, ..., n+s1 so utilizados
ao calcular f em t(n+s) .
Integrando a equao diferencial no intervalo [t(n+s1) ,t(n+s) ], obtemos:
Z t(n+s)
u(n+s) = u(n+s1) + f (t,u(t))dt (10.138)
t(n+s1)

No mtodo de Adams-Bashforth, o integrando em (10.138) aproximado pelo


polinmio que interpola f (t(k) ,u(k) ) para k = n, n + 1, n + 2, . . . , n + s 1, isto :
Z t(n+s)
u(n+s) = u(n+s1) + p(t)dt (10.139)
t(n+s1)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


308 Clculo Numrico

onde p(t) polinmio de grau s 1 dado na forma de Lagrange por:



s1 s1 (n+k)
tt
p(t) = f (t(n) ,u(n) ) (10.140)
X Y

j=0 k=0,k6=j t(n+k)
t(n+j)
Agora observamos que
Z t(n+s) s1
p(t)dt = h j f (t(n+j) ,u(n+j) ) (10.141)
X
t(n+s1) j=0

onde
1 Z t(n+s) s1 t t(n+k)
j = (10.142)
Y
dt
h t(n+s1) k=0,k6=j t(n+j) t(n+k)
e obtemos a relao de recorrncia:
s1
u(n+s) = u(n+s1) + h j f (t(n+j) ,u(n+j) ) (10.143)
X

j=0

Observe que a integral envolvida no clculo dos coeficientes j em (10.142) pode


ser simplificada via a mudana de variveis t = t(n+s1) + h :
Z 1 s1
+sk1
j = (10.144)
Y
d
0 k=0,k6=j jk
(1)sj1 Z 1 s1
= ( + s k 1)d (10.145)
Y
j!(s j 1)! 0 k=0,k6=j
(1)sj1 Z 1 s1
= ( + k)d (10.146)
Y
j!(s j 1)! 0 k=0,k6=sj1
Observao 10.10.1 (Ordem do mtodo de Adasm-Bashforth). Da teoria de
interpolao (ver captulos 6 e 9), temos que o erro de aproximao da integral de
uma funo suficientemente suave por um polinmio interpolador em s pontos de
ordem s + 1. Assim, o erro local de truncamento do mtodo de Adams-Bashforth
com s passos s + 1 e, portanto, o erro global de truncamente de ordem s.
Exemplo 10.10.1. Calcule os coeficientes de Adams-Bashforth para s = 2 e,
depois, construa seu processo iterativo.
Z 1
1
0 = ( + 2 1 1)d =
0 2
Z 1
3
1 = ( + 2 0 1)d =
0 2
O processo iterativo dado por:
h h  (n+1)   i
y (n+2) = y (n) + 3f t ,u(t(n+1) ) f t(n) ,u(t(n) ) (10.147)
2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
10.10. MTODO DE ADAMS-BASHFORTH 309

Exemplo 10.10.2. Calcule os coeficientes e de Adams-Bashforth para s = 3 e,


depois, construa o processo iterativo.
1Z 1 5
0 = ( + 3 1 1) ( + 3 2 1)d =
2 0 12
Z 1
4
1 = ( + 3 0 1) ( + 3 2 1)d =
0 3
1Z 1 23
2 = ( + 3 0 1) ( + 3 1 1)d =
2 0 12
O processo iterativo dado por:
h h      i
y (n+3) = y (n) + 23f t(n+2) ,u(t(n+2) ) 16f t(n+1) ,u(t(n+1) ) + 5f t(n) ,u(t(n) )
12
(10.148)
Observao 10.10.2. Os coeficientes do mtodo de Adams-Bashforth de ordem
s podem, alternativamente, ser obtidos exigindo que o sistema seja exato para
f (t,u) = t0 , f (t,u) = t1 , f (t,u) = t2 , . . . , f (t,u) = ts1 .
Exemplo 10.10.3. Obtenha o mtodo de Adams-Bashforth para s = 4 como
Z t(n+4)
u (n+4)
= u (n+3)
+ f (t,u(t))dt (10.149)
t(n+3)
3
u(n+4) = u(n+3) + h bm f (n+m) (10.150)
X

m=0
h i
u(n+4) = u(n+3) + h b3 f (n+3) + b2 f (n+2) + b1 f (n+1) + b0 f (n) (10.151)

Para isso devemos obter [b3 ,b2 ,b1 ,b0 ] tal que o mtodo seja exato para polinmios
at ordem 3. Podemos obter esses coeficientes de maneira anloga a obter os
coeficientes de um mtodo para integrao.
Supondo que os ns t(k) estejam igualmente espaados, e para facilidade dos
clculos, como o intervalo de integrao [t(n+3) ,t(n+4) ], translade t(n+3) para a
origem tal que [t(n) ,t(n+1) , . . . ,t(n+4) ] = [3h, 2h, h,0,h].
Considere a base [1, t, t2 , t3 ] e substitua f (t) por cada um dos elementos desta
basa, obtendo:
Z h
1 dt = h = h [b0 (1) + b1 (1) + b2 (1) + b3 (1)]
0
Z h h2
t dt = = h [b0 (0) + b1 (h) + b2 (2h) + b3 (3h)]
0 2
Z h
h3 h i
t2 dt = = h b0 (0)2 + b1 (h)2 + b2 (2h)2 + b3 (3h)2
0 3
Z h 4
h h i
t3 dt = = h b0 (0)3 + b1 (h)3 + b2 (2h)3 + b3 (3h)3
0 4

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


310 Clculo Numrico

que pode ser escrito na forma matricial




1 1 1 1 b
0
1
0 1 2 3 b 1/2

1 = (10.152)
0 1 4 9 b2 1/3



0 1 8 27 b3 1/4
Resolvendo o sistema obtemos
9 37 59 55
 
[b0 ,b1 ,b2 ,b3 ] =
, , , (10.153)
24 24 24 24
fornecendo o mtodo de Adams-Bashforth de 4 estgios
u(n+4) = u(n+3) + h
24
[55f (n+3) 59f (n+2) + 37f (n+1) 9f (n) ] (10.154)
A tabela abaixo mostra as coeficientes do mtodo de Adams-Bashforth para
at 8 passos.
1 1
2 21 3
2
3 5
12
34 23
12
4 83 37
24
- 24
59 55
24
5 251
720
- 637
360
109
30
- 1387
360
1901
720
6 95
288 959
480
3649
720
4991
720
2641
480
4277
1440
7 19087
60480
5603
2520
135713
20160
10754
945
235183
20160
18637
2520
198721
60480
8 5257
17280 32863
13440
115747
13440
2102243
120960
296053
13440
242653
13440
1152169
120960
16083
4480

Observao 10.10.3. Note que os mtodos de mltiplo passo requerem o conhe-


cimento dos s valores previamente computados para calcular y (n+s) . Assim, para
inicializar um algoritmo com mais de um passo, no suficiente conhecer a condi-
o inicial. Usualmente, calcula-se os primeiros s passos usando um algoritmo de
passo simples da mesma ordem do mtodo mltiplo passo a ser aplicado.

Exerccios resolvidos
ER 10.10.1. Resolva numericamente o problema de valor inicial dado por:
q
y 0 (t) = 1 + y(t)
y(0) = 0
aplicando o mtodo de Adams-Bashforth de dois passos e inicializando o mtodo
atravs do mtodo de Euler modificado. Calcule o valor de y(1) com passo de
tamanho h = 0,1.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.10. MTODO DE ADAMS-BASHFORTH 311

Soluo. Primeiro observamos que o processo resursivo do mtodo de Adams


dado por:

h h  (n+1)   i
y (n+2) = y (n+1) + 3f t ,u(t(n+1) ) f t(n) ,u(t(n) ) , n = 1,2, . . . (10.155)
2

O valor inicial dado por y (1) = 0. No entanto, para inicializar o mtodo, preci-
samos calcular y (2) , para tal, aplicamos o mtodo de Euler modificado:

k1 = 1+0=1

k2 = 1 + 0,1 = 1,1 1,0488088
0,1
y (2) = (1 + 1,0488088) = 0,10244044
2

Aplicando o mtodo de Adams-Bashforth, obtemos:

y (1) = 0
y (2) = 0,10244044
y (3) = 0,20993619
y (4) = 0,32243326
y (5) = 0,43993035
y (6) = 0,56242745
y (7) = 0,68992455
y (8) = 0,82242165
y (9) = 0,95991874
y (10) = 1,10241584
y (11) = 1,24991294

Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
https://www.ufrgs.br/numerico/participe.html

Exerccios
Em construo ... Gostaria de participar na escrita deste livro? Veja como em:
https://www.ufrgs.br/numerico/participe.html

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


312 Clculo Numrico

10.11 Mtodo de Adams-Moulton


O mtodo de Adams-Moulton, assim como o mtodo de Adams-Bashforth,
um mtodo de passo mltiplo. A diferena entre estes dois mtodos que Adams-
Bashforth explcito, enquanto Adams-Moulton implcito, isto , os valores de
f (t,u)), nos passos n, n + 1, ..., n + s 1 e, inclusive, n + s so utilizados ao
calcular f em t(n+s) .
Considere o problema de valor inicial
u0 (t) = f (t,u(t))
u(t0 ) =a
Integrando a equao diferencial no intervalo [t(n+s1) ,t(n+s) ], obtemos:
Z t(n+s)
u (n+s)
=u (n+s1)
+ f (t,u(t))dt (10.156)
t(n+s1)

Agora o integrando em (10.156) aproximado pelo polinmio que interpola f (t(k) ,u(k) )
para k = n, n + 1, n + 2, . . . , n + s, isto :
Z t(n+s)
u(n+s)
=u (n+s1)
+ p(t)dt (10.157)
t(n+s1)

onde p(t) polinmio de grau s dado na forma de Lagrange por:



s s
t t(n+k)
p(t) = f (t(n) ,u(n) ) (10.158)
X Y

j=0 k=0,k6=j t(n+j) t(n+k)

Agora observamos que


Z t(n+s) s
p(t)dt = h j f (t(n+j) ,u(n+j) ) (10.159)
X
t(n+s1) j=0

onde
1 Z t(n+s) s
t t(n+k)
j = (10.160)
Y
dt
h t(n+s1) k=0,k6=j t(n+j) t(n+k)
Aplicando a mudana de variveis t = t(n+s1) + h , temos:
Z 1 s
+sk1
j =
Y
dt
0 k=0,k6=j jk
(1)sj Z 1 s
= ( + s k 1)d
Y
j!(s j)! 0 k=0,k6=j

(1) sj Z 1 s
= ( + k 1)d
Y
j!(s j)! 0 k=0,k6=sj1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.11. MTODO DE ADAMS-MOULTON 313

Assim, obtemos a relao de recorrncia:


s
u(n+s) = u(n+s1) + h j f (t(n+j) ,u(n+j) ) (10.161)
X

j=0

Observao 10.11.1. Os coeficientes do mtodo de Adams-Moulton de s pas-


sos podem, alternativamente, ser obtidos exigindo que o sistema seja exato para
f (t,u) = t0 , f (t,u) = t1 , f (t,u) = t2 , . . . , f (t,u) = ts .
Exemplo 10.11.1. Obtenha o mtodo de Adams-Moulton para s = 3 como
(n+4)
u(n+3) = u(n+2) + tt(n+3) f (t,u(t)) dt (10.162)
R

u(n+3) = u(n+2) + h 3m=0 bm f (n+m) (10.163)


P
h i
u(n+3) = u(n+2) + h b3 f (n+3) + b2 f (n+2) + b1 f (n+1) + b0 f (n) (10.164)

Para isso devemos obter [b3 ,b2 ,b1 ,b0 ] tal que o mtodo seja exato para polinmios
at ordem 3. Podemos obter esses coeficientes de maneira anloga a obter os
coeficientes de um mtodo para integrao.
Supondo que os ns tk estejam igualmente espaados, e para facilidade dos
clculos, como o intervalo de integrao [t(n+2) ,t(n+3) ], translade t(n+2) para a
origem tal que [t(n) ,t(n+1) , . . . ,t(n+3) ] = [2h, h,0,h].
Considere a base [1, t, t2 , t3 ] e substitua f (t) por cada um dos elementos da
base,obtendo:
Z h
1 dt = h = h(b0 (1) + b1 (1) + b2 (1) + b3 (1))
0
Z h h2
t dt = = h(b0 (h) + b1 (0) + b2 (h) + b3 (2h))
0 2
Z h
h3
t2 dt = = h(b0 (h)2 + b1 (0)2 + b2 (h)2 + b3 (2h)2 )
0 3
Z h
h4
t dt =
3
= h(b0 (h)3 + b1 (0)3 + b2 (h)3 + b3 (2h)3 )
0 4
que pode ser escrito na forma matricial


1 0 1 1 b0 1
1 0 1 2 b1 1/2

= (10.165)
1 0 1 4 b2 1/3



1 0 1 8 b3 1/4
Resolvendo o sistema obtemos
1 5 19 9
 
[b0 ,b1 ,b2 ,b3 ] = , , , (10.166)
24 24 24 24

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


314 Clculo Numrico

fornecendo a regra

un+3 = un+2 + h
24
[9fn+3 + 19fn+2 5fn+1 + f (n) ] (10.167)

A tabela abaixo mostra as coeficientes do mtodo de Adams-Moulton para at


oito passos.

1 1
2 1
2
1
2
3 1
12 2
3
5
12
4 1
24
5
24 19
24
3
8
5 19
720 53
360
11
30 323
360
251
720
6 3
160
173
1440 241
720
133
240 1427
1440
95
288
7 863
60480 263
2520
6737
20160 586
945
15487
20160
2713
2520
19087
60480
8 275
24192
11351
120960 1537
4480
88547
120960 123133
120960
4511
4480
139849
120960
5257
17280

Exemplo 10.11.2. O esquema iterativo de Adams-Moulton com trs passos, isto


, s = 2 dado na forma:

h h  (n+2)     i
u(n+2) = u(n+1) + 5f t ,u(t(n+2) ) + 8f t(n+1) ,u(t(n+1) ) f t(n) ,u(t(n) )
12
(10.168)

Exerccios resolvidos
ER 10.11.1. Resolva o problema de valor inicial dado por:

u0 (t) = 2u(t) + tet


u(0) = 1

via Adams-Moulton com s = 2 (trs passos) com h = 0,1 e h = 0,01 e compare com
a soluo exata dada por u(t) = (t 1)et nos instantes t = 1 e t = 2. Inicialize
com Euler modificado.

Soluo. Primeiro observamos que f (u,t) = 2u + tet e que o esquema de


Adams-Moulton pode ser escrito como:

h h  (n+2)     i
u(n+2) = u(n+1) + 5f t ,u(t(n+2) ) + 8f t(n+1) ,u(t(n+1) ) f t(n) ,u(t(n) )
12
(10.169)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.11. MTODO DE ADAMS-MOULTON 315

de forma que:

h h  (n+1)   i 5h  
u(n+2) = u(n+1) + 8f t ,u(t(n+1) ) f t(n) ,u(t(n) ) + f t(n+2) ,u(t(n+2) )
12 12
h h (n+1) i 5h  (n+2) t(n+2) 
= u +
(n)
8f f (n)
+ t e 2u(t (n+2)
)
12 12

Assim:

5h (n+2) 5h
!
h h (n+1) i (n+2)
1+ u = u(n+1) + 8f f (n) + t(n+2) et
6 12 12

Os valores obtidos so:


t=1 t=2
h=0,1 -0,000223212480142 0,135292280956
h=0,01 -2,02891229566e-07 0,135335243537
Exato 0 0,135335283237

ER 10.11.2. Repita o Problema 10.10.1 pelo mtodo de Adams-Moulton, isto,


resolva numericamente o problema de valor inicial dado por:
q
y (t) =
0
1 + y(t),
y(0) = 0,

aplicando o mtodo de Adams-Moulton de dois passos. Calcule o valor de y(1)


com passo de tamanho h = 0,1.

Soluo. Primeiro observamos que o processo resursivo do mtodo de Adams


dado por:

h h  (n+1)   i
y (n+1) = y (n) + f t ,u(t(n+1) ) + f t(n) ,u(t(n) ) , n = 1,2, . . . (10.170)
2

O valor inicial dado por y (1) = 0. Primeiramente, precisamos isolar y (x+1) na


Equao 10.170:

h2
r
h 2 q
hq
y (n+1)
=y (n)
+ h + 16 + 16y + 8h 1 + y +
(n) (n) 1 + y + , n = 1,2, . . .
(n)
8 2 8
(10.171)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


316 Clculo Numrico

y (1) = 0
y (2) = 0,1025
y (3) = 0,21
y (4) = 0,3225
y (5) = 0,44
y (6) = 0,5625
y (7) = 0,69
y (8) = 0,8225
y (9) = 0,96
y (10) = 1,1025
y (11) = 1,25


ER 10.11.3. Resolva o problema de valor inicial dado por

y 0 (t) = y 3 y + t,
y(0) = 0,

aplicando o mtodo de Adams-Moulton de dois passos. Calcule o valor de y(1)


com passo de tamanho h = 0,1 e h = 0,01. Primeiro observamos que o processo
resursivo do mtodo de Adams dado por:
h h  (n+1)   i
y (n+1) = y (n) + f t ,u(t(n+1) ) + f t(n) ,u(t(n) ) , n = 1,2, . . . ,
2
y (1) = 0

Observamos que o problema de isolar y (n+1) pode ser escrito como


h   h  
y (n+1) f t(n+1) ,u(t(n+1) ) = y (n) + f t(n) ,u(t(n) )
2 2
O termo da esquerda uma expresso no linear em y (n+1) e o termo da direita co-
nhecido, isto , pode ser calculado com base nos valores anteriormente calculados.
Devemos, ento, escolher um mtodo numrico de soluo de equaes algbricas
no lineares (veja captulo 3) como o mtodo de Newton visto na Seo 3.4 para
resolver uma equao do tipo:
h
u f (t(n+1) ,u) = a, (10.172)
2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
10.12. MTODO DE ADAMS-MOULTON PARA SISTEMAS LINEARES
317

isto :
h 3 
u u u + t(n+1) = a, (10.173)
 
2
com a = y (n) + h2 f t(n) ,u(t(n) ) Os valores obtidos so: 0,37496894 e 0,37512382
quando o mtodo inicializadom com Euler melhorado.

Exerccios

E 10.11.1. Encontre o mtodo de Adams-Moulton para s = 0.

E 10.11.2. Encontre o mtodo de Adams-Moulton para s = 1.

E 10.11.3. Repita o Problema 10.11.3 usando Adams-Moulton com 3 passos


e inicilizando com Runge-Kutta quarta ordem clssico.

10.12 Mtodo de Adams-Moulton para sistemas


lineares
Esquemas implcitos como o de Adams-Moulton apresentam a dificuldade adi-
cional de necessitar do valor de f (t(n+1) ,u(n+1) ) para calcular o valor de u(n+1) .
Pelo menos para sistemas lineares, o mtodo pode ser explicitado. Seja o seguinte
problema de valor inicial linear:
u0 (t) = Au(t) + g(t),
u(t(1) ) = a.
Onde u(t) um vetor de n entradas e A uma matriz n n.
Considere agora o esquema de Adams-Moulton dado na Equao (10.161) com
f (t,u) = Au + g(t):
s h i
u(n+s) = u(n+s1) + h j Au(n+j) + g(t(n+j) )
X

j=0

o que pode ser escrito como:


s1 h i
(Id hs A) u(n+s) = u(n+s1) + h j Au(n+j) + g(t(n+j) )
X

j=0

+ hs g(t (n+s)
) (10.176)
onde Id matriz identidade n n. O sistema linear envolvido em (10.176) pode
ser resolvido sempre que Id hs A for inversvel, o que sempre acontece quando
h suficientemente pequeno.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


318 Clculo Numrico

Exerccios resolvidos
Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios
Esta seo carece de exerccios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.13 Estratgia preditor-corretor


Esquemas implcitos como o de Adams-Moulton (Seo 10.11) e o de Runge-
Kutta (Seo 10.8), embora teis para resolver problemas rgidos (ver Seo 10.14),
apresentam a dificuldade de necessitar do valor de f (t(n+1) ,u(n+1) ) para calcular o
valor de u(n+1) , exigindo a soluo de uma equao algbrica a cada passo. Uma
forma de aproximar o comportamento de um mtodo mplicito atravs de um
esquema implcito consiste em aplicar a, assim chamada, estratgia preditor-
corretor.
Os mtodos do tipo preditor-corretor empregam um esquema explcito para
predizer o valor de u(n+1) e, depois, um mtodo implcito para recalcular, isto ,
corrigir u(n+1) .
Exemplo 10.13.1. Considere o mtodo de Euler implcito (ver 10.8.1) aplicado
para resolver o problema de valor inicial

u0 (t) = f (t,u(t))
u(t(1) ) = a

cujo processo iterativo dado por

u(n+1) = u(n) + hf (t(n+1) ,u(n+1) ).

Agora aplicamos o mtodo de Euler (ver 10.2) para predizer u(n+1) :

u(n+1) = u(n) + hf (t(n) ,u(n) ).

E agora, retornamos ao mtodo de Euler implcito:

u(n+1) = u(n) + hf (t(n+1) ,u(n+1) ).

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.13. ESTRATGIA PREDITOR-CORRETOR 319

Desta forma, a estratgia preditor-corretor aplicada ao mtodo de Euler implcito


com predio via mtodo de Euler produz o mtodo de Euler melhorado, ver 10.3,
isto :
u(n+1) = u(n) + hf (t(n) ,u(n) ),
u(n+1) = u(n) + hf (t(n+1) ,u(n+1) ).
Exemplo 10.13.2. Considere o mtodo de trapezoidal (ver 10.8.2) aplicado para
resolver o problema de valor inicial
u0 (t) = f (t,u(t))
u(t(1) ) = a
cujo processo iterativo dado por
h h (n) (n) i
u(n+1) = u(n) + f (t ,u ) + f (t(n+1) ,u(n+1) ) .
2
Agora aplicamos o mtodo de Euler (ver 10.2) para predizer u(n+1) :
u(n+1) = u(n) + hf (t(n) ,u(n) ).
E agora, retornamos ao mtodo trapezoidal para obter:
u(n+1) = u(n) + hf (t(n) ,u(n) ),
h h (n) (n) i
u(n+1) = u(n) + f (t ,u ) + f (t(n+1) ,u(n+1) ) .
2
Exemplo 10.13.3. Considere o mtodo de Adams-Moulton de segunda ordem
(ver 10.11) aplicado para resolver o problema de valor inicial
u0 (t) = f (t,u(t))
u(t(1) ) = a
cujo processo iterativo dado por
h h (n) (n) i
u(n+1) = u(n) + f (t ,u ) + f (t(n+1) ,u(n+1) ) .
2
Agora aplicamos o mtodo de Adams-Bashforth de segunda ordem (ver 10.10) para
predizer u(n+1) :
hh i
u(n+1) = u(n) +f (t(n1) ,u(n1) ) + 3f (t(n) ,u(n) ) .
2
Assim, obtemos o seguinte mtodo:
hh i
u(n+1) = u(n) + f (t(n1) ,u(n1) ) + 3f (t(n) ,u(n) ) ,
2
h h (n) (n) i
u(n+1) = u(n) + f (t ,u ) + f (t(n+1) ,u(n+1) ) .
2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
320 Clculo Numrico

10.13.1 Exerccios resolvidos


Esta seo carece de exerccios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Exerccios

E 10.13.1. Construa o esquema preditor corretor combinando Adams-Moulton


de quarta ordem e Adams-Bashforth de quarta ordem.

E 10.13.2. Seja o problema de valor inicial dado por:


q
u0 (t) = u(t) + 1
u(0) = 0
Resolva numericamente esse problema pelo mtodo de Adams-Bashforth de se-
gunda ordem e pelo mtodo preditor corretor combinando Adams-Bashforth de
segunda order com Adams-Moulton de segunda ordem. Compare a soluo obtida
para t = 10 com a soluo exata dada por:
t2
u(t) = + t. (10.177)
4
Inicialize os mtodos empregando Runge-Kuta de segunda ordem.

10.14 Problemas rgidos


Esta seo (ou subseo) est sugerida. Participe da sua escrita. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.15 Validao e Benchmarking


Toda metodologia numrica deve ser validada ao ser aplicada para resolver
um problema. A validao aumenta a confiabilidade na qualidade dos resultados
obtidos. A validao procura detectar erros de implementao, caractersticas nu-
mricas esprias no prevista em projeto, como propagao catastrfica erros de
arrendodamento, inadequao do mtodo para o problema proposto etc. A prin-
cipal tcnica de validao consiste em comparar a soluo produzida com solues
de alta qualidade e confiabilidade, os chamados benchmarks. Quando um bench-
mark no estiver disponvel, ainda se dispe de algumas tcnicas para avaliar a

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.15. VALIDAO E BENCHMARKING 321

qualidade do mtodo. Existe uma hierarquia das tcnicas de validao conforme


listados a seguir:

1. Expresso analtica: Testar o cdigo com problemas que admitem solues


analticas constitui a forma mais confivel para validar o esquema usado.
Expresses analticas so expresses matemticas das seguintes formas:
Expresso aritmtica: Expresses envolvendo apenas um nmero finito
de operaes aritmticas elementares (soma, subtrao, multiplicao e di-
t2 +1
viso) e nmeros inteiros. Ex: u(t) = 3t4 ou u(t) = t3 + 34 .
Expresso algbrica: Expresses envolvendo apenas um nmero finito
de operaes
aritmticaselementares e expoentes fracionrios. Ex: u(t) =
t + t ou u(t) = t3/2 + 2.
2

Expresso forma-fechada: Expresses envolvendo apenas um nmero fi-


nito de operaes aritmticas elementares, expoentes reais, logaritmos, ex-
ponencias, funes trigonomtricas e funes trigonomtricas inversas. Ex:
u(t) = ln(1 + t ), u(t) = et sen (t) ou u(t) = tan1 (t + 1).
Expresso envolvendo funes especiais: Alm das operaes e funes
acima, so permitidas funes especiais, como a funo gama, funes de
Bessel, sries de taylor, series de Fourier e outras sries envolvendo funes
elementares e especiais.

2. Expresso matemtica semi-analtica: Expresso matemtica envolvendo,


alm das operaes e funes acima, outros processos de limite, como deri-
vao e integrao. Ex: u(t) = 0 log |t x|xt dx.
R1

3. Soluo numrica com reformulao analtica prvia: Neste caso, no se


dispe de uma expresso matemtica para a soluo, mas pode-se comparar
resultado produzido pelo mtodo numrico com outro problema numrico
cuja soluo a mesma e pode ser obtida por outra metodologia numrica
mais confivel.

4. Benchmark puramente numrico: Um benchmark puramente numrico uma


aproximao numrica para a soluo de um problema muito bem estabe-
lecida e de alta confiabilidade. Os benchmarks numricos normalmente so
produzidos comparando diversos mtodos numricos diferentes e indepen-
dentes e com grande refinamento.

5. Validao por comparao: Quando no se dispe de benchmarks, ainda


se pode comparar o resultado obtido com outros mtodos numricos. Em
caso de divergncia, pode ser bastante difcil dissernir qual mtodo produz
melhores resultados.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


322 Clculo Numrico

6. Convergncia numrica: Este o teste mais rudimentar que se aplica a m-


todos e numricos e consiste em comparar o resultados produzidos com dife-
rentes malhas de clculo diferentes. Espera-se que o refino da malha produza
solues que convergem para a soluao exata. Resultados muito prximos
entre refinos sugere qualidade nos resultados.
Exemplo 10.15.1 (Expresso analtica). A soluo do problema de valor inicial
estudado no Exerccio Resolvido 10.2.1 dado por:

u0 (t) = 0,5u(t) + 2 + t,
u(0) = 8,

admite uma soluo em forma de expresso analtica dada por:

u(t) = 2t + 8et/2 . (10.178)

Exemplo 10.15.2 (Expresso envolvendo funes especiais). A soluo do pro-


blema de valor inicial dado por:

u0 (t) = u3 (t) + u2 (t)


1
u(0) =
2
dada na forma:
1
u(t) =
1 + W (e1t )
onde W a funo de Lambert a funo inversa de f (y) = yey , onde y = W (x).
Exemplo 10.15.3 (Expresso matemtica semi-analtica). A soluo do problema
de valor inicial dado por:

u(5) + au(4) + bu000 (t) + cu00 (t) + du0 (t) + u(t) = 1


u(4) (0) = u000 (0) = u00 (0) = u0 (0) = u(0)

dada na forma:

u(t) = 1 + Aer1 t + Ber2 t + Cer3 t + Der4 t + Eer5 t

onde r1 , r2 , r3 , r4 e r5 so as razes do polinmio caracterstico

p(x) = x5 + ax4 + bx3 + cx2 + dx + 1, (10.179)

cujas razes, salvo casos particulares, s pode ser obtida por aproximaes num-
ricas.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.15. VALIDAO E BENCHMARKING 323

Exemplo 10.15.4 (Soluo numrica com reformulao analtica prvia). A so-


luo do problema de valor inicial dado por:

u0 (t) = u3 (t) + u2 (t) + u(t) + 1


u(0) = 0

dada na forma:
(u(t) + 1)2
!
ln + 2 arctan (u (t)) = 4t
u(t)2 + 1

Esta analtica estabelece uma relao funcional implcita entre t e u(t), no entanto,
necessrio resolver uma equao algbrica no-linear para cada t. Ainda assim,
pode ser um excelente benchmark, pois o valor de u(t) dado explicitamente em
funo de t, isto , podemos ver t como uma funo de u. Por exemplo, fcil
descobrir que u = 1 quando t = ln(2) 4
+ 8 0.5659858768387104. Alm disso
tomando o limite u +, descobrimos que u(t) tende a infinito quando t 4 .

Exemplo 10.15.5 (Soluo numrica com reformulao analtica prvia). A so-


luo do problema de valor inicial dado por:

u0 (t) = [cos (u(t)) + u(t)] (1 + cos(t))


u(0) = 0

dada na forma:
Z y(t)
d
= t + sen (t)
0 cos( ) +

Esta expresso reformula o problema como uma equao integral em y(t). Esta
nova reformulao pode ser bastante til para produzir resultados de benchmark
se fixamos o forma de y(t), usamos uma tcnica de quadratura nmerica de boa
qualidade para aproximar a integral do lado esquerdo da equao. Por exemplo,
escolhendo t(y) = 100, temos:
Z 100
d
= 5,574304717298400
0 cos( ) +
Resolvendo a equao algbrica

t + sen (t) = 5,574304717298400, (10.180)

obtemos:
t = 5,924938036503083. (10.181)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


324 Clculo Numrico

A tabela a seguir mostra os valores de y(t) para t = 5,924938036503083 obtidos


por quatro mtodos de quarta-ordem: Runge-Kutta clssico, Adams-Bashforth,
preditor-corretor com Adams-Bashforth quarta ordem e Adams-Moulton quarta
ordem e Adams-Moulton. Os ltimos trs mtodos foram inicializados com Runge-
Kutta clssico de quarta ordem.
h = 101 h = 102 h = 103 h = 104
Runge-Kutta 4 95,02737096 99,04376734 99,81705606 99,9925711
Adams-Bashforth 4 94,68537569 99,04349066 99,81705572 99,9925711
Pred. Corr. 4 94,68537569 99,04349066 99,81705572 99,9925711
Adams-Moulton 4 94,71724913 99,04324261 99,81705570 99,9925711
Para h = 106 , todos os quatro mtodos produzem o resultado 99,99999287.

10.16 Convergncia, consistncia e estabilidade


Esta seo (ou subseo) est sugerida. Participe da sua escrita. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

10.17 Exerccios finais

E 10.17.1. Considere o problema de valor inicial dado por

du(t)
= u(t) + et
dt
u(0) = 0

Resolva analiticamente este problema usando as tcnicas elementares de equaes


diferenciais ordinrias. A seguir encontre aproximaes numricas usando os m-
todos de Euler, Euler modificado, Runge-Kutta clssico e Adams-Bashforth de
ordem 4 conforme pedido nos itens.

a) Construa uma tabela apresentando valores com 7 algarismos significativos


para comparar a soluo analtica com as aproximaes numricas produ-
zidas pelos mtodos sugeridos. Construa tambm uma tabela para o erro
absoluto obtido por cada mtodo numrico em relao soluo analtica.
Nesta ltima tabela, expresse o erro com 2 algarismos significativos em for-
mato cientfico. Dica: f ormat(0 e0 ,8) para a segunda tabela.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.17. EXERCCIOS FINAIS 325

0,5 1,0 1,5 2,0 2,5


Analtico
Euler
Euler modificado
Runge-Kutta clssico
Adams-Bashforth ordem 4

0,5 1,0 1,5 2,0 2,5


Euler
Euler modificado
Runge-Kutta clssico
Adams-Bashforth ordem 4

b) Calcule o valor produzido por cada um desses mtodo para u(1) com passo
h = 0,1, h = 0,05, h = 0,01, h = 0,005 e h = 0,001. Complete a tabela com
os valores para o erro absoluto encontrado.

0,1 0,05 0,01 0,005 0,001


Euler
Euler modificado
Runge-Kutta clssico
Adams-Bashforth ordem 4

E 10.17.2. Considere o seguinte modelo para o crescimento de uma colnia


de bactrias, baseado na equao logstica (ver (10.28))

u0 (t) = u(t) (A u(t)) (10.182)

onde u(t) indica a densidade de bactrias em unidades arbitrrias na colnia e


e A so constantes positivas. Pergunta-se:

a) Se A = 10 e = 1 e u(0) = 1, use mtodos numricos para obter aproximao


para u(t) em t = 5 102 , t = 101 , t = 5 101 e t = 1.

b) Se A = 10 e = 1 e u(0) = 1, use mtodos numricos para obter tempo


necessrio para que a populao dobre?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


326 Clculo Numrico

c) Se A = 10 e = 1 e u(0) = 4, use mtodos numricos para obter tempo


necessrio para que a populao dobre?

E 10.17.3. Considere o seguinte modelo para a evoluo da velocidade de um


objeto em queda:
v 0 = g v 2 (10.184)
Sabendo que g = 9,8 e = 102 e v(0) = 0. Pede-se a velocidade ao tocar o solo
e o instante quando isto acontece, dado que a altura inicial era 100.

E 10.17.4. Considere o seguinte modelo para o oscilador no linear de Van


der Pol:
u00 (t) (A u(t)2 )u0 (t) + w02 u(t) = 0 (10.185)
onde A, e w0 so constantes positivas.
a) Encontre a frequncia e a amplitude de oscilaes quando w0 = 1, = .1 e
A = 10. (Teste diversas condies iniciais)
b) Estude a dependncia da frequncia e da amplitude com os parmetros A,
e w0 . (Teste diversas condies iniciais)
c) Que diferenas existem entre esse oscilador no linear e o oscilador linear?

E 10.17.5. Considere o seguinte modelo para um oscilador no linear:


u00 (t) (A z(t))u0 (t) + w02 u(t) = 0
Cz 0 (t) + z(t) = u(t)2
onde A, , w0 e C so constantes positivas.
a) Encontre a frequncia e a amplitude de oscilaes quando w0 = 1, = .1,
A = 10 e C = 10. (Teste diversas condies iniciais)
b) Estude a dependncia da frequncia e da amplitude com os parmetros A,
, w0 e C. (Teste diversas condies iniciais)

E 10.17.6. Considere o seguinte modelo para o controle de temperatura em


um processo qumico:
CT 0 (t) + T (t) = P (t) + Text
P 0 (t) = (Tset T (t))
onde C, e so constantes positivas e P (t) indica o potncia do aquecedor. Sa-
bendo que Tset a temperatura desejada, interprete o funcionamento esse sistema
de controle. Faa o que se pede:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


10.17. EXERCCIOS FINAIS 327

a) Calcule a soluo quando a temperatura externa Text = 0, Tset = 1000,


C = 10, = .1 e = .1. Considere condies iniciais nulas.
b) Quanto tempo demora o sistema para atingir a temperatura 900K?
c) Refaa os dois primeiros itens com = 0,2 e = 1
b) Faa testes para verificar a influncia de Text , e na temperatura final.

E 10.17.7. Considere a equao do pndulo dada por:


d2 (t) g
+ sen ((t)) = 0 (10.186)
dt2 l
onde g o mdulo da acelerao da gravidade e l o comprimento da haste.
a) Mostre analiticamente que a energia total do sistema dada por
!2
1 d(t) g
cos((t)) (10.187)
2 dt l
mantida constante.
b) Resolva numericamente esta equao para g = 9,8m/s2 e l = 1m e as se-
guintes condies iniciais:
i. (0) = 0,5 e 0 (0) = 0.
ii. (0) = 1,0 e 0 (0) = 0.
iii. (0) = 1,5 e 0 (0) = 0.
iv. (0) = 2,0 e 0 (0) = 0.
v. (0) = 2,5 e 0 (0) = 0.
vi. (0) = 3,0 e 0 (0) = 0.
Em todos os casos, verifique se o mtodo numrico reproduz a lei de conservao
de energia e calcule perodo e amplitude.

E 10.17.8. Considere o modelo simplificado de FitzHugh-Nagumo para o


potencial eltrico sobre a membrana de um neurnio:
dV
= V V 3 /3 W + I
dt
dW
= 0,08(V + 0,7 0,8W )
dt
onde I a corrente de excitao.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


328 Clculo Numrico

Encontre o nico estado estacionrio (V0 ,W0 ) com I = 0.

Resolva numericamente o sistema com condies iniciais dadas por (V0 ,W0 )
e
I=0
I = 0,2
I = 0,4
I = 0,8
I = et/200

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Captulo 11

Problemas de valores de contorno

Neste captulo, tratamos dos mtodos numricos para resolver equaes dife-
renciais ordinrias com condies de contorno.

11.1 Mtodo de diferenas finitas


Nesta seo, discutimos os fundamentos do mtodo de diferenas finitas
(MDF) para problemas de valores de contorno (PVC). Este mtodo consiste
na reformulao do problema contnuo em um problema discreto usando frmulas
de diferenas finitas tomadas sobre uma malha apropriada.
Para introduzir os conceitos principais, consideramos o seguinte problema de
valor de contorno (PVC)

uxx = f (x, u), a < x < b, (11.1)


u(a) = ua , (11.2)
u(b) = ub , (11.3)

onde ua e ub so dados. Por ter fixados os valores da varivel u nos contornos, este
chamado de PVC com condies de Dirichlet1 .
A resoluo de um tal problema pelo mtodo de diferenas finitas consiste em
quatro etapas fundamentais: 1. construo da malha, 2. construo do problema
discreto, 3. resoluo do problema discreto e 4. visualizao e interpretao dos
resultados.
1. Construo da malha. A malha consiste em uma representao discreta
do domnio [a, b]. Como veremos, sua construo tem impacto direto nas prximas
etapas do mtodo. Aqui, vamos construir a malha mais simples possvel, aquela que
consiste de N pontos igualmente espaados, isto , a chamada malha uniforme.
1
Johann Peter Gustav Lejeune Dirichlet, 1805 - 1859, matemtico alemo.

329
330 Clculo Numrico

Figura 11.1: Malha uniforme de N pontos em um intervalo [a, b].

Para tanto, seja N N dado e, ento, tomamos o seguinte conjunto discreto


PN = {x1 , x2 , . . . , xN } (a malha), onde

xi = a + (i 1)h, i = 1, 2, . . . , N, (11.4)

com
ba
h := , (11.5)
N 1
o qual chamado de tamanho (ou passo) da malha (veja a Figura 11.1).
2. Construo do problema discreto. A segunda etapa consiste na discre-
tizao das equaes, no nosso caso, das equaes (11.1)-(11.3).
Vamos comear pela Equao (11.1). Em um ponto da malha xi , i = 2, 3, . . . , N
1, temos
uxx (xi ) = f (xi , u(xi )). (11.6)
Usando a frmula de diferenas finitas central de ordem 2 para a segunda derivada,
temos
u(xi h) 2u(xi ) + u(xi + h)
!
+ O(h2 ) = f (xi , u(xi )). (11.7)
h2
Rearranjando os termos, obtemos
u(xi h) 2u(xi ) + u(xi + h)
= f (xi , u(xi )) + O(h2 ). (11.8)
h2
Agora, denotando por ui a aproximao numrica de u(xi ), a equao acima
nos fornece
1 2 1
2
ui1 2 ui + 2 ui+1 = f (xi , ui ), (11.9)
h h h
para i = 2, 3, . . . , N 1. Observamos que trata-se de um sistema de N incgnitas,
a saber ui , e de N 2 equaes, isto , um sistema subdeterminado.
Para obtermos um sistema determinado, aplicamos as condies de contorno.
Da condio de contorno dada na Equao (11.2), temos

u(a) = ua u1 = ua . (11.10)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


11.1. MTODO DE DIFERENAS FINITAS 331

Analogamente, da condio de contorno dada na Equao (11.2), temos


u(b) = ub uN = ub . (11.11)
Por fim, as equaes (11.11), (11.9) e (11.10) determinam o problema discreto
associado
u1 = ua , (11.12)
1 2 1
ui1 2 ui + 2 ui+1 = f (xi , ui ), i = 2, . . . , N 1, (11.13)
h2 h h
uN = ub . (11.14)
Este um sistema de equaes de N incgnitas e N equaes.
3. Resoluo do sistema discreto. Esta etapa consiste em resolver o
sistema discreto construdo na etapa anterior.
Para o PVC (11.1)-(11.3), construmos o problema discreto (11.12)-(11.14).
Este um problema de N equaes e N incgnitas. Observamos que se f (x, u)
uma funo linear, o sistema ser linear e podemos resolver o sistema usando
de tcnicas numricas para sistema lineares. Agora, se f (x, u) uma funo no
linear, podemos usar, por exemplo, do mtodo de Newton para sistemas.
4. Visualizao e interpretao dos resultados. A soluo do problema
discreto consiste dos valores ui , isto , de aproximaes dos valores de u nos pontos
da malha. Para visualizarmos a soluo podemos, por exemplo, construir o grfico
do conjunto de pontos {(xi , ui )}. Ainda, para obtermos aproximaes da soluo
em outros pontos que no fazem parte da malha, podemos usar de tcnicas de
interpolao e/ou ajuste.
Exemplo 11.1.1. Use o mtodo de diferenas finitas para resolver o seguinte
problema de valor de contorno com condies de Dirichlet homogneas:
uxx = 100(x 1)2 , 0 < x < 1, (11.15)
u(0) = 0, (11.16)
u(1) = 0. (11.17)
Use a frmula de diferenas finitas central de ordem 2 para discretizar a derivada
em uma malha uniforme de 11 pontos. Calcule, tambm, a soluo analtica deste
problema, faa um esboo das solues numrica e analtica e compute o erro
absoluto mdio definido por
1 XN
E := |u(xi ) ui | , (11.18)
N i=1
onde xi o i-simo ponto da malha, i = 1, 2, . . . , N e N o nmero de pontos
na mesma. Por fim, repita seus clculos para uma malha com 101 pontos. O que
ocorre com o erro absoluto mdio?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


332 Clculo Numrico

Soluo. Vamos seguir as etapas conforme acima.


1. Construo da malha. Tomando N = 11, definimos os pontos da malha
no domnio [0, 1] por:

xi = (i 1)h, i = 1, 2, . . . , N, (11.19)

com h = 1/(N 1).


No Scilab, podemos construir a malha da seguinte forma:

a = 0
b = 1
N = 11
h = (b-a)/(N-1)
x = linspace(a,b,N)

2. Construo do problema discreto. Usando a frmula de diferenas


finitas central de ordem 2 para aproximar a derivada na Equao (11.15), obtemos
o seguinte sistema de equaes:

ui1 2ui + ui+1


= 100(xi 1)2 , i = 2, . . . , N 1. (11.20)
h2

Completamos este sistema com as condies de contorno dadas nas equaes (11.16)
e (11.17), donde
u1 = uN = 0. (11.21)
Ou seja, obtemos o seguinte problema discreto:

u1 = 0, (11.22)
1
(ui+1 2ui + ui+1 ) = 100(xi 1)2 , i = 2, . . . , N 1, (11.23)
h2
uN = 0. (11.24)

Observamos que este um sistema linear N N , o qual pode ser escrito na forma
matricial Au = b, cujos matriz de coeficientes

1 0 0 0 0 0


1 2 1 0 0 0



A= 0 1 2 1 0 0 , (11.25)

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

. . . . . . .


0 0 0 0 0 1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


11.1. MTODO DE DIFERENAS FINITAS 333

o vetor das incgnitas e o vetor dos termos constantes so

0

u1

100h (x2 1)2
2
u2



u= u3 e b= 100h2 (x3 1)2
. (11.26)

.. ..

. .



uN 0

No Scilab, podemos construir o problema discreto a seguinte forma:


A = zeros(N,N)
b = zeros(N)

A(1,1) = 1
b(1) = 0
for i = 2:N-1
A(i,i-1) = 1
A(i,i) = -2
A(i,i+1) = 1
b(i) = -100 * h^2 * (x(i)-1)^2
end
A(N,N) = 1
b(N) = 0
3. Resoluo do problema discreto. Neste caso, o problema discreto
consiste no sistema linear Au = b e, portanto, a soluo

u = A1 b. (11.27)

No Scilab, podemos computar a soluo do sistema Au = b com:


u = A\b
4. Visualizao e interpretao dos resultados. Tendo resolvido o pro-
blema discreto Au = b, obtemos os valores da soluo numrico de u nos pontos
da malha, isto , obtivemos o conjunto de pontos {(xi , ui )}N
i=1 . Neste exemplo,
queremos comparar a soluo numrica com a soluo analtica.
A soluo analtica pode ser obtida por integrao. Temos:

(x 1)3
uxx = 100(x 1)2 ux + c1 = 100
3 (11.28)
(x 1)4
u + c2 x + c1 = 100 ,
12
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
334 Clculo Numrico

Figura 11.2: Esboo dos grficos das solues analtica (linha) e numrica (pontos)
do PVC dado no Exemplo 11.1.1.

(x 1)4
ou seja, u(x) = + c2 x + c1 . As constantes so determinadas pelas
12
condies de contorno dadas pelas equaes (11.16) e (11.17), isto :
100
u(0) = 0 c1 = ,
12 (11.29)
100
u(1) = 0 c2 = .
12
Portanto, a soluo analtica :

(x 1)4 x 100
u(x) = 100 100 + (11.30)
12 12 12
A Figura 11.2 mostra o esboo dos grficos das solues analtica (11.30) e a
da soluo numrica (11.27).
No Scilab, podemos fazer o esboo das solues analtica e numrica da se-
guinte forma:
//def. sol. analitica
deff('y = ue(x)','y = -100.0*(x-1).^4/12 - 100*x/12 + 100.0/12')

//grafico
xx = linspace(0,1)
yy = ue(xx)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


11.1. MTODO DE DIFERENAS FINITAS 335

Tabela 11.1: Erro absoluto mdio das solues numricas com N = 11 e N = 101
do PVC dado no Exemplo 11.1.1.
N h E
11 0,1 1,3 102
101 0,01 1,4 104

plot(x,u,'ro',xx,yy,'b-')
Por fim, computamos o erro absoluto mdio das solues numricas com N = 11
e N = 101. A Tabela 11.1 mostra os resultados obtidos. Observamos, que ao dimi-
nuirmos 10 vezes o tamanho do passo h, o erro absoluto mdio diminui aproxima-
damente 100 vezes. Este resultado esperado, pois o problema discreto (11.22)-
(11.24) aproxima o problema contnuo (11.15)-(11.17) com erro de truncamento
de ordem h2 . Verifique!
No Scilab, podemos computar o erro absoluto mdio da seguinte forma:
E = sum(abs(ue(x)' - u))/N

Exerccios resolvidos
ER 11.1.1. Use o mtodo de diferenas finitas para resolver o seguinte problema
de valor de contorno:

uxx + u = ex , 0 < x < 1, (11.31)


u(0,5) = 1, (11.32)
u(1,5) = 2. (11.33)

Para tanto, use a frmula de diferenas finitas central de ordem 2 para discretizar
a derivada em uma malha uniforme com passo h = 0,1. Faa, ento, um esboo
do grfico da soluo computada.

Soluo. O passo h uma malha uniforme com N pontos no domnio [0,5, 1,5]
satisfaz:
(b a) (b a)
h= N = + 1. (11.34)
N 1 h
Ou seja, a malha deve conter N = 11 pontos igualmente espaados. Denotamos
os pontos na malha por xi , onde xi = 0,5 + (i 1)h.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


336 Clculo Numrico

x u x u
0.50 1.000000 1.00 1.643900
0.60 1.143722 1.10 1.745332
0.70 1.280661 1.20 1.834176
0.80 1.410269 1.30 1.908160
0.90 1.531724 1.40 1.964534
1.00 1.643900 1.50 2.000000

Tabela 11.2: Soluo numrica do Exerccio 11.1.1.

Agora, a equao diferencial dada no i-simo ponto da malha :

uxx (xi ) + u(xi ) = exi , i = 2, 3, . . . , N 1. (11.35)

Denotando ui u(xi ) e usando a frmula de diferenas finitas central de ordem


dois para a derivada uxx , obtemos:
ui1 2ui + ui+1
 
2
+ ui = exi , (11.36)
h
para i = 2, 3, . . . , N 1. Rearranjando os termos e aplicando as condies de
contorno, temos o problema discretizado como segue:

u1 = 1
ui1 + (2 + h )ui ui+1 = h2 exi , i = 2, . . . , N 1,
2
(11.37)
uN = 2.

O problema discreto obtido um sistema linear N N . Resolvendo este


sistema, obtemos a soluo discreta apresentada na Tabela 11.2. A Figura 11.3
mostra um esboo do grfico da soluo computada.
No Scilab, podemos computar a soluo numrica e grafic-la com o seguinte
cdigo:
//malha
a = 0.5
b = 1.5
N = 11
h = (b-a)/(N-1)
x = linspace(a,b,N)'

//sistema

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


11.1. MTODO DE DIFERENAS FINITAS 337

Figura 11.3: Esboo do grfico da soluo numrica do Exerccio 11.1.1.

A = zeros(N,N)
b = zeros(N,1)

A(1,1) = 1
b(1) = 1
for i = 2:N-1
A(i,i-1) = -1
A(i,i) = 2 + h^2
A(i,i+1) = -1
b(i) = h^2 * exp(x(i))
end
A(N,N) = 1
b(N) = 2

//solucao
u = A\b

//grafico
plot(x,u,'b-o')

Exerccios

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


338 Clculo Numrico

E 11.1.1. Considere o seguinte problema de valor de contorno para a equao


de calor no estado estacionrio:





uxx = 32, 0 < x < 1.

u(0) = 5
u(1) = 10


Defina uj = u(xj ) onde xj = (j 1)h e j = 1, . . . ,5. Aproxime a derivada


segunda por um esquema de segunda ordem e transforme a equao diferencial em
um sistema de equaes lineares. Escreva este sistema linear na forma matricial
e resolva-o. Faa o mesmo com o dobro de subintervalos, isto , com malha de 9
pontos.

E 11.1.2. Considere o seguinte problema de valor de contorno para a equao


de calor no estado estacionrio:

uxx = 200e(x1) , 0 < x < 2.
2





u(0) = 120
u(2) = 100


Defina uj = u(xj ) onde xj = (j 1)h e j = 1, . . . ,21. Aproxime a derivada


segunda por um esquema de segunda ordem e transforme a equao diferencial em
um sistema de equaes lineares. Resolva o sistema linear obtido.

E 11.1.3. Considere o seguinte problema de valor de contorno para a equao


de calor no estado estacionrio:

uxx = 200e(x1) , 0 < x < 2.
2





u0 (0) = 0
u(2) = 100


Defina uj = u(xj ) onde xj = (j 1)h e j = 1, . . . ,21. Aproxime a derivada


segunda por um esquema de segunda ordem, a derivada primeira na fronteira por
um esquema de primeira ordem e transforme a equao diferencial em um sistema
de equaes lineares. Resolva o sistema linear obtido.

E 11.1.4. Considere o seguinte problema de valor de contorno para a equao


de calor no estado estacionrio com um termo no linear de radiao:

u4




uxx = 100 10000
, 0 < x < 2.

u(0) = 0
u(2) = 10


Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


11.1. MTODO DE DIFERENAS FINITAS 339

Defina uj = u(xj ) onde xj = (j 1)h e j = 1, . . . ,21. Aproxime a derivada


segunda por um esquema de segunda ordem e transforme a equao diferencial
em um sistema de equaes no lineares. Resolva o sistema obtido. Expresse a
soluo com dois algarismos depois do separador decimal. Dica: Veja problema 38
da lista 2, seo de sistemas no lineares.

E 11.1.5. Considere o seguinte problema de valor de contorno para a equao


de calor no estado estacionrio com um termo no linear de radiao e um termo
de conveco:
u4




uxx + 3ux = 100 10000 , 0 < x < 2.

u0 (0) = 0
u(2) = 10


Defina uj = u(xj ) onde xj = (j 1)h e j = 1, . . . ,21. Aproxime a derivada


segunda por um esquema de segunda ordem, a derivada primeira na fronteira por
um esquema de primeira ordem, a derivada primeira no interior por um esquema
de segunda ordem e transforme a equao diferencial em um sistema de equaes
no lineares. Resolva o sistema obtido.
E 11.1.6. Considere o seguinte problema de valor de contorno:

u2




u00 + 2u0 = ex 100
, 1 < x < 4.

u0 (1) + u(1) = 2
u0 (4) = 1


Defina uj = u(xj ) onde xj = 1 + (j 1)h e j = 1, . . . ,101. Aproxime a derivada


segunda por um esquema de segunda ordem, a derivada primeira na fronteira por
um esquema de primeira ordem, a derivada primeira no interior por um esquema
de segunda ordem e transforme a equao diferencial em um sistema de equaes
no lineares. Resolva o sistema obtido.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Apndice A

Rpida introduo ao Scilab

A.1 Sobre o Scilab


Scilab uma linguagem de programao associada com uma rica coleo de
algoritmos numricos que cobrem muitos aspectos de problemas de computao
cientfica. Do ponto de vista de software, Scilab uma linguagem interpretada. A
linguagem Scilab permite a compilao dinmica e lincagem com outras linguagens
como Fortran e C. Do ponto de vista de licena, Scilab um software gratuito no
sentido que o usurio no paga por ele. Alm disso, Scilab um software de cdigo
aberto disponvel sobre a licena Cecill [1]. Scilab esta disponvel para Linux, Mac
Os e Windows. Ajuda online esta disponvel em portugus e muitas outras lnguas.
Do ponto de vista cientfico, Scilab comeou focado em solues computacionais
para problemas de lgebra linear, mas, rapidamente, o nmero de aplicaes se
estendeu para muitas reas da computao cientfica.
As informaes deste apndice foram adaptadas do tutorial Introduction to
Scilab [2], veja-o para maiores informaes. Alm disso, recomendamos visitar o
stio oficial do Scilab:

https://www.scilab.org/

O manual oficial do Scilab em portugus pode ser obtido em:

https://help.scilab.org/docs/5.5.2/pt_BR/index.html

A.1.1 Instalao e execuo


O Scilab pode ser executado normalmente nos sistemas operacionais Linux,
Mac Os e Windows. Muitas distribuies de Linux (Linux Mint, Ubuntu, etc.)
tm o Scilab no seu sistema de pacotes (incluindo binrio e documentao em
vrias lnguas). Alternativamente, no stio de internet oficial do Scilab pode-se

340
A.1. SOBRE O SCILAB 341

obter mais verses de binrios e documentao para instalao em sistemas Linux.


Para a instalao em sistemas Mac Os e Windows, visite stio de internet oficial
do Scilab.

A.1.2 Usando o Scilab


O uso do Scilab pode ser feito de trs formas bsicas:

usando o console de modo iterativo;

usando a funo exec para executar um cdigo Scilab digitado em um ar-


quivo externo;

usando processamento bash.

Exemplo A.1.1. Considere o seguinte pseudocdigo:

s = "Ol, mundo!". (Sem imprimir na tela o resultado.)


sada(s). (Imprime na tela.)

Implemente este pseudocdigo no Scilab: a) usando somente o console do Scilab;


b) usando o editor do Scilab e executando o cdigo com a funo exec; c) usando
processamento bash.

Soluo. Seguem as solues de cada item:

a) No console temos:

-->s = "Ol, mundo!";


-->disp(s)

b) Para abrir o editor do Scilab pode-se digitar no prompt:

-->editor()

ou, alternativamente:

-->scinotes

Ento, digita-se no editor o cdigo:

s = "Ol, mundo!"
disp(s)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


342 Clculo Numrico

salva-se em um arquivo de sua preferncia (por exemplo, ~/foo.sce) e


executa-se o cdigo clicando no boto play disponvel na barra de botes
do Scinotes.
c) Para executar o cdigo em processamento bash, digita-se em um editor o
cdigo:

s = "Ol, mundo!"
disp(s)

salva-se em um arquivo de sua preferncia (por exemplo, ~/foo.sce) e


executa-se em um console do sistema usando a linha de comando:

$ scilab -nw -f ~/foo.sce

Digite, ento, quit para voltar ao prompt do sistema.


A.2 Elementos da linguagem


Scilab uma linguagem interpretada em que todas as variveis so matrizes.
Uma varivel criada quando um valor atribudo a ela. Por exemplo:
-->x=1
x =
1.
-->y = x * 2
y =
2.
a varivel x recebe o valor double 1 e, logo aps, na segunda linha de comando,
a varivel y recebe o valor double 2. Observamos que o smbolo = significa o
operador de atribuio no o de igualdade. O operador lgico de igualdade no
Scilab ==.
Comentrios e continuao de linha de comando so usados como no seguinte
exemplo:
-->//Isto um comentrio
-->x = 1 ..
-->+ 2
x =
3.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


A.2. ELEMENTOS DA LINGUAGEM 343

A.2.1 Operaes matemticas elementares


No Scilab, os operadores matemticos elementares so os seguintes:
+ adio
- subtrao
* multiplicao
/ diviso
^ potenciao (igual a **)
' transposto conjugado

A.2.2 Funes e constantes elementares


Vrias funes e constantes elementares j esto pr-definidas no Scilab. Por
exemplo:
-->cos(%pi) //cosseno de pi
ans =
- 1.

-->exp(1) == %e //nmero de Euler


ans =
T

-->log(1) //logartmo natural de 1


ans =
0.
Para mais informaes sobre quais as funes e constantes pr-definidas no Scilab,
consulte o manual, sees Funes elementares e o carcter especial %".

A.2.3 Operadores lgicos


No Scilab, o valor lgico verdadeiro escrito como %T e o valor lgico falso
como %F. Temos os seguintes operadores lgicos disponveis:
& e lgico
| ou lgico
~ negao
== igualdade
~= diferente
< menor que
> maior que

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


344 Clculo Numrico

<= menor ou igual que


>= maior ou igual que
Exemplo A.2.1. Se x = 2, ento x maior ou igual a 1 e menor que 3?
Soluo. No Scilab, temos:
-->x=2;

-->(x >= 1) & (x < 3)


ans =

A.3 Matrizes
No Scilab, matriz o tipo bsico de dados, a qual definida por seu nmero de
linhas, colunas e tipo de dado (real, inteiro, lgico, etc.). Uma matriz A = [ai,j ]m,n
i,j=1
no Scilab definida usando-se a seguinte sintaxe:
A = [ a11 , a12 , ... , a1n ; ...; am1 , am2 , ... , amn ]
Exemplo A.3.1. Defina a matriz:

1 2 3
A= (A.1)
4 5 6

Soluo. No Scilab, digitamos:


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

1. 2. 3.
4. 5. 6.

A seguinte lista contm uma srie de funes que geram matrizes particulares:
eye matriz identidade
linspace vetor de elementos linearmente espaados
ones matriz cheia de uns
zeros matriz nula

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


A.3. MATRIZES 345

A.3.1 O operador :
O operador : cria um vetor linha de elementos. A sintaxe:
v = i:s:j
cria um vetor linha:
v = [i, i + s, i + 2s, . . . , i + ns] (A.2)
onde n o maior inteiro tal que i + ns j.
Exemplo A.3.2. Veja as seguintes linhas de comando:
-->v = 10:-2:3
v =

10. 8. 6. 4.

-->u = 2:6
u =
2. 3. 4. 5. 6.

A.3.2 Obtendo dados de uma matriz


A funo size retorna as dimenses de uma matriz, por exemplo:
-->A = ones(3,2)
A =

1. 1.
1. 1.
1. 1.

-->[nl, nc] = size(A)


nc =

2.
nl =

3.
informando que a matriz A tem trs linhas e duas colunas.
Existem vrios mtodos para acessar os elementos de uma matriz dada A:
a matriz inteira acessa-se com a sintaxe:

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


346 Clculo Numrico

o elemento da i-sima linha e j-sima coluna acessa-se usando a sintaxe:

A(i,j)

o bloco formado pelas linhas i1 , i2 e pelas colunas j1 , j2 obtm-se usando a


sintaxe:

A(i1:i2, j1:j2)

Exemplo A.3.3. Veja as seguintes linhas de comando:

-->A = rand(3,4) //gera uma matriz randmica


A =

0.2113249 0.3303271 0.8497452 0.0683740


0.7560439 0.6653811 0.6857310 0.5608486
0.0002211 0.6283918 0.8782165 0.6623569

-->A //mostra toda a matriz A


ans =

0.2113249 0.3303271 0.8497452 0.0683740


0.7560439 0.6653811 0.6857310 0.5608486
0.0002211 0.6283918 0.8782165 0.6623569

-->A(2,3) //acessa o elemento a23


ans =

0.6857310

-->A(2:3,2:4) //acessa um bloco de A


ans =

0.6653811 0.6857310 0.5608486


0.6283918 0.8782165 0.6623569

Definida uma matriz A no Scilab, as seguintes sintaxes so bastante teis:

A(:,:) toda a matriz


A(i:j,k) os elementos das linhas i at j (inclusive) da k-sima coluna

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


A.3. MATRIZES 347

A(i,j:k) os elementos da i-sima linha das colunas j at k (inclusive)


A(i,:) a i-sima linha da matriz
A(:,j) a j-sima coluna da matriz
A(i,$) o elemento da i-sima linha e da ltima coluna
A($,j) o elemento da ltima linha e da j-sima coluna
Exemplo A.3.4. Veja as seguintes linhas de comando:
-->B = rand(4,4)
B =

0.2113249 0.6653811 0.8782165 0.7263507


0.7560439 0.6283918 0.0683740 0.1985144
0.0002211 0.8497452 0.5608486 0.5442573
0.3303271 0.6857310 0.6623569 0.2320748

-->aux = B(:,2); B(:,2) = B(:,3); B(:,3) = aux


B =

0.2113249 0.8782165 0.6653811 0.7263507


0.7560439 0.0683740 0.6283918 0.1985144
0.0002211 0.5608486 0.8497452 0.5442573
0.3303271 0.6623569 0.6857310 0.2320748

A.3.3 Operaes matriciais e elemento-a-elemento


As operaes matriciais elementares seguem a mesma sintaxe que as operaes
elementares de nmeros. Agora, no Scilab, tambm podemos fazer operaes
elemento-a-elemento colocando um ponto . antes da operao desejada.
Aqui, temos as sintaxes anlogas entre operaes matriciais e operaes elemento-
a-elemento:
+ adio .+ adio elemento-a-elemento
- subtrao .- subtrao elemento-a-elemento
* multiplicao .* multiplicao elemento-a-elemento
./ diviso elemento-a-elemento
^ potenciao .^ potenciao elemento-a-elemento
' transposta conjugada .' transposta (no conjugada)
Exemplo A.3.5. Veja as seguintes linhas de comando:
-->A = ones (2 ,2)
A =

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


348 Clculo Numrico

1. 1.
1. 1.

-->B = 2 * ones (2 ,2)


B =

2. 2.
2. 2.

-->A * B
ans =

4. 4.
4. 4.

-->A .* B
ans =

2. 2.
2. 2.

A.4 Estruturas de ramificao e repetio


O Scilab contm estruturas de repetio e ramificao padres de linguagens
estruturadas.

A.4.1 A instruo de ramificao if


A instruo if permite executar um pedao do cdigo somente se uma dada
condio for satisfeita.

Exemplo A.4.1. Veja o seguinte cdigo Scilab:

i = 2
if ( i == 1 ) then
disp ( " Hello ! " )
elseif ( i == 2 ) then
disp ( " Goodbye ! " )
elseif ( i == 3 ) then
disp ( " Tchau ! " )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


A.4. ESTRUTURAS DE RAMIFICAO E REPETIO 349

else
disp ( " Au Revoir ! " )
end

Qual a sada apresentada no console do Scilab? Por qu?

A.4.2 A instruo de repetio for


A instruo for permite que um pedao de cdigo seja executado repetida-
mente.

Exemplo A.4.2. Veja o seguinte cdigo:

for i = 1:5
disp(i)
end

O que mostrado no console do Scilab?

Exemplo A.4.3. Veja o seguinte cdigo:

for j = 1:2:8
disp(j)
end

O que mostrado no console do Scilab?

Exemplo A.4.4. Veja o seguinte cdigo:

for k = 10:-3:1
disp(k)
end

O que mostrado no console do Scilab?

Exemplo A.4.5. Veja o seguinte cdigo:

for i = 1:3
for j = 1:3
disp([i,j])
end
end

O que mostrado no console do Scilab?

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


350 Clculo Numrico

A.4.3 A instruo de repetio while


A instruo while permite que um pedao de cdigo seja executado repetida-
mente at que uma dada condio seja satisfeita.

Exemplo A.4.6. Veja o seguinte cdigo Scilab:

s = 0
i = 1
while ( i <= 10 )
s = s + i
i = i + 1
end

Qual o valor de s ao final da execuo? Por qu?

A.5 Funes
Alm das muitas funes j pr-definidas no Scilab, podemos definir nossas
prprias funes. Para tanto, existem duas instrues no Scilab:

deff

function

A instruo deff apropriada para definirmos funes com poucas computa-


es. Quando a funo exige um grande quantidade de cdigo para ser definida, a
melhor opo usar a instruo function. Veja os seguintes exemplos:

Exemplo A.5.1. O seguinte cdigo:

-->deff('y = f(x)', 'y = x + sin(x)')

define, no Scilab, a funo f (x) = x + sen x.


Observe que f () = . Confirme isso computando:

-->f(%pi)

no Scilab.
Alternativamente, definimos a mesma funo com o cdigo:

function [y] = f(x)


y = x + sin(x)
endfunction

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


A.6. GRFICOS 351

Verifique!
Exemplo A.5.2. O seguinte cdigo Scilab:
function [z] = h(x,y)
if (x < y) then
z = y - x
else
z = x - y
end
endfunction
define a funo:
y x ,x < y
h(x,y) = (A.3)
x y ,x y
Exemplo A.5.3. O seguinte cdigo:
function [y] = J(x)
y(1,1) = 2*x(1)
y(1,2) = 2*x(2)

y(2,1) = -x(2)*sin(x(1)*x(2))
y(2,2) = -x(1)*sin(x(1)*x(2))
endfunction
define a matriz jacobiana J(x1 ,x2 ) := (f1 ,f2 )
(x1 ,x2 )
da funo:

f (x1 ,x2 ) = (x21 + x22 , cos(x1 x2 )). (A.4)

A.6 Grficos
Para criar um esboo do grfico de uma funo de uma varivel real y = f (x),
podemos usar a funo plot. Esta funo faz uma representao grfica de pontos
(xi , yi ) fornecidos. O Scilab oferece uma srie de opes para esta funo de forma
que o usurio pode ajustar vrias questes de visualizao. Consulte sobre a funo
plot no manual do Scilab.
Exemplo A.6.1. Veja as seguintes linhas de cdigo:
-->deff('y = f(x)','y = x .^ 3 + 1')
-->x = linspace(-2, 2, 100);
-->plot(x, f(x)); xgrid

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Resposta dos Exerccios

Recomendamos ao leitor o uso criterioso das respostas aqui apresentadas. De-


vido a ainda muito constante atualizao do livro, as respostas podem conter
imprecises e erros.
E 2.1.1. a) 4; b) 9; c) b2 ; d) 7; e) 170; f) 7,125; g) 3,28

E 2.1.2. a) 21,172; b) 5,5; c) 303,25; d) 4,6.

E 2.1.3. (101,1)2 .

E 2.1.4. (11,1C)16 .

5 ; b) (45,1)6 .
E 2.1.5. a) (12,31)

E 2.1.6. 10,5; (1010,1)2 .

E 2.1.7. a) (100101,001)2 ; b) (11,4)16 ; c) (11,5)8 ; d) (9,A)16 .

E 2.1.8. 50; 18.

E 2.2.1.

a) 2,99792458 105 b) 6,62607 1034


(2.25)
c) 6,674 108 d) 9,80665 104

E 2.2.2. No Scilab, temos:

-->printf("%1.7e", 29979.458)
2.9979458e+04
-->printf("%1.5e", 66.2607)
6.62607e+01
-->printf("%1.3e", 0.6674)
6.674e-01
-->printf("%1.5e", 9806.65e1)
9.80665e+04

E 2.3.1. (a) 1,1; (b) 7,3; (c) 5,9.

E 2.3.2. (a) 1,2; (b) 1,2; (c) 2,4; (d) 2,4.

E 2.3.3.

352
RESPOSTAS DOS EXERCCIOS 353

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 2.4.1. a) 26 + 25 + 21 = 98; b) 24 + 23 + 22 + 20 = 29; c) 27 ; d) 27 + 26 + 25 + 21 + 20 = 29; e)27 + 26 + 25 +

24 + 23 + 22 + 21 + 20 = 1. Observe que o dgito mais significativo (mais esquera) tem peso negativo.

E 2.4.2. a) 25186; b) 7453; c) 7453; d) 1.

E 2.4.3. a) 3,75; b) 5,75.

E 2.4.5. Devido preciso finita do sistema de numerao, o lao para quando x for suficientemente grande em comparao

a 1 a ponto de x+1 ser aproximado para 1. Isso acontece quando 1 da ordem do psilon de mquina em relao a x, isto ,

quando x 2/%eps. O tempo de execuo fica em torno de 28 anos.

E 2.5.1. a) abs = 5,9 104 , rel = 1,9 102 %; b) abs = 105 , rel = 103 %; c) abs = 1, rel = 105 %.

E 2.5.2. a) 1,7889; b) 1788,9; c) 0,0017889; d) 0,0045966; e) 2,1755 1010 ; f) 2,1755 1010 .

E 2.5.3. a) 3270, 3280; b) 42,5, 42,6; c) 0,0000333, 0,0000333.

E 2.5.4. a) 2; b) 2.

E 2.5.5.

0,1x 0,01 = 12
0,1x = 12 + 0,01 = 12,01
x = 120,1

A resposta exata 120,1.

E 2.5.6. a) abs = 3,46 107 , rel = 1,10 107 ; b) abs = 1,43 104 , rel = 1,00 103 .

E 2.8.1. 2%, deve-se melhorar a medida na varivel x, pois, por mais que o erro relativo seja maior para esta varivel, a

propagao de erros atravs desta variveis muito menos importante do que para a outra varivel.

E 2.8.2. 3,2% pela aproximao ou 3,4% pelo segundo mtodo, isto , (0,96758 I 1,0342).

E 2.9.1. Quando pequeno, e1/ um nmero grande. A primeira expresso produz um overflow (nmero maior que o

mximo representvel) quando pequeno. A segunda expresso, no entanto, reproduz o limite 1 quando 0+.

2
1 + x + O(x4 ); b) x/2 + O(x2 ); c) 5 104 x + O(x2 ); d)
E 2.9.2. a) 2 2
y + O(y 2 ) = 2
x + O(x2 )
4! 4 4

E 2.9.3. A expresso da direita se comporta melhor devido retirada do cancelamento catastrfico em x em torno de 0.

E 2.9.4. Possveis solues so:

p
p p e2x + 1 + ex
x x
e2x +1e = e2x +1e p
e2x + 1 + ex

e2x + 1 e2x 1
= p = p
e2x +1+ ex e2x + 1 + ex

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


354 Clculo Numrico

e, de forma anloga:

x2
p
x
e2x + x2 e = p .
e2x + x2 + ex

E 2.9.5. 4,12451228 1016 J; 0,002%; 0,26654956 1014 J; 0,002%; 4,98497440 1013 J; 0,057%; 1,74927914 1012 J;

0,522%.

E 3.1.1.

Observamos que a equao equivalente a cos(x) x = 0. Tomando, ento, f (x) = cos(x) x, temos que f (x) contnua
em [0, /2], f (0) = 1 e f (/2) = /2 < 0. Logo, do teorema de Bolzano 3.1.1, conclumos que a equao dada tem pelo menos
uma soluo no intervalo (0, /2).

E 3.1.2.

No Exerccio 3.1.1, mostramos que a funo f (x) = cos(x) x tem um zero no intervalo [0, /2]. Agora, observamos que
f 0 (x) = sen (x)1. Como 0 < sen x < 1 para todo x (0, /2), temos que f 0 (x) < 0 em (0, /2), isto , f (x) monotonicamente
decrescente neste intervalo. Logo, da Proposio 3.1.1, temos que existe um nico zero da funo neste intervalo.

E 3.1.3.

k 0,161228

E 3.1.5.

Escolhendo o intervalo [a, b] = [1,841 103 , 1,841 + 103 ], temos f (a) 5 104 > 0 e f (b) 1,2 103 < 0, isto
, f (a) f (b) < 0. Ento, o teorema de Bolzano nos garante que o zero exato x de f (x) est no intervalo (a, b). Logo, da escolha
feita, | 1,841 x | < 103 .

E 3.1.6. Basta aplicar as ideias da soluo do Exerccio 3.1.5.

E 3.2.1. 0,6875

E 3.2.2. Intervalo (0,4, 0,5), zero 0,45931. Intervalo (1,7, 1,8), zero 1,7036. Intervalo (2,5, 2,6), zero 2,5582.

E 3.2.3. a) x1 = 1. b) Dica: como x2 = 2 raiz dupla, tem-se que p0 (x2 ) = 0.

E 3.2.5. 1,390054; 1,8913954; 2,4895673; 3,1641544; 3,8965468

E 3.2.6. k = lP
2
cos() com (0, /2); 1,030.

E 3.2.7. 19; 23; 26; 0,567143; 1,745528; 3,385630

E 3.2.8. a) 0,623; b) 0,559; c) 0,500; d) 0,300; e) 0,3; f) 30; g) 30

E 3.2.9. a) 0,0294; b) 2.44e 3; c) 2.50e 4; d) 1.09 107 ; e) 1012 ; f) 1012 ; g) 1012

E 3.3.1. 1,8414057

E 3.3.2.

0,7391

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 355

E 3.3.3.
Tomemos x(1) = 1 como aproximao inicial para a soluo deste problema, iterando a primeira sequncia a), obtemos:

(1)
x = 1
 
(2) 10
x = ln = 2,3025851
1
 
(3) 10
x = ln = 1,4685526
2,3025851

.
.
.
(21)
x = 1,7455151
(31)
x = 1,745528
(32)
x = 1,745528

Iterando a segunda sequncia b), obtemos:

(1)
x = 1
(2) 1
x = 10e = 3,6787944
(3) 3,6787944
x = 10e = 0,2525340
(4) 0,2525340
x = 10e = 7,7682979
(5) 7,7682979
x = 10e = 0,0042293
(6) 0,0042293
x = 10e = 9,9577961

Este experimento numrico sugere que a iterao a) converge para 1,745528 e a iterao b) no convergente.

E 3.3.7. x1 1,4506619, x2 4,8574864, x3 = 7,7430681.

E 3.3.10.
0.0431266

cos(x)x2
E 3.4.1. raiz:0,82413, processo iterativo: x(n+1) = x(n) + sen (x)+2x

-->x=1
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)
-->x=x+(cos(x)-x^2)/(sin(x)+2*x)

E 3.4.2.

a) Primeiramente, deve-se observar que a funo tg (x) no est definida quando x um mltiplo mpar de 2
, pelo que
devemos cuidado nas singularidades. Traamos o grfico da funo f (x) = tg (x) 2x2 no Scilab usando os seguintes
comandos:

-->deff('y=f(x)','y=tan(x)-2*x^2')
-->plot([0:.01:1.3],f)

Observamos facilmente uma raiz no intervalo (0,5, 0,6) e outra no intervalo (1,2, 1,3). Como a funo f (x) contnua fora
dos pontos de singularidade da tangente, fcil verificar que existe pelo menos uma soluo nos intervalos dados pelo
teorema de Bolzano 3.1.1:

f (0,5) 0,046302 > 0


f (0,6) 0,035863 < 0
f (1,2) 0,30784e 1 < 0
f (1,3) 0,22210e 1 > 0

Para provar a unicidade da soluo em cada intervalo, precisamos mostra que a funo montona, ou seja, a derivada
no muda de sinal em cada intervalo:

0 2 1 1
f (x) = sec (x) 4x = 4x 4 0,5 < 0, x [0,5, 0,6]
cos2 (x) cos2 (0,6)
0 2 1 1
f (x) = sec (x) 4x = 4x 4 1,3 > 0, x [1,2, 1,3]
cos2 (x) cos2 (1,2)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


356 Clculo Numrico

b) Para recalcular as razes pelo mtodo de Newton, basta executar a iterao:

(n+1) (n) f (x(n) )


x =x . (3.98)
f 0 (x(n)

Em relao observao, o erro se deveu falta de cuidado em compreender o problema antes de tentar resolv-lo, em especial,

falta de observar que a funo descontnua em mltiplos mpares de


2
. Nestes pontos, a funo f (x) troca de sinal, mas no

passa por zero.

E 3.4.3. 0,65291864

E 3.4.4. 0,0198679; 0,533890; 0,735412; 1,13237 e 1,38851.

E 3.4.6. 99.99970, 0.3376513; 1.314006.

E 3.4.9.
x0 > 1.

E 3.4.10.

(0)
x = C.I.
(n+1) (n) (n)

x = x 2 Ax

E 3.4.11.

x0 = C.I.
 
(n+1) (n) 1 A
x = x 1 +
n nx(n)

E 3.4.12.

x0 = C.I.

(n+1) (n) x(n) Ax(n) (3 A)x(n)


x = x + =
2 2

E 3.6.5. Seja f (x) C 2 um funo tal que f (x ) = 0 e f 0 (x ) 6= 0. Considere o processo iterativo do mtodo das secantes:

(n+1) (n) f (x(n) ) (n) (n1)


x =x (x x ) (3.136)
f (x(n) ) f (x(n1) )

Esta expresso pode ser escrita como:

(n+1) (n) f (x(n) )(x(n) x(n1) )


x = x
f (x(n) ) f (x(n1) )

x(n) f (x(n) ) f (x(n1) ) f (x(n) )(x(n) x(n1) )
=
f (x(n) ) f (x(n1) )
(n) (n1) (n1)
x f (x )x f (x(n) )
=
f (x(n) ) f (x(n1) )

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 357

Subtraindo x de ambos os lados temos:

(n+1) x(n) f (x(n1) ) x(n1) f (x(n) )


x x = x
f (x(n) ) f (x(n1) )

x(n) f (x(n1) ) x(n1) f (x(n) ) x f (x(n) ) f (x(n1) )
=
f (x(n) ) f (x(n1) )
(x(n) x )f (x(n1) ) (x(n1) x )f (x(n) )
=
f (x(n) ) f (x(n1) )

Definimos n = xn x , equivalente a xn = x + n

n f (x + n1 ) n1 f (x + n )
n+1 =
f (x + n ) f (x + n1 )

Aproximamos a funo f (x) no numerador por

0 2 f 00 (x )
f (x + ) f (x ) + f (x ) + 
2
0 2 f 00 (x )
f (x + ) f (x ) + 
2

f 00 (x ) f 00 (x )
   
n n1 f 0 (x ) + 2
n1 2
n1 n f 0 (x ) + 2
n 2
n+1
f (x + n ) f (x + n1 )
f 00 (x )

2
n 2
n1 n1 2
n
=
f (x + n ) f (x + n1 )

1 00 n n1 n1 n
= f (x )
2 f (x + n ) f (x + n1 )

Observamos, agora, que


 0
  0

f (x + n ) f (x + n1 ) f (x ) + f (x )n f (x ) + f (x )n1
(3.137)
0
= f (x )(n n1 )

Portanto:
1 f 00 (x )
n+1 n n1 (3.138)
2 f 0 (x )

ou, equivalentemente:
(n+1) 1 f 00 (x ) (n)
 (n1)

x x x x x x (3.139)
2 f 0 (x )

E 3.7.2.
x > a com a 0,4193648.

E 3.7.3.
2j+1
z1 0.3252768, z2 1.5153738, z3 2.497846, z4 3.5002901, zj j 1/2 (1)j e , j >4

E 3.7.4.
150 W, 133 W, 87 W, 55 W, 6,5 W

E 3.7.5.
a) 42 s e 8 min2 s, b) 14 min56 s.

E 3.7.6.
118940992

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


358 Clculo Numrico

E 3.7.7.
7,7 cm

E 3.7.8.
4,32 cm

E 3.7.9.
(0,652919, 0,426303)

E 3.7.10.
7,19% ao ms

E 3.7.11.
4,54% ao ms.

E 3.7.12.
500 K, 700 K em t = 3 ln(2), 26 min, 4 h27 min.

E 3.7.13.
(1,1101388, 0,7675919), (1,5602111, 0,342585)

E 3.7.14.
1,5318075

E 3.7.15.
Aproximadamente 2500 reais por hora.

E 3.7.16.
a) 332,74 K b) 359,33 K

E 3.7.17.
1,2285751, 4,76770758, 7,88704085

E 4.1.1. Escrevemos o sistema na forma matricial e resolvemos:

" # " # " #


1 1 1 0 1 1 1 0 1 1 1 0
1 0 10 48 0 1 9 48 0 10 1 25 (4.32)
0 10 1 25 0 10 1 25 0 1 9 48
" # " #
1 1 1 0 1 1 1 0
0 10 1 25 0 10 1 25 (4.33)
0 0 9.1 45.5 0 0 1 5
" # " #
1 1 0 5 1 1 0 5
0 10 0 30 0 1 0 3 (4.34)
0 0 1 5 0 0 1 5
" #
1 0 0 2
0 1 0 3 (4.35)
0 0 1 5

Portanto x = 2, y = 3, z = 5

E 4.1.5.

a) x = [4 3 2]T

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 359

b) O sistema equivalente a
x1 + x2 + (1 + )x3 = 2
x1 + (1 + )x2 + x3 = 3
(1 + )x1 + x2 + x3 = 4

Somando as trs equaes temos

9
(1 + 3)(x1 + x2 + x3 ) = 9 = x1 + x2 + x3 = (4.45)
1 + 3

Subtramos (x1 + x2 + x3 ) da cada equao do sistema original e temos:

9
x3 = 2 1+3
9
x2 = 3 1+3
9
x1 = 4 1+3

Assim, temos:
T 9 T
x = [4 3 2] [1 1 1] (4.46)
1 + 3

E 4.1.6. x = [1.6890368 1.6890368 1.5823257 1.2667776 0.6333888]T

E 4.1.7.
" #
1 1/2 1/2
1/3 1/2 1/6
1/3 0 1/3

E 4.5.1.

a = (0, 1, 2, 1, 2, 1) (4.137)
b = (5, 3, 4, 2, 3, 2) (4.138)
c = (4, 1, 1, 1, 2, 0) (4.139)
d = (13, 10, 20, 16, 35, 17) (4.140)
x = (1, 2, 3, 4, 5, 6) (4.141)

E 4.5.2.

a = (0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/2) (4.143)


b = (1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1) (4.144)
c = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) (4.145)
d = (0, cos(2/10), cos(3/10), cos(4/10), cos(5/10), (4.146)
cos(6/10), cos(7/10), cos(8/10), cos(9/10), cos(1),0) (4.147)
x = (0,324295, 0,324295, 0,317115, 0,305943, 0,291539, (4.148)
0,274169, 0,253971, 0,230846, 0,20355, 0,165301, 0,082650) (4.149)

E 4.6.1.
= 7130
41
51.95122, para = 51: k1 = k = 350.4, k2 = 262.1. Para = 52: k1 = k = 6888, k2 = 5163.

E 4.6.2.
k1 (A) = 36, k2 (A) = 18,26, K (A) = 20,8.

E 4.6.3.

k1 = k = 6888, k2 = 26656567 e k1 = 180, k2 = 128,40972 e k = 210

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


360 Clculo Numrico

E 4.6.4.
18 + 3. Quando 0+, a matriz converge para uma matriz singular e o nmero de condicionamento diverge para +.

E 4.6.5.
As solues so [0.0000990 0.0000098]T e [0.0098029 0.0990294]T . A grande variao na soluo em funo de pequena
variao nos dados devido ao mau condicionamento da matriz (k1 1186274.3).
Exemplo de implementao:

A=[1e5 -1e4+1e-2; -1e4+1e-2 1000.1]


b1=[-10 1]'
b2=[-9.999 1.01]'
A\b1
A\b2

E 4.6.6. 0,695; 0,292; 0,188; 0,0237; 0,0123; 0,00967


Exemplo de implementao:

J=[1:1:10]
x=sin(J/10)
y=J/10
z=y-y.^3/6
e=abs(x-y)./x
f=abs(x-z)./x
norm(e,1)
norm(e,2)
norm(e,'inf')
norm(f,1)
norm(f,2)
norm(f,'inf')

E 4.7.1.

epsilon=1e-3;

A=[1 -1 0 0 0; -1 2 -1 0 0; 0 -1 (2+epsilon) -1 0; 0 0 -1 2 -1; 0 0 0 1 -1]

v=[1 1 1 1 1]'
xgauss=gauss([A v])

function x=q_Jacobi()
x0=[0 0 0 0 0]'

i=0
controle=0
while controle<3 & i<1000
i=i+1

x(1)=1+x0(2)
x(2)=(1+x0(3)+x0(1))/2
x(3)=(1+x0(2)+x0(4))/(2+epsilon)
x(4)=(1+x0(3)+x0(5))/2
x(5)=x0(4)-1

delta=norm(x-x0,2)
if delta<1e-6 then
controle=controle+1
else
controle=0
end
mprintf('i=%d, x1=%f, x5=%f, tol=%.12f\n', i, x(1), x(5), delta)
x0=x;
end

endfunction

function x=q_Gauss_Seidel()
x0=[0 0 0 0 0]'

i=0
controle=0
while controle<3 & i<15000
i=i+1

x(1)=1+x0(2)
x(2)=(1+x0(3)+x(1))/2
x(3)=(1+x(2)+x0(4))/(2+epsilon)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 361

x(4)=(1+x(3)+x0(5))/2
x(5)=x(4)-1

delta=norm(x-x0,2)
if delta<1e-2 then
controle=controle+1
else
controle=0
end
mprintf('i=%d, x1=%f, x5=%f, tol=%.12f\n',i,x(1),x(5),delta)
x0=x;
end

endfunction

E 4.7.4.
0,324295, 0,324295, 0,317115, 0,305943, 0,291539, 0,274169, 0,253971, 0,230846, 0,203551, 0,165301, 0,082650
Exemplos de rotinas:

function x=jacobi()
x0=zeros(11,1)
k=0;
controle=0;
while controle<3 & k<1000
k=k+1
x(1)=x0(2)
for j=2:10
x(j)=(cos(j/10)+x0(j-1)+x0(j+1))/5
end
x(11)=x0(10)/2

delta=norm(x-x0) //norma 2
if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;
end

endfunction

function x=gs()
x0=zeros(11,1)
k=0;
controle=0;
while controle<3 & k<1000
k=k+1
x(1)=x0(2)
for j=2:10
x(j)=(cos(j/10)+x(j-1)+x0(j+1))/5
end
x(11)=x0(10)/2

delta=norm(x-x0) //norma 2
if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;
end
endfunction

E 4.7.5.
Permute as linhas 1 e 2.

E 4.8.1. = 86.1785 associado ao autovetor dado por v1 = [0.65968 0.66834 0.34372]T .

E 4.8.2.

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


362 Clculo Numrico

E 4.8.3. 158,726

E 4.8.4.

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 4.9.1. a)V5 = 98.44V b) V5 = 103.4V


O problema com cinco incgnitas pode ser escrito na forma matricial conforme a seguir:


V1 V
1 0 0 0 0


1 1
 V2

0

+ R1 + R1 1 0 0

R1 R1 2 5 R2



0 1 1 + R1 + R1 1 0 =
R2 R2 R3 V3 0
3 6


1 1 + R1 + R1 1
0 0 R3
R3 R4
4 7 v4
0







1 1

0 0 0 R4
R4
+ R1
8
V5 0

Este problema pode ser implementado no Scilab (para o item a) com o seguinte cdigo:

R1=2, R2=2, R3=2, R4=2, R5=100, R6=100, R7=100, R8=50, V=127

A=[1 0 0 0 0;
1/R1 -(1/R1+1/R2+1/R5) 1/R2 0 0;
0 1/R2 -(1/R2+1/R3+1/R6) 1/R3 0;
0 0 1/R3 -(1/R3+1/R4+1/R7) 1/R4;
0 0 0 1/R4 -(1/R4+1/R8)]
v=[V; 0; 0; 0; 0]
y=A\v

O problema com quatro incgnitas pode ser escrito na forma matricial conforme a seguir:

V

 V2 R1
1 + R1 + R1 1 0 0
R1 2 5 R2


1 1

R2
R2
+ R1 + R1 1
R3
0 V3 0
3 6
=

0 1 1 + R1 + R1 1
R3 R3 4 7 R4 v4 0

1 1

0 0 R4
R4
+ R1
8
V5 0

Cuja implementao pode ser feita conforme

A=[ -(1/R1+1/R2+1/R5) 1/R2 0 0;


1/R2 -(1/R2+1/R3+1/R6) 1/R3 0;
0 1/R3 -(1/R3+1/R4+1/R7) 1/R4;
0 0 1/R4 -(1/R4+1/R8)]

v=[-V/R1; 0; 0; 0]
y=A\v

E 4.9.3. Dica: P (1) = 3, P (1) = 1 e P (2) = 9 produzem trs equaes lineares para os coeficientes a, b e c. Resp: a)

P (x) = 3x2 + x 5, b) A 2.49 e B 1.29 c)A1 1.2872058, A2 4.3033034, B1 2.051533 e B2 0.9046921.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 363

E 5.1.1. f = [2xy y sen (xy), x2 x sen (xy)]T

 
cos(x) x sen (x) 1
JF =
2e2x+y e2x+y

(JL )ij = aij (5.19)

E 5.1.2.

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

p 

E 5.1.3. As curvas possuem dois pontos de interseco. A posio exata destes pontos de interseco dada por 2 3 3,2 3 2
 p 

e 2 3 3,2 3 2 . Use a soluo exata para comparar com a soluo aproximada obtida.

E 5.1.4. (0.8241323, 0.6791941)

E 5.1.5. x 0,259751, y 0,302736, z 0,045896

E 5.1.6.

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 5.1.7. y = mx + b com m 0.0459710 e b 0.479237 Uma metodologia possvel para resolver este problema dada a
seguir:
Sejam x1 e x2 as abscissas dos dois pontos em que a reta tangencia a curva. A equao da reta bitangente assume a seguinte
forma:
y = f (x1 ) + m(x x1 ) (5.20)

onde o coeficiente angular m dado por


f (x2 ) f (x1 )
m= (5.21)
x2 x1

Da condio de tangncia, temos que o coeficiente angular da reta, m, deve igual derivada da funo f (x) nos dois pontos
de tangncia.
0 0
m = f (x1 ) = f (x2 ) (5.22)

E sabemos que:
0 cos(x) sen (x)
f (x) = . (5.23)
1+x (1 + x)2

Assim, podemos reescrever o problema como

cos(x1 ) sen (x1 ) cos(x2 ) sen (x2 )


+ =0
1 + x1 (1 + x1 )2 1 + x2 (1 + x2 )2
cos(x1 ) sen (x1 ) f (x2 ) f (x1 )
=0
1 + x1 (1 + x1 )2 x2 x1

Este um sistema no linear de duas incgnitas.

Os valores iniciais para o mtodo podem ser obtidos do grfico buscando valores prximos aos dois primeiros pontos de
(0) (0)
mximos. Por exemplo: x1 = 1 e x2 = 8. Obtemos x1 1,2464783 e x2 8,1782997 e m pode ser obtido atravs desses

valores.

E 5.1.8. (0.1956550; 0.2441719), (0.3694093; 0.4590564), (0.9990712; 1.1865168) e (1.4773606; 1.5552232)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


364 Clculo Numrico

E 5.1.9. (0.0449310; 0.0648872; 0.0698750), (0.3981385; 0.5658310; 0.6069019),

(1.1862966; 1.4348545; 1.480127)

E 5.1.10. (1,2085435, 1,0216674) e (2,7871115, 1,3807962)


Exemplo de implementao:

function z=f(x,y)
z=x^2/8+(y-1)^2/5-1
endfunction
function z=g(x,y)
z=atan(x)+x-y-y^3
endfunction

contour([-3:.1:3],[-2:.1:4],f,[0 0])
contour([-3:.1:3],[-2:.1:4],g,[0 0])

function y=F(x)
y(1)=f(x(1),x(2))
y(2)=g(x(1),x(2))
endfunction
function y=JF(x)
y(1,1)=x(1)/4
y(1,2)=2*(x(2)-1)/5
y(2,1)=1/(1+x(1)^2)+1
y(2,2)=-1-3*x(2)^2
endfunction

//primeiro ponto
//x=[-1.2;-1.0]

//segundo ponto
//x=[2.8;1.4]

x=x-JF(x)\F(x) // 4 vezes

E 5.1.11. A primeira curva trata-se de uma elipse de centro (3,1) e semi-eixos 4 e 6, portanto seus pontos esto contidos no
retngulo 1 x 7 e 5 y 7.
As solues so (0,5384844, 1,7978634) e (2,8441544, 6,9954443).
Uma possvel implementao

function z=f(x,y)
z=(x-3)^2/16+(y-1)^2/36-1
endfunction

function z=g(x,y)
z=atan(x)+x-sin(y)-0.01*y^3
endfunction

contour([-1:.1:7],[-5:.1:7],f,[0 0])
contour([-1:.1:7],[-5:.1:7],g,[0 0])

function y=F(x)
y(1)=f(x(1),x(2))
y(2)=g(x(1),x(2))
endfunction
function y=JF(x)
y(1,1)=(x(1)-3)/8
y(1,2)=(x(2)-1)/18
y(2,1)=1/(1+x(1)^2)+1
y(2,2)=-cos(x(2))-0.03*x(2)^2
endfunction
\end{resp}

//primeiro ponto
//x=[-.5;-2.0]

//segundo ponto
//x=[3;7]

x=x-JF(x)\F(x) // 4 vezes

E 5.1.12. (x1 ,x2 ,x3 ) (453,62, 901,94, 144,43)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 365

p 6,7
E 5.1.13. Inicializao do mtodo: A(0) = 3,1 e b(0) = 3,1
A 3.0297384 e b 1.4835346.

E 5.1.14. f (1,1579702, 1,2020694) 2.376985


Um exemplo de implementao no Scilab :

deff('z=f(x,y)','z=-x^4-y^6+3*x*y^3-x')
contour([-2:.01:0],[-2:.01:0],f,[ 0:.2: 3])
deff('z=F(x)','z=[-4*x(1)^3+3*x(2)^3-1;-6*x(2)^5+9*x(1)*x(2)^2]')
deff('z=JF(x)','z=[-12*x(1)^2,9*x(2)^2;9*x(2)^2,-30*x(2)^4+18*x(1)*x(2)]')
x=[-1.2;-1.2]
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
x=x-JF(x)\F(x)
mprintf('f(%f,%f)=%f',x(1),x(2),f(x(1),x(2)))

E 5.1.15.

Este exerccio est sem resposta sugerida. Proponha uma resposta. Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico

E 5.1.16. x 0,2982646, y 0,2990796, z 1,6620333 e x 0,0691328, y 0,2923039, z 0,8235705.

E 5.1.17.

x1 x2

x1 + 5(x2 + x3

2 ) x3 10 exp(2/3)

x2 + 5(x3 + x3
3 ) x4 10 exp(3/3)



F (x) = x3 + 5(x4 + x3
4 ) x5 10 exp(4/3)


.

.
.
x9 + 5(x10 + x3

10 ) x11 10 exp(10/3)
x11 1


1 1 0 0 0 ... 0

5(1 + 3x2
1 1 ...

2) 0 0 0

0 1 5(1 + 3x2
3) 1 0 ... 0

JF (x) =
0 0 1 5(1 + 3x2
4) 1 ... 0

. . . . .

.
. . . . . .
. . . . . .
0 0 0 0 0 1

Exemplo de implementao no Scilab:

function y=F(x)
y(1)=x(1)-x(2)
for j=2:10
y(j)=-x(j-1)+5*(x(j)+x(j)^3)-x(j+1)-10*exp(-j/3)
end
y(11)=x(11)-1
endfunction

function y=JF(x)
y=zeros(11,11)

y(1,1)=1
y(1,2)=-1
for j=2:10

y(j,j-1)=-1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


366 Clculo Numrico

y(j,j)=5*(1+3*x(j)^2)
y(j,j+1)=-1
end
y(11,11)=1
endfunction

Resposta final: 0,80447, 0,80447, 0,68686, 0,57124, 0,46535, 0,37061, 0,28883, 0,22433, 0,19443, 0,28667, 1

E 5.1.18. f (0,8108792, 1,6217584) 0,1950369 e f (0,5527864, 1,1055728) 0,1455298

E 6.1.1. p(x) = 3 + 2x + 5x3 .

E 6.1.2. p(x) = 0,25 + x2 .

E 6.4.1.
R1 f (0)+f (1)
P (x)dx = 2
1
, 12 maxx[0,1] |f 00 (x)|
0

E 7.1.1. f (x) = 0,55 0,01x.

E 7.1.2. f (x) = 0,19 0,47x.

E 7.1.3. a) 0,6025387; b) 0,5651848; c) 0,2851848; d) 0,1488041.

E 7.2.1. a1 = 0,67112, a2 = 0,12123, a3 = 0,73907.

E 7.2.2. y = 0,0407898x2 + 2,6613293x + 1,9364598.

E 7.2.3. a) a = 25,638625, b = 9,8591874, c = 4,9751219; b)a = 31,475524, b = 65,691531, c = 272,84382, d = 208,23621.

E 8.1.1.

a) f 0 (x) onde f (x) = sen (x) e x = 2 para h = 102 e h = 103 , respectivamente.

Progressiva ordem 1: 0,42069 e 0,41660.

Regressiva ordem 1: 0,41159 e 0,41569.

Central ordem 2: 0,41614 e 0,41615.

Exata: cos(2) = 0,41615

b) f 0 (x) onde f (x) = ex e x = 1 para h = 102 e h = 103 , respectivamente.

Progressiva ordem 1: 0,36605 e 0,36788.

Regressiva ordem 1: 0,36972 e 0,36806.

Central ordem 2: 0,36789 e 0,36788.

Exata: e1 = 0,36788

E 8.1.3.

3f (0)+4f (h)f (2h)


a) f 0 (0) = 2h
+ O(h2 )

3f (0)4f (h)+f (2h)


b) f 0 (0) = 2h
+ O(h2 )

 h h2 h
 h

c) f 0 (0) = h +h
1 l h2 f (h1 ) + h1
h1 f (0) + h1 f (h2 )
1 2 1 2 2

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 367

E 8.1.4.
Caso a b c d
vi = 1 1.72 1.56 1.64 1.86
vi = 4.5 2.46 1.90 2.18 1.14

E 8.1.5.
Segue a tabela com os valores da derivada para vrios valores de h.

h 102 104 106 107 108 109


D+,h f (1,5) 0,3125246 0,3161608 0,3161973 0,3161976 0,3161977 0,3161977 (8.40)

h 1010 1011 1012 1013 1014 1015


D+,h f (1,5) 0,3161976 0,3161971 0,3162332 0,3158585 0,3178013 0,3747003 (8.41)

Observe que o valor exato 0,3161977 e o h timo algo entre 108 e 109 .

E 8.2.1.

f (0)2f (h)+f (2h)


a) f 00 (0) = + O(h)
h2

f (0)2f (h)+f (2h)


b) f 00 (0) = + O(h)
h2

f (x0 )2f (x1 )+f (x2 )


E 8.4.2. f 00 (x ) =
h2

E 9.2.2.
1 2
ISimpson = IT rap + IP M (9.40)
3 3

E 9.2.3.
n Ponto mdio Trapzios Simpson
3 0.1056606 0.7503919 0.5005225
5 0.1726140 0.3964724 0.2784992 (9.41)
7 0.1973663 0.3062023 0.2393551
9 0.2084204 0.2721145 0.2306618

E 9.4.2.
-0.2310491, -0.2452073, - 0.2478649.

E 9.4.4.
a)-0.2472261, -0.2416451, -0.2404596, -0.2400968, -0.2399563, -0.2398928. b)-0.2393727, -0.2397994, -0.2398104, -0.2398115,
-0.2398117, -0.2398117.

E 9.5.1.

1 12 2 2 7 3 3 4
a)I(h) = 4.41041 10 8.49372 10 h 1.22104 10 h 1.22376 10 h + 8.14294 10 h (9.75)
1 11 2 2 7 3 6 4
b)I(h) = 7.85398 10 1.46294 10 h 4.16667 10 h 2.16110 10 h + 4.65117 10 h (9.76)
3 10 7 2 5 3 4 4
c)I(h) = 1.58730 10 9.68958 10 h + 2.03315 10 h 1.38695 10 h + 2.97262 10 h (9.77)
1 12 2 2 8 3 4 4
d)I(h) = 4.61917 10 + 3.83229 10 h + 2.52721 10 h + 5.48935 10 h + 5.25326 10 h (9.78)

E 9.5.2.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


368 Clculo Numrico

1.5707963 2.0943951
1.8961189 2.0045598 1.9985707
1.9742316 2.0002692 1.9999831 2.0000055

E 9.5.3. a) 0.7468337; b) 2.4606311; c) 1.6595275.

E 9.5.5. R(6,6) = 10.772065, R(7,7) = 5.2677002, R(8,8) = 6.1884951, R(9,9) = 6.0554327, R(10,10) = 6.0574643. O

valor desta integral com oito dgitos corretos aproximado por 6.0574613.

E 9.6.1.
w1 = 1/6, w2 = 2/3, w3 = 1/6. O esquema construdo o de Simpson e a ordem de exatido 3.

E 9.6.2. 3

E 9.6.3. 5

R1
E 9.6.4. f (x) dx 3
2
3 f (2/3) com ordem 3.
f (1/3) 2f (1/2) + 2
0

E 9.6.5. 5, 4, 3

E 9.7.1.

n G-L Exato Erro Absoluto


hline 2 0,2227 2,47E01
3 0,4157 5,44E02
0,4701
4 0,4437 2,64E02
5 0,4616 8,47E03

E 9.9.1.

n b c d e f
2 2.205508 3.5733599 3.6191866 3.6185185 3.618146
4 2.5973554 3.6107456 3.6181465 3.6180970 3.6180970
6 2.7732372 3.6153069 3.6181044 3.6180970 3.6180970
8 2.880694 3.6166953 3.6180989 3.6180970 3.6180970

Soluo do item e: Como



x2n
X
n
cos(x) = 1 + (1) (9.114)
(2n)!
n=1

temos

1 cos(x) x2n1/2
X
n
= (1) , x0 (9.115)
x (2n)!
n=1

Logo, podemos integrar

Z 1 Z 1
cos(x) 1 x2n1/2
X
n
I = 4+2 p dx = 4 2 (1) dx
(2n)!
0 |x| 0
n=1

1
X
n
= 42 (1)
(2n)!(2n + 1/2)
n=1

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 369

Soluo do item f)

Z 1
x3/2 x7/2
  
1/2 1 1 977
2 x + dx = 2 2 + =
2 24 5 54 270
0

Z 1 Z 1 1+u
 1+u

cos(x) P4 (x) cos 2
P4 2
2 dx = 2 du
x 1+u
0 1

E 9.9.5. 4,1138

E 9.9.6. a) 19,2; 22,1; 23,3; b) 513,67K

Z 1    
3 3
E 9.9.8. f (x)dx = f +f
3 3
1

E 9.9.9. w1 = w3 = 1 e w2 = 0 com ordem 3.

E 10.2.1.

t Exato Euler h = 0,1 Euler h = 0,01


0 1 1 1
1 2e1 0,7357589 0,6973569 0,7320647
2 2e2 + 1 1,2706706 1,2431533 1,2679593
3 2e3 + 2 2,0995741 2,0847823 2,0980818

E 10.2.2.

t Exato Euler h = 0,1 Euler h = 0,01


0 0 0 0
1 0,8657695 0.8799602 0.8671764
2 1,3017603 1.3196842 1.3035243
3 1,4713043 1.4827638 1.4724512

E 10.2.3. Aproximao via Euler: 2,4826529, exata: esen (2) 2,4825777. Erro relativo aproximado: 3 105 .

E 10.5.1.

h 2 102 2 102 2 103 2 104


x 0,4302019 0,4355057 0,4358046 0,4358324
Euler
y 0,6172935 0,6457760 0,6486383 0,6489245
x 0,4343130 0,4358269 0,4358354 0,4358355
Euler mod,
y 0,6515479 0,6489764 0,6489566 0,6489564

E 10.5.2.

h t = 0,5 t = 1,0 t = 1,5 t = 2,0


x 1,9023516 1,6564208 1,3124281 0,9168299
103
y -0,3635613 -0,6044859 -0,7564252 -0,8072298
x 1,9023552 1,6564243 1,3124309 0,9168319
104
y -0,3635670 -0,6044930 -0,7564334 -0,8072397

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


370 Clculo Numrico

E 10.6.1.

h 101 102 103 104 105


Euler 0,4495791 0,4660297 0,4675999 0,4677562 0,4677718
rel 9,1e-03 8,9e-04 8,9e-05 8,9e-06 8,9e-07
Euler mod, 0,4686037 0,4677811 0,4677736 0,4677735 0,4677735
rel 1,8e-03 1,6e-05 1,6e-07 1,6e-09 1,6e-11

 2
1 2 1+e1
A soluo exata vale u(1) = 1+2e 4 +e = 2
0.467773541395.

E 10.6.2.

h 101 102 103 104 105


Euler 1,1617930 1,1395726 1,1374484 1,1372369 1,1372157
Euler mod 1,1365230 1,1372075 1,1372133 1,1372134 1,1372134

E 10.7.1. 2,9677921, 2,9682284 e 2,9682325.

E 10.7.2.

Euler 6,0000000 6,7898955 6,8461635 6,8516386


rel 1,2e-01 9,1e-03 8,9e-04 8,9e-05
Euler mod, 7,0000000 6,8532949 6,8522554 6,8522454
rel 2,2e-02 1,5e-04 1,5e-06 1,5e-08
RK3 6,8333333 6,8522321 6,8522453 6,8522453
rel 2,8e-03 1,9e-06 1,9e-09 1,8e-12
RK4 6,8541667 6,8522454 6,8522453 6,8522453
rel 2,8e-04 1,9e-08 1,9e-12 1,3e-15

E 10.7.3.

Euler 2,0000000 3,1874849 3,4096277 3,4338479


rel 4,2e-01 7,2e-02 7,8e-03 7,9e-04
Euler mod 3,0000000 3,4281617 3,4364737 3,4365628
rel 1,3e-01 2,4e-03 2,6e-05 2,6e-07
RK3 3,3333333 3,4363545 3,4365634 3,4365637
rel 3,0e-02 6,1e-05 6,5e-08 6,6e-11
RK4 3,4166667 3,4365595 3,4365637 3,4365637
rel 5,8e-03 1,2e-06 1,3e-10 1,2e-14

E 10.11.1.
(n) (n) (n) (n)

y =y + hf t ,u(t (10.174)

Este esquema equivalente ao mtodo de Euler Implcito.

E 10.11.2.
(n+1) (n) h  (n+1) (n+1)
 (n) (n)

y =y + f t ,u(t ) +f t ,u(t ) (10.175)
2

Este esquema equivalente ao mtodo trapezoidal.

E 10.11.3. 0,37517345 e 0,37512543.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


RESPOSTAS DOS EXERCCIOS 371

E 10.13.1.

(n+1) (n) h  (n3) (n3) (n2) (n2) (n1) (n1) (n) (n)

u = u + 9f (t ,u ) + 37f (t ,u ) 59f (t ,u ) + 55f (t ,u ) ,
24
(n+1) (n) h  (n2) (n2) (n1) (n1) (n) (n) (n+1) (n+1)

u = u + f (t ,u ) 5f (t ,u ) + 19f (t ,u ) + 9f (t ,u ) .
24

E 10.13.2. Adams-Bashforth: 34,99965176, Preditor-corretor: 34,99965949, Exato: 35

E 10.17.1.

0,5 1,0 1,5 2,0 2,5


Analtico 0,3032653 0,3678794 0,3346952 0,2706706 0,2052125
Euler 0,3315955 0,3969266 0,3563684 0,2844209 0,2128243
Euler modificado 0,3025634 0,3671929 0,3342207 0,2704083 0,2051058
Runge-Kutta clssico 0,3032649 0,3678790 0,3346949 0,2706703 0,2052124
Adams-Bashforth ordem 4 0,3032421 0,3678319 0,3346486 0,2706329 0,2051848

0,5 1,0 1,5 2,0 2,5


Euler 2,8e-2 2,9e-2 2,2e-2 1,4e-2 7,6e-3
Euler modificado 7,0e-4 6,9e-4 4,7e-4 2,6e-4 1,1e-4
Runge-Kutta clssico 4,6e-7 4,7e-7 3,5e-7 2,2e-7 1,2e-7
Adams-Bashforth ordem 4 2,3e-5 4,8e-5 4,7e-5 3,8e-5 2,8e-5

0,1 0,05 0,01 0,005 0,001


Euler 2,9e-2 5,6e-3 2,8e-3 5,5e-4 2,8e-4
Euler modificado 6,9e-4 2,5e-5 6,2e-6 2,5e-7 6,1e-8
Runge-Kutta clssico 4,7e-7 6,9e-10 4,3e-11 6,8e-14 4,4e-15
Adams-Bashforth ordem 4 4,8e-5 9,0e-8 5,7e-9 9,2e-12 5,8e-13

E 10.17.2.

a) 1,548280989603, 2,319693166841, 9,42825618574 e 9,995915675174.

b) 0,081093021622.

c) 0,179175946923.

Obs: A soluo analitica do problema de valor inicial dada por:

Au0
u(t) = (10.183)
(A u0 )eAat + u0

1 ln 9
 1 ln (6).
Os valores exatos para os itens b e c so: 10 4
e 10

q   p 
g
E 10.17.3. O valor exato
1 e200 29,109644835142 em t = 1
g
tanh1 1 e200 2,3928380185497

E 11.1.1.
1 0 0 0 0
u1
5

1 2 1 0 0 u2 2
0 1 2 1 0
u3
= 2


0 0 1 2 1 u4 2
0 0 0 0 1 u5 10

Soluo: [5, 9.25, 11.5, 11.75, 10]

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


372 Clculo Numrico


1 0 0 0 0 0 0 0 0 u1 5
1 2 1 0 0 0 0 0 0 u2 0.5

0 1 2 1 0 0 0 0 0 u3 0.5
0 0 1 2 1 0 0 0 0 u4 0.5
0 0 0 1 2 1 0 0 0
u5
= 0.5


0 0 0 0 1 2 1 0 0 u6 0.5
0 0 0 0 0 1 2 1 0
u7
0.5


0 0 0 0 0 0 1 2 1 u8 0.5
0 0 0 0 0 0 0 0 1 u9 10

Soluo: [5, 7.375, 9.25, 10.625, 11.5, 11.875, 11.75, 1.125, 10]

E 11.1.2. 120. 133.56 146.22 157.83 168.22 177.21 184.65 190.38 194.28 196.26 196.26 194.26 190.28 184.38 176.65 167.21

156.22 143.83 130.22 115.56 100.

E 11.1.3. 391.13 391.13 390.24 388.29 385.12 380.56 374.44 366.61 356.95 345.38 331.82 316.27 298.73 279.27 257.99 234.99

210.45 184.5 157.34 129.11 100.

E 11.1.4. 0., 6.57, 12.14, 16.73, 20.4, 23.24, 25.38, 26.93 , 28, 28.7, 29.06, 29.15, 28.95, 28.46, 27.62 , 26.36, 24.59, 22.18,

19.02, 14.98, 10.

E 11.1.5. u(0) = 31.62, u(1) = 31,50, u(1,9) = 18,17.

E 11.1.6. u(1) = 1,900362, u(2,5) = 1.943681, u(4) = 1,456517.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Referncias Bibliogrficas

[1] Cecill and free sofware. http://www.cecill.info. Acessado em 30 de julho


de 2015.

[2] M. Baudin. Introduction to scilab. http://forge.scilab.org/index.php/


p/docintrotoscilab/. Acessado em 30 de julho de 2015.

[3] R.L. Burden and J.D. Faires. Anlise Numrica. Cengage Learning, 8 edition,
2013.

[4] J. P. Demailly. Analyse Numrique et quations Differentielles. EDP Sciences,


Grenoble, nouvelle dition edition, 2006.

[5] W Gautschi. Numerical analysis: An introduction birkhauser. Barton, Mass,


USA, 1997.

[6] Walter Gautschi and Gabriele Inglese. Lower bounds for the condition
number of vandermonde matrices. Numerische Mathematik, 52(3):241250,
1987/1988.

[7] L.F. Guidi. Notas da disciplina clculo numrico. http://www.mat.ufrgs.


br/~guidi/grad/MAT01169/calculo_numerico.pdf. Acessado em julho de
2016.

[8] E. Isaacson and H.B. Keller. Analysis of numerical methods. Dover, Ontrio,
1994.

[9] Arieh Iserles. A first course in the numerical analysis of differential equations.
Cambridge university press, 2009.

[10] W.H. Press. Numerical Recipes 3rd Edition: The Art of Scientific Computing.
Cambridge University Press, 2007.

[11] R. Rannacher. Einfhrung in die numerische mathematik (numerik 0).


http://numerik.uni-hd.de/~lehre/notes/num0/numerik0.pdf. Acessado
em 10.08.2014.

373
374 Clculo Numrico

[12] Todos os Colaboradores. Clculo numrico - um livro colaborativo - verso


com scilab. disponvel em https://www.ufrgs.br/numerico/livro/main.
html, Novembro 2016.

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


Colaboradores

Aqui voc encontra a lista de colaboradores do livro. Esta lista contm so-
mente aqueles que explicitamente se manifestaram a favor de terem seus nomes
registrados aqui. A lista completa de colaboraes pode ser obtida no repositrio
GitHub do livro:

https://github.com/livroscolaborativos/CalculoNumerico

Alm das colaboraes via GitHub, o livro tambm recebe colaboraes via dis-
cusses, sugestes e avisos deixados em nossa lista de e-mails:

livro_colaborativo@googlegroups.com

Estas colaboraes no esto listadas aqui, mas podem ser vistas no site do grupo
de e-mails.
Caso encontre algum equvoco ou veja seu nome listado aqui por engano, por
favor, entre em contato conosco por e-mail:

livroscolaborativos@gmail.com

ou via o repositrio GitHub.

Tabela A.1: Lista de colaboradores


Nome Afiliao E-Mail 1 Contr
Rafael Sachetto Oliveira Universidade Federal de So Joo del-Rei sachetto@ufsj.edu.br #158
Debora Lidia Gisch -x- -x- #63

375
ndice Remissivo

ajuste regressiva, 214


de uma reta, 191
derivao, 228 eliminao gaussiana, 92
linear, 196 equao
polimomial, 201 logstica, 277
por mnimos quadrados, 190 equao diferencial
ajuste de curvas, 190 no autnoma, 280
algoritmo equaes
de Thomas, 111 de uma varivel, 47
TDMA, 111 Erro
aproximao de truncamento, 291
de funes, 166, 190 erro
por polinmios, 175 absoluto, 26
aproximaes por diferenas finitas, 211 relativo, 26
aritmtica erros, 25
de mquina, 3 absoluto, 66
arredondamento de nmeros, 13 arredondamento, 217
autovalores, 138 de arredondamento, 17

Benchmark, 320 frmula de diferenas finitas


central, 221
cancelamento catastrfico, 29 frmulas de diferenas finitas, 329
Complexidade funo, 47
computacional, 101 Lipschitz, 274
contrao, 61 raiz de, 47
critrio de parada, 51 zero, 47
zero de, 47
dgitos significativos, 27
derivao, 211 integrao, 231
diferenas divididas de Newton, 172 integrao numrica
diferenas finitas, 211 mtodo composto
central, 214 de Simpson, 249
ordem mais alta, 222 dos trapzios, 248
progressiva, 213 mtodo de Romberg, 252

376
NDICE REMISSIVO 377

ordem de preciso, 256 Mtodo de Jacobi


regra de Simpson, 240, 241 matriz de iterao, 132
regra do trapzio, 237 vetor de iterao, 132
regras compostas, 246 mtodo de Newton, 47
regras de Newton-Cotes, 236 para sistemas, 150
integral, 231 mtodo de Newton-Raphson, 72
interpolao, 166 convergncia, 74
cbica segmentada, 180 mtodo dos mnimos quadrados, 190
derivao, 228 mtodos iterativos
linear segmentada, 179 sistemas lineares, 124
polinomial, 167 convergncia, 130
iterao do ponto fixo, 47, 57 malha uniforme, 329
convergncia, 65 matrix
estabilidade, 65 jacobiana, 149
taxa de convergncia, 62 matriz
completa, 92
Mtodo condicionamento, 118
de Euler melhorado, 281 diagonal dominante, 136
de Adams-Bashforth, 307 dos coeficientes, 92
de Adams-Moulton, 312 estendida, 92
de passo mltiplo, 307 jacobiana, 161, 163
mtodo matriz de
da bisseo, 50 iterao, 130
da matriz tridiagonal, 111 matriz de Vandermonde, 170
de Euler, 275, 302 matriz escalonada, 93
de Runge-Kutta exlcito, 293, 302 matriz escalonada reduzida, 94
de separao de variveis, 278 medida
trapezoidal, 303 de erro, 26, 27
Mtodo da bisseo de exatido, 26
taxa de convergncia, 53 mudana de base, 3
mtodo da bisseo, 47
mtodo da potncia, 138 nmero de condicionamento, 121
mtodo das fraes parciais, 278 norma
mtodo das secantes, 47, 79 L , 119
convergncia, 81 Lp , 119
mtodo de norma de
Gauss-Seidel, 128 matrizes, 120
Jacobi, 125 vetores, 119
Newton, 72
Newton-Raphson, 72 Ordem
mtodo de diferenas finitas, 329 de preciso, 291

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


378 Clculo Numrico

Passo, 275 ramificao e repetio, 348


passo da malha, 330 sobre, 340
polinmio interpolador, 168 usando, 341
polinmios sequncia de
de Lagrange, 174 Fibonacci, 84
ponto fixo, 57 simulao
poro urea, 84 computacional, 1
preditor-corretor, 318 numrica, 1
problema sistema de equaes
rgido, 320 no lineares, 147
problema de sistema de numerao, 3
ponto fixo, 57 sistema linear, 91
problema de valor de contorno, 329 condicionamento, 118
Problema de valor inicial sistema numrico
no linear, 280 de ponto fixo, 19
problema de valor inicial, 273 de ponto flutuante, 20
problema discreto, 330 notao normalizada, 11
Problemas de valores de contorno, 329 Sistemas de equaes diferenciais, 284
spline, 180
quadratura numrica
fixado, 186
Gauss-Legendre, 261
natural, 183
representao not-a-knot, 187
de nmeros em mquina, 17 peridico, 188
nmeros inteiros, 17
representao de nmeros, 3 tamanho da malha, 330
inteiros teorema
bit de sinal, 18 de Picard-Lindelf, 274
complemento de dois, 18 teorema de
sem sinal, 17 Bolzano, 47
resduo, 191 Teorema do
ponto fixo, 61
Scilab, 340 teorema do
elementos da linguagem, 342 ponto fixo, 73
funes, 350 teorema do valor intermedirio, 47
funes e constantes, 343 tolerncia, 66
grficos, 351
instalao e execuo, 340 validao, 320
matrizes, 344 vetor
operaes matemticas, 343 das incgnitas, 92
operador :, 345 dos termos constantes, 92
operadores lgicos, 343 vetor de

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com


NDICE REMISSIVO 379

iterao, 130

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

You might also like