Вы находитесь на странице: 1из 344

Clculo Numrico

Um Livro Colaborativo
Verso Scilab

13 de abril de 2017
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
http://creativecommons.org/licenses/by-sa/3.0/ ou envie uma carta para Creative
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 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:

http://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.2.1 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Representao decimal finita . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 Arredondamento de nmeros . . . . . . . . . . . . . . . . . . 13
2.4 Representao de nmeros em mquina . . . . . . . . . . . . . . . . 15
2.4.1 Nmeros inteiros . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2 Sistema de ponto fixo . . . . . . . . . . . . . . . . . . . . . . 17
2.4.3 Sistema de ponto flutuante . . . . . . . . . . . . . . . . . . . 18
2.4.4 Preciso e psilon de mquina . . . . . . . . . . . . . . . . . 21
2.4.5 Distribuio dos nmeros . . . . . . . . . . . . . . . . . . . . 22
2.5 Tipos de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6 Erros nas operaes elementares . . . . . . . . . . . . . . . . . . . . 27
2.7 Cancelamento catastrfico . . . . . . . . . . . . . . . . . . . . . . . 27
2.8 Condicionamento de um problema . . . . . . . . . . . . . . . . . . . 30
2.9 Mais exemplos de cancelamento catastrfico . . . . . . . . . . . . . 35

vi
SUMRIO vii

3 Soluo de equaes de uma varivel 46


3.1 Existncia e unicidade . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Mtodo da bisseo . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 Cdigo Scilab: mtodo da bisseo . . . . . . . . . . . . . . 53
3.3 Iterao de Ponto Fixo . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.1 Teorema do ponto fixo . . . . . . . . . . . . . . . . . . . . . 59
3.3.2 Teste de convergncia . . . . . . . . . . . . . . . . . . . . . . 63
3.3.3 Estabilidade e convergncia . . . . . . . . . . . . . . . . . . 64
3.3.4 Erro absoluto e tolerncia . . . . . . . . . . . . . . . . . . . 65
3.4 Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . 71
3.4.1 Interpretao geomtrica . . . . . . . . . . . . . . . . . . . . 72
3.4.2 Anlise de convergncia . . . . . . . . . . . . . . . . . . . . 73
3.5 Mtodo das secantes . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5.1 Interpretao geomtrica . . . . . . . . . . . . . . . . . . . . 79
3.5.2 Anlise de convergncia . . . . . . . . . . . . . . . . . . . . 80
3.6 Critrios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.7 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4 Soluo de sistemas lineares 90


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

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


viii Clculo Numrico

4.8.1 Mtodo da Potncia . . . . . . . . . . . . . . . . . . . . . . 134


4.8.2 Mtodo da iterao Inversa . . . . . . . . . . . . . . . . . . 138
4.9 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

5 Soluo de sistemas de equaes no lineares 142


5.1 Mtodo de Newton para sistemas . . . . . . . . . . . . . . . . . . . 145
5.1.1 Cdigo Scilab: Newton para sistemas . . . . . . . . . . . . . 148
5.2 Linearizao de uma funo de vrias variveis . . . . . . . . . . . . 156
5.2.1 Gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.2.2 Matriz jacobiana . . . . . . . . . . . . . . . . . . . . . . . . 157

6 Interpolao 160
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . . . . . . 165
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . 167
6.4 Aproximao de funes reais por polinmios interpoladores . . . . 168
6.5 Interpolao linear segmentada . . . . . . . . . . . . . . . . . . . . 172
6.6 Interpolao cbica segmentada - spline . . . . . . . . . . . . . . . . 174
6.6.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.6.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . . . . 179
6.6.3 Spline not-a-knot . . . . . . . . . . . . . . . . . . . . . . . . 180
6.6.4 Spline peridico . . . . . . . . . . . . . . . . . . . . . . . . . 181

7 Ajuste de curvas 183


7.1 Ajuste de uma reta . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2 Ajuste linear geral . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.2.1 Ajuste polinomial . . . . . . . . . . . . . . . . . . . . . . . . 194
7.3 Aproximando problemas no lineares por problemas lineares . . . . 198

8 Derivao Numrica 203


8.1 Diferenas finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.1.1 Diferenas finitas via srie de Taylor . . . . . . . . . . . . . 205
8.1.2 Erros de arredondamento . . . . . . . . . . . . . . . . . . . . 209
8.2 Diferena finita para derivada segunda . . . . . . . . . . . . . . . . 213
8.3 Diferenas finitas de ordem mais alta . . . . . . . . . . . . . . . . . 213
8.4 Frmulas de diferenas finitas . . . . . . . . . . . . . . . . . . . . . 216
8.5 Derivada via ajuste ou interpolao . . . . . . . . . . . . . . . . . . 219
8.6 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

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


SUMRIO ix

9 Integrao Numrica 221


9.1 Regras de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . 223
9.1.1 Somas de Riemann . . . . . . . . . . . . . . . . . . . . . . . 224
9.1.2 Regra do trapzio . . . . . . . . . . . . . . . . . . . . . . . . 224
9.1.3 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . 227
9.2 Obteno das regras de quadratura . . . . . . . . . . . . . . . . . . 230
9.3 Regras compostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
9.3.1 Cdigo Scilab: Regras compostas em geral . . . . . . . . . . 233
9.3.2 Mtodo composto dos trapzios . . . . . . . . . . . . . . . . 234
9.3.3 Cdigo Scilab: trapzio composto . . . . . . . . . . . . . . . 234
9.3.4 Mtodo composto de Simpson . . . . . . . . . . . . . . . . . 235
9.3.5 Cdigo Scilab: Simpson composto . . . . . . . . . . . . . . . 235
9.4 O mtodo de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . 238
9.5 Ordem de preciso . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
9.6 Quadratura de Gauss-Legendre . . . . . . . . . . . . . . . . . . . . 246
9.6.1 Cdigo Scilab: Quadratura gaussiana com N intervalos . . . 250
9.7 Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

10 Problemas de valor inicial 255


10.1 Teoria de equaes diferenciais . . . . . . . . . . . . . . . . . . . . . 256
10.2 Mtodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
10.2.1 Ordem de preciso . . . . . . . . . . . . . . . . . . . . . . . 261
10.2.2 Erro de truncamento Local . . . . . . . . . . . . . . . . . . . 262
10.2.3 Erro de truncamento Global . . . . . . . . . . . . . . . . . . 263
10.3 Convergncia, consistncia e estabilidade . . . . . . . . . . . . . . . 263
10.3.1 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.3.2 Consistncia . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.3.3 Estabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
10.4 O mtodo de Euler implcito . . . . . . . . . . . . . . . . . . . . . . 265
10.5 Mtodo Trapezoidal . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10.6 O mtodo de Heun . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
10.7 O mtodo theta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
10.8 O mtodo de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . 269
10.9 Estabilidade dos mtodos de Taylor . . . . . . . . . . . . . . . . . . 269
10.10Mtodos de Passo Mltiplo . . . . . . . . . . . . . . . . . . . . . . . 270
10.11O mtodo de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . 271
10.12O mtodo de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . 272
10.13Mtodo BDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
10.14Ordem e convergncia de mtodos de passo mltiplo . . . . . . . . . 274
10.14.1 Consistncia, Estabilidade e Convergncia . . . . . . . . . . 274
10.14.2 As barreiras de Dahlquist . . . . . . . . . . . . . . . . . . . 275

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


x Clculo Numrico

10.15Estabilidade dos mtodos de passo mltiplo . . . . . . . . . . . . . 275


10.16Mtodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . 276
10.16.1 Mtodo de Runge-Kutta Explcito . . . . . . . . . . . . . . . 276
10.16.2 Mtodo de RK = 2 . . . . . . . . . . . . . . . . . . . . . . 277
10.16.3 Mtodo de Runge-Kutta implcito (IRK) . . . . . . . . . . . 278
10.17Estimativa da ordem de convergncia . . . . . . . . . . . . . . . . . 279
10.17.1 Mtodo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.17.2 Mtodo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.18Sistemas de equaes diferenciais e equaes de ordem superior . . . 281
10.19Exerccios finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

11 Problemas de Valores de Contorno 287


11.1 Mtodo de Diferenas Finitas . . . . . . . . . . . . . . . . . . . . . 287

A Rpida Introduo ao Scilab 298


A.1 Sobre o Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
A.1.1 Instalao e Execuo . . . . . . . . . . . . . . . . . . . . . 298
A.1.2 Usando o Scilab . . . . . . . . . . . . . . . . . . . . . . . . . 299
A.2 Elementos da linguagem . . . . . . . . . . . . . . . . . . . . . . . . 300
A.2.1 Operaes matemticas elementares . . . . . . . . . . . . . . 301
A.2.2 Funes e constantes elementares . . . . . . . . . . . . . . . 301
A.2.3 Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . 301
A.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
A.3.1 O operador : . . . . . . . . . . . . . . . . . . . . . . . . . 303
A.3.2 Obtendo dados de uma matriz . . . . . . . . . . . . . . . . . 303
A.3.3 Operaes matriciais e elemento-a-elemento . . . . . . . . . 305
A.4 Estruturas de ramificao e repetio . . . . . . . . . . . . . . . . . 306
A.4.1 A instruo de ramificao if . . . . . . . . . . . . . . . . 306
A.4.2 A instruo de repetio for . . . . . . . . . . . . . . . . . 307
A.4.3 A instruo de repetio while . . . . . . . . . . . . . . . . 308
A.5 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
A.6 Grficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Respostas dos Exerccios 310

Referncias Bibliogrficas 330

Colaboradores 331

ndice Remissivo 332

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 modelos
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 lineares, interpolar e ajustar pontos,
calcular derivadas e integrais, resolver equaes diferenciais ordinrias 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 e 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 . J o clculo


2 /2

da soluo exata para o problema

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

no possvel.
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 resolvida analiticamente.


A maioria dos modelos de fenmenos reais chegam em problemas matemticos
onde a soluo analtica difcil (ou impossvel) de ser encontrada, mesmo quando
provamos que ela existe. Nesse curso propomos calcular aproximaes numricas
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 um pouco
como funciona a aritmtica de computador e erros de arredondamento. Como
computadores, em geral, usam uma base binria para representar nmeros, come-
aremos 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, discutiremos sobre formas de representao de nmeros em


computadores. Iniciamos com uma discusso sobre representao posicional e mu-
dana de base. Ento, discutimos sobre representao com nmero de dgitos
finitos e, 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, discu-
tiremos sobre 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 est representando.
Exemplo 2.1.1. O nmero 293 decomposto como
293 = 2 centenas + 9 dezenas + 3 unidades
= 2 102 + 9 101 + 3 100 .
O sistema de numerao posicional tambm pode ser usado 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
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 +

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 .

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

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
= 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
= 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


= 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

e
d1 d2
Xf =
+ 2 +
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 .
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 +
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.

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(9,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(9,2), x = fix(x/2)
d1 =
1.
x =
2.
-->d2 = modulo(9,2), x = fix(x/2)
d2 =
1.
x =
1.
-->d3 = modulo(9,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
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)


= (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:
-->q = 125, d0 = modulo(q,6)
-->q = int(q/6), d1 = modulo(q,6)
-->q = int(q/6), d2 = modulo(q,6)

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


2.1. SISTEMA DE NUMERAO E MUDANA DE BASE 9

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

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

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

Para sua parte fracionria, temos

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

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

e) (AA)16

f) (7,1)8

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


10 Clculo Numrico

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

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 ,

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

2.2.1 Exerccios

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

a) 299792,458 b) 66,2607 1035


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

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

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


2.3. REPRESENTAO DECIMAL FINITA 13

a representao a um nmero finito de dgitos, muitos nmeros no podem ser


representado de forma exata. Por exemplo, dzimas infinitas e nmeros irracionais
no so usualmente representados de forma exata em computadores. Esta questo
nos leva aos conceitos de nmero de dgitos significativos e arredondamento.
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
em notao normalizada, i.e. d0 6= 0. Podemos representar x com k dgitos
fazendo:
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 proximidade: se dk+1 < 5 aproximamos x por

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

seno aproximamos x por5

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

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

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


14 Clculo Numrico

Soluo. Vejamos cada caso:


Por truncamento:

x1 = 0,56, x2 = 0,23, x3 = 0,67 e x4 = 3,1.

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.

No Scilab, a representao de nmeros por arredondamento 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.1. 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


2.4. REPRESENTAO DE NMEROS EM MQUINA 15

2.4 Representao de nmeros em mquina


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

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,
[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


16 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,
..
.
[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 17

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

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

Agora, o registro [10111101] representa:

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

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
..
.
[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 nesse caso o zero possui duas representaes possveis:

[10000000000000000000000000000000]

e
[00000000000000000000000000000000]

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


18 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]

e
[00000000000000000000000000000000]

(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]

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 )

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 19

represente o nmero (o BIAS = 1023 por definio)

x = (1)s M 2cBIAS ,

onde a caracterstica representada por

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

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

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.

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


20 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
[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]

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

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

O maior nmero representvel dado por

[0|111 1111 1110|1111 1111 1111 1111]

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 21

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 subnormais6 tem a forma

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

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
(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
6
Note que poderamos definir nmeros um pouco menores que o M IN R.

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


22 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) [11100011].

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

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

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


2.5. TIPOS DE ERROS 23

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: equipamentos de medio possuem preciso finita,


acarretando erros nas medidas fsicas.

2. Erros de Arredondamento: so aqueles relacionados com as limitaes


que existem na forma representar nmeros de mquina.

3. Erros de Truncamento: surgem quando aproximamos um procedimento


formado por uma sequncia infinita de passos atravs de um procedimento
finito. Por exemplo, a definio de integral dada por uma soma infinita e a
aproximamos por um soma finita. O erro de truncamento deve ser analisado
para cada mtodo empregado.

Uma questo fundamental a quantificao dos erros que estamos sujeitos ao


computar a 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.

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


24 Clculo Numrico

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

O erro relativo da aproximao x definido como


|x x|
, x 6= 0.
|x|
Observao 2.5.1. Observe que o erro relativo adimensional e, muitas vezes,
dado em porcentagem. Mais precisamente, o erro relativo em porcentagem da
aproximao x dado por
|x x|
100%.
|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

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%

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


nmero de dgitos significativos corretos em relao ao valor exato.

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


2.5. TIPOS DE ERROS 25

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


um nmero x tem s dgitos significativos corretos quando7
|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 .
|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 .
|x| 10

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 .
|1|
7
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 .
|x|

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


26 Clculo Numrico

Exerccios

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

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 significativos


corretos na aproximao de x por x.

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

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


2.6. ERROS NAS OPERAES ELEMENTARES 27

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,22E16.
Este erro bem pequeno! 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 em ponto
flutuante sucessivas, teramos, no pior dos casos, acumulado todos esses erros e
perdido 3 casas decimais (1000 1015 1012 ).
Entretanto, quando subtramos nmeros muito prximos, os problemas aumen-
tam.

2.7 Cancelamento catastrfico


Quando fazemos subtraes com nmeros muito prximos entre si ocorre o
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
usando arredondamento com seis dgitos significativos e observe a diferena se
comparado com resultado sem arredondamento.
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
|0,987624687925|

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


28 Clculo Numrico

e
|0,987624 0,987624|
= 0%,
|0,987624|
enquanto no lado direito o erro relativo enorme:
|0,100000 105 0,687925 106 |
= 45,36%.
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,
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

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


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

e
0,300000 103 + 0,300000 103
x2 = = 0,000000 100
0,200000 101

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


2.7. CANCELAMENTO CATASTRFICO 29

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 .
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
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
2b 2

2a

Observe que 4ac


b2
um nmero pequeno e por isso a expanso faz sentido. Voltamos
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 103 0,466667 104
= 0,300000 103

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

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


30 Clculo Numrico

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
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
obtemos (subtraindo f (x) dos dois lados)
y = f (x + x) f (x) f 0 (x)x
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

y f (x) x

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


2.8. CONDICIONAMENTO DE UM PROBLEMA 31

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) :=
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 )| (x 1 , 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

x

O nmero de condicionamento do problema calcular a raiz



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

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...
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
1 (0,9995)2
Mas qual a estimativa de erro nessa resposta? Quantos dgitos significativos
temos nessa resposta?

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


32 Clculo Numrico

Sabendo que f 0 (x) = 10/(1 x2 )2 , o nmero de condicionamento


xf 0 (x) 2x2

f (x) := =

f (x) 1 x2

o que nos fornece para x = 0,9995,

f (0,9995) 1998,5

Como o erro relativo na entrada


x 0,0001

= 0,00010005...

0,9995

x

temos que o erro na sada ser aproximadamente


y x




f (x)

1998,5 0,00010005... 0,1999
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%.


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 .

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,084.


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.

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


2.8. CONDICIONAMENTO DE UM PROBLEMA 33

Soluo. Calculamos as derivadas parciais de f :


f 2x3 (2x3 + 2x) 2y 2e2y
= e =
x x4 x3
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
f

x x
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

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, a = b + c , ou seja, c = a2 b2 . Portanto a rea
2 2 2


bc b a2 b 2
A= = .
2 2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
34 Clculo Numrico

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 + b

a a

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

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 .
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= ,
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.

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 35

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


relacionam conforme a seguinte expresso:

V

I=
V0
Onde um nmero entre 0 e 1 e V0 a tenso nominal em volts. Sabendo que
V0 = 2203% e = 0,84% Calcule a corrente e o erro relativo associado quando
a tenso vale 220 1%. Dica: lembre que x = e ln(x)

2.9 Mais exemplos de cancelamento catastrfico


Exemplo 2.9.1. Considere o seguinte processo iterativo:
1
x0 =
3
xn+1 = 4xn 1, n N.

Observe que x0 = 13 , x1 = 4 31 1 = 31 , x2 = 13 , ou seja, temos uma sequncia


constante igual a 13 . No entanto, ao calcularmos no computador, usando o sistema
de numerao double, a sequencia obtida no constante e, de fato, diverge. Faa
o teste no Scilab, colocando:
-->x = 1/3
e itere algumas vezes a linha de comando:
-->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 ,
x0 = 13 + . A sequncia efetivamente calculada no computador :
1
x0 = +
3
1 1
 
x1 = 4x0 1 = 4 +  1 = + 4
3 3
1 1
 
x2 = 4x1 1 = 4 + 4 1 = + 42 
3 3
..
.
1
xn = + 4n 
3
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
36 Clculo Numrico

Figura 2.1: Grfico na funo do exemplo 2.9.2.

Portanto o limite da sequncia diverge,

lim |xn | =
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+
n

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 37

 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.

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.9.3) quando n tende a infinito o nmero de Euler:

1
 n
lim 1+ = e = 2,718281828459...
n n

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

1 1 1
 1  2  3
1+ < 1+ < 1+ <
1 2 3

No entanto, quando calculamos essa expresso no Scilab, nos defrontamos


com o seguinte resultado:

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


38 Clculo Numrico

 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 fun-
o deixa de se 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.1)

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:

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 39

-->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.1), 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.2)

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.3)
 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 =
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
fenmenos, observamos o que acontece quando tentamos recalcular n subtraindo
1 de 1 + 1/n e invertendo o resultado:

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


40 Clculo Numrico

-->y-1
ans =
1.421085471520200372D-14
-->1/(y-1)
ans =
7.036874417766400000D+13
Para entendermos isso melhor, vejamos o que acontece no Scilab quando n =
7 1013 :
>>> n=7e13; print("%1.15e" % n)
7.000000000000000e+13
>>> n=7e13; print("%1.20e" % n)
7.00000000000000000000e+13
>>> print("%1.20e" % (1/n))
1.42857142857142843451e-14
>>> y=1+1/n; print("%1.20e" % y)
1.00000000000001421085e+00
Observe a perda de informao ao deslocar a mantissa de 1/n. Para evidenciar o
fenmenos, observamos o que acontece quando tentamos recalcular n subtraindo
1 de 1 + 1/n e invertendo o resultado:
>>> print("%1.20e" % (y-1))
1.42108547152020037174e-14
>>> print("%1.20e" % (1/(y-1)))
7.03687441776640000000e+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

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 41

na balana ou medir seu peso com o gato e, depois, sem o gato. Na balana
de ponto flutuante, a incerteza associada na medida do peso do gato (sozinho)
aproximadamente 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.

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]

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=
c d

inversvel e sua inversa dada por



1 d b
A1 = .
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

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


42 Clculo Numrico

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

[B] S21 S22 v2 v2

Portanto
S22 v1 S12 v2
[A] =
S11 S22 S12 S21
S21 v1 + S11 v2
[B] =
S11 S22 S12 S21
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]

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 43

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
140 20

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


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.

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


44 Clculo Numrico

Exerccios

E 2.9.1. Considere as expresses:

exp(1/)
1 + exp(1/)
e
1
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?

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)
= .
x 2 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

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

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


2.9. MAIS EXEMPLOS DE CANCELAMENTO CATASTRFICO 45

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 ,
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, buscaremos aproximaes numricas para a soluo de equa-


es de uma varivel real. Observamos que obter uma soluo para uma tal
dada equao equivalente a encontrar um zero de uma funo apropriada.
Com isso, iniciamos este captulo discutindo sobre condies de existncia e unici-
dade 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 uma outra abordagem via iterao do ponto fixo.
Desta, obtemos o mtodo de Newton1 , para o qual discutimos sua aplicao
e 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) < 0, 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 =
f (x), tal que f (a) < f (b) (ou f (b) < f (a)), ento para qualquer d (f (a), f (b))
1
Sir Isaac Newton, 1642 - 1727, matemtico e fsico ingls.
2
Bernhard Placidus Johann Gonzal Nepomuk Bolzano, 1781 - 1848, matemtico do Reino da
Bomia.

46
3.1. EXISTNCIA E UNICIDADE 47

f(a)

x b
a x

f(b)

Figura 3.1: Teorema de Bolzano.

(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 tm 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


48 Clculo Numrico

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


3.2. MTODO DA BISSEO 49

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
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
menor que 104 .

E 3.1.7. Mostre que a equao


1
ln(x) + x =v
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) = .
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


50 Clculo Numrico

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. Noutro 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) = .
2
Verificamos o critrio de parada, isto , se f (x(n) ) = 0 ou:

|b(n) a(n) |
< T OL,
2
ento x(n) a aproximao desejada. Caso contrrio, preparamos a prxima ite-
rao n + 1 da seguinte forma: se f (a(n) ) f (x(n) ) < 0, ento setamos a(n+1) = a(n)
e b(n+1) = x(n) ; noutro caso, se f (x(n) ) f (b(n) ) < 0, ento setamos 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) = .
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


3.2. MTODO DA BISSEO 51

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.
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 pr-
ximo 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,
2n+1
isto , x(n) x quando n .

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


52 Clculo Numrico

Demonstrao. Notemos que, a cada iterao, a distncia entre a aproximao x(n)


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

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


necessria. Se a funo tiver mais de um zero no intervalo inicial, as iteraes
iro convergir para um dos zeros. 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 |.
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.
2n+1
Logo, temos:
ba 2
|x(n) x | < = n+1
2n+1 2
= 2n < 101 n > log2 101 3,32.
O que est de acordo com o experimento numrico realizado naquele exemplo.

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


3.2. MTODO DA BISSEO 53

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


como de fornecer uma simples estimativa da preciso da aproximao calculada.
Entretanto, a taxa de convergncia linear superada por outros mtodos. A
construo de tais mtodos est, normalmente, associada a 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


54 Clculo Numrico

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 (x2 ) exp
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. 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 (x)dx v +
0
dx = 0.
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.5. (Esttica) Considere o seguinte problema fsico: uma plataforma est


fixa a uma parede atravs de uma dobradia cujo momento dado por:

= k,

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


3.2. MTODO DA BISSEO 55

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.6. Considere a equao de Lambert dada por:

xex = t,

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


56 Clculo Numrico

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
vt
e
v vd
Id =
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 (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.

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


3.3. ITERAO DE PONTO FIXO 57

y
y=x

y = g(x)

x x

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

Ou seja, temos:
ex = x + 2 ex x 2 = 0 ex 2 = 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,
onde x(1) uma aproximao inicial do ponto fixo.
Exemplo 3.3.2 (Mtodo babilnico). O mtodo babilnico3 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 = Ar = A;
 
r < A = Ar > 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
.
2
3
Heron de Alexandria, 10 d.C. - 70 d.C., matemtico grego.

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


58 Clculo Numrico

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 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 ).
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,
para qualquer parmetro 6= 0. Consideremos, ento, as seguintes duas funes:

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

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


3.3. ITERAO DE PONTO FIXO 59

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

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 ),
(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!

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


teorema do ponto fixo.

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.

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


60 Clculo Numrico

Definio 3.3.1. Uma contrao uma funo real g : [a, b] [a, b] tal que:
|g(x) g(y)| |x y|, 0 < 1.
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) )
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
e
f (b) = b g(b) b b = 0
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 |.
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 |.
Da, temos:
|x(n) x | |x(n1) x | 2 |x(n2) x | n |x(0) x |.
Portanto, como 0 < 1, temos:
lim |x(n) x | = 0,
n

ou seja, x(n) x quando n .

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


3.3. ITERAO DE PONTO FIXO 61

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.

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 verfique 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

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


Para provar o item b), observamos que:

g 0 (x) = sen (x).

Da mesma forma, temos a estimativa:

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

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.

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:

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


62 Clculo Numrico

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


3.3. ITERAO DE PONTO FIXO 63

//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 forneceu
uma iterao divergente, enquanto que a funo g2 (x) forneceu uma iterao con-
vergente (veja a figura 3.5. A razo destes comportamentos explicada 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],

enquanto:

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

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


64 Clculo Numrico

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.

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 )
Tomando mdulos, temos:

(n+1)
x x x(n) x |g 0 (x )| ,
| {z } | {z }
n+1 n

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


3.3. ITERAO DE PONTO FIXO 65


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(n) x precisa ser estimado

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)


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)
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 )

Subtraindo uma da outra, temos:

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

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


66 Clculo Numrico

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)
que g 0 (x ) xx(n) xx
(n1) e

n
|g 0 (x )|
n1
e portanto
N
N .
1 n1
n

Exerccios

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


3.3. ITERAO DE PONTO FIXO 67

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

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 .
x
Destas, considere as seguintes iteraes de ponto fixo:
10
 
a) x(n+1) = ln
x(n)
(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

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

ponto fixo das seguintes funes:

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


68 Clculo Numrico

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) =
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


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


3.3. ITERAO DE PONTO FIXO 69

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 +
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 +
14.8Rh Re

E 3.3.11. Encontre uma soluo aproximada para equao algbrica

180 100x = 0.052 senh 1


(1013 x)

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 )

onde e x so constantes. Prove que

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

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 = n
lim x(n)
analiticamente.

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


70 Clculo Numrico

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

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)
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


3.4. MTODO DE NEWTON-RAPHSON 71

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) )

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 .

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-Raphson45 para calcular
o zero de funes reais de uma varivel real.
Assumimos que x um zero de uma dada funo f (x) continuamente diferen-
civel, isto , f (x ) = 0. Afim 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,


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

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


72 Clculo Numrico

onde (x) uma funo arbitrria que queremos escolher de forma que a iterao
do ponto fixo tenha tima taxa de convergncia.
Do Teorema do ponto fixo temos que 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).

No ponto x = x , temos:

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

Como f (x ) = 0, temos:

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

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,

e, ento, temos:
1
(x ) = ,
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,
f (x )
sendo x(1) uma aproximao inicial dada.

3.4.1 Interpretao geomtrica


Seja dada uma 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) .
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) ).

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


3.4. MTODO DE NEWTON-RAPHSON 73

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 ocorre quando (y = 0):

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

Ou seja, dado 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 .
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 .
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


74 Clculo Numrico

Portanto:
g 00 (x )  
g(x) = x + (x x )2 + O (x x )3
2
Com isso, temos:
g 00 (x ) (n)  
x(n+1) = g(x(n) ) = x + (x x )2 + O (x x )3 ,
2
ou seja: 2
x C x(n) x ,
(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)|.


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

Escolhendo > 0 tal que:


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

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

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

f (x(n) )
x (n+1)
=x (n)
0 (n) ,
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,
M
e a seguinte estimativa de erro a posteriori:
M (n)
|x(n) x | |x x(n1) |2 , n 2.
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.1)
f 0 (x(n) ) f (x(n) )

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


3.4. MTODO DE NEWTON-RAPHSON 75

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.
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.
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.2)
0 2
Se x(n) K (x ), ento de (3.1) e (3.2) temos:
M (n) M 2
|x(n+1) x | |x x |2 < . (3.3)
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 | .
M 2m M 2m
Logo:
2m 2n1
|x(n) x |
q ,
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) ).
Aqui, temos:
f (x(n1) ) + (x(n) x(n1) )f 0 (x(n1) ) = 0
e, ento, conforme acima:
M (n)
|f (x(n) )| = |R(x(n) ),x(n1) |
|x x(n1) |2 .
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 .
m 2m

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


76 Clculo Numrico

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

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

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


3.4. MTODO DE NEWTON-RAPHSON 77

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


78 Clculo Numrico

a) (1.5) 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

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) (1.0) Construa a iterao do mtodo de Newton para encontrar x , explici-


tando 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 .
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,

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) ) = .
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.
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


3.5. MTODO DAS SECANTES 79

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) ) .
f (x(2) ) f (x(1) )

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


80 Clculo Numrico

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


(x x (2)
) + f (x (2)
) x = x (2)
f (x (2)
) .
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 |,

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


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

Alm disso, seja > 0 tal que:


M
q := < 1, K (x ) := {x R; |x x | } [a, b].
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,
M
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
3.5. MTODO DAS SECANTES 81

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


riori:
M (n)
|x(n) x | |x x(n1) ||x(n1) x(n2) |, n 3.
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) ) .
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 |
. (3.4)
x(n) x(n1) x(n) x

m

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) )
= 01 dr f (x(n) + r(x(n1) x(n) )) x(n) x
R d 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
x x
(n) 0

Logo, temos:
f (x(n) ) f (x(n1) ) f (x(n) ) f (x )
=
x(n) x(n1) x(n) x (3.5)
Z 1h i
f (x
0 (n)
+ r(x (n1)
x (n)
)) f (x
0 (n)
+ r(x x
(n)
)) dr.
0
6
Leonardo Fibonacci, c. 1170 - c. 1250, matemtico italiano.
7
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


82 Clculo Numrico

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
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.5) e usando a cota para a segunda derivada, obtemos:


f (x(n) ) f (x(n1) ) f (x(n) ) f (x ) M (n1)


|x x |.
x(n) x(n1) x(n) x 2

Utilizando a equao (3.4), obtemos:


M (n) M 2
|g(x(n) ,x(n1) ) x | |x x ||x(n1) x | < .
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 |.
2m
Com isso, temos:
M (n)
n := |x x | n+1 n n1 , n 2.
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 .
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


3.5. MTODO DAS SECANTES 83

Agora, a iterao do mtodo das secantes fornece:


x(n1) x(n2)
x(n) = x(n1) f (x(n1) )
f (x(n1) ) f (x(n2) )
e temos:
f (x(n1) ) f (x(n1) ) f (x(n2) )
= .
x(n) x(n1) x(n1) x(n2)
Portanto:
1 f (x(n1) ) f (x(n) ) f (x(n1) ) f (x(n2) )

(n)
|x x | |x(n) x(n1) | .

m x(n1) x(n) x(n1) x(n2)
Observamos que o ltimo termo pode ser estimado como feito acima para o termo
anlogo na Inequao (3.4). Com isso, obtemos a estimativa desejada:
M (n)
|x(n) x | |x x(n1) ||x(n) x(n2) |.
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
n
= 1 ,
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.
Tomando n = n , 6= 0 temos:

  1 5
1 = 0 1 = 0 1,2 =
n 2 2
.
2
Portanto, n = c1 n1 + c2 n2 . Como 0 = 1 = 1, as constantes satisfazem:

c1 + c2 = 1 1+ 5 1 5
c1 = , c 2 = .
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 = .
5 2 2
Da, segue imediatamente o enunciado.

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


84 Clculo Numrico

Observao 3.5.1. Sob as hipteses do teorema 3.5.1 e da proposio 3.5.1, te-


mos:
|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 estudamos
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
n+1 | (x )|n0 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


3.7. EXERCCIOS FINAIS 85

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

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 |,
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

E 3.7.3. A equao
cos(x) = e2x
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


86 Clculo Numrico

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=
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

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


3.7. EXERCCIOS FINAIS 87

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 (31)P (0)
(10)P (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


88 Clculo Numrico

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 .

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


3.7. EXERCCIOS FINAIS 89

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
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
P i Pi

E 3.7.17. Encontre os trs primeiros pontos de mnimo da funo

f (x) = ex/11 + x cos(2x)

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 re-
viso 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, apresen-
tamos o conceito de condicionamento de um sistema linear. Ento, passamos a
discutir sobre tcnicas iterativas, mais especificamente, sobre os mtodos de Jacobi
e Gauss-Seidel.
Considere o sistema de equaes lineares:

a11 x1 + a12 x2 + + a1n xn = b1


a21 x1 + a22 x2 + + a2n xn = b2
..
.
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

onde:

a11 a12 a1n x1 b1

a21

a22 a2n x2

b

A= ,x = e b = 2

. .. .. ...
.. .

.. . . . ..



am1 am2 amn xn bm

90
4.1. ELIMINAO GAUSSIANA 91

Definimos tambm a matriz completa de uma sistema como Ax = b como [A|b],


isto :
a11 a12 a1n b1


a21 a22 a2n b2
[A|b] =

.. .. ... .. ..

. . . .




am1 am2 amn bm
Salvo especificado ao contrrio, assumiremos ao longo deste captulo que a
matriz dos coeficientes A uma matriz real no singular.

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
estendida do sistema em uma matriz triangular. Uma vez, triangularizado o sis-
tema, a soluo pode ser obtida via substituio regressiva. Naturalmente estas
operaes elementares devem preservar 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
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


2 1 1 0

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


92 Clculo Numrico

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


0 1 3 1

No segundo passo, permutamos a segunda linha com a terceira:


1 1 1 1

0 1 3 1


0 0

2 2

Neste momento, a matriz j se encontra na forma triangular. Da terceira linha,


encontramos 2z = 2, ou seja, 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.

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.2. Resolva o sistema

x+y+z = 1
2x + y z = 0
2x + 2y + z = 1

por eliminao gaussiana com pivotamento parcial.

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


4.1. ELIMINAO GAUSSIANA 93

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


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


94 Clculo Numrico

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.3 (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
=
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=
2/
e
4 2y
x=

Observe que a expresso obtida para y se aproximada de 2 quando pequeno:

3 4/ 3 4 4
y= = 2 = 2, quando 0.
2/ 2 2

J expresso obtida para x depende justamente da diferena 2 y:


4 2y 2
x= = (2 y)

Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
4.1. ELIMINAO GAUSSIANA 95

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 2
4 3

Continuando o procedimento, temos:

4 4
y=
2 2

x = 3 y

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 sistema por eliminao gaussiana com pivotamento parcial.


0 2 2 x 8

1 2 1 y = 9



1 1 1 6

z

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


96 Clculo Numrico

Soluo. Construmos a matriz completa:



0 2 2 8 1 2 1 9

1 2 1 9 0 2 2 8




1 1 1 6 1 1 1 6


1 2 1 9

0 2 2 8



0 1 0 3


1 2 1 9

0 2 2 8



0 0 1 1


1 2 0 8

0 2 0 6



0 0 1 1


1 0 0 2

0 2 0 6



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
10y + z = 25

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


4.1. ELIMINAO GAUSSIANA 97

E 4.1.2. Resolva o seguinte sistema de equaes lineares

x+y+z = 0
x + 10z = 48
10y + z = 25

Usando eliminao gaussiana com pivotamento parcial (no use o computador para
resolver essa questo).

E 4.1.3. Calcule a inversa da matriz



1 2 1

A=
1 2 0



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=
c d

inversvel e sua inversa dada por:



1 d b
A1 = .
ad bc c

a

E 4.1.5. Considere as matrizes



0 0 1

A= 0 1 0


1 0 0

e
1 1 1

E= 1 1 1


1 1 1

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


98 Clculo Numrico

e o vetor
2

v= 3


4

a) Resolva o sistema Ax = v sem usar o computador.

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
(i3)2
xi1 + 2.5xi xi+1 = e 20 , 2i4
2x5 x4 = 0

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.

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


4.2. COMPLEXIDADE DE ALGORITMOS EM LGEBRA LINEAR 99

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
eficincia (ou custo computacional), queremos saber qual desses algoritmos con-
some menos recursos para realizar a mesma tarefa.
Em geral podemos responder essa 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 leva para realizar determinada tarefa. Vamos nos concentrar nessa se-
gunda opo, que em geral a mais difcil de ser respondida.
Obviamente o tempo vai depender do tipo de computador utilizado. razovel
de se 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
apenas 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 a adio ou
subtrao. Assim, em livros clssicos eram contados apenas o custo das operaes
e /. Nos computadores atuais as quatro operaes bsicas levam o mesmo
tempo. Entretanto, na maioria dos algoritmos de lgebra linear o custo associado
as multiplicaes e divises proporcional ao custo das somas e subtraes (pois
a maioria dessas operaes podem ser escritas como a combinao de produtos
internos). Dessa 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.1)

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


100 Clculo Numrico

usando n multiplicaes, ou seja, um custo computacional, C, de


C = n flops. (4.2)

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.3)
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.4)

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.5)

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.7)
A medida que n , temos
O(2n2 n) = O(2n2 ) = O(n2 ) flops. (4.8)

1
Contando apenas multiplicaes/divises obtemos
n O(n) = O(n2 ) flops. (4.6)

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


4.3. SISTEMAS TRIANGULARES 101

Exemplo 4.2.4 (Produto matriz-matriz). Qual o custo para calcular o produto


de duas matrizes AB?

Soluo. Sejam A, B Rnn temos que



a11 a12 a1n b11 b12 a1n c11 c12 c1n
.. .. .. .. . ..
= ..

. . . .

.

(4.9)


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.10)

Note que esse 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.12)

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.13)
2
Contando apenas e / obtemos

n n (n) = n3 flops. (4.11)

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


102 Clculo Numrico

Substituindo xn na penltima equao

an1,n1 xn1 + an1,n xn = bn1 (4.14)

e isolando xn1 obtemos

xn1 = (bn1 an1,n xn )/an1,n1 (4.15)

e continuando desta forma at a primeira equao obteremos

x1 = (b1 a12 x2 a1n xn )/a11 . (4.16)

De forma geral, temos que

xi = (bi ai,i+1 xi+1 ai,n xn )/ai,i , i = 2, . . . ,n. (4.17)

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


4.4. FATORAO LU 103

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.19)
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.20)

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.18)

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


104 Clculo Numrico

Sendo assim, o sistema pode ser reescrito da seguinte forma:

Ax = b
(LU )x = b
L(U x) = b
Ly = b e Ux = y

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

e fazemos
A2,: A2,: L21 A1,:
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

e fazemos
A3,: A3,: L31 A1,:
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
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


4.4. FATORAO LU 105

Soluo. Comeamos fatorando a matriz A dos coeficientes deste sistema:



1 1 1 1 0 0 1 1 1

A=
2 1
1

. =
0 1 0 2 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 0 1 3



2 0 1 0 3 1


1 0 0 1 1 1

= 2 1 0
0 1 3



2 3 1 0 0 8

| {z }| {z }
L U

Completada a fatorao LU, resolvemos, primeiramente, o sistema Ly = b:

y1 = 2
2y1 + y2 = 1
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
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


106 Clculo Numrico

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.21)
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.22)
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 1
n1
= 2k 2 + k
X

k=1
n1 n1
= 2 k +
2
X X
k
k=1 k=1
(n 1)n(2n 1) n(n 1)
= 2 +
6 2
2n 3
n2
n
= flops.
3 2 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
4.4. FATORAO LU 107

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 calcular.
Para resolver o sistema, devemos primeiro fatorar a matriz A nas matrizes L e
U . Vimos que o custo
2n3 n2 n
flops.
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.

Somando esses 3 custos, temos que o custo para resolver um sistema linear
usando fatorao LU
2n3 3n2 n
+ flops.
3 2 6
Quando n cresce, prevalessem os termos de mais alta ordem, ou seja,
2n3 3n2 n 2n3 3n2 2n3
O( + ) = O( + ) = O( )
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( + )= +
3 2 6 3 2 6
e com m = n temos
2n4 3n3 n2
+ .
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
3 2 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
108 Clculo Numrico

que quando m = n obtemos


8n3 n2 n
flops.
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
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
.
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:

b 1 c1 x1 d1

a2 b2 c2 x2 d2

.

b3 . . = (4.23)

a3 x d .
3 3
.. .. .. ..

. . .
.


cn1


an bn xn dn
8
Llewellyn Hilleth Thomas (21 de outubro de 1903 20 de april de 1992) foi um matemtico
e fsico britnico.

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


4.5. MTODO DA MATRIZ TRIDIAGONAL 109

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.

O algoritmo para a soluo do sistema tridiagonal (4.23) pelo algoritmo de


Thomas dada pelas seguintes expresses:

ci , i=1
c0i = bi
(4.24)
ci
bi ai c0i1
, i = 2, 3, . . . , n 1
e
i=1

di ,
bi
d0i = di ai d0i1 (4.25)
bi ai c0i1
, i = 2, 3, . . . , n.

Finalmente a soluo final obtida por substituio reversa:

xn = d0n (4.26)
xi = d0i c0i xi+1 , i = n 1, n 2, . . . , 1. (4.27)

Teorema 4.5.1. A aplicao da eliminao gaussiana sem pivotamento ao sistema


(4.23) produz o algoritmo dado em (4.24) e (4.26)

Demonstrao. O primeiro passo consiste em dividir todos os elementos da pri-


meira linha de (4.23) por b1 :


1 c01 0
x1 d1

a2 b2 c2 x2 d2

.

b3 . . =

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


110 Clculo Numrico

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

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

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 subs-
trada da linha 2 multiplicada por a3 (l3 l3 a3 l2 ):

1 c1
0
x1 d01

0 1 c02 x2 d02


.

0 b3 a3 c02 . . =

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 =

x d0 .
3 3
... ... .. ..

.
.


cn1


an bn xn dn

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


4.5. MTODO DA MATRIZ TRIDIAGONAL 111

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

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 .
A penltima linha diz

xn1 + c0n1 xn = d0n1 = xn1 = d0n1 c0n1 xn .

Esse mesmo procedimento aplicado linha i = 1, . . . n 1, nos d

xi = d0i c0i xi+1 .

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.28)

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)
b = (2, 2, 2, 2, 2)
c = (1, 1, 1, 1, 0)
d = (4, 4, 0, 0, 2)

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


112 Clculo Numrico

Agora, calculamos os vetores c0 e d0 :


c1 1
c01 = =
b1 2
c2 1 2
c02 = = =
b2 a2 c01 21 2
1
3
c3 1 3
c03 = = =
b3 a3 c02 21 3
2
4
c4 1 4
c04 = = =
b4 a4 c03 21 4
3
5
d1 4
d01 = = =2
b1 2
d2 a2 d01 412 4
d02 = = 1 =
b2 a2 c10
21 2 3
d3 a3 d02 0 1 43
d03 = = = 1
b3 a3 c02 2 1 32
d4 a4 d03 0 1 (1) 4
d04 = = =
b4 a4 c30
21 4 3
5
d5 a5 d04 21 4
d05 = = 5
=1
0
b5 a5 c4 21 4
5

Finalmente, calculamos o vetor x:

x5 = d05 = 1
4 4
x4 = d04 c04 x5 = 1=0
5 5
3
x3 = d03 c03 x4 = 1 0 = 1
4
4 2
x2 = d2 c2 x3 = (1) = 2
0 0
3 3
1
x1 = d1 c1 x2 = 2 2 = 1
0 0
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


4.5. MTODO DA MATRIZ TRIDIAGONAL 113

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


114 Clculo Numrico

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 do 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.29)
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.30)

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


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 115

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.31)
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


116 Clculo Numrico

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 < .
X
|vi |
i=1

Para p = , definimos a norma L (norma do mximo) por:

kvk = max {|vj |}.


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.
1jn

Isto , u = 0. Agora, se kukp = 0, 1 p < , ento:


n
0 = kukpp := |ui |p n kuk kuk = 0.
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


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 117

Soluo.

kvk1 = 1 + 2 + 3 + 0 = 6

kvk2 = 1 + 22 + 32 + 02 = 14
kvk = max{1,2,3,0} = 3

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 ,


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
kAkp = || kAkp
kA + Bkp kAkp + kBkp (desigualdade do tringulo)
kAvkp kAkp kvkp
kABkp kAkp kBkp
kIkp = 1
1 = kIkp = kAA1 kp kAkp kA1 kp (se A inversvel)

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


118 Clculo Numrico

Casos especiais:
n
n
kAk1 = max
X
|Aij |
j=1
i=1
q
kAk2 = max{|| : (AA )}
n
n
kAk = max
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


1

8 7

Soluo.

kAk1 = max{12, 8, 18} = 18


kAk = max{15, 7, 16} = 16
q
kAk2 = max{0,5865124, 21,789128, 195,62436} = 13,98657

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


4.6. CONDICIONAMENTO DE SISTEMAS LINEARES 119

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

Aqui, x representa uma variao (erro) em x e y representa uma variao em y


(erro). Temos:
Ax + Ax = y + y
e, portanto,
Ax = y .
Queremos avaliar a razo entre o erro relativo em x e o erro relativo em y, i.e.
kx k / kxk kx k kyk
=
ky k /kyk kxk ky k
kA1 y k kAxk
=
kxk ky k
kA1 k ky k kAk kxk

kxk ky k
= kAk kA k1

Definio 4.6.1 (Nmero de condicionamento). O nmero de condicionamento


de uma matriz no-singular A

kp (A) := kAkp kA1 kp

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


120 Clculo Numrico

Soluo. Para a matriz A1 , temos:

k1 (A1 ) := kA1 kkA1


1 k 350,36,

2 k 262,12,
k2 (A1 ) := kA2 kkA1
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,
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


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 121

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
6
Use o Scilabpara construir os seguintes vetores de erro:
|xj yj | |xj zj |
ej = fj =
|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


122 Clculo Numrico

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


a21 x1 + a22 x2 + + a2n xn = y2
..
.
an1 x1 + an2 x2 + + ann xn = yn

Isolando o elemento x1 da primeira equao temos


 
(k)
(k+1)
y1 a12 x2 + + a1n xn(k)
x1 = (4.32)
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 =
a11
 
(k) (k)
(k+1)
y2 a21 x1 + a23 x3 + + a2n xn(k)
x2 =
a22
..
.  
(k) (k) (k)
y2 an1 x1 + + an,n2 xn2 + an,n1 xn1
x(k+1)
n =
ann
Em notao mais compacta, o mtodo de Jacobi consiste na iterao

x(1) = aproximao inicial



n
(k) (k)
=
X
xi yi aij xj /aii
j=1
j6=i

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


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 123

Exemplo 4.7.1. Resolva o sistema

10x + y = 23
x + 8y = 26

usando o mtodo de Jacobi iniciando com x(1) = y (1) = 0.

23 y (k)
x(k+1) =
10
26 x(k)
y (k+1) =
8
23 y (1)
x(2) = = 2,3
10
26 x(1)
y (2) = = 3,25
8
23 y (2)
x(3) = = 1,975
10
26 x(2)
y (3) = = 2,9625
8

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

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


124 Clculo Numrico

x=xnew // atualiza x
disp([k,x',deltax]) // depuracao
end
if ~convergiu then
error('Nao convergiu')
end

endfunction

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 =
a22
Aplicando esse raciocnio podemos construir o mtodo de Gauss-Seidel como
 
(k)
(k+1)
y1 a12 x2 + + a1n x(k)
n
x1 =
a11
 
(k+1) (k)
(k+1)
y2 a21 x1 + a23 x3 + + a2n xn(k)
x2 =
a22
..
.  
(k+1) (k+1)
y2 an1 x1 + + an(n1) xn1
x(k+1)
n =
ann
Em notao mais compacta, o mtodo de Gauss-Seidel consiste na iterao:

x(1) = aproximao inicial


Pi1 (k+1) Pn (k)
(k) yi j=1 aij xj j=i+1 aij xj
xi =
aii
Exemplo 4.7.2. Resolva o sistema

10x + y = 23
x + 8y = 26

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


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 125

usando o mtodo de Guass-Seidel iniciando com x(1) = y (1) = 0.

23 y (k)
x(k+1) =
10
26 x(k+1)
y (k+1) =
8
23 y (1)
x(2) = = 2,3
10
26 x(2)
y (2) = = 2,9625
8
23 y (2)
x(3) = = 2,00375
10
26 x(3)
y (3) = = 2,9995312
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


126 Clculo Numrico

end

endfunction

4.7.3 Anlise de convergncia


Nesta seo, discutimos sobre a anlise de 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
n

um vetor dos termos constantes e x = (xj )j=1 o vetor incgnita. No decorrer,


n

assumimos que A uma 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,

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,

onde x(1) uma aproximao inicial dada.


Afim 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,

onde D a matriz diagonal D = diag (a11 , a22 , . . . , ann ), isto :



a11 0 0 0

0 a22 0 0



D := 0 0 0

a33 ,

.. .. .. . . ..

. . . . .




0 0 0 ann

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


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 127

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

, .
a a32
31
.. .. .. .. .. .. .. .. . . ..

.
. . . .
.
. . . .

an1 an2 an3 0 0 0 0 0

Exemplo 4.7.3. Considere o seguinte sistema linear:


3x1 + x2 x3 = 2
x1 4x2 + x3 = 10
x1 2x2 5x3 = 10
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 .


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 .



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


128 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
Dx = (L + U )x + b
x = D1 (L + U ) x + D 1
| {z b} .
| {z }
=:cJ
=:TJ

Ou seja, a iterao do mtodo de Jacobi escrita na forma matricial :

x(k+1) = TJ x(k) + cJ , k 1,

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.4. Construa a matriz de iterao TJ e o vetor de iterao cJ do


mtodo de Jacobi para o sistema dado no exemplo 4.7.3.

Soluo. A matriz de iterao dada por:



1
3 0 0 0 1 1 0 13 1
3

TJ := D1 (L + U ) = 0 41 0 1 0 1 = 14 0 1
.


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 =
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 129

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
(L + D)x = U x + b
x = (L + D)1 U x + (L + D)1 b
| {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,

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.5. 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.3.

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
.


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 =
7
1 4 10 .


3
1 10

2 5 28
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


130 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,
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 ,
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.
Assim, temos:
lim kT k kp lim kT km
p = 0.
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.
k k

Lema 4.7.2. Se (T ) < 1, ento existe (I T )1 e:



(I T )1 = T k.
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,
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 131


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

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


= T 2 x(k1) + (I + T )c
..
.
Pk1 k 
= T (k) x(1) + k=0 T c.

Da, do lema 4.7.1 e do lema 4.7.2 temos:

lim x(k) = (I T )(1) c.


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)
= T (x x(k) )
..
.
= T (x x(1) ) = T (k) y.
(k)

Logo, para qualquer 1 p , temos, :

0 = lim x x(k+1) = lim T (k) y.


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


132 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.
Para mais detalhes, veja [8], pg. 61-64.
Exemplo 4.7.6. 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.3.
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
X
|aii | >
j=1
j6=i

Definio 4.7.2. Uma matriz A diagonal dominante quando


n
|aij | , i = 1,...,n
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
.
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
E consequentemente estritamente diagonal dominante.

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


4.7. MTODOS ITERATIVOS PARA SISTEMAS LINEARES 133

Teorema 4.7.3. O erro relativo e o resduo esto relacionados como (veja [3])
kx x(k) k krk
(A)
kxk kbk
onde k(A) o nmero de condicionamento.
Exemplo 4.7.7. Ambos os mtodos de Jacobi e Gauss-Seidel so convergentes
para o sistema dado no exemplo 4.7.3, 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
x1 + 2x2 x3 = 1
x2 + (2 + )x3 x4 = 1
x3 + 2x4 x5 = 1
x4 x5 = 1
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


134 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.33)

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
4x1 + x3 = 6
2x1 + x2 + 4x3 = 12

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 sequncia
Ax0 A2 x0 A3 x0 A4 x0
x0 , , , , ,
kAx0 k2 kA2 x0 k2 kA3 x0 k2 kA4 x0 k2

para algum chute inicial x0 . Para entender melhor o comportamento assinttico


dessa sequncia, primeiro considere o caso particular onde A uma matriz diago-

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


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 135

nal, isto ,
1 0 0 0

0 2 0 0



A= 0 0 0

3 .


.. ..

. .




0 0 0 n
Suponha que um dos autovalores seja estritamente maior que os demais, isto ,
|1 | > |2 | |3 | |n |. Dado x0 = [1 2 3 n ]T , ento

1 k1 1 1
 k
i 2 2
2 2 2

1 1

 k
Ak x0 = Ak = = k1 1

k 3 3 ,
3

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 a normalizao a cada passo da sequncia,
Ak x0
xk =
kAk x0 k2
converge para e1 , e1 = [1 0 0 0]T . Tambm, a sequncia
k = xTk Axk
converge para 1 :
lim k = (e1 )T A(e1 ) = 1 eT1 e1 = 1 .
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

3 .


.. ...

.




0 0 0 n

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


136 Clculo Numrico

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
visto que U U 1 = I. Suponha que o chute inicial x0 pode ser escrito da forma

x0 = U U 1 x0 = U [1 2 3 n ]T

com 1 6= 0. Ento

1 k1 1 1
 k
k 2 2
2 2 2

1 1

 k
Ak x0 = (U Dk U 1 )U =U = k1 1 U

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 x0
xk =
kAk x0 k2

converge para v1 = U e1 que um mltiplo do autovetor associado a 1 . Tambm,


a sequncia
k = xTk Axk
converge para o autovalor dominante 1 :

lim k = v1T Av1 = 1 v1T v1 = 1 .


k

O mtodo da potncia tem duas restries:

i) O chute x0 no pode ser ortogonal ao autovetor associado ao autovalor do-


minante.

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.

A seguir vamos fazer 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

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


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 137

combinao linear dos vj . Sejam {j }nj=1 o conjunto de autovalores associados


aos autovetores tal que um deles seja dominante, ou seja, |1 | > |2 | |3 |
|n | > 0. Como os autovetores so L.I., todo vetor x0 Rn , x0 = (x1 ,x2 ,...,xn ),
pode ser escrito com combinao linear dos autovetores da seguinte forma:
n
x0 = (4.34)
X
j vj .
j=1

Observamos que se x0 est na forma (4.34), ento Ak x0 pode ser escrito como
!k
n n n
j j
Ak x0 = j Ak vj = j kj vj = 1 k1 v1 +
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.
X

j=2 1 1
Assim, k
A k x0 1 k1
2
= v1 + O ) (4.35)
kAk x0 k kAk xk 1

A k x0
Como a norma de igual a um, temos
k A k x0 k

k
1 1
v 1

1
kAk x0 k

e, portanto,
1

k
1 1
kAk x0 k

kv1 k

1 k1
Ou seja, se definimos (k) = , ento
kAk x0 k
|(k) | 1
Retornando a (4.35), temos:

Ak x0
k
(k) v1 0
kA x0 k
Observe que um mltiplo de autovetor tambm um autovetor e, portanto,
Ak x0
xk =
kAk x0 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


138 Clculo Numrico

4.8.2 Mtodo da iterao Inversa


Nesta seo, vamos estudar a seguncia
(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


3

..

.




n
 k
1 i
i 1
(1 )k 1






(2 )k 2


1


= U (3 )k 3 = (i )k 1 U

.. .


.

..


.





(n )k n

 k
n i
i n

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


4.8. CLCULO DE AUTOVALORES E AUTOVETORES 139


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

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

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

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


140 Clculo Numrico

E 4.8.3. A norma L2 de um matriz A dada pela raiz quadrada do autovalor


dominante da matriz A A, isto :
q
kAk2 = max{|| : (A A)} :
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

V1 = V
V1 V2 V3 V2 V2
+ = 0
R1 R2 R5
V2 V3 V4 V3 V3
+ = 0
R2 R3 R6
V3 V4 V5 V4 V4
+ = 0
R3 R4 R7
V4 V5 V5
= 0
R4 R8

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


4.9. EXERCCIOS FINAIS 141

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) estu-
dado 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 aproximao x(k+1) .
Cada passo do mtodo de Newton envolve os seguintes procedimentos:

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

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 seguinte equaes:

f1 (x1 ,x2 , . . . ,xn ) = 0


f2 (x1 ,x2 , . . . ,xn ) = 0
..
.
fn (x1 ,x2 , . . . ,xn ) = 0

Podemos escrever este problema na forma vetorial definindo o vetor x = [x1 ,x2 , . . . ,xn ]T

142
143

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 os 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 =
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 )
X
xj xj
j=1 xj

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


144 Clculo Numrico

Portanto,

f1 f1 f1
x1 x2
xn

(0)

x1 x1






f2 f2 f2

x1 x2
xn



(0)



x2 x2

F (x) F (x(0) ) .. .. .. , (5.1)


..

. . . .

..





.




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 = .
xj

Nestes termos, podemos reescrever (5.1) como

F (x) F (x(0) ) + JF (x(0) )(x x(0) )

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


5.1. MTODO DE NEWTON PARA SISTEMAS 145

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

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

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
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)

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


146 Clculo Numrico

 
Assim, (k) = JF1 x(k) F (x(k) ), ou seja, (k) resolve o problema linear:
 
JF x(k) (k) = F (x(k) )

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 os 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


x22
x1 +
2
1
4
cuja jacobiana :
2x1

2x2
JF = 3


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


5.1. MTODO DE NEWTON PARA SISTEMAS 147

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

onde
x1 cos(x1 x2 ) 1
2
F (x) =
sen (x2 ) 2 cos(x1 )
e sua jacobiana

2x1 + x2 sen (x1 x2 ) x1 sen (x1 x2 )
JF (x) =
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


148 Clculo Numrico

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

Exerccios

E 5.1.1. Faa o que se pede:

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


5.1. MTODO DE NEWTON PARA SISTEMAS 149

a) Encontre o gradiente da funo

f (x,y) = x2 y + cos(xy) 4

b) Encontre a matriz jacobiana associada funo



x cos(x) + y
F (x,y) = .
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

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.

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


150 Clculo Numrico

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

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

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


5.1. MTODO DE NEWTON PARA SISTEMAS 151

Figura 5.1: Reta bitangente a uma curva.

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.

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:

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


152 Clculo Numrico

Figura 5.2: Sistema mecnico com dois segmentos.

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

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


5.1. MTODO DE NEWTON PARA SISTEMAS 153

Figura 5.3: interseco entre duas curvas.

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
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 contruir 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

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


154 Clculo Numrico

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 )

restrita condio

G(x1 ,x2 ,x3 ) = x1 + x2 + x3 1500 = 0.

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 .

Dica: Para construir aproximaes para resposta e iniciar o mtodo, considere a


funo f (x) = Abx que passa pelo primeiro e terceiro ponto.

E 5.1.14. Encontre o valor mximo da funo

f (x,y) = x4 y 6 + 3xy 3 x

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.

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


5.1. MTODO DE NEWTON PARA SISTEMAS 155

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.2)

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.
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) =
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.
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.

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


156 Clculo Numrico

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

Para construirmos a linearizao, fixemos uma direo no espao Rn , ou seja,


um vetor v:
v = [v1 , v2 , , vn ]T
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
e definimos a funo auxiliar

g(h) = f (x0 + hv).

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 )


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
dh
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 157

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.
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 )
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 )
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) ) = , , ,
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) = .

..


fn (x)

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


158 Clculo Numrico

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

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)

A matriz jacobiana JF matriz cujas linhas so os gradientes transpostos de

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


5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 159

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 =
xj

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 sobre problemas de interpolao. Mais precisa-


mente, 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.

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 entrar


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

Para que uma f na famlia seja a funo interpoladora do conjunto de pontos


dados, precisamos que

a + bx1 = y1 a+b=1
isto
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.

160
6.1. INTERPOLAO POLINOMIAL 161

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: 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 soma1 ; derivadas e primitivas de polinmios so
tambm polinmios cuja relao algbrica com o original simples; e finalmente o
teorema da Aproximao de Weierstrass, segundo o qual, 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)| < .
1
Essa forma de calcular o valor de p(x) denominada algoritmo de Horner2 . Dado um
polinmio p de grau n da forma
Xn
p(x) = ak xk ,
k=0

possvel reescrev-lo como a sequncia de operaes dada por

a0 + x (a1 + x (a2 + x (. . . + x (an1 + xan ) . . .))) .

O que requer n + 1 operaes de multiplicao e n + 1 operaes de soma.

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


162 Clculo Numrico

Para o problema ser bem determinado necessrio restringirmos o grau dos


polinmios.
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
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 6.1.3.
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)}.

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


6.1. INTERPOLAO POLINOMIAL 163

Soluo. Como o conjunto consiste de 4 pontos, o polinmio interpolador deve


ser da forma:
p(x) = a0 + a1 x + a2 x2 + a3 x3 .
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
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
X

k=0

tal que p(xi ) = yi equivalente a resolver o sistema linear com n equaes e n

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


164 Clculo Numrico

incgnitas dado por

a0 + a1 x1 + a1 x21 + + an1 x1n1 = y1 ,


a0 + a1 x2 + a2 x22 + + an1 x2n1 = y2 ,
..
.
a0 + a1 xn + a2 xn + + an1 xn
2 n1
= yn .

O qual pode ser escrito na forma matricial como



1 x1 x1 x1 a0
2 n1
y1

1 x2 x22 xn1 a1 y2

2
1 x 3 x 3 x 3 a2 =

2 n1
y3


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

.
. . .

1 xn x2n xn1
n an1 yn

A matriz envolvida uma matriz de Vandermonde3 de ordem n cujo determi-


nante dado pelo produtrio duplo

(xj xi )
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

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.
3
Alexandre-Thophile Vandermonde, 1735 - 1796, matemtico francs.

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


6.2. DIFERENAS DIVIDIDAS DE NEWTON 165

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)}.

E 6.1.3. 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)}.

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.

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 ) +
+ 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
..
.
a1 + a2 (xn x1 ) + + an (xn x1 ) (xn xn1 ) = yn

Resolvendo de cima para baixo, obtemos

a1 = y1
y2 a1 y2 y1
a2 = =
x2 x1 x2 x1
y3 y2 y2 y1
y3 a2 (x3 x1 ) a1 (x3 x2 )
(x2 x1 )
a3 = =
(x3 x1 )(x3 x2 ) (x3 x1 )
...

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


166 Clculo Numrico

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 x2 f [x2 ] = y2

Note que os coeficientes so obtidos por diferenas das ordenadas divididas


por diferenas das abscissas dos pontos dados. Para vermos isso mais claramente,
introduzimos a seguinte notao:

f [xj ] := yj
f [xj+1 ] f [xj ]
f [xj , xj+1 ] :=
xj+1 xj
f [xj+1 , xj+2 ] f [xj , xj+1 ]
f [xj , xj+1 , xj+2 ] :=
xj+2 xj
..
.
f [xj+1 , xj+2 , . . . , xj+k ] f [xj , xj+1 , . . . , xj+k1 ]
f [xj , xj+1 , . . . , xj+k ] :=
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.2) nos mostra que

ak = f [x1 ,x2 , . . . ,xk ]

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


6.3. POLINMIOS DE LAGRANGE 167

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)

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 ) =
0, se k 6= j

Assim, o polinmio p(x) de grau n 1 que interpola os pontos dados, i.e. p(xj ) =
yj , j = 1, . . . ,n dado por
n
p(x) = y1 L1 (x) + y2 L2 (x) + + yn Ln (x) = yk Lk (x).
X

k=1

Para construir os polinmios de Lagrange, podemos analisar a sua forma fato-


rada, ou seja:
n
Lk (x) = ck (x xj )
Y

j=1
j6=i

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


168 Clculo Numrico

onde o coeficiente ck obtido da condio Lk (xk ) = 1:


n
1
Lk (xk ) = ck (xk xj ) = ck = Y
Y
n
j=1
j6=i
(xk xj )
j=1
j6=i

Portanto,
n
(x xj )
Lk (x) =
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
(0 1)(0 2)(0 3) 6 6
x(x 2)(x 3) 1 5
L2 (x) = = x3 x2 + 3x
1(1 2)(1 3) 2 2
x(x 1)(x 3) 1 3
L3 (x) = = x3 + 2x2 x
2(2 1)(2 3) 2 2
x(x 1)(x 2) 1 1 1
L4 (x) = = x3 x2 + x
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

2 10
p(x) = 0 L1 (x) + 1 L2 (x) + 0 L3 (x) + 1 L4 (x) = x3 3x2 + x.
3 3

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

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


6.4. APROXIMAO DE FUNES REAIS POR POLINMIOS
INTERPOLADORES 169
(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)!
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( 12 ) 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 21 )(0 1)
1 (x 0)(x 1)
 
+ cos
2 ( 21 0)( 21 1)
(x 0)(x 12 )
+ cos(1)
(1 0)(1 12 )
1 0,0299720583066x 0,4297256358252x2

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))

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


170 Clculo Numrico

Para encontrar o erro mximo, precisamos estimar |f 000 (x)| = | sen (x)|
sen (1) < 0,85 e
1
 
max x x (x 1)

x[0,1] 2
 
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 encontrar 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 f (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)(2x 3x + 1) + f
2
(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


6.4. APROXIMAO DE FUNES REAIS POR POLINMIOS
INTERPOLADORES 171
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
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


172 Clculo Numrico

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
(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 ]

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 + 1 x0 ,0 x < 1


01 10




f (x) = 4 x2
12
+ 3 x1
21
,1 x < 2



3 x3 + 0 x2 ,2 x 3



23 32

Simplificando, obtemos:

x ,0 x < 1






f (x) = x + 5 ,1 x < 2



3x + 9 , 2 x 3


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]
//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

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


6.5. INTERPOLAO LINEAR SEGMENTADA 173

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-')

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.

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


174 Clculo Numrico

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;

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.1)
dx4
cuja soluo geral um polinmio de grau 3.
Vamos supor que um spline cbico que interpola o conjunto de pontos I co-
nhecido. 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 .

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


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 175

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 identificada com a soluo
da equao diferencial (6.1) 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
.

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 ,

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 .

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 +
(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 }j = 1n 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.2)

onde
yj+1 yj 0
yj+1 + 2yj0
aj = yj , cj = 3 ,
h2j hj
0
+ yj0 (6.3)
yj+1 yj yj+1
bj = yj0 , dj = 2 +
h3j h2j
e
hj = xj+1 xj , j = 1,2, . . . ,n 1 (6.4)
a distncia entre as abscissas de dois pontos de interpolao consecutivos.

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


176 Clculo Numrico

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.2), (6.3) e (6.4) 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 )


x%xj+1

em todos os pontos internos j = 1,2, . . . ,n 2. Em termos dos coeficientes dos


polinmios cbicos (6.2), a equao anterior assume a forma

2cj + 6dj hj = 2cj+1 , j = 1,2, . . . ,n 2.

Esta ltima equao e (6.3) 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.5)
hj1 hj

onde j = 2,3, . . . ,n 1 e hj = xj+1 xj .

O sistema de equaes (6.5) subdeterminado. So n variveis e n 2 equa-


es. A incluso de duas equaes adicionais linearmente independentes das n 2
equaes (6.5) 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.5) impor condies de fronteira livres (ou naturais), ou seja,

s00 (x1 ) = s00 (xn ) = 0. (6.6)

De acordo com (6.2) essas equaes implicam respectivamente

c1 = 0 e 2cn1 + 6dn1 hn1 = 0,

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


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 177

ou seja,
y2 y1


2y10 + y20 = 3
h1





. (6.7)
yn yn1


+ 2yn0 = 3

0
yn1



hn1

Essas duas equaes em conjunto com as equaes (6.5) 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.8)

. . . . . . .


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.9)
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.3).

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.10)


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


178 Clculo Numrico

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= =

,
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
= .
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.3):

a1 = y1 = 4,5 , b1 = y10 = 2,83,


a2 = y2 = 1,9 , b2 = y20 = 0,73,
a3 = y3 = 0,5 . b3 = y30 = 0,46,

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 .


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


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 179

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.5) 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 )

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


180 Clculo Numrico


h2 y2hy 1
+ h1 y3hy 2
h2 y10
y20 1 2

h3 y3hy h2 y4hy

2 3
+
y30 2 3

..

y0 = e z= 3 .

.. .
.

yn3 yn2
hn2 yn2 + hn3 yn1


0
hn3 hn2
yn1
yn2

hn1 yn1
hn2 + hn2 ynhy
n1
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
x%x2 x%xn1

Em termos dos coeficientes (6.2), as equaes anteriores correspondem a

d1 = d2 e dn2 = dn1 ,

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

Essas duas equaes agregadas s equaes (6.5) formam um sistema de n equaes


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= ,

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

. . . . . . .


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


6.6. INTERPOLAO CBICA SEGMENTADA - SPLINE 181

y2 y1 y3 y2
 
2 h22 h21

h1 h2 
y10


y2 y1 y3 y2
3 h2 h1 + h1 h2


y20


..
y0 = z=


e . .
..


.
 
yn1 yn2 yn yn1

3 hn1 hn2 + hn2 hn1


yn0


y n1 y n2 y n y n1


2
2 hn1 2 hn2
hn2 hn1
Se reduzirmos esse sistema pela eliminao das incgnitas e yn0 , o sistema re- y10
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 ).
Em termos dos coeficientes (6.2)
b1 = bn1 e 2c1 = 2cn1 + 6dn1 hn1 ,
ou seja,




y10 yn0 = 0



! .
y2 y1 yn yn1


2hn1 y10 + hn1 y20 + h1 yn1
0
+ 2h1 yn0 = 3 hn1 + h1





h1 hn1
(6.11)
Essas duas equaes agregadas s equaes (6.5) formam um sistema de n equaes
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= ,

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

. . . . . . .


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


182 Clculo Numrico


0
y10

h2 y2hy + h1 y3hy

1 2
y20 1 2

..

y0 = e z= 3 .

.. .
.

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, discutimos sobre 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 ,
X
f F
j=1

183
184 Clculo Numrico

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

= (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
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 .
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


7.1. AJUSTE DE UMA RETA 185

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.1)

P
N PN 2 N
j=1 xj j=1 xj a2 j=1 xj y j
| {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


186 Clculo Numrico

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.2)
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.1) 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 x1 = y1
a1 + a2 x 2 = y 2
.. (7.3)
.
a1 + a2 x N = y N
Se os pontos dados no so colineares, este sistema no tm 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.4)
nos fornece a chamada soluo por mnimos quadrados do sistema (7.3). Note que
esta uma forma de se obter os coeficientes a = (a1 , a2 ) equivalente quela dada
em (7.2).
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.2), 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.4).
Os coeficientes a1 e a2 podem ser rapidamente calculados no Scilab usando a
expresso (7.4). Para tando, digitamos:

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


7.1. AJUSTE DE UMA RETA 187

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

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


188 Clculo Numrico

e
y1



1 1 1
PN
y2

j=1 yj
V Ty = = P = w.

.


.

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


7.2. AJUSTE LINEAR GERAL 189

7.2 Ajuste linear geral


O problem 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 pon-
tos {(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)
X

j=1

minimiza o resduo
n
R= [f (xi ) yi ]2 .
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 .
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 .
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


190 Clculo Numrico

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, 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 )

1 3
.. .. .. ..

.
. . .

f1 (xn ) f2 (xn ) fm (xn )

e o vetor coluna y = (y1 , y2 , . . . , yN ),


Ento, 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


7.2. AJUSTE LINEAR GERAL 191

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

Portato 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 ) =

.
y
..
1 3 3
.. .. ... .. ..

. . . .


am


f1 (xn ) f2 (xn ) fm (xn ) yn

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


192 Clculo Numrico

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

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

=
9,57 26,5071 a2 85,8144

A soluo desse sistema a1 = 1,9988251 e a2 = 2,5157653. A figura 7.2, apresenta


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


7.2. AJUSTE LINEAR GERAL 193

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
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)



sen (0,75) cos(0,75)



sen () cos()

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


194 Clculo Numrico

Ento, a soluo por mnimos quadrados



244,03658
a = (V T V )1 V T y =
.
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.2. 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 .

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


7.2. AJUSTE LINEAR GERAL 195

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

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

=

j=1 j=1 .

.. .. .. . ..

. . . . .



n n n n
P P
m1 a m1
xm x2m1
P P
xj xj yj

j j p+1
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


196 Clculo Numrico

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 .

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

2
x3 x3

1 x4 x24



1 x5 x25

A soluo por mnimos quadrados , ento:



165,37143

a = (V T V )1 V T y = 1250,9714



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,9714x 900,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


7.2. AJUSTE LINEAR GERAL 197

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


198 Clculo Numrico

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.
Usamos os pontos (xj ,yj ) := (xj , ln yj ), j = 1,2,3 e resolvemos o sistema linear


y1
a1
V TV =V
T


y2

,
a2


y3
onde
1 x1

A= 1 x2



1 x3

2
A soma do quadrado dos resduos.

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


7.3. APROXIMANDO PROBLEMAS NO LINEARES POR
PROBLEMAS LINEARES 199
Exemplo 7.3.1. Encontre uma curva da forma y = Aex que melhor ajusta os
pontos (1, 2), (2, 3) e (3, 5).

Temos
1 1

A= 1 2



1 3

e a soluo do sistema leva em B = 0,217442 e b = 0,458145. Portanto, A =


e0,217442 = 1,24289.

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 )] . No exemplo resolvido, a soluo do sistema no linear original
2
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.

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
2
y = ae(b+cx) 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 + ) 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

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


200 Clculo Numrico

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


7.3. APROXIMANDO PROBLEMAS NO LINEARES POR
PROBLEMAS LINEARES 201
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.

Exemplo 7.3.3. Encontre a funo f da forma y = f (x) = a


b+x
que ajusta a

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


202 Clculo Numrico

tabela de pontos
xi yi
0,0 101
0,2 85
0,4 75
0,6 66
0,8 60
1,0 55
usando uma das transformaes tabeladas.

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 1 0,4

x3
A=


=



1 x4 1 0,6



1 1 0,8


x5






1 x6 1 1,0
e

1/y1
0,0099010
1/y 0,0117647

2

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


Captulo 8

Derivao Numrica

Nesta seo, discutiremos sobre estratgias numricas de aproximao de de-


rivadas de funes reais. Com as tcnicas que abordaremos possvel o clculo
aproximado da derivada de uma funo a partir de um conjunto de pontos discretos
{(xi , yi )}ni=1 . Comeamos discutindo sobre as chamadas aproximaes por di-
ferenas finitas e, ento, discutimos sobre 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 .
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.1)
h
uma aproximao para f 0 (x0 ).

203
204 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.1), devemos calcular

cos(1 + h) cos(1)
D+,h f (1) =
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 valores mo-
derados 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 diferenas finitas apli-
cada (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 205

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) (suave1 )
no ponto x = x0 a partir de sua expanso em srie de Taylor. Em alguns casos,
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).
2

Isolando f 0 (x0 ), obtemos

f (x0 + h) f (x0 ) f 00 ()
f 0 (x0 ) = h , (8.2)
| 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


206 Clculo Numrico

o que mostra que o erro de truncamento da diferena finita progressiva2

f (x0 + h) f (x0 )
D+,h f (x0 ) :=
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).
2
Isolando f 0 (x0 ), obtemos

f (x0 ) f (x0 h) f 00 ()
f 0 (x0 ) = +h .
| h
{z } | {z2 }
D,h O(h)

que fornece a diferena finita regressiva3

f (x0 ) f (x0 h)
D,h f (x0 ) := ,
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!
+
,
000
f (x0 h) = f (x0 ) hf 0 (x0 ) + h2 f 00 (x0 ) + h 3 f ( )
3!

Fazendo a primeira equao menos a segunda, obtemos

f 000 (+ ) f 000 ( )
!
f (x0 + h) f (x0 h) = 2hf 0 (x0 ) + h3 .
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 207

Dividindo por 2h e isolando f 0 (x0 ) obtemos

f (x0 + h) f (x0 h) f 000 (+ ) f 000 ( )


!
f (x0 ) =
0
h2 .
| 2h
{z } 2 3!
| {z }
D0,h
O(h2 )

Assim, a diferena finita central4

f (x0 + h) f (x0 h)
D0,h f (x0 ) := ,
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 = = .
h h
Com a diferena regressiva, calculamos
1 1
f (x) f (x h) e 2 x e 2 (xh)
D,h = = .
h h
Por fim, usando a diferena central temos
1 1
f (x + h) f (x h) e 2 (h+h) e 2 (xh)
D0,h = = .
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


208 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 mos-


tra que o erro absoluto na derivao numrica no da ordem do erro de trun-
camento. 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 ca-
tastrfico, 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.2, temos:
f 00 ()
f (x) = D+,h f (x) h
0
, > 0,
2
ou seja:
f 00 ()

|f (x) D+,h f (x)| =
0
h, > 0.

2

Agora, como |f 00 (x)| = |ex | < 1 para x > 0, conclumos que:


1
|f 0 (x) D+,h f (x)| h, x > 0.
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 209

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) = .
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 assumimos que

f (x + h) f (x)
D+,h f (x) = D+,h f (x)(1 + (x,h)) = (1 + (x,h)). (8.3)
h
Tambm, consideremos

|f (x + h) f (x + h)| = (x,h)

e
|f (x) f (x)| = (x,0) ,
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.3), 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)) .
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) +
0 0
h h
f (x) f (x)
!

+ (1 + )

h
f (x + h) f (x) f (x + h) f (x + h)


= f (x) +
0

h h
f (x) f (x)
!

+ (1 + ) .

h

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


210 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) +
0 0



h h
f (x) f (x) f (x + h) f (x)
!
+
|1 + | +



h h
!

M h + + |1 + | + |f 0 (x)|

h h
2
!
Mh + |1 + | + |f 0 (x)|
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) Mh + |1 + | + |f 0 (x)|. (8.4)
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.4), mostra que o erro na computao
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
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.

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


8.1. DIFERENAS FINITAS 211

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 ) = .
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 )
=
h
sen (4 + 2h) + 4h + h sen (4))
2
= .
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 ,
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 .

Exerccios

E 8.1.1. Use os esquemas numricos do exerccio 8.1.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.


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 )

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


212 Clculo Numrico

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

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.

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


8.2. DIFERENA FINITA PARA DERIVADA SEGUNDA 213

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

8.3 Diferenas finitas de ordem mais alta


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 )
(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


214 Clculo Numrico

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.5)
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 )
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))
(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.5), temos


outras duas expresses

1 1 1 f 000 ((x1 ))
 
f (x1 ) =
0
f (x0 ) + f (x2 ) + h2
h 2 2 6
1 1 3 f 000 ((x2 ))
 
f 0 (x2 ) = f (x0 ) 2f (x1 ) + f (x2 ) + h2
h 2 2 3

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


8.3. DIFERENAS FINITAS DE ORDEM MAIS ALTA 215

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
h 2 2 3
1 1 1 f 000
((x + h))
 
0
f 0 (x0 + h) = f (x0 ) + f (x0 + 2h) + h2
h 2 2 6
1 1 3 f 000 ((x0 + 2h))
 
f (x0 + 2h) =
0
f (x0 ) 2f (x0 + h) + f (x0 + 2h) + h2
h 2 2 3
ou ainda
1 f 000 ((x0 ))
f 0 (x0 ) = [3f (x0 ) + 4f (x0 + h) f (x0 + 2h)] + h2 (8.6)
2h 3
1 f 000
((x 0 ))
f 0 (x0 ) = [f (x0 + h) f (x0 h)] + h2 (8.7)
2h 6
1 f 000 ((x0 ))
f 0 (x0 ) = [f (x0 2h) 4f (x0 h) + 3f (x0 )] + h2 (8.8)
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.9)

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


216 Clculo Numrico

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 deriva-
das numricas.

Exerccios
Em construo ... Gostaria de colaborar na escrita deste livro? Veja como em:

http://www.ufrgs.br/numerico

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.10)

que seja exata para polinmios at ordem n 1.

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


8.4. FRMULAS DE DIFERENAS FINITAS 217

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.10) 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.10) obtemos
01 (x)|x = (1)0 |x = (8.11)
0 = c1 1 (x1 ) + c2 1 (x2 ) + . . . + cn 1 (xn ) (8.12)
0 = c1 + c2 + . . . + cn (8.13)
Da mesma forma para k = 1, . . . ,n 1, obtemos
(x)0x = 1 = c1 x 1 + c2 x 2 + . . . + cn x n (8.14)
(x2 )0x = 2x = c1 x21 + c2 x22 + . . . + cn x2n (8.15)
(x3 )0x = 3(x )2 = c1 x31 + c2 x32 + . . . + cn x3n (8.16)
.. .
. = .. (8.17)
(xn1 )0x = (n 1)(x ) n2
= c1 x1n1 + c1 xn1
1 + . . . + cn xnn1 (8.18)
que pode ser escrito na forma matricial

1 1 ... 1 c1 0

x1 x2 ... xn c2 1



= 2x (8.19)


x21 x22 ... x2n
c3




.. .. .. .. ..

. . . . .




xn1
1 xn1
2 . . . xn1
n 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 ).
Soluo. A regra ter a forma
f 0 (x ) c1 f (x1 ) + c2 f (x2 ) + c3 f (x3 ) (8.20)
c1 f 1 + c2 f 2 + c3 f 3 (8.21)
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.22)
(x)x=0 = 1 = c1 (h) + c2 (0) + c3 (h)
0
(8.23)
(x2 )0x=0 = 0 = c1 (h)2 + c2 (0)2 + c3 (h)2 (8.24)

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


218 Clculo Numrico

que pode ser escrito na forma matricial



1 1 c1 0
1

h 0 h c2 = 1 (8.25)



h2 0 h2 0

c3

Resolvendo o sistema obtemos [c1 ,c2 ,c3 ] = [ 2h


1 1
,0, 2h ] fornecendo a regra

1 1
f 0 |x=x1 f1 + f3 (8.26)
2h 2h
f3 f1
(8.27)
2h

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

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

Exerccios

E 8.4.6. 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)

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


8.5. DERIVADA VIA AJUSTE OU INTERPOLAO 219

8.5 Derivada via ajuste ou interpolao


 
Dado os valores de uma funo em pontos {(xi ,yi )}N i=1 , as derivadas
dy
dx i
podem ser obtidas atravs da derivada de uma curva que melhor 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, dado 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,


y 0 (x3 ) Q0 (x3 ) = 3,45 e y 0 (x4 ) Q0 (x4 ) = 4,95

Agora olhe o grfico da seguinte tabela de pontos.

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

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


220 Clculo Numrico

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
melhor ajusta os dados da tabela y = f (x) = 1,2522727 + 0,9655455x. Usando
esse ajuste, temos f 0 (7) 0,9655455.

Exerccios
Em construo ... Gostaria de colaborar na escrita deste livro? Veja como em:

http://www.ufrgs.br/numerico

8.6 Exerccios finais


Em construo ... Gostaria de colaborar na escrita deste livro? Veja como em:

http://www.ufrgs.br/numerico

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.
Considere o problema de calcular (ou estimar) a integral de f (x) no intervalo
[a,b], ou seja,
Z b
I= f (x) dx.
a

Uma maneira de estimar esta integral numericamente consiste em subdividir


o intervalo [a,b] em n 1 intervalos a partir de um conjunto ordenado de pontos
a = x1 < x2 < ... < xn = b. Em cada intervalo i, a integral ser aproximada por
Si e a integral ser aproximada por

n1
IS= Si
X

i=1

O tamanho de cada intervalo dado por hi = xi+1 xi . No caso uniforme, todos


os intervalos possuem o mesmo tamanho h = hi = ba n
.
Nas prximas sees apresentaremos formas diferentes de aproximar Si inici-
ando com o caso mais simples que um retngulo. Cada uma das regras obtidas
tambm chamada de quadratura.

Exemplo 9.0.1. A figura 9.1 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 retngulo de bases h3 = 0,5.
Os valores aproximados para a integral so dados na seguinte tabela:

221
222 Clculo Numrico

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.1: Aproximao por retngulos.

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


9.1. REGRAS DE NEWTON-COTES 223

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
Observe que:
#2
8
"
Z 2
x3
(x + 1) dx =
2
+x = + 2 = 4,6666667
0 3 0
3

9.1 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 valores1 de fi := f (xi ), ou seja,
Z b n
I= f (x) dx
X
Ai fi .
a i=1

Podemos obter os coeficientes Ai aproximando a funo f pelo polinmio de


Lagrange pn que interpola {(xi ,fi )}ni=1 , tal que,
f (x) = pn (x) + ELAG
n
(x) (9.1)
n
= fi Li (x) + ELAG
n
(x) (9.2)
X

i=1

onde o erro na interpolao de Lagrange


f (n) ((x)) Yn
n
ELAG (x) = (x xi ). (9.3)
n! i=1

Substituindo na integral obtemos


n
Z b " Z b # Z b
f (x) dx = Li (x) dx + n
(x) dx. (9.4)
X
fi ELAG
a i=1 a a

A frmula de quadratura ento


Z b n
f (x) dx (9.5)
X
A i fi ,
a i=1

onde Z b
Ai = Li (x) dx. (9.6)
a
1
Utilizaremos neste captulo a notao fi para indicar f (xi ).

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


224 Clculo Numrico

9.1.1 Somas de Riemann


O mtodo mais simples de aproximar
Z b
I= f (x) dx.
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 f (a) dx (9.7)
Rb
a
a
= f (a) dx = f (a)(b a) (9.8)
Rb
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

tal que a rea total ser aproximada pelas somas de Riemann esquerda
n1 n1
S= Si = f (xi )h
X X

i=1 i=1

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
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.9)
X
.
i=1 2

9.1.2 Regra do trapzio


A regra do trapzio consiste em aproximar a funo f (x) por um polinmio
de grau 1. Se utilizarmos uma reta ligando extremos do intervalo obtemos um
trapzio que fornece o nome da regra.

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


9.1. REGRAS DE NEWTON-COTES 225

Desta forma, utilizando x1 := a, x2 := b, h = x2 x1 e a notao fi = f (xi )


obtemos atravs da interpolao de Lagrange o polinmio

p1 (x) = f1 L1 (x) + f2 L2 (x) (9.10)

Aproximando f (x) por p1 (x) e integrando obtemos


Z b Z b
f (x) dx p1 (x) dx
a a
Z b
= f1 L1 (x) + f2 L2 (x) dx
a
Z b Z b
= f1 L1 (x) dx + f2 L2 (x) dx
a a
= A1 f1 + A2 f2

onde
# x2
(x x1 )2
"
Z b
x x1
A1 = dx =
a x2 x 1 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 f1 + f2 h (9.11)
a 2 2

Erro na regra do trapzio


O erro na regra do trapzio pode ser obtida 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


226 Clculo Numrico

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.1.1. 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 do trapzio 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


9.1. REGRAS DE NEWTON-COTES 227

9.1.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
2
com h = x3 x1 , podemos obter o polinmio de Lagrange
p2 (x) = f1 L1 (x) + f2 L2 (x) + f3 L3 (x)
Aproximando f por p2 e integrando temos
Z b Z b
f (x) dx p2 (x) dx (9.12)
a a
Z b
= f1 L1 (x) + f2 L2 (x) + f3 L3 (x) dx (9.13)
a
= f1 A 1 + f2 A 2 + f3 A 3 (9.14)
onde
Z b
Ai = Li (x) dx (9.15)
a

Calculando essas integrais obtemos a regra de Simpson


Z b
1 4 1
 
f (x) dx =
f (x1 ) + f (x2 ) + f (x3 ) h.
a 6 6 6
Exemplo 9.1.2. 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 h
(x h/2)(x h) 2 Zh
= dx = 2 (x h/2)(x h) dx
0 (0 h/2)(0 h) h 0
2 Zh 2 3 h2 2 3 h2 x h
= 2 x hx + dx = 2 (x3 /3 hx2 + )
h 0 2 2 h 4 2 0
2 3 h3 2 3
= 2 (h3 /3 h3 + ) = ( + 1)h
h 4 2 3 2
1
= h
6
Apesar de longa, apenas a integral de um polinmio de grau 2. De forma seme-
lhante podemos obter
4 1
A2 = h, A3 = h
6 6
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
228 Clculo Numrico

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 ) 2 f (x2 )
000
3 f
(4)
((x))
f (x) = f (x2 )+f (x2 )(xx2 )+
0
(xx2 ) + (xx2 ) + (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
24 x1
1 Z x3
+ f (4) ((x))(x x2 )4 dx,
24 x1
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
(x x2 )2 f 00 (x2 )
"
= f (x2 )(x x2 ) + f 0 (x2 ) + (x x2 )3
2 6
#x3
f 000 (x2 )
+ (x x2 )4
24 x1
f (4)
() h i x3
+ (x x2 )5
120 x1

Usando o fato que


(x3 x2 )3 (x1 x2 )3 = 2h3 ,

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


9.1. REGRAS DE NEWTON-COTES 229

(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
Exemplo 9.1.3. 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
x2 2
e 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

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


230 Clculo Numrico

Exerccios

E 9.1.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
numrica.
E 9.1.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.
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.1.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.2 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

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


9.2. OBTENO DAS REGRAS DE QUADRATURA 231

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.16)
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
exata para qualquer funo da base. Substituindo f (t) por 1 (t) = 1 em (9.16)
obtemos
Z b
1 (t) dt = t|ba = w1 1 (t1 ) + w2 1 (t2 ) + . . . + wn 1 (tn ) (9.17)
a
b a = w1 + w2 + . . . + wn (9.18)

Da mesma forma para k (t), k = 2, . . . ,n, obtemos

b 2 a2
(t2 /2)|ba = = w1 t1 + w2 t2 + . . . + wn tn (9.19)
2
b 3 a3
(t3 /3)|ba = = w1 t21 + w2 t22 + . . . + wn t2n (9.20)
3
.. ..
.=. (9.21)
n n
b a
= w1 tn1
1 + w2 t2n1 + . . . + wn tn1
n (9.22)
n
que pode ser escrito na forma matricial

1 1 ... 1 w1 b a

b2 a2
t1 t2 ... tn w

2
2

= (9.23)
3 3
t21 t22 ... t2n b a
w3

3
.. .. .. .. ..

. . .
.
.



n n
b a
tn1
1 tn1
2 . . . tn1
n wn n

Resolvendo o sistema obtemos os coeficientes wk para a regra de integrao.


Exemplo 9.2.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

2
Por exemplo, se n = 2, ento a regra exata para retas.

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


232 Clculo Numrico

Soluo. A regra ter a forma


Z b
f (t) dt w1 f (t1 ) + w2 f (t2 ) + w3 f (t3 ) (9.24)
a
w 1 f1 + w 2 f2 + w 3 f3 (9.25)
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.26)
0
Z h
t dt = h2 /2 = w1 (0) + w2 (h/2) + w3 (h) (9.27)
0
Z h
t2 dt = h3 /3 = w1 (0)2 + w2 (h/2)2 + w3 (h)2 (9.28)
0

que pode ser escrito na forma matricial



1 1 1 w1 h

0 = (9.29)
2
h/2 h
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.30)
w2



0 1/4 1 1/3

w3
1 4 1
Resolvendo o sistema obtemos [w1 ,w2 ,w3 ] = h[ , , ] fornecendo a regra de
6 6 6
Simpson Z h
h 4h h
f (t) dt f0 + f1 + f2 (9.31)
0 6 6 6

9.3 Regras compostas


Vimos que 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 o intervalo de integrao em diversos subintervalos menores tal que
Z b n Z xi+1
f (x) dx = f (x) dx
X
a i=1 xi

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


9.3. REGRAS COMPOSTAS 233

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.3.1 Cdigo Scilab: Regras compostas em geral


Devemos fazer um loop sobre todos os intervalos e para cada intervalo aplicamos
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

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 reutiliza os termos no
contorno dos intervalos. Nas prximas sees veremos regras compostas especficas
para alguns mtodos.

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


234 Clculo Numrico

9.3.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.3.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 ),
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 a f (x) dx.
Rb

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
for i = 2:n
y = y + h*f(x(i))
end
endfunction

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


9.3. REGRAS COMPOSTAS 235

9.3.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 )
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.3.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 ),
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
(x)
Rb
a f dx.

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
y = y + 2*f(x(2*i+1))
end
for i = 1:n
y = y + 4*f(x(2*i))
end

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


236 Clculo Numrico

y = y + f(x(2*n+1))
y = h*y/3
endfunction

Exemplo 9.3.1. Calcule numericamente a integral

Z 2
2
x2 ex dx
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

E 9.3.1. Use as rotinas construdas em aula e calcule numericamente o valor


das seguintes integrais usando o mtodo composto dos trapzios para os seguintes

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


9.3. REGRAS COMPOSTAS 237

nmeros de pontos:

R 1 21
x (1 x)4 dx
R 1 4x2 R1 1 R1 4
n h 0 e dx 0 1+x2 dx 0 0 e
x +1 dx
17 0.4409931
33 0.4410288
65 0.4410377
129 0.4410400
257 0.4410405
513 0.4410406
1025 0.4410407 0.7853981 1.5873015873016 103 4.6191723776309 101

E 9.3.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

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.3.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
0 0 0

e aproxime seu valor usando o esquema de trapzios e Simpson para n = 5, n = 7


e n = 9.
E 9.3.4. Estamos interessados em avaliar numericamente a seguinte integral:
Z 1
ln(x) sen (x) dx
0

cujo valor com 10 casas decimais corretas .2398117420.

a) Aproxime esta integral via Gauss-Legendre com n = 2,n = 3, n = 4, n = 5,


n = 6 e n = 7.

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


238 Clculo Numrico

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
2 1
!
x2 x 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.4 O mtodo de Romberg


O mtodo de Romberg um mtodo simplificado para construir quadraturas
de alta ordem.
Considere o mtodo de trapzios composto aplicado integral
Z b
f (x) dx
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, i.e.:

Ni
h ba
I(h) = f (a) + 2 f (xj ) + f (b) , Ni =
X
2 j=2 h

Teorema 9.4.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 + . . .

Para um demonstrao, veja [4]. Em especial observamos que


Z b
f (x) dx = lim I(h) = I0
a h0

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


9.4. O MTODO DE ROMBERG 239

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.4.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
Observe que esquema coincide com o mtodo de Simpson.

A partir de agora, usaremos 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


240 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
2 2 i=1 2
Definimos Rk,2 para k 2 como o esquema de ordem quatro obtido da frmula
do exemplo 9.4.1:
4Rk,1 Rk1,1
Rk,2 =
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 + .
4j1 1
Exemplo 9.4.2. Construa o esquema de Romberg para aproximar o valor de
dx com erro de ordem 8.
R 2 x2
0 e
55,59815 0,000000 0,000000 0,000000
30,517357 22,157092 0,000000 0,000000
O que nos fornece os seguintes resultados:
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
0
usando uma aproximao de ordem 8.
Exemplo 9.4.3. Construa o esquema de Romberg para aproximar o valor de
com erro de ordem 12.
R 2 2 x2
0 x e dx
218,3926
111,91458 76,421909
66,791497 51,750469 50,105706
O que nos fornece:
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

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


9.4. O MTODO DE ROMBERG 241

Ou seja, temos: Z 2
2
x2 ex dx 46,371847
0
com uma aproximao de ordem 12.

Exerccios

E 9.4.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.4.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.4.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)

E 9.4.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.4.5. Considere o problema de aproximar numericamente o valor de


Z 100 
1

e 2 cos(x) 1 dx
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.

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


242 Clculo Numrico

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.5 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 )
X
a j=1

Exemplo 9.5.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

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

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


9.5. ORDEM DE PRECISO 243

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)
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 x dx +
n
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 .
Definio 9.5.1. A ordem de preciso ou ordem de exatido de um esquema
de quadratura numrica 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
X

j=1 a

ou, equivalentemente:
n Z b
bk+1 ak+1
wj xkj = xk dx = k = 0,1, . . . n
X
,
j=1 a k+1

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


244 Clculo Numrico

Observao 9.5.1. Se o mtodo tem ordem 0 ou mais, ento


n
wj = b a
X

j=1

Exemplo 9.5.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 )
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.5.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 )
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) : wj x2j = (a2 + 4 + b2 ) ba =
Pn a+b
j=1 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

Exemplo 9.5.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 )
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

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


9.5. ORDEM DE PRECISO 245

Da segunda e quarta equao, temos:

w1 x2 x3
= = 23
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
1 3 3


Exemplo 9.5.5. Comparao

f (x) Exato Trapzio Simpson Gauss-Legendre (2)


e1 + 4e0 + e1 3 3 3
e e1 e1 +e e +e 3
ex 3
2,35040 3,08616 2,36205 2,34270

16 4

p
9 9 2
x2 3 + x3 3,41421 1,13807 1,15411
1,14924

3
ee1
x2 e x 3 0,78347 3,08616 1,02872 0,67905

Exerccios

E 9.5.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)
0
apresente mxima ordem de exatido. Qual a ordem obtida?

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


246 Clculo Numrico

E 9.5.2. Encontre a ordem de exatido do seguinte mtodo de integrao:


! !#
2 2 2
Z 1 "
f (x) dx f + f (0) + f
1 3 2 2

E 9.5.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

E 9.5.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)
0

tenha ordem de exatido mxima. Qual ordem obtida?

E 9.5.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.6 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 )
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 =   .
1 t2j [Pn0 (tj )]2

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


9.6. QUADRATURA DE GAUSS-LEGENDRE 247

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


248 Clculo Numrico

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.6.1. Aproxime


Z 1
I= 1 + x2 dx
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 ),
X
1 i=1

onde f (x) = sqrt1 + 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:
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)]

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


9.6. QUADRATURA DE GAUSS-LEGENDRE 249

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)

Mudana de intervalo
Os coeficientes da quadratura de Gauss-Legendre forma 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
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.6.2. Aproximar


Z 1
I= 1 + x2 dx
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
1Z 1 u+1
 2
= 1+ du.
2 1 2

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


250 Clculo Numrico

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)

9.6.1 Cdigo Scilab: Quadratura gaussiana com N inter-


valos
Exemplo 9.6.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

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


9.7. EXERCCIOS FINAIS 251

Exerccios

E 9.6.1. Encontre aproximaes para a integral


Z 1
5
x4 ex dx
1

usando a quadratura de Gauss-Legendre com 2, 3, 4 e 5 pontos. Ento, compare


com o seu valor exato.
E 9.6.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.7 Exerccios finais

E 9.7.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.

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


252 Clculo Numrico

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 +
2 24
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.7.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.7.3. Calcule as integrais 0 |x|1/4 dx e 0 |x|4/5 dx usando procedimentos
analticos e numricos.

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


9.7. EXERCCIOS FINAIS 253

E 9.7.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.
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.7.5. Resolva a equao


Z x
2
x+ ey dy = 5
0

com 5 dgitos significativos.

E 9.7.6. (Cincia dos materiais) O calor especfico (molar) de um slido pode


ser aproximado pela teoria de Debye usando a seguinte expresso
3 Z TD /T
T y 4 ey

CV = 9N kB dy
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 .
T

Dica: use ey 1 + y quando y 0

E 9.7.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 .

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


254 Clculo Numrico

E 9.7.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 )
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, bom 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

E 9.7.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
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 desenvolver tcnicas numricas para aproximar a soluo


do problema de valor inicial (PVI) dado pela equao diferencial ordinria (EDO)
de primeira ordem

u0 (t) = f (t, u(t)) (10.1a)


u(t1 ) = 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.
du
=t (10.2)
dt
u(0) = a (10.3)

Exemplo 10.0.2.
du
=u (10.4)
dt
u(0) = a (10.5)

Exemplo 10.0.3.
du
= sen (u2 + sen (t)) (10.6)
dt
u(0) = a (10.7)

A soluo do primeiro exemplo u(t) = t2 /2 + a pois satisfaz a equao dife-


rencial e a condio inicial.

255
256 Clculo Numrico

A soluo do segundo exemplo fcil de ser obtida: u(t) = aet . Porm como
podemos resolver o terceiro problema?
Muitos problemas de valor inicial da forma (10.1) no podem ser resolvidos
exatamente, ou seja, sabe-se que a soluo existe e nica, porm no podemos
express-la em termos de funes elementares. Por isso necessrio calcular apro-
ximaes numricas. Diversos mtodos completamente diferentes esto disponveis
para aproximar uma funo real.
Existem vrias maneiras de obter aproximaes para a soluo deste problema.
Nos limitaremos a estudar mtodos que aproximam u(t) em um conjunto finito de
valores de t chamado malha que ser denotado por {ti }N i=1 = {t1 , t2 , t3 , . . . , tN }.
Desta forma, aproximamos a soluo u(ti ) por ui em cada ponto da malha usando
diferentes esquemas numricos.

10.1 Teoria de equaes diferenciais


Uma questo fundamental analisar se um dado PVI um problema bem
posto. Ou seja,
Existe uma soluo para o P V I?
A soluo nica?
A soluo do PVI pouco sensvel a pequenas perturbaes nas condies
iniciais?
Definio 10.1.1. A funo f (t, u) Lipschitz em u se existe uma constante L,
tal que t [a, b] e u,v R,
|f (t, u) f (t, v)| L|u(t) v(t)|.
Teorema 10.1.1. Seja f (t, u) contnua em t e Lipschitz em u. Ento existe uma
nica soluo para o PVI
u0 (t) = f (t, u(t)) (10.8)
u(t1 ) = a. (10.9)
Definio 10.1.2. Estabilidade dinmica refere-se a propriedade de pequenas
perturbaes sobre o estado inicial de um sistema gerarem pequenas variaes no
estado final deste sistema (haver decaimento nas variaes, ou pelo menos no
crescimento, quanto t cresce).
Teorema 10.1.2 (Dependncia na condio inicial). Se u(t) e v(t) so solues
do PVI com f Lipschitz com u(t1 ) = u1 , v(t1 ) = v1 , ento
|u(t) v(t)| eL(tt1 ) |u1 v1 |.

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


10.2. MTODO DE EULER 257

10.2 Mtodo de Euler


Considere o PVI dado por

u0 (t) = f (t,u(t)) (10.10)


u(t1 ) = a (10.11)

Ao invs de solucionar o problema para qualquer t > t1 , (encontrar u(t)), iremos


aproximar u(t) em t2 = t1 + h.
Integrando (10.10) de t1 at t2 ,
Z t2 Z t2
u0 (t) dt = f (t,u(t)) dt (10.12)
t1 t1
Z t2
u(t2 ) u(t1 ) = f (t,u(t)) dt (10.13)
t1
Z t2
u(t2 ) = u(t1 ) + f (t,u(t)) dt (10.14)
t1

Seja un a aproximao de u(tn ). Para obter o mtodo numrico mais simples


aproximamos f em [t1,t2] pela funo constante f (t,u(t)) f (t1 ,u1 ),
Z t2
u2 = u1 + f (t1 ,u1 ) dt (10.15)
t1
u2 = u1 + f (t1 ,u1 )(t2 t1 ) (10.16)
u2 = u1 + hf (t1 ,u1 ) (10.17)

Este procedimento pode ser estendido para t3 ,t4 , . . ., onde

tn+1 = tn + h = t1 + nh, n = 1,2, . . .

e h o passo do mtodo, ou espaamento, que consideraremos constante.


Obtendo, assim, o mtodo de Euler,

un+1 = un + h f (tn ,un ). (10.18)

Podemos tambm obter o mtodo de Euler a partir da aproximao de u0 (t)


por um esquema de primeira ordem do tipo
u(t + h) u(t)
u0 (t) = + O(h), h > 0.
h
Substituindo na EDO temos
u(t + h) u(t)
= f (t,u(t)) + O(h) (10.19)
h
u(t + h) = u(t) + hf (t,u(t)) + O(h2 ). (10.20)

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


258 Clculo Numrico

Sendo un a aproximao de u em tn produzida pelo mtodo de Euler, obtemos


un+1 = un + hf (tn ,un ), (10.21)
u1 = a. (10.22)
Exemplo 10.2.1. Considere o problema de valor inicial
u0 (t) = 2u(t)
u(0) = 1
cuja soluo u(t) = e2t . O mtodo de Euler aplicado a este problema produz o
esquema:
uk+1 = uk + 2huk = (1 + 2h)uk
u1 = 1,
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
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.
Exemplo 10.2.2. Aproxime a soluo do PVI
du
= 0.5u + 2 + t (10.23)
dt
u(0) = 8 (10.24)
Teste para h = 1.6, 0.8, 0.4, 0.2, 0.1.
Note que a soluo exata do problema
u(t) = 2t + 8et/2 (10.25)
Itere a frmula
un+1 = un + h(0.5un + 2 + tn ), u1 = 8 (10.26)
atravs do cdigo abaixo:

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


10.2. MTODO DE EULER 259

%---------------------------
function [u,t]=euler(h,Tmax)
u(1)= 8;
t(1)= 0;
itmax = Tmax/h;
for n=1:itmax
t(n+1)= t(n) + h;
u(n+1)= u(n) + h*(-0.5*u(n)+2+t(n));
end
plot(t,u,'g*-');
%---------------------------

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.3. Considere o problema de valor inicial relacionado equao


logstica:

u0 (t) = u(t)(1 u(t))


u(0) = 1/2

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
u(t)(1 u(t))

O termo u(1u)
1
pode ser decomposto em fraes parciais como 1
u
1
1u e chegamos
na seguinte equao diferencial:
1 1
 
+ du = dt.
u 1u
Integrando termo-a-termo, temos a seguinte equao algbrica relacionando u(t) e
t:
ln(u) ln(1 u) = t + C
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
 
ln =t
1u

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


260 Clculo Numrico

Tabela 10.1: Tabela comparativa entre mtodo de Euler e soluo exata para
problema 10.2.3.
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

Equivalente a
u
= et
1u
e
u = (1 u)et
Colocando o termo u em evidncia, encontramos:
(1 + et )u = et (10.27)
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:


uk+1 = uk + huk (1 uk ),
u1 = 1/2.
Para fins de comparao, calculamos a soluo exata e aproximada para alguns
valores de t e de passo h e resumimos na tabela 10.1.
No exemplo a seguir, apresentamos um problema envolvendo uma equao
no-autnoma, isto , quando a funo f (u) depende explicitamente do tempo.
Exemplo 10.2.4. Resolva o problema de valor inicial
u0 (t) = u(t) + t
u(0) = 1,
cuja soluo exata u(t) = 2et + t 1.
O esquema recursivo de Euler fica:
uk+1 = uk + h(uk + tk )
u1 = 1
Comparao

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


10.2. MTODO DE EULER 261

t Exato Euler h = 0,1 Euler h = 0,01


0 1 1 1
1 2e 1
0,7357589 0,6973569 0,7320647
2 2e2 + 1 1,2706706 1,2431533 1,2679593
3 2e3
+ 2 2,0995741 2,0847823 2,0980818

Exerccios

E 10.2.1. Resolva o problema de valor inicial dado por



u0 = 2u + u
u(0) = 1
com passo h = 0,1 e h = 0,01 para obter aproximaes para u(1). Compare com
a soluo exata dada por u(t) = (1 + 2et + e2t ) /4

E 10.2.2. Resolva o problema de valor inicial dado por



u0 = 2u + z
z 0 = z + u
u(0) = 0
z(0) = 2

com passo h = 0,2, h = 0,02, h = 0,002 e h = 0,0002 para obter aproximaes


para u(2) e z(2).

E 10.2.3. Resolva o problema de valor inicial dado por


u0 = cos(tu(t))
u(0) = 1

com passo h = 0,1, h = 0.01, h = 0,001, h = 0,0001 e 0,00001 para obter


aproximaes para u(2).

10.2.1 Ordem de preciso


A preciso de um mtodo numrico que aproxima a soluo de um PVI dada
pela ordem do erro acumulado ao calcular a aproximao em um ponto tn+1 em
funo do espaamento da malha h.

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


262 Clculo Numrico

Se u(tn+1 ) for aproximado por un+1 com erro da ordem O(hp+1 ) dizemos que o
mtodo tem ordem de preciso p.
Queremos obter a ordem de preciso do mtodo de Euler. Para isso, substitu-
mos a EDO u0 = f (t,u) na expanso em srie de Taylor
u(tn+1 ) = u(tn ) + hu0 (tn ) + h2 u00 (tn )/2 + O(h3 ) (10.28)
e obtemos
u(tn+1 ) = u(tn ) + hf (tn ,u(tn )) + h2 u00 (tn )/2 + O(h3 ) (10.29)
Subtraindo (10.29) do mtodo de Euler
un+1 = un + h f (tn ,un ) (10.30)
obtemos
en+1 = un+1 u(tn+1 ) (10.31)
= un u(tn ) + h(f (tn ,u(tn ) + en ) f (tn ,u(tn ))) + (10.32)
h2 00
+ u + O(h3 ) (10.33)
2 n
Defina o erro numrico como en = un u(tn ) onde u(tn ) a soluo exata e un
a soluo aproximada. Assim
h2 00
en+1 = en + h(f (tn ,u(tn ) + en ) f (tn ,u(tn ))) + u
2 n
+ O(h3 ) (10.34)
Usando a condio de Lipschitz em f temos
h2 00
|en+1 | |en | + h|f (tn ,u(tn ) + en ) f (tn ,u(tn ))| + |u | + O(h3 )(10.35)
2 n
h2 00
|en | + hL|u(tn ) + en u(tn )| + |u | + O(h3 ) (10.36)
2 n
h2 00
|en | + hL|en | + |u | + O(h3 ) (10.37)
2 n
h2
(1 + hL)|en | + |u00n | + O(h3 ) (10.38)
2

10.2.2 Erro de truncamento Local


O Erro de Truncamento Local o erro cometido em uma iterao do
mtodo numrico supondo que a soluo exata conhecida no passo anterior.
Assim, supondo que a soluo exata em tn (|en | = 0), obtemos que o ETL

Euler = h /2|u | + O(h ) = O(h )


00
ET Ln+1 2 3 2

Como o ET L = O(h2 ) temos que o mtodo de Euler possui ordem 1.

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


10.3. CONVERGNCIA, CONSISTNCIA E ESTABILIDADE 263

10.2.3 Erro de truncamento Global


O Erro de Truncamento Global o erro cometido durante vrias iteraes
do mtodo numrico.
Supondo que a soluo exata conhecida em t1 (ke1 k = 0), ento realizando
n = Th iteraes obtemos

ET G = nET L (10.39)
= n[h2 /2|u00 | + O(h3 )] (10.40)
= T h/2|u00 | + O(h2 ) (10.41)

ou seja
Euler = O(h)
ET Gn+1

10.3 Convergncia, consistncia e estabilidade


Nesta seo veremos trs conceitos fundamentais em anlise numrica: conver-
gncia, consistncia e estabilidade.

10.3.1 Convergncia
Um mtodo dito convergente se para toda EDO com f Lipschitz e todo
t > 0 temos que
lim |un u(tn )| = 0, n
h0
Convergncia significa que a soluo numrica tende a soluo do PVI.
Teorema 10.3.1. O mtodo de Euler convergente.
De fato, se f Lipschitz e |e0 | = 0, temos que

lim |en+1 | = limh0 O(h) = 0 (10.42)


h0

10.3.2 Consistncia
Definio 10.3.1. Dizemos que um mtodo numrico Rh (un ) = f consistente
com o PVI u0 (t) = f se para qualquer u(t)

lim |u0 (tn ) Rh (un )| = 0, n (10.43)


h0

Isto equivalente a
ET L
lim =0 (10.44)
h0 h
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
264 Clculo Numrico

10.3.3 Estabilidade
Definio 10.3.2. Um mtodo numrico estvel se

|un vn | C1 |u1 v1 |, n

Isto significa que dadas duas condies iniciais u1 e v1 , teremos que as solues
un e vn estaro a uma distncia limitada por uma constante C1 vezes |u1 v1 |. Se
u1 e v1 estiverem prximas ento un e vn esto tambm prximas dependendo da
constante C1 (obviamente C1 depende da funo f ).
Considere o PVI linear bem-posto

u0 (t) = u(t), u(0) = 1, (10.45)

onde C. Note que:

Possui soluo exata u(t) = et .

O PVI assintoticamente estvel, isto , limt u(t) = 0, se e somente


se < < 0.

Definio 10.3.3. O domnio de estabilidade linear D do mtodo numrico


o conjunto de todos h C tal que limn un = 0.

Ou seja, D o conjunto de todos h para o qual o correto comportamento


assinttico de (10.45) seja recuperado.

Exemplo 10.3.1. Utilizando o Mtodo de Euler para solucionar (10.45) obte-


mos (u1 = 1)

un+1 = un + hun , (10.46)


un+1 = (1 + h)un , (10.47)
un+1 = (1 + h)2 un1 , (10.48)
un+1 = (1 + h)n+1 u1 (10.49)
un+1 = (1 + h)n+1 , n = 0,1, . . . (10.50)

Para que o mtodo de Euler seja estvel, necessrio que h seja escolhido tal que
|1 + h| < 1. Ou seja, h deve estar em DEuler onde

DEuler = {z C : |1 + z| < 1} (10.51)

o interior de um disco no plano complexo de raio 1 e centro em z = 1 como na


Fig.??.

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


10.4. O MTODO DE EULER IMPLCITO 265

Tal anlise pode ser facilmente estendida para u0 = u + b (veja exerccios).


Para o caso EDO no-linear, seja
u0 = f (t,u), t t0 , u(t0 ) = u0 (10.52)
comum requerer que hn,k D onde n,k so os autovalores da matriz jacobi-
ana Jn := f |
u (tn ,un )
, baseado na hiptese que o comportamento local da EDO
modelado por
u0 = un + Jn (u un ) (10.53)
Esta prtica no exata e fornece apenas uma ideia local do comportamento da
EDO (podendo levar a concluses errneas).
Um dos teoremas mais importantes em anlise numrica o seguinte:
Teorema 10.3.2. Um mtodo numrico consistente para um PVI bem-posto
convergente se e somente se ele estvel.
Ele tambm usado da seguinte forma:
Teorema 10.3.3. Se um mtodo numrico consistente e estvel em [a,b]
ento ele convergente.

10.4 O mtodo de Euler implcito


Integrando o PVI
u0 (t) = f (t,u(t)) (10.54)
u(t1 ) = a (10.55)
de t1 at t2 obtemos (como feito anteriormente)
Z t2
u(t2 ) = u(t1 ) + f (t,u(t)) dt (10.56)
t1

Entretanto se aproximarmos a funo f por uma funo constante f (t,u(t))


f (t2 ,u2 ), obteremos um novo mtodo
Z t2
u2 = u1 + f (t2 ,u2 ) dt (10.57)
t1
u2 = u1 + hf (t2 ,u2 ) (10.58)
Generalizando este procedimento para tn obtemos o mtodo de Euler im-
plcito
un+1 = un + h f (tn+1 ,un+1 ). (10.59)

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


266 Clculo Numrico

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).
Pode ser mostrado que o erro de truncamento local

EulImp = O(h ).
ET Ln+1 2

portanto o mtodo de ordem 1. E o erro de truncamento global

EulImp = O(h).
ET Gn+1

Exemplo 10.4.1. Utilizando o mtodo de Euler implcito para solucionar


(10.45) obtemos

un+1 = un + hun+1 , (10.60)


(1 h)un+1 = un , (10.61)
1
 
un+1 = un , (10.62)
1 h
1
 2
un+1 = un1 , (10.63)
1 h
1
 n+1
un+1 = , n = 0,1, . . . (10.64)
1 h
onde u1 = 1. Conclumos ento que
1

DEulImp = {z C : < 1} (10.65)

1 z
ou ainda,

DEulImp = {z C : |1 z| > 1} (10.66)

Para que o mtodo


de Euler implcito seja estvel, necessrio que h seja
escolhido tal que 1h < 1, ou ainda, |1 h| > 1. Ou seja, h deve estar em
1

DEulImp onde

DEulImp = {z C : |1 z| > 1} (10.67)

o exterior de um disco no plano complexo de raio 1 e centro em z = 1.


Note que DEulImp inclui todo o semiplano negativo. Portanto o mtodo de
Euler implcito imita a estabilidade assinttica da EDO linear sem restrio no
passo h.

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


10.5. MTODO TRAPEZOIDAL 267

Definio 10.4.1. Um mtodo numrico chamado A-estvel ou incondicio-


nalmente estvel se incluir todo o semiplano complexo com parte real negativa,

{z C : <z < 0} D

Portanto o mtodo de Euler implcito A-estvel (incondicionalmente estvel).

10.5 Mtodo Trapezoidal


O mtodo de Euler aproxima f como uma constante no intervalo [t1 ,t2 ]. Pode-
mos melhorar isso usando a regra do trapzio,

Z t2
u(t2 ) = u(t1 ) + f (t,u(t)) dt (10.68)
t1
1 1
 
u2 = u1 + (t2 t1 ) f (t1 ,u1 ) + f (t2 ,u2 ) (10.69)
2 2
motivando o mtodo trapezoidal
h
un+1 = un + (f (tn ,un ) + f (tn+1 ,un+1 )) (10.70)
2
O mtodo trapezoidal dito implcito, pois para obter un+1 necessrio calcular
f (tn+1 ,un+1 ).
Entretanto, pode ser mostrado que o erro de truncamento local

T rap = O(h )
ET Ln+1 3

portanto o mtodo de ordem 2. E o erro de truncamento global

T rap = O(h )
ET Gn+1 2

Exemplo 10.5.1. Utilizando o mtodo trapezoidal para solucionar (10.45) ob-


temos
!n+1
1 + h/2
un+1 = , n = 0,1, . . . (10.71)
1 h/2
Conclumos ento que
1 + z/2

DT r = {z C : < 1} (10.72)

1 z/2

Note que DT r = C , o semiplano negativo. Portanto o mtodo do trapzio imita


a estabilidade assinttica da EDO linear sem restrio no passo h.

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


268 Clculo Numrico

10.6 O mtodo de Heun


Tambm chamado de mtodo de Euler Modificado. A ideia calcular pri-
meiramente um valor intermedirio u usando o mtodo de Euler explcito e usar
esse valor na equao para o mtodo do Trapzio. Ou seja, o mtodo de Heun

u = un + hf (tn ,un ) (10.73)


h
un+1 = un + (f (tn ,un ) + f (tn+1 ,u)) (10.74)
2

Este um exemplo de um mtodo preditor-corretor.


Felizmente o erro de truncamento local continua sendo

Heun = O(h )
ET Ln+1 3

e o erro de truncamento global

Heun = O(h )
ET Gn+1 2

Exerccios

E 10.6.1. Use o mtodo de Euler melhorado para obter uma aproximao


numrica do valor de u(1) quando u(t) satisfaz o seguinte problema de valor inicial

u0 (t) = u(t) + eu(t) ,


u(0) = 0,

usando passos h = 0,1 e h = 0,01.

E 10.6.2. Use o mtodo de Euler e o mtodo de Euler melhorado para obter


aproximaes numricas para a soluo do seguinte problema de valor inicial para
t [0,1]:

u0 (t) = u(t) u(t)2 ,


u(0) = 1,

usando passo h = 0,1. Compare os valores da soluo exata dada por u(t) = 2et11
com os numricos nos pontos t = 0, t = 0.1, t = 0.2, t = 0.3, t = 0.4, t = 0.5,
t = 0.6, t = 0.7, t = 0.8, t = 0.9, t = 1.0.

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


10.7. O MTODO THETA 269

10.7 O mtodo theta


Tanto o mtodo de Euler quanto o mtodo trapezoidal se encaixam no mtodo

un+1 = un + h(f (tn ,un ) + (1 )f (tn+1 ,un+1 )) (10.75)

com = 1 e = 12 respectivamente. O mtodo explcito somente para = 1.


Para = 0, obtemos o mtodo implcito de Euler.

10.8 O mtodo de Taylor


Uma maneira simples de aumentar a ordem do mtodo utilizar diretamente
a srie de Taylor. Considere a expanso

h2 00 h3
u(t + h) = u(t) + hu0 (t) + u (t) + u000 (t) + . . . (10.76)
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) = f
t
(t,x) temos o mtodo
de Taylor de ordem 2

h2 f
un+1 = un + hf (tn ,un ) + (tn ,un ) (10.77)
2! t
O mtodo de Taylor de ordem 3

h2 f h3 2 f
un+1 = un + hf (tn ,un ) + (tn ,un ) + (tn ,un )
2! t 3! t2

10.9 Estabilidade dos mtodos de Taylor


Exemplo 10.9.1. Prove que para um mtodo de Taylor de ordem p para a EDO
(10.45) temos

z2 z3 zp
p(z) = 1 + z + + + ... + (10.78)
2! 3! p!

onde un = (p(z))n u0 e a regio de estabilidade dada por

DT = {z C : |p(z)| < 1} (10.79)

Plote as regies de estabilidade para o mtodo de Taylor para p = 1, . . . ,6 no


mesmo grfico.

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


270 Clculo Numrico

Exemplo 10.9.2. Aproxime a soluo do PVI


du
= sen t (10.80)
dt
u(0) =1 (10.81)

para t [0,10].

a. Plote a soluo para h = 0.16,0.08, 0.04, 0.02, 0.01 para o mtodo de Taylor
de ordem 1, 2 e 3. (Plote todos de ordem 1 no mesmo grfico, ordem 2 em
outro grfico e ordem 3 outro grfico separado.)

b. Utilizando a soluo exata, plote um grfico do erro em escala logartmica.


Comente os resultados (novamente, em cada grfico separado para cada m-
todo repita os valores acima)

c. Fixe agora o valor h = 0.02 e plote no mesmo grfico uma curva para cada
mtodo.

d. Plote em um grfico o erro em t = 10 para cada um dos mtodos (uma curva


para cada ordem) a medida que h diminui. (Use escala loglog)

10.10 Mtodos de Passo Mltiplo


Seja o PVI

u0 (t) = f (t,u(t)) (10.82)


u(t0 ) =a (10.83)

Integrando a EDO em [tn+1 ,tn ] obtemos


R tn+1
un+1 = un + tn f (t,u(t)) dt (10.84)

Denote por fn f (tn ,un ). Um mtodo de passo simples utiliza fn+1 e fn . Um


mtodo de passo mltiplo utiliza tambm s valores anteriores j calculados como
fn1 ,fn2 , . . . ,fns , onde s 1 inteiro.

un+1 = un + h[bs fn+1 + bs1 fn + . . . + b1 fns+2 + b0 fns+1 ] (10.85)

Para conformidade com [9], translade s 1 ndices,

un+s = un+s1 + h[bs fn+s + bs1 fn+s1 + . . . + b1 fn+1 + b0 fn ] (10.86)

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


10.11. O MTODO DE ADAMS-BASHFORTH 271

e teremos

un+s = un+s1 + h (10.87)


Ps
m=0 bm fn+m

De forma geral um mtodo de passo mltiplo ser


s
am un+m = h (10.88)
X Ps
m=0 bm fn+m
m=0

10.11 O mtodo de Adams-Bashforth


Quando as = 1, as1 = 1, am = 0 para m = s 2, . . . ,0, bs = 0 temos um
mtodo de Adams-Bashforth do tipo

un+s = un+s1 + h (10.89)


Ps1
m=0 bm fn+m

Note que os mtodos de Adams-Bashforth so explcitos pois bs = 0.

Exemplo 10.11.1. Vamos obter o mtodo de Adams-Bashforth para s = 4 como


Rt
un+4 = un+3 + tn+3
n+4
f (t,u(t)) dt (10.90)
= un+3 + h m=0 bm fn+m (10.91)
P3
un+4
un+4 = un+3 + h[b3 fn+3 + b2 fn+2 + b1 fn+1 + b0 fn ] (10.92)

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 [tn+3 ,tn+4 ], translade tn+3 para a origem
tal que [tn ,tn+1 , . . . ,tn+4 ] = [3h, 2h, h,0,h].
Considere a base [0 (t), . . . ,3 (t)] = [1,t,t2 ,t3 ] e substitua f (t) por k (t) 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
t2 dt = = h(b0 (0)2 + b1 (h)2 + b2 (2h)2 + b3 (3h)2 )
0 3
Z h
h4
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


272 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.93)
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 ] = [ , , , ]
24 24 24 24
fornecendo o mtodo de Adams-Bashforth de 4 estgios

un+4 = un+3 + h
24
[55fn+3 59fn+2 + 37fn+1 9fn ] (10.94)

E 10.11.1. Mostre que o mtodo de Adams-Bashforth para s = 2 dado por

un+2 = un+1 + h2 [3fn+1 fn ] (10.95)

E 10.11.2. Mostre que o mtodo de Adams-Bashforth para s = 3 dado por

un+3 = un+2 + h
12
[23fn+2 16fn+1 + 5fn ] (10.96)

10.12 O mtodo de Adams-Moulton


Quando as = 1, as1 = 1, am = 0 para m = s 2, . . . ,0, bs 6= 0 temos um
mtodo de Adams-Moulton do tipo

un+s = un+s1 + h (10.97)


Ps
m=0 bm fn+m

Note que os mtodos de Adams-Moulton so implcitos pois bs 6= 0.


Exemplo 10.12.1. Vamos obter o mtodo de Adams-Moulton para s = 3 como
Rt
un+3 = un+2 + tn+3
n+4
f (t,u(t)) dt (10.98)
= un+2 + h m=0 bm fn+m (10.99)
P3
un+3
un+3 = un+2 + h[b3 fn+3 + b2 fn+2 + b1 fn+1 + b0 fn ] (10.100)

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.

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


10.13. MTODO BDF 273

Supondo que os ns tk estejam igualmente espaados, e para facilidade dos


clculos, como o intervalo de integrao [tn+2 ,tn+3 ], translade tn+2 para a origem
tal que [tn ,tn+1 , . . . ,tn+3 ] = [2h, h,0,h].
Considere a base [0 (t), . . . ,3 (t)] = [1,t,t2 ,t3 ] e substitua f (t) por k (t) 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
t3 dt = = 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.101)
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 ] = [ , , , ,]
24 24 24 24
fornecendo a regra

un+3 = un+2 + h
24
[9fn+3 + 19fn+2 5fn+1 + fn ] (10.102)

E 10.12.1. Encontre o mtodo de Adams-Moulton para s = 2.

E 10.12.2. Encontre o mtodo de Adams-Moulton para s = 3.

10.13 Mtodo BDF


Um mtodo de ordem s com s estgios chamado de mtodo BDF-Backward
Differentiation Formula se (w) = bs ws , onde bs R, ou seja,

as un+s + ... + a1 un+1 + a0 un = hbs fn+s (10.103)

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


274 Clculo Numrico

Exemplo 10.13.1. Mostre que o mtodo BDF com s = 3


18 9 2
un+3 un+2 + un+1 un = 6
hfn+3 (10.104)
11 11 11 11

E 10.13.1. Mostre que o mtodo BDF com s = 1 o mtodo de Euler


implcito.

E 10.13.2. Mostre que o mtodo BDF com s = 2


4 1
un+2 un+1 + un = 23 hfn+2 (10.105)
3 3

10.14 Ordem e convergncia de mtodos de passo


mltiplo
Mais geralmente, um mtodo de passo mltiplo ser da forma

as un+s + ... + a1 un+1 + a0 un = h[bs fn+s + ... + b1 fn+1 + b0 fn ] (10.106)

Por conveno normalizamos a equao acima tomando as = 1. Quando bs = 0


temos um mtodo explcito e quando bs 6= 0 temos um mtodo implcito.
O mtodo ser de ordem p se o ET L = O(hp+1 ).
Dois polinmios so usados para estudar o mtodo (10.106):

(w) = as ws + ... + a1 w + a0 , (w) = bs ws + ... + b1 w + b0 , (10.107)

Exemplo 10.14.1. O mtodo (10.96) de Adams-Bashforth para s = 3 estgios


de ordem 3 de convergncia, ou seja, ET L = O(h4 ). Ele construdo de tal
maneira que seja exato para os polinmios 1,t,t2 ,t3 .

10.14.1 Consistncia, Estabilidade e Convergncia


Teorema 10.14.1. Um mtodo de passo mltiplo consistente se (1) = 0 e
0 (1) = (1).

Teorema 10.14.2. Um mtodo de passo mltiplo estvel se todas as razes de


(z) esto em |z| 1 e as razes com |z| = 1 so simples.

Teorema 10.14.3. Se um mtodo numrico consistente e estvel em [a,b]


ento ele convergente.

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


10.15. ESTABILIDADE DOS MTODOS DE PASSO MLTIPLO 275

Exemplo 10.14.2. Prove que o mtodo de passo 3


27 27
un+3 + un+2 un+1 un = (10.108)
11 11
h
= [3fn+3 + 27fn+2 + 27fn+1 + 3fn ] (10.109)
11
no estvel.
Soluo. O polinmio
27 2 27
(w) = w3 + w w1 (10.110)
11 11 ! !
19 + 4 15 19 4 15
= (w 1) w + w+ (10.111)
11 11
falha na condio da raiz.

E 10.14.1. Prove que todos os mtodos de Adams-Bashforth satisfazem a


condio da raiz.
Teorema 10.14.4. O polinmio (w) em (10.103) satisfaz a condio da raiz e o
mtodo BDF convergente se e somente se 1 s 6.

E 10.14.2. Mostre que os mtodos BDF com s = 2 e s = 3 so convergentes.

10.14.2 As barreiras de Dahlquist


Um mtodo de passo mltiplo possui 2s + 1 coeficientes am ,bm . Poderamos
definir tais coeficientes de tal forma a obter ordem mxima.
Concluso? Poderamos obter mtodos com s estgios e ordem 2s.
Entretanto tal mtodo (implcito de passo s e ordem 2s) no convergente
para s 3 .
possvel provar que a ordem mxima de convergncia para um mtodo de
passo mltiplo s no mximo 2b(s + 2)/2c para mtodos implcitos e s para
mtodos explcitos. Esta a primeira barreira de Dahlquist.

10.15 Estabilidade dos mtodos de passo mlti-


plo
Teorema 10.15.1. O mtodo BDF de 2 estgios A-estvel.
Teorema 10.15.2 (A segunda barreira de Dahlquist). A ordem mxima de um
mtodo de passo mltiplo A-estvel dois.

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


276 Clculo Numrico

10.16 Mtodos de Runge-Kutta


10.16.1 Mtodo de Runge-Kutta Explcito
Seja a EDO

u0 (t) = f (t,u(t)) (10.112)


u(t0 ) = a (10.113)

Integrando a EDO em [tn ,tn+1 ] obtemos


Z tn+1
un+1 = un + f (t,u(t)) dt (10.114)
tn

Um mtodo de passo simples utiliza fn e fn+1 . Queremos aumentar a ordem do


mtodo, porm utilizando somente valores de f entre [tn ,tn+1 ].

un un+1
| |
tn tn+1
1 2

Z tn+1
un+1 = un + f (t,u(t)) dt (10.115)
tn
Z 1
= un + h f (tn + h,u(tn + h )) d (10.116)
0

= un + h bj f (tn + cj h,u(tn + cj h)) (10.117)
X

j=1

Por exemplo, se = 3 estgios teremos [0 ,1 ,2 ] = [tn + c0 h,tn + c1 h,tn + c2 h],


Uj u(j ) e Fj f (j ,Uj ), j = 1,2,3. Inicie com U1 = un (c1 = 0) como a soluo
no passo anterior e aproxime U2 ,U3 , com uma combinao linear dos valores de Fj
anteriores, ou seja,

U1 = un (10.118)
U2 = un + ha21 F1 (10.119)
U3 = un + ha31 F1 + ha32 F2 (10.120)
un+1 = un + h[b1 F1 + b2 F2 + b3 F3 ] (10.121)

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


10.16. MTODOS DE RUNGE-KUTTA 277

onde A = (aij ) a matriz de RK (triangular inferior com diagonal zero), bj so os


pesos RK e cj so os ns RK.
Os coeficientes podem ser resumidos em uma tabela na forma
c1 0 0 0
c A c2 a21 0 0
=
bT c3 a31 a22 0
b1 b2 b3

10.16.2 Mtodo de RK = 2
Assumindo suavidade suficiente em f , expanda em srie de Taylor
F2 = f (tn + c2 h,U2 ) (10.122)
= f (tn + c2 h,un + a21 hfn ) (10.123)
fn fn
= fn + h[c2 + a21 fn ] + O(h2 ) (10.124)
t u
fazendo com que (10.121) se torne
un+1 = un + h[b1 F1 + b2 F2 ] (10.125)
fn fn
= un + h(b1 + b2 )fn + h2 b2 [c2 + a21 fn ] + O(h3 ) (10.126)
t u
Usando a EDO e derivando-a obtemos
ut = f (t,u) (10.127)
utt = ft + fu ut = ft + fu f (10.128)
e expandindo em srie de Taylor a soluo exata em tn+1 ,
h2
u(tn+1 ) = un + hut + utt + O(h3 ) (10.129)
2
h2
= un + hfn + [ft + fu f ] + O(h3 ) (10.130)
2
e comparando com (10.126) obtemos as condies para ordem p 2,
1
b1 + b2 = 1, b2 c2 = a21 = c2 (10.131)
2
O sistema possui mais de uma soluo. Algumas escolhas comuns so
0 0 0
1
2
1
2
, 3 3
2 2
e 1 1
0 1 1
4
3
4
1
2
1
2

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


278 Clculo Numrico

onde a ltima tabela fornece o mtodo de Heun (ou Euler modificado):

U1 = un (10.132)
U2 = un + hF1 (10.133)
1 1
un+1 = un + h[ F1 + F2 ] (10.134)
2 2
Note que o mtodo de ordem p = 2 pois os termos que sobraram so de O(h3 ).
Seguindo um procedimento similar, podemos obter as condies para um m-
todo com = 3 e ordem p = 3, que so

b1 + b2 + b3 = 1, b2 c2 + b3 c3 = 1
2
(10.135)
1
b2 c22 + b3 c23 = , b3 a32 c2 = 16 (10.136)
3
Alguns exemplos de mtodos de RK de 3 estgios so o mtodo clssico de
Runge-Kutta
0
1 1
2 2
1 1 2
1 4 1
6 6 6
e o mtodo de Nystrom
0
2 2
3 3
2
3
0 2
3
2 3 3
8 8 8
Com pacincia e a ajuda de um software algbrico (como Maple) possvel
encontrar um mtodo de quarta ordem e = 4 estgios como
0
1 1
2 2
1
2
0 1
2
1 0 0 1
1 2 2 1
6 6 6 6

10.16.3 Mtodo de Runge-Kutta implcito (IRK)


No conjunto de equaes (10.118)-(10.121), Uk depende em valores conhecidos
F1 , . . . ,Fk1 tornando o mtodo explcito.

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


10.17. ESTIMATIVA DA ORDEM DE CONVERGNCIA 279

Entretanto se Uk depender de F1 , . . . ,F temos um mtodo implcito como



Uj = un + h j = 1, . . . , (10.137)
X
aji Fi ,
i=1

un+1 = un + h (10.138)
X
bi Fi
i=1

onde A = (aij ) a matriz de RK. necessrio que



aji = cj , j = 1, . . . , (10.139)
X

i=1

para que o mtodo possua ordem p 1.

Exemplo 10.16.1. Um mtodo de Runge-Kutta Implcito (IRK) de dois estgios


dado por
2
U1 = un + h/4[f (tn ,U1 ) f (tn + h,U2 )] (10.140)
3
2
U2 = un + h/12[3f (tn ,U1 ) + 5f (tn + h,U2 )] (10.141)
3
2
un+1 = un + h/4[f (tn ,U1 ) + 3f (tn + h,U2 )] (10.142)
3
que possui uma tabela como
0 14 14
2 1 5
3 4 12
1 3
4 4

10.17 Estimativa da ordem de convergncia


Raramente temos a soluo exata u(t) para calcular o erro obtido na soluo
numrica. Entretanto, se a soluo suave o suficiente e o espaamento h pequeno
suficientemente, podemos usar o seguinte procedimento para estimar a ordem do
mtodo (ou ainda, o erro na soluo).
Como visto nos exemplo numricos anteriores, em grficos na escala loglog,
se h grande no obtemos a ordem de convergncia utilizada (por exemplo, en-
contramos que o mtodo de Euler possui ordem p 0.7 onde deveria ser 1). A
medida que h decresce se aproximando de 0, a ordem de convergncia tende a se
aproximar de p 1. (Entretanto h no pode ficar muito pequeno a ponto que as
operaes de ponto flutuante atrapalhem na convergncia).

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


280 Clculo Numrico

Portanto existe uma faixa hmin < h < hmax onde o mtodo apresenta a ordem
desejada. Essa regio depende do mtodo e do PVI estudado.
Mas se estivermos nessa regio podemos aproximar a ordem do mtodo da se-
guinte forma: Considere a soluo para um determinado t = T fixo, u(T ). Consi-
dere tambm as aproximaes das solues obtidas com espaamento h, denotada
por uh ; a aproximao obtida com espaamento dividido por 2, h/2, denotada por
uh/2 ; a aproximao obtida com espaamento h/4, denotada por uh/4 ,. . . e assim
por diante, todas calculadas em t = T .

10.17.1 Mtodo 1
Podemos utilizar uma soluo bem refinada, por exemplo, uh/16 como sendo
uma boa aproximao da soluo exata e supormos que u = uh/16 . Desta forma
podemos aproximar o erro por eh = ku(h) u k e a ordem do mtodo estimada
como

log(eh )log(eh/2 )
p log(h)log(h/2)
(10.143)
 
eh
log
eh/2
log(h/(h/2))
(10.144)
 
eh
log
eh/2
log(2)
(10.145)
kuh u k
 
log
kuh/2 u k
log(2)
(10.146)
(10.147)

10.17.2 Mtodo 2
Segundo Ferziger/Peric/Roache, podemos tambm estimar p diretamente de
 
kuh/2 uh k
log
kuh/4 uh/2 k
p log(2)
(10.148)
(10.149)

Exerccios

E 10.17.1. Resolva o problema 1 pelos diversos mtodos e verifique heuristi-


camente a estabilidade para diversos valores de h.

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


10.18. SISTEMAS DE EQUAES DIFERENCIAIS E EQUAES DE
ORDEM SUPERIOR 281
10.18 Sistemas de equaes diferenciais e equa-
es de ordem superior
O problema (10.1) pode ser um sistema de equaes de primeira ordem, isto ,
a incgnita y(t) pode ser um vetor de funes, como mostra o exemplo 10.150
Exemplo 10.18.1. O problema de valor inicial
u0 (t) = v(t), (10.150a)
v 0 (t) = u(t), (10.150b)
u(0) = 1. (10.150c)
v(0) = 0. (10.150d)
pode ser escrito na forma (10.1) com y(t)
No exemplo 10.18.2, mostramos como o mtodo de Euler pode ser facilmente
estendido para problemas envolvendo sistemas de equaes diferenciais..
Exemplo 10.18.2. Escreva o processo iterativo de Euler para resolver numerica-
mente o seguinte sistema de equaes diferenciais
x0 = y
y0 = x
x(0) = 1
y(0) = 0,

cuja soluo exata x(t) = cos(t) e y(t) = sen (t).


Para aplicar o mtodo de Euler a um sistema, devemos encarar as diversas
incgnitas do sistema como formando um vetor, neste caso, escrevemos:

x(t)
z(t) = .
y(t)
O sistema igualmente escrito na forma vetorial:

x(k+1) x(k) y (k)
= + h .
y (k+1) y (k) x(k)
Observe que este processo iterativo equivalente a:
x(k+1) = x(k) hy (k)
y (k+1) = y (k) + hx(k) .

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


282 Clculo Numrico

Exemplo 10.18.3. Escreva o problema de valor inicial de segunda ordem dado


por

y 00 + y 0 + y = cos(t),
y(0) = 1,
y 0 (0) = 0,

como um problema envolvendo um sistema de primeira ordem.

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

Portanto, o mtodo de Euler produz o seguinte processo iterativo:

y (k+1) = y (k) + hw(k) ,


w(k+1) = w(k) hw(k) hy (k) + h cos(t(k) ),
y (1) = 1,
w(1) = 0.

Exerccios

E 10.18.1. Resolva o problema de valor inicial dado por



y0 = 2y + z
z0 = z + y
y(0) = 0
z(0) = 2

com passo h = 0,2, h = 0,02, h = 0,002 e h = 0,0002 para obter aproximaes


para y(2) e z(2).

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


10.19. EXERCCIOS FINAIS 283

10.19 Exerccios finais

E 10.19.1. Considere o seguinte modelo para o crescimento de uma colnia


de bactrias:
du
= u(A u)
dt
onde u indica a densidade de bactrias em unidades arbitrrias na colnia e e A
so constantes positivas. Pergunta-se:
a) Qual a soluo quando a condio inicial u(0) igual a 0 ou A?

b) O que acontece quando a condio inicial u(0) um nmero entre 0 e A?

c) O que acontece quando a condio inicial u(0) um nmero negativo?

d) O que acontece quando a condio inicial u(0) um nmero positivo maior


que A?

e) Se A = 10 e = 1 e u(0) = 1, use mtodos numricos para obter tempo


necessrio para que a populao dobre?

f) Se A = 10 e = 1 e u(0) = 4, use mtodos numricos para obter tempo


necessrio para que a populao dobre?

E 10.19.2. Considere o seguinte modelo para a evoluo da velocidade de um


objeto em queda (unidades no SI):

v 0 = g v 2

Sabendo que g = 9,8 e = 102 e v(0) = 0. Pede-se a velocidade ao tocar o solo,


sabendo que a altura inicial era 100.

E 10.19.3. 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
onde A, e w0 so constantes positivas.
Encontre a frequncia e a amplitude de oscilaes quando w0 = 1, = .1 e
A = 10. (Teste diversas condies iniciais)

Estude a dependncia da frequncia e da amplitude com os parmetros A,


e w0 . (Teste diversas condies iniciais)

Que diferenas existem entre esse oscilador no-linear e o oscilador linear?

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


284 Clculo Numrico

E 10.19.4. 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.


Encontre a frequncia e a amplitude de oscilaes quando w0 = 1, = .1,
A = 10 e C = 10. (Teste diversas condies iniciais)

Estude a dependncia da frequncia e da amplitude com os parmetros A,


, w0 e C. (Teste diversas condies iniciais)

E 10.19.5. 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.
Calcule a soluo quando a temperatura externa Text = 0, Tset = 1000,
C = 10, = .1 e = .1. Considere condies iniciais nulas.

Quanto tempo demora o sistema para atingir a temperatura 900K?

Refaa os dois primeiros itens com = 0.2 e = 1

Faa testes para verificar a influncia de Text , e na temperatura final.

E 10.19.6. Considere a equao do pndulo dada por:


d2 (t) g
+ sen ((t)) = 0
dt2 l
onde g o mdulo da acelerao da gravidade e l o comprimento da haste.
Mostre analiticamente que a energia total do sistema dada por
!2
1 d(t) g
cos((t))
2 dt l
mantida constante.

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


10.19. EXERCCIOS FINAIS 285

Resolva numericamente esta equao para g = 9,8m/s2 e l = 1m e as se-


guintes condies iniciais:
(0) = 0.5 e 0 (0) = 0.
(0) = 1.0 e 0 (0) = 0.
(0) = 1.5 e 0 (0) = 0.
(0) = 2.0 e 0 (0) = 0.
(0) = 2.5 e 0 (0) = 0.
(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.19.7. 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.
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

E 10.19.8. 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.

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


286 Clculo Numrico

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.

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

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


Captulo 11

Problemas de Valores de
Contorno

Neste captulo, discutimos sobre mtodos numricos para resolver equaes


diferenciais 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 elementos finitos 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
1
Johann Peter Gustav Lejeune Dirichlet, 1805 - 1859, matemtico alemo.

287
288 Clculo Numrico

Figura 11.1: Malha uniforme de N pontos em um intervalo [a, b].

etapas do mtodo. Aqui, vamos construir a malha mais simples possvel, aquela que
consiste de N pontos igualmente espaados, isto , a chamada malha uniforme.
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,
com
ba
h := ,
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 )).
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 )).
h2
Rearranjando os termos, obtemos
u(xi h) 2u(xi ) + u(xi + h)
2
= f (xi , u(xi )) + O(h2 ).
h
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.4)
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 determina, aplicamos as condies de contorno. Da
condio de contorno dada na equao (11.2), temos
u(a) = ua u1 = ua . (11.5)

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


11.1. MTODO DE DIFERENAS FINITAS 289

Analogamente, da condio de contorno dada na equao (11.2), temos


u(b) = ub uN = ub . (11.6)
Por fim, as equaes (11.6), (11.4) e (11.5) determinam o problema discreto
associado
u1 = ua , (11.7)
1 2 1
ui1 + 2 ui + 2 ui+1 = f (xi , ui ), i = 2, . . . , N 1, (11.8)
h2 h h
uN = ub . (11.9)
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.7)-(11.9). 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.10)
u(0) = 0, (11.11)
u(1) = 0. (11.12)
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 | ,
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


290 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,

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.10), obtemos
o seguinte sistema de equaes:

ui1 2ui + ui+1


= 100(xi 1)2 , i = 2, . . . , N 1.
h2

Completamos este sistema com as condies de contorno dadas nas equaes (11.11)
e (11.12), donde
u1 = uN = 0.
Ou seja, obtemos o seguinte problema discreto:

u1 = 0, (11.13)
1
(ui+1 2ui + ui+1 ) = 100(xi 1)2 , i = 2, . . . , N 1, (11.14)
h2
uN = 0. (11.15)

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 ,

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

. . . . . . .


0 0 0 0 0 1

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


11.1. MTODO DE DIFERENAS FINITAS 291

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
.

.. ..

. .



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.16)

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
(x 1)4
u + c2 x + c1 = 100 ,
12
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com
292 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.11) e (11.12), isto :
100
u(0) = 0 c1 = ,
12
100
u(1) = 0 c2 = .
12
Portanto, a soluo analtica :

(x 1)4 x 100
u(x) = 100 100 + (11.17)
12 12 12
A figura 11.2 mostra o esboo dos grficos das solues analtica (11.17) e a da
soluo numrica (11.16).
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 293

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 da malha h, o erro absoluto mdio diminui aproxima-
damente 100 vezes. Este resultado esperado, pois o problema discreto (11.13)-
(11.15) aproxima o problema contnuo (11.10)-(11.12) 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.18)


u(0,5) = 1, (11.19)
u(1,5) = 2. (11.20)

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


294 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 ER 11.1.1.

Agora, a equao diferencial dada no i-simo ponto da malha :

uxx (xi ) + u(xi ) = exi , i = 2, 3, . . . , N 1.

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 ,
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

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 295

Figura 11.3: Esboo do grfico da soluo numrica do exerccio ER 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


296 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 297

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:

http://www.scilab.org/

O manual oficial do Scilab em portugus pode ser obtido em:

http://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

298
A.1. SOBRE O SCILAB 299

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


300 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 301

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 natual 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


302 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=
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 303

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]
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 se 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


304 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 305

A(i,j:k) os elementos da i-sina 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


306 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 307

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


308 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 309

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) =
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.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
8
c) 6,674 10 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.4.1. a) 98; b) 29; c) 29.

E 2.4.2. a) 25186; b) 7453; c) 7453.

E 2.4.3. a) 3,75; b) 5,75.

310
RESPOSTAS DOS EXERCCIOS 311

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.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% pela segundo mtodo (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
E 2.9.2. a) 1
2
+ x4! + O(x4 ); b) x/2 + O(x2 ); c) 5 104 x + O(x2 ); d) 4
2
y + O(y 2 ) = 4
2
x + O(x2 )

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.2.
A primeira raiz se encontra no intervalo (0,4, 0,5). A segunda raiz no intervalo (1,7, 1,8). A terceira raiz se encontra no
intervalo (2,5, 2,6).

E 3.2.4.
1,390054; 1,8913954; 2,4895673; 3,1641544; 3,8965468

E 3.2.5.
k = lP
2
cos() com (0, /2); 1,030.

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


312 Clculo Numrico

E 3.2.6.
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

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

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


RESPOSTAS DOS EXERCCIOS 313

-->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)

b) Para recalcular as razes pelo mtodo de Newton, basta executar a interao

(n+1) (n) f (x(n) )


x =x
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)

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


314 Clculo Numrico

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 )
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) )

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.6)
0
= f (x )(n n1 )

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


RESPOSTAS DOS EXERCCIOS 315

Portanto:
1 f 00 (x )
n+1 n n1 (3.7)
2 f 0 (x )

ou, equivalentemente:
(n+1) 1 f 00 (x ) (n)
 (n1)

x x x x x x (3.8)
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

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

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


316 Clculo Numrico

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
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
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
0 0 1 5 0 0 1 5
" #
1 0 0 2
0 1 0 3
0 0 1 5

Portanto x = 2, y = 3, z = 5

E 4.1.5.

a) x = [4 3 2]T

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 =
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]
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)
b = (5, 3, 4, 2, 3, 2)
c = (4, 1, 1, 1, 2, 0)
d = (13, 10, 20, 16, 35, 17)
x = (1, 2, 3, 4, 5, 6)

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


RESPOSTAS DOS EXERCCIOS 317

E 4.5.2.

a = (0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/2)
b = (1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1)
c = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
d = (0, cos(2/10), cos(3/10), cos(4/10), cos(5/10),
cos(6/10), cos(7/10), cos(8/10), cos(9/10), cos(1),0)
x = (0,324295, 0,324295, 0,317115, 0,305943, 0,291539,
0,274169, 0,253971, 0,230846, 0,20355, 0,165301, 0,082650)

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

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

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


318 Clculo Numrico

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)
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)

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


RESPOSTAS DOS EXERCCIOS 319

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.3.
158,726

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

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


320 Clculo Numrico

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.

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

p 

E 5.1.3. As curvas possuem dois pontos de interseco. A posio exata destes pontos de inteseco 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.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 )

onde o coeficiente angular m dado por


f (x2 ) f (x1 )
m=
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 )

E sabemos que:
0 cos(x) sen (x)
f (x) = .
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


RESPOSTAS DOS EXERCCIOS 321

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


322 Clculo Numrico

p 6,7
E 5.1.13. Incializao 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.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
y(j,j)=5*(1+3*x(j)^2)
y(j,j+1)=-1
end
y(11,11)=1
endfunction

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


RESPOSTAS DOS EXERCCIOS 323

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

a) Uma parbola de equao y = a1 + a2 x + a3 x2 que interpola os pontos deve satisfazer o sistema:

2
a1 + a2 x1 + a3 x1 = y1
2
a1 + a2 x2 + a3 x2 = y2

Sem perda de generalidade, para cada a3 R dado, temos:

2
a1 + a2 x1 = y1 a3 x1
,
2
a1 + a2 x2 = y2 a3 x2

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

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,1946029, a2 = 0,585986, a3 = 0,0112599.

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

3f (0)+4f (h)f (2h)


a) f 0 (0) = 2h
+ O(h2 )

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


324 Clculo Numrico

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

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

h 1010 1011 1012 1013 1014 1015


D+,h f (1,5) 0,3161976 0,3161971 0,3162332 0,3158585 0,3178013 0,3747003

Observe que o valor exato 0,3161977 e o h timo algo entre 108 e 109 .

E 8.4.6.

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

E 9.1.2.

1 2
ISimpson = IT rap + IP M
3 3

E 9.1.3.

n Ponto mdio Trapzios Simpson


3 0.1056606 0.7503919 0.5005225
5 0.1726140 0.3964724 0.2784992
7 0.1973663 0.3062023 0.2393551
9 0.2084204 0.2721145 0.2306618

E 9.3.2.
-0.2310491, -0.2452073, - 0.2478649.

E 9.3.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.

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


RESPOSTAS DOS EXERCCIOS 325

E 9.4.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

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

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

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

E 9.4.2.

1.5707963 2.0943951
1.8961189 2.0045598 1.9985707
1.9742316 2.0002692 1.9999831 2.0000055

E 9.4.3. a) 0.7468337; b) 2.4606311; c) 1.6595275.

E 9.4.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.5.1.
w1 = 1/6, w2 = 2/3, w3 = 1/6. O esquema construdo o de Simpson e a ordem de exatido 3.

E 9.5.2.
3

E 9.5.3.
5

E 9.5.4.
R1 3 f (1/3) 2f (1/2) + 3 f (2/3) com ordem 3.
f (x) dx 2 2
0

E 9.5.5.
5, 4, 3

E 9.6.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.7.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

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


326 Clculo Numrico

Soluo do item e: Como



x2n
X
n
cos(x) = 1 + (1)
(2n)!
n=1

temos

1 cos(x) x2n1/2
X
n
= (1) , x0
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

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.7.5. 4,1138

E 9.7.6. a) 19,2; 22,1; 23,3; b) 513,67K

Z 1    
3 3
E 9.7.8. f (x)dx = f +f
3 3
1

E 9.7.9. w1 = w3 = 1 e w2 = 0 com ordem 3.

E 10.2.1.
 2
1 2 1+e1
0,4496 com h = 0,1 e 0,4660 com h = 0,01. A soluo exata vale u(1) = 1+2e 4 +e = 2
0,4678

E 10.2.2.
u(2) 0,430202 e z(2) = 0,617294 com h = 0,2, u(2) 0,435506 e z(2) = 0,645776 com h = 0,02, u(2) 0,435805 e
z(2) = 0,648638 com h = 0,002 e u(2) 0,435832 e z(2) = 0,648925 com h = 0,0002.

E 10.2.3.

u(2) 1,161793 com h = 0,1, u(2) 1,139573 com h = 0,01, u(2) 1,137448 com h = 0,001, u(2) 1,137237 com

h = 0,0001, u(2) 1,137216 com h = 0,00001

E 10.6.1.
u(1) 1,317078 quando h = 0,1 e u(1) 1,317045.

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


RESPOSTAS DOS EXERCCIOS 327

E 10.6.2.

t Exato Euler Euler melhorado Erro Euler Erro Euler melhorado


0.0 1. 1. 1. 0. 0.
0.1 0.826213 0.8 0.828 0.026213 0.001787
0.2 0.693094 0.656 0.695597 0.037094 0.002502
0.3 0.588333 0.547366 0.591057 0.040967 0.002724
0.4 0.504121 0.462669 0.506835 0.041453 0.002714
0.5 0.435267 0.394996 0.437861 0.040271 0.002594
0.6 0.378181 0.339894 0.380609 0.038287 0.002428
0.7 0.330305 0.294352 0.332551 0.035953 0.002246
0.8 0.289764 0.256252 0.291828 0.033512 0.002064
0.9 0.255154 0.224061 0.257043 0.031093 0.001889
1.0 0.225400 0.196634 0.227126 0.028766 0.001726

No Scilab, esta tabela pode ser produzida com o cdigo:

deff('du=f(u)','du=-u-u^2')
sol_Euler=Euler(f,0,1,10,1)'
sol_Euler_mod=Euler_mod(f,0,1,10,1)'
deff('u=u_exata(t)','u=1/(2*exp(t)-1)')
t=[0:.1:1]'
sol_exata=feval(t,u_exata)
tabela=[t sol_exata sol_Euler sol_Euler_mod abs(sol_exata-sol_Euler) abs(sol_exata-sol_Euler_mod)]

E 10.19.1.
1 ln 9
 1 ln (6)
Os valores exatos para os itens e e f so: 10 4
e 10

E 10.19.2.
q   p 
g
O valor exato
1 e200 em t = 1
g
tanh1 1 e200

E 10.19.8.

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.8D-02 2.9D-02 2.2D-02 1.4D-02 7.6D-03
Euler modificado 7.0D-04 6.9D-04 4.7D-04 2.6D-04 1.1D-04
Runge-Kutta Clssico 4.6D-07 4.7D-07 3.5D-07 2.2D-07 1.2D-07
Adams-Bashforth ordem 4 2.3D-05 4.8D-05 4.7D-05 3.8D-05 2.8D-05

0.1 0.05 0.01 0.005 0.001


Euler 2.9D-02 5.6D-03 2.8D-03 5.5D-04 2.8D-04
Euler modificado 6.9D-04 2.5D-05 6.2D-06 2.5D-07 6.1D-08
Runge-Kutta Clssico 4.7D-07 6.9D-10 4.3D-11 6.8D-14 4.4D-15
Adams-Bashforth ordem 4 4.8D-05 9.0D-08 5.7D-09 9.2D-12 5.8D-13

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


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

329
330 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 Contribuio
Debora Lidia Gisch -x- -x- #63

331
ndice Remissivo

ajuste equao diferencial


de uma reta, 184 no autnoma, 260
derivao, 219 equaes
linear, 189 de uma varivel, 46
polimomial, 194 erro
por mnimos quadrados, 183 absoluto, 23
ajuste de curvas, 183 relativo, 23
algoritmo erros, 23
de Thomas, 108 absoluto, 65
TDMA, 108 arredondamento, 209
aproximao de arredondamento, 15
de funes, 160, 183
frmula de diferenas finitas
por polinmios, 168
central, 213
aproximaes por diferenas finitas, 203
frmulas de diferenas finitas, 287
aritmtica
funo, 46
de mquina, 3
raiz de, 46
arredondamento de nmeros, 13
zero, 46
autovalores, 134
zero de, 46
cancelamento catastrfico, 27
integrao, 221
contrao, 60
integrao numrica
critrio de parada, 50
mtodo composto
derivao, 203 de Simpson, 235
diferenas divididas de Newton, 165 dos trapzios, 234
diferenas finitas, 203 mtodo de Romberg, 238
central, 206 ordem de preciso, 242
ordem mais alta, 213 regra de Simpson, 227, 228
progressiva, 205 regra do trapzio, 224
regressiva, 206 regras compostas, 232
regras de Newton-Cotes, 223
eliminao gaussiana, 91 integral, 221
equao interpolao, 160
logstica, 259 cbica segmentada, 174

332
NDICE REMISSIVO 333

derivao, 219 jacobiana, 144


linear segmentada, 172 matriz
polinomial, 161 condicionamento, 115
iterao do ponto fixo, 46, 56 diagonal dominante, 132
convergncia, 64 jacobiana, 156, 157
estabilidade, 64 matriz de
taxa de convergncia, 61 iterao, 126
matriz de Vandermonde, 164
mtodo medida
da bisseo, 49 de erro, 23
da matriz tridiagonal, 108 de exatido, 23
de Euler, 257 mudana de base, 3
ordem de preciso, 262
de separao de variveis, 259 nmero de condicionamento, 118
trapezoidal, 267 norma
Mtodo da bisseo L , 116
taxa de convergncia, 52 Lp , 116
mtodo da bisseo, 46 norma de
mtodo da potncia, 134 matrizes, 117
mtodo das fraes parciais, 259 vetores, 116
mtodo das secantes, 46, 78
convergncia, 80 passo da malha, 288
mtodo de polinmio interpolador, 162
Gauss-Seidel, 124 polinmios
Jacobi, 122 de Lagrange, 167
Newton, 71 ponto fixo, 56
Newton-Raphson, 71 poro urea, 83
mtodo de diferenas finitas, 287 problema de
Mtodo de Jacobi ponto fixo, 56
matriz de iterao, 128 problema de valor de contorno, 287
problema de valor inicial, 255
vetor de iterao, 128
problema discreto, 288
mtodo de Newton, 46
Problemas de valores de contorno, 287
para sistemas, 145
mtodo de Newton-Raphson, 71 quadratura numrica
convergncia, 73 Gauss-Legendre, 246
mtodo dos mnimos quadrados, 183
mtodos iterativos representao
sistemas lineares, 121 de nmeros em mquina, 15
convergncia, 126 nmeros inteiros, 15
malha uniforme, 288 representao de nmeros, 3
matrix inteiros

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


334 Clculo Numrico

bit de sinal, 16 teorema de


complemento de dois, 16 Bolzano, 46
sem sinal, 15 Teorema do
resduo, 184 ponto fixo, 59
teorema do
Scilab, 298 ponto fixo, 72
elementos da linguagem, 300 teorema do valor intermedirio, 46
funes, 308 tolerncia, 65
funes e constantes, 301
grficos, 309 vetor de
instalao e execuo, 298 iterao, 126
matrizes, 302
operaes matemticas, 301
operador :, 303
operadores lgicos, 301
ramificao e repetio, 306
sobre, 298
usando, 299
sequncia de
Fibonacci, 83
simulao
computacional, 1
numrica, 1
sistema de equaes
no lineares, 142
sistema de numerao, 3
sistema linear, 90
condicionamento, 115
sistema numrico
de ponto fixo, 17
de ponto flutuante, 18
notao normalizada, 11
sistemas
de equaes diferenciais, 281
spline, 174
fixado, 179
natural, 176
not-a-knot, 180
periodico, 181

tamanho da malha, 288

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

Вам также может понравиться