Você está na página 1de 237

Clculo Numrico

Um Livro Colaborativo

10 de agosto de 2016

Clculo Numrico

Autores
Lista alfabtica de autores:
Dagoberto Adriano Rizzotto Justo - UFRGS
Esequia Sauter - UFRGS
Fabio Souto de Azevedo - UFRGS
Pedro Henrique de Almeida Konzen - UFRGS

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

Licena
Este trabalho est licenciado sob a Licena Creative Commons AtribuioCompartilhaIgual 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.

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

Clculo Numrico

Nota dos autores


Este livro vem sendo construdo de forma colaborativa desde 2011. Nosso
intuito melhor-lo, expandi-lo e adapt-lo s necessidades de um curso de
clculo numrico em nvel de graduao.
Caso queira colaborar, encontrou erros, tem sugestes ou reclamaes,
entre em contato conosco pelo endereo de e-mail:
livro_colaborativo@googlegroups.com
Alternativamente, abra um chamado no repositrio GitHub do projeto:
https://github.com/livroscolaborativos/CalculoNumerico

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

Prefcio
Este livro busca abordar os tpicos de um curso de introduo ao clculo
numrico moderno oferecido a estudantes de matemtica, fsica, engenharias
e outros. A nfase colocada na formulao de resoluo de problemas,
implementao em computador e interpretao de resultados. Pressupe-se
que o estudante domine conhecimentos e habilidades tpicas desenvolvidas em
cursos de graduao de clculo, lgebra linear e equaes diferenciais. Conhecimentos prvios em linguagem de computadores fortemente recomendvel,
embora apenas tcnicas elementares de programao sejam realmente necessrias.
Ao longo do livro, fazemos nfase na utilizao do software livre Scilab
para a implementao dos mtodos numricos abordados. Recomendamos
que o leitor tenha a sua disposio um computador com o Scilab instalado. No necessrio estar familiarizado com a linguagem Scilab, mas
recomendamos a leitura do Apndice 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).

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

Clculo Numrico

Sumrio
Autores

ii

Licena

iii

Nota dos autores

iv

Prefcio

1 Introduo

2 Aritmtica de mquina
2.1 Sistema de numerao e mudana de base
2.2 Representao de nmeros . . . . . . . . .
2.2.1 Nmeros inteiros . . . . . . . . . .
2.2.2 Sistema de ponto fixo . . . . . . . .
2.2.3 Normalizao . . . . . . . . . . . .
2.2.4 Sistema de ponto flutuante . . . . .
2.2.5 A preciso e o epsilon de mquina .
2.2.6 A distribuio dos nmeros . . . .
2.3 Tipos de Erros . . . . . . . . . . . . . . .
2.3.1 Erros de arredondamento . . . . . .
2.4 Erros nas operaes elementares . . . . . .
2.5 Cancelamento catastrfico . . . . . . . . .
2.6 Propagao de erros . . . . . . . . . . . .
2.7 Mais exemplos . . . . . . . . . . . . . . . .
3 Soluo de equaes de uma varivel
3.1 Condio de existncia de razes reais . . .
3.2 Mtodo da bisseo . . . . . . . . . . . . .
3.2.1 Cdigo Scilab: mtodo da bisseo
3.3 Iterao de Ponto Fixo . . . . . . . . . . .
3.3.1 Exemplo Histrico . . . . . . . . .

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

.
.
.
.
.

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

3
3
8
8
11
12
13
16
16
17
20
22
23
25
30

.
.
.
.
.

37
37
39
41
44
44

SUMRIO

3.4

3.5

vii

3.3.2 Outro Exemplo . . . . . . .


3.3.3 Ponto fixo . . . . . . . . . .
3.3.4 Teste de convergncia . . . .
3.3.5 Estabilidade e convergncia
3.3.6 Erro absoluto e tolerncia .
Mtodo de Newton-Raphson . . . .
3.4.1 Interpretao Geomtrica .
3.4.2 Anlise de convergncia . .
Mtodo das Secantes . . . . . . . .
3.5.1 Anlise de convergncia . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

47
48
49
51
52
58
59
60
63
64

4 Soluo de sistemas lineares


4.1 Eliminao gaussiana com pivoteamento parcial
4.2 Condicionamento de sistemas lineares . . . . . .
4.2.1 Norma Lp de vetores . . . . . . . . . . .
4.2.2 Norma matricial . . . . . . . . . . . . .
4.2.3 Nmero de condicionamento . . . . . . .
4.3 Mtodos iterativos para sistemas lineares . . . .
4.3.1 Mtodo de Jacobi . . . . . . . . . . . . .
4.3.2 Mtodo de Gauss-Seidel . . . . . . . . .
4.4 Anlise de convergncia . . . . . . . . . . . . .
4.5 Mtodo da potncia para clculo de autovalores

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

71
72
78
79
80
81
83
83
84
86
87

5 Soluo de sistemas de equaes no lineares


5.1 O mtodo de Newton para sistemas . . . . . .
5.1.1 Cdigo Scilab: Newton para Sistemas .
5.2 Linearizao de uma funo de vrias variveis
5.2.1 O gradiente . . . . . . . . . . . . . . .
5.2.2 A matriz jacobiana . . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

92
95
98
99
99
101

6 Aproximao de funes
6.1 Interpolao polinomial . . . . . . . . . . . . . . . . . . . . .
6.2 Diferenas divididas de Newton . . . . . . . . . . . . . . . .
6.3 Polinmios de Lagrange . . . . . . . . . . . . . . . . . . . .
6.4 Aproximao de funes reais por polinmios interpoladores
6.5 Ajuste de curvas pelo mtodo dos mnimos quadrados . . . .
6.6 O caso linear . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6.1 O mtodo dos mnimos quadrados . . . . . . . . . . .
6.6.2 Ajuste linear de curvas . . . . . . . . . . . . . . . . .
6.7 Aproximando problemas no lineares por problemas lineares
6.8 Interpolao linear segmentada . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

103
104
105
109
110
113
115
115
117
120
125

.
.
.
.
.

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

viii

Clculo Numrico
6.9

Interpolao cbica segmentada - spline . . . . . . . . . . . . . 127


6.9.1 Spline natural . . . . . . . . . . . . . . . . . . . . . . . 129
6.9.2 Spline fixado . . . . . . . . . . . . . . . . . . . . . . . 132

7 Derivao e integrao numrica


7.1 Derivao Numrica . . . . . . . . . . . . . . . . . . .
7.1.1 Aproximao da derivada por diferenas finitas
7.1.2 Erros de truncamento . . . . . . . . . . . . . . .
7.1.3 Erros de arredondamento . . . . . . . . . . . . .
7.1.4 Aproximaes de alta ordem . . . . . . . . . . .
7.1.5 Aproximao para a segunda derivada . . . . .
7.1.6 Derivada via ajuste ou interpolao . . . . . . .
7.2 Problemas de valor contorno . . . . . . . . . . . . . . .
7.3 Integrao numrica . . . . . . . . . . . . . . . . . . .
7.3.1 Regras de Newton-Cotes . . . . . . . . . . . . .
7.3.2 Regras compostas . . . . . . . . . . . . . . . . .
7.3.3 O mtodo de Romberg . . . . . . . . . . . . . .
7.3.4 Ordem de preciso . . . . . . . . . . . . . . . .
7.3.5 Quadratura de Gauss-Legendre . . . . . . . . .

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

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

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

139
. 139
. 139
. 141
. 142
. 144
. 146
. 147
. 150
. 154
. 156
. 162
. 165
. 167
. 172

8 Problema de valor inicial


8.1 Mtodo de Euler . . . . . . . . . . . . . . . . . .
8.1.1 Mtodo de Euler melhorado . . . . . . . .
8.1.2 Ordem de preciso . . . . . . . . . . . . .
8.2 Mtodos de Runge-Kutta . . . . . . . . . . . . . .
8.2.1 Mtodos de Runge-Kutta - Quarta ordem
8.3 Mtodos de passo mltiplo - Adams-Bashforth . .
8.4 Mtodos de passo mltiplo - Adams-Moulton . . .
8.5 Estabilidade . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

184
184
190
190
191
192
192
193
193

A Rpida Introduo ao Scilab


A.1 Sobre o Scilab . . . . . . . . . . . . . . . .
A.1.1 Instalao e Execuo . . . . . . .
A.1.2 Usando o Scilab . . . . . . . . . . .
A.2 Elementos da linguagem . . . . . . . . . .
A.2.1 Operaes matemticas elementares
A.2.2 Funes e constantes elementares .
A.2.3 Operadores lgicos . . . . . . . . .
A.3 Matrizes . . . . . . . . . . . . . . . . . . .
A.3.1 O operador : . . . . . . . . . . .
A.3.2 Obtendo dados de uma matriz . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

199
199
199
200
201
202
202
202
203
204
204

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

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

SUMRIO

ix

A.3.3 Operaes matriciais e elemento-a-elemento


A.4 Estruturas de ramificao e repetio . . . . . . . .
A.4.1 A instruo de ramificao if . . . . . . .
A.4.2 A instruo de repetio for . . . . . . . .
A.4.3 A instruo de repetio while . . . . . . .
A.5 Funes . . . . . . . . . . . . . . . . . . . . . . . .
A.6 Grficos . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

206
207
207
208
209
209
210

Respostas dos Exerccios

211

Referncias Bibliogrficas

226

ndice Remissivo

227

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

Captulo 1
Introduo
Clculo numrico uma disciplina que compreende o estudo de mtodos
para a computao eficiente da soluo de problemas matemticos. Aliado ao avano tecnolgico dos computadores, o desenvolvimento de mtodos
numricos tornou a simulao computacional de modelos matemticos uma
prtica cotidiana 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, utilizao e aspectos tericos de mtodos numricos para a resoluo
desses problemas.
Os problemas que discutiremos no formam apenas um conjunto de mtodos fundamentais, mas so, tambm, problemas de interesse na engenharia
e na matemtica aplicada. Estes 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 algbrica, 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;
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

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


exatamente, por exemplo:
cos(x) = x

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
clculo da soluo exata para o problema

2 /2

. J o

y 0 + xy = ey ,
y(0) = 2,
no possvel.
Da mesma forma, resolvemos a integral
Z 2

xex dx

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


Z 2

ex dx

no pode ser resolvida analiticamente.


A maioria das modelagem 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, comearemos falando em mudana de base.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

Captulo 2
Aritmtica de mquina
2.1

Sistema de numerao e mudana de base

Usualmente, utilizamos o sistema de numerao decimal para representar


nmeros. Esse um sistema de numerao posicional onde a posio do
dgito indica a potncia de 10 que o dgito est representando.
Exemplo 1. O nmero 293 decomposto como
293 = 2 centenas + 9 dezenas + 3 unidades
= 2 102 + 9 101 + 3 100 .
O sistema de numerao posicional tambm pode ser usado com outras
bases. Vejamos a seguinte definio.
Definio 1 (Sistema de numerao de base b). Dado um nmero natural b >
1 e o conjunto de smbolos {,,, , 0 , 1 , 2 , . . . , b 11}1 , a sequncia de smbolos
(dn dn1 d1 d0 ,d1 d2 )b
representa o nmero positivo
dn bn + dn1 bn1 + + d0 b0 + d1 b1 + d2 b2 +
Para representar nmeros negativos usamos o smbolo a esquerda do numeral.
Observao 1 (b 10). Para sistemas de numerao com base b 10 usual
utilizar as seguintes notaes:
1

Para b > 10, veja a Observao 1


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

Clculo Numrico
No sistema de numerao decimal (b = 10), costumamos representar o
nmero 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 completar os smbolos:
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Exemplo 2 (Sistema binrio). O sistema de numerao em base dois


chamado de binrio e os algarismos binrios so conhecidos como bits, do
ingls binary digits. Um bit pode assumir dois valores distintos: 0 ou 1.
Por exemplo:
x = (1001,101)2
= 1 23 + 0 22 + 0 21 + 1 20 + 1 21 + 0 22 + 1 23
= 8 + 0 + 0 + 1 + 0,5 + 0 + 0,125 = 9,625
Ou seja, (1001,101)2 igual a 9,625 no sistema decimal.
Exemplo 3 (Sistema quaternrio). No sistema quaternrio a base b igual
a 4. Por exemplo:
(301,2)4 = 3 42 + 0 41 + 1 40 + 2 41 = 49,5
Exemplo 4 (Sistema octal). No sistema octal a base b = 8 e utilizamos os
smbolos em {0, 1, 2, 3, 4, 5, 6, 7}. Por exemplo:
(1357,24)8 = 1 83 + 3 82 + 5 81 + 7 80 + 2 81 + 4 82
= 512 + 192 + 40 + 7 + 0,25 + 0,0625 = 751,3125
Exemplo 5 (Sistema hexadecimal). O sistema de numerao cuja a base
b = 16 chamado de sistema hexadecimal. O conjunto de smbolos necessrios S = {,, , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }. Convertendo o
nmero (E2AC)16 para a base 10 temos
(E2AC)16 = 14 163 + 2 162 + 10 161 + 12 160
= 57344 + 512 + 160 + 12 = 58028
Exemplo 6 (Scilab). O Scilab oferece algumas funes para a converso
de nmeros inteiros em dada base para a base decimal. Por exemplo, temos:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.1. SISTEMA DE NUMERAO E MUDANA DE BASE

-->bin2dec('1001')
ans =
9.
-->hex2dec('451')
ans =
1105.
-->oct2dec('157')
ans =
111.
-->base2dec('BEBA',16)
ans =
48826.
A partir da Definio 1 acabamos de mostrar vrios exemplos de converso
de nmeros de uma sistema 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, i.e., 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, i.e. X = X i + X f , temos:
X i = dn bn + + dn1 bn1 +d1 b1 + d0 b0

Xf =

d1 d2
+ 2 +
b1
b

Nosso objetivo determinar os algarismos {dn , dn1 , ...}.


Primeiramente, vejamos como tratar a parte inteira X i . Calculando sua
diviso 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 (lembramos que d0 < b). Da
mesma forma, o resto da diviso de d1 + d2 b1 + dn1 bn2 + dn bn1 por
b d1 . Repetimos o processo at encontrar os smbolos d0 , d1 , d2 , . . ..
Exemplo 7 (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,
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

Clculo Numrico

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)
Verifique!
Exemplo 8 (Scilab). O Scilab oferece algumas funes para a converso
de nmeros inteiros em dada base para a base decimal. Assim, temos:
-->bin2dec('1001')
ans =
9.
-->hex2dec('451')
ans =
1105.
-->oct2dec('157')
ans =
111.
-->base2dec('BEBA',16)
ans =
48826.
Vamos converter a parte fracionria de um nmero decimal em uma dada
base b. Usando a notao X = X i + X f para as partes inteira e fracionria,
respectivamente, temos:
bX f = d1 +

d2 d3
+ 2 +
b
b

Observe que a parte inteira desse produto d1 e d2


+ db3
2 + a parte
b
d2
d3
fracionria. Quando multiplicamos b + b2 + por b novamente, encontramos d2 . Repetimos o processo at encontrar todos os smbolos.
Exemplo 9 (Converso da parte fracionria). Escrever o nmero 125,583
na base 6. Do exemplo anterior temos que 125 = (325)6 . Assim, nos resta
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.1. SISTEMA DE NUMERAO E MUDANA DE BASE

converter a parte fracionria. Para tanto, fazemos 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 feitas no
Scilab. Voc sabe como?
Uma maneira de converter um nmero dado numa 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
E 2.1.1. Converta para base decimal cada um dos seguintes nmeros:
a) (100)2

c) (100)b

e) (AA)16

b) (100)3

d) (12)5

f) (7,1)8

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 cada nmero decimal na base b.
a) 7,6 na base b = 5
b) 29,16 na base b = 6
E 2.1.4. Escreva cada nmero dado para a base b.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

g) (3,12)5

Clculo Numrico
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.5. Escreva o nmero x = 5,5 em base binria.
E 2.1.6. Escreva o nmero x = 17,109375 em base hexadecimal (16).

E 2.1.7. 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?
E 2.1.8. Escreva x = (12.4)8 em base decimal e binria.

2.2

Representao de nmeros

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, 0 ou 1. Cada computador tem um nmero de bits fixo
e, portanto, representa uma quantidade finita de nmeros. Os demais nmeros so tomados por proximidade queles conhecidos, gerando erros de
arredondamento. Por exemplo, em aritmtica
de computador, o nmero 2
2
tem representao
exata,
logo
2
=
4,
mas
3 no tem representao finita,
2
logo ( 3) 6= 3.
Veja isso no Scilab:
-->2^2 == 4
ans =
T
-->sqrt(3)^2 == 3
ans =
F

2.2.1

Nmeros inteiros

Tipicamente um nmero inteiro armazenado num computador como


uma sequncia de dgitos binrios de comprimento fixo denominado registro.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.2. REPRESENTAO DE NMEROS

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
(111...111)2 = 2n1 + 2n2 + + 21 + 20 = 2n 1.
..
.
=
(000...011)2 = (3)10
(000...010)2 = (2)10
(000...001)2 = (1)10
(000...000)2 = (0)10
Exemplo 10. No Scilab,
-->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
conveno, 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 .
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

10

Clculo Numrico

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


(11111111)2 = (26 + + 2 + 1) = 127
..
.
(10000001)2 = 1
(10000000)2 = 0
(01111111)2 = 26 + + 2 + 1 = 127
..
.
(00000010)2 = 2
(00000001)2 = 1
(00000000)2 = 0

Representao complemento de dois


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

d1 d0

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


Note que todo registro comeando com 1 ser um nmero negativo.
Exemplo 12. O registro com 8 bits [01000011] representa o nmero
0(27 ) + (1000011)2 = 64 + 2 + 1 = 67.
O registro com 8 bits [10111101] representa o nmero
1(27 ) + (0111101)2 = 128 + 32 + 16 + 8 + 4 + 1 = 67.
Note que podemos obter a representao de 67 invertendo os dgitos de
67 em binrio e somando 1.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.2. REPRESENTAO DE NMEROS

11

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


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

Exemplo 14. No Scilab,


-->int8(
ans =
-->int8(
ans =

2.2.2

bin2dec('00000011') )
3
bin2dec('11111110') )
-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 15. 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

12

Clculo Numrico
(d30 d29 d17 d16 )2 d31 (215 216 )+(0,d15 d14 d1 d0 )2 se o sinal do nmero 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.2.3

Normalizao

Os nmeros h = 6.626 1034 e NA = 6.0221 1023 no podem ser


armazenados na mquina em ponto fixo do exemplo anterior.
Entretanto, a constante
h = 6626 1037
h = 6.626 1034
h = 0.6626 1033
h = 0.006626 1031
pode ser escrita de vrias formas diferentes. Para termos uma representao nica definimos como notao normalizada a segunda opo (1 m <
10) que apresenta apenas um dgito diferente de zero a esquerda do ponto
decimal (m = 6.626).
Definio 2. Definimos que
x = (1)s (M )b bE ,
est na notao normalizada2 quando 1 (M )b < b, onde
2

Em algumas referncias usado (0.1)b (M )b < 1.


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

2.2. REPRESENTAO DE NMEROS

13

s o sinal (0 para positivo e 1 para negativo),


E o expoente,
b a base (por ex. 2, 8, 10 ou 16),
(M )b o significando. O significando (tambm chamado de mantissa
ou coeficiente) contm os dgitos significativos do nmero.
Exemplo 16. Os nmeros abaixo esto em notao normalizada:
x1 = (1.011101)2 2(100)2
x2 = (2.325)10 101
Exemplo 17. Represente os nmeros 0,0051 e 1205,4154 em um sistema de
ponto fixo de 4 dgitos para a parte inteira e 4 dgitos para a parte fracionria.
Depois represente os mesmos nmeros utilizando notao normalizada com
7 dgitos significativos.
Soluo. As representaes dos nmeros 0,0051 e 1205,4154 no sistema de
ponto fixo so 0,0051 e 1205,4154, respectivamente. Em notao normalizada, as representaes so 5,151515 103 e 1,205415 103 , respectivamente.

Observao 2. No Scilab, a representao em ponto flutuante com n dgitos


dada na forma d1 ,d2 d3 . . . dn 10E . Consulte sobre o comando format!

2.2.4

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),
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

14

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

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 .
Em base 2 no necessrio armazenar o primeiro dgito (por qu?).
Por exemplo, 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
predefinido de tal forma a dividir a tabela ao meio de tal forma que o expoente
um seja representado pelo sequncia [100...000].
Exemplo 18. Com 64 bits, pelo padro IEEE754, temos que |E| := 11.
Assim (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

2.2. REPRESENTAO DE NMEROS

15

Com 11 bits 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 .
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).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

16

Clculo Numrico
c = [1111...1111] usado para representar o infinito (se m = 0) e NaN
(se m 6= 0).
Os nmeros subnormais3 tem a forma
x = (1)s (0.m1 m2 m51 m52 )2 21BIAS .

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

2.2.5

A preciso e o epsilon 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 epsilon de mquina, mach = , definido como o menor nmero
representvel tal que 1 +  seja diferente de 1.
Exemplo 19. Com 64 bits, temos que o epsilon 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 .

2.2.6

A distribuio dos nmeros

Utilizando uma mquina em ponto flutuante temos um nmero finito de


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

Note que poderamos definir nmeros um pouco menores que o M IN R.


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

2.3. TIPOS DE ERROS

17

Se tentarmos armazenar um nmero que no representvel, devemos


utilizar o nmero mais prximo, gerando os erros de arredondamento.
Por simplicidade, a partir daqui ns adotaremos b = 10.
Observao 4. 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
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. Nas prximas sees, veremos quais so estes erros e como control-los,
quando possvel.

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

2.3

Tipos de Erros

Quando fazemos aproximaes numricas, os erros so gerados de vrias


formas, sendo as principais delas as seguintes:
1. Preciso 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: ocorrem quando aproximamos um procedimento formado por uma sequncia infinita de passos atravs de um
outro procedimento finito. Por exemplo, a definio de integral dada
por uma soma infinita e, como veremos na terceira rea, aproximarmola por um soma finita. Esse um assunto que discutiremos vrias vezes
no curso, pois o tratamento do erro de truncamento feito para cada
mtodo numrico.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

18

Clculo Numrico

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.
Definio 3 (Erro absoluto e relativo). Seja x um nmero real e x sua
aproximao. O erro absoluto da aproximao x definido como
|x x|.
O erro relativo da aproximao x definido como
|x x|
,
|x|

x 6= 0.

Observao 5. 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 20. 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 21. 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.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.3. TIPOS DE ERROS

19

Exemplo 22. Observe os erros absolutos e relativos em cada caso


x

erro absoluto

0,3 102 0,3 102

erro relativo

0,3 103

0,3103
0,3102

= 101 = 10%
= 101 = 10%

0,3

0,3

0,3 101

0,3101
0,3

0,3 102

0,3 102

0,3 101

0,3101
0,3102

= 101 = 10%

Outra forma de medir a exatido de uma aproximao numrica contar


o nmero de dgitos significativos corretos em relao ao valor exato.
Definio 4 (Nmero de dgitos significativos corretos). A aproximao x
de um nmero x tem s dgitos significativos corretos quando4
|x x|
< 5 10s .
|x|
Exemplo 23. 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
|0,666888 0,666|
|x x1 |
=
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.
4

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

20

Clculo Numrico
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), equanto 1,5 tem zero dgito significativo correto, pois:
|1 1,5|
= 5 101 < 5 100 .
|1|

2.3.1

Erros de arredondamento

Os erros de arredondamento so aqueles gerados quando aproximamos


um nmero real por um nmero com representao finita.
Existem vrias formas de arredondar
x = d0 ,d1 d2 . . . dk1 dk dk+1 . . . dn 10e
usando k dgitos significativos. As duas principais so as seguintes:
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
Observao 6. Observe que o arredondamento pode mudar todos os dgitos
e o expoente da representao em ponto flutuante de um nmero dado.
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

2.3. TIPOS DE ERROS

21

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


e x4 = 0,314159265 . . . 101 com dois dgitos significativos por truncamento
e arredondamento.
Soluo. Vejamos cada caso:
Por truncamento:
x1 = 0,56, x2 = 0,23, x3 = 0,67 e x4 = 3,1.
No Scilab, podemos obter a representao de x3 = 0,675 fazendo
(verifique):
-->format('e',8)
-->int(-0.675*1e2)/1e2
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: podemos obter a representao de x3 = 0,675 fazemos (verifique):
-->format('e',8)
-->-0.675

Exemplo 25. O arredondamento de 0,9999101 com 3 dgitos significativos


0,1 100 .

Exerccios
E 2.3.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

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

22

Clculo Numrico

E 2.3.2. Arredonde os seguintes nmeros para cinco algarismos significativos corretos:


a) 1,7888544

c) 0,0017888544

e) 2,1754999 1010

b) 1788,8544

d) 0,004596632

f) 2,1754999 1010

E 2.3.3. Verifique quantos so os dgitos significativos corretos em cada


aproximao x para x.
a) x = 2,5834 e x = 2,6
b) x = 100 e x = 99
E 2.3.4. Represente os nmeros 3276; 42,55 e 0,00003331 com trs dgitos
significativos por truncamento e arredondamento.
E 2.3.5. Resolva a equao 0,1x 0,01 = 12 usando arredondamento
com trs dgitos significativos em cada passo e compare com o resultado
analtico
E 2.3.6. Calcule o erro relativo e absoluto envolvido nas seguintes aproximaes e expresse as respostas com trs algarismos significativos corretos.
a) x = 3,1415926535898 e x = 3,141593
b) x =

2.4

1
7

e x = 1,43 101

Erros nas operaes elementares

O erro presente nas operaes elementares de adio, subtrao, multiplicao e diviso da ordem do epsilon 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 fizemos 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
aumentam.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.5. CANCELAMENTO CATASTRFICO

2.5

23

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 26. 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|
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 27. Considere o problema de encontrar as razes da equao de


segundo grau
x2 + 300x 0,014 = 0,
usando seis dgitos significativos.
Aplicando a frmula de Bhaskara com a = 0,100000101 , b = 0,300000
3
10 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

24

Clculo Numrico

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


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

x1 =

e
x2 =

0,300000 103 + 0,300000 103


= 0,000000 100
1
0,200000 10

Agora, os valores das razes com seis dgitos significativos deveriam ser
x1 = 0,300000 103

e x2 = 0,466667 104 .

Observe que um raiz saiu com seis dgitos significativos corretos, mas a outra
no possui nenhum dgito significativo correto.
Observao
7. No exemplo anterior b2 muito maior que 4ac, ou seja, b

b2 4ac, logo a diferena


b +

b2 4ac

estar prxima de zero. Uma maneira padro de evitar o cancelamento catastrfico usar procedimentos analticos para eliminar essa diferena. Abaixo
veremos alguns exemplos.
Exemplo 28. Para eliminar o cancelamento catastrfico do exemplo anterior, usamos a seguinte expanso em srie de Taylor em torno da origem

1
1 x = 1 x + O(x2 ).
2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.6. PROPAGAO DE ERROS

25

Substituindo na frmula de Bhaskara, temos:

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


b b 1 4ac
2b2

2a
um nmero pequeno e por isso a expanso faz sentido. VolObserve que 4ac
b2
tamos no exemplo anterior e calculamos as duas razes com o nova expresso
x1 =
=
=
=
x2

b b + 4ac
b c
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
2b
=
2a
4ac
=
4ab
0,140000 101
c
= 0,466667 104
= =
b
0,300000 103

Observe que o efeito catastrfico foi eliminado.

2.6

Propagao de erros

Dado uma funo diferencivel f , considere x uma aproximao para x


e f (
x) uma aproximao para f (x). Sabendo o erro x = |x x|, queremos
estimar o erro f = |f (x) f (
x)|. Pelo teorema do valor mdio, existe 
contido no intervalo aberto formado por x e x tal que
f (x) f (
x) = f 0 ()(x x).
Como no conhecemos o valor de , supomos que a derivada f 0 () limitada
por M (|f 0 ()| M ) no intervalo fechado formado por x e x e obtemos
|f (x) f (
x)| M |x x|.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

26

Clculo Numrico

Se f 0 (x) no varia muito rpido nesse intervalo e supondo x pequeno, aproximamos M |f 0 (x)| e temos:
|f (x) f (
x)| |f 0 (x)||x x|,
ou
f |f 0 (x)|x .
De modo geral, quando f depende de vrias variveis, a seguinte estimativa
vale:
f = |f (x1 ,x2 ,...,xn ) f (
x1 , x2 ,...,
xn )|



n

X

f
(x1 , x2 ,...,xn ) xi


xi
i=1

Exemplo 29. O nmero 31 = 0,3 possui um representao infinita tanto na


base decimal quanto na base binria. Logo, quando representamos ele no
computador geramos um erro de arredondamento que denotaremos por .
Agora considere a seguinte sequncia:

x0 =

xn+1 = 4xn 1,

1
3

.
nN

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


constante igual a 31 . Se calcularmos no computador essa sequncia, temos
que incluir os erros de arredondamento, ou seja,
x0 =

1
+
3

1
1
+  1 = + 4
3
3


1
1
= 4x1 1 = 4
+ 4 1 = + 42 
3
3
..
.
1
=
+ 4n 
3

x1 = 4x0 1 = 4
x2

xn

Portanto o limite da sequncia diverge,


lim |
xn | =

Faa o teste no Scilab, colocando:


-->x = 1/3
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.6. PROPAGAO DE ERROS

27

e itere algumas vezes a linha de comando:


-->x = 4*x-1
Exemplo 30. Seja f (x) = x exp(x). Calcule o erro absoluto em se 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 , i.e. o erro absoluto em se 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 em se calcular f (x) quando x = 2 0,05 de
1,084.

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

Soluo. Calculamos as derivadas parciais de f :


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

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




x x



f


+ y
y

2e4
9+1 4
=
0,3 + 2
e 0,06 = 8,493045557
27
9
Portanto, o erro relativo ao calcular f estimado por
f
8,493045557
=
= 14%
9+1 4
|f |
e
9

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

28

Clculo Numrico

Exemplo 32. 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 33. Considere um tringulo retngulo onde a hipotenusa e um dos


catetos so conhecidos a menos de um erro: hipotenusa a = 3 0,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
hipotenusa a e um cateto b. A tamanho de segundo
cateto c dado pelo

2
2
2
2
teorema de Pitgoras, a = b + c , ou seja, c = a b2 . Portanto a rea

bc
b a2 b 2
A=
=
.
2
2
Agora calculamos as derivadas
A
ab
= 2
,
a
2 a b2

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



A




a a



A


+

b b

3 5
5

0,01 +
0,01 = 0,01565247584
5
10
Em termos do erro relativo temos erro na hipotenusa de
no cateto de 0,01
= 0,5% e erro na rea de
2
0,01565247584

2 32 22
2

0,01
3

0,333%, erro

= 0,7%

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

2.6. PROPAGAO DE ERROS

29

Exerccios
E 2.6.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:
z=

y4 x
e .
1 + y4

Suponha que voc precise conhecer o valor de z com um erro de 0,5%. Como
engenheiro, voc prope uma melhoria na medio da varivel x ou y? Explique.
E 2.6.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 = ,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
expresso aproximada para a propagao de erro e inspecionando os valores
mximos e mnimos que a expresso pode assumir. Pratique os dois mtodos.
E 2.6.3. A corrente I em ampres e a tenso V em volts em uma lmpada
se relacionam conforme a seguinte expresso:


I=

V
V0

Onde um nmero entre 0 e 1 e V0 a 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%. Dica: lembre que x = e ln(x)
E 2.6.4.
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.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

30

Clculo Numrico

2.7

Mais exemplos

Exemplo 34. Observe a seguinte identidade


f (x) =

(1 + x) 1
=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 abaixo o grfico de f (x)
em escala logartmica.

Exemplo 35. Neste exemplo, estamos interessados em compreender mais


detalhadamente o comportamento da expresso


1+

1
n

n

(2.1)

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


lim

1
1+
n

n

= e = 2,718281828459...

(2.2)

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




1
1+
1

1

1
< 1+
2


2

1
< 1+
3


3

<

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

2.7. MAIS EXEMPLOS

31

No entanto, quando calculamos essa expresso no Scilab, nos defrontamos com o seguinte resultado:
n

1+

1
n

n

1+

1
n

n

2,0000000000000

102

2,7048138294215

2,2500000000000

104

2,7181459268249

2,3703703703704

106

2,7182804690957

2,4414062500000

108

2,7182817983391

2,4883200000000

1010 2,7182820532348

2,5216263717421

1012 2,7185234960372

2,5464996970407

1014 2,7161100340870

2,5657845139503

1016 1,0000000000000

2,5811747917132

1018 1,0000000000000

10 2,5937424601000

1020 1,0000000000000


Podemos resumir esses dados no seguinte grfico de 1 +


n:

1
n

n

em funo de

Observe que quando x se torna grande, da ordem de 1015 , o grfico da


funo deixa de se crescente e apresenta oscilaes. Observe tambm que a
expresso se torna identicamente igual a 1 depois de um certo limiar. Tais
fenmenos no so intrnsecos da funo f (x) = (1 + 1/x)x , mas oriundas
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

32

Clculo Numrico

de erros de arredondamento, isto , so resultados numricos esprios. A


fim de pr o comportamento 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


atingido torna a expresso do exemplo acima identicamente igual a 1, observamos a sequncia de operaes realizadas pelo computador:
x 1/x 1 + 1/x (1 + 1/x)x

(2.3)

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 epsilon de mquina a
constante eps. Observe que:
-->1+%eps
ans =
1.0000000000000002220446
Quando somamos a 1 um nmero positivo inferior ao psilon de mquina,
obtemos o nmero 1. Dessa forma, o resultado obtido pela operao de ponto
flutuante 1 + x para 0 < x < 2,22 1016 1.
Portanto, quando realizamos a sequncia de operaes dada em (2.3),
toda informao contida no nmero x perdida na soma com 1 quando 1/x
menor que o psilon de mquina, o que ocorre quando x > 5 1015 . Assim
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.7. MAIS EXEMPLOS

33

(1 + 1/x) aproximado para 1 e a ltima operao se resume a 1x , o que


igual a 1 mesmo quando x grande.
Um erro comum acreditar que o perda de significncia se deve ao fato
de 1/x 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:
x 1/x 1/(1/x)

(2.4)

compare o desempenho numrico desta sequncia de operaes para valores


pequenos de x com o da seguinte sequncia:
x 1 + x (1 + x) 1.


(2.5)
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:
-->y-1
ans =
1.421085471520200372D-14
-->1/(y-1)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

34

Clculo Numrico

ans

=
7.036874417766400000D+13

Exemplo 36 (Analogia da balana). Observe a seguinte comparao interessante 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 igualmente espaadas; o sistema de ponto flutuante como uma balana cuja distncia entre as marcas proporcional massa medida. Assim,
podemos ter uma balana 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
interpretado como a seguir: imagine que voc deseje obter o peso de um gato
(aproximadamente 4Kg). Dois processos esto disponveis: colocar o gato
diretamente na balana ou medir seu peso com o gato e, depois, sem o gato.
Na balana de ponto flutuante, a incerteza associada 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
E 2.7.1. Considere as expresses:
exp(1/)
1 + exp(1/)
e

1
exp(1/) + 1

com > 0. Verifique que elas so idnticas como funes reais. Qual dessas
expresses mais adequada quando um nmero pequeno. Teste no
computador para = 0,1, = 0,01 e = 0,001.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

2.7. MAIS EXEMPLOS

35

E 2.7.2. Encontre expresses alternativas para calcular o valor das seguintes funes quando x prximo de zero.
a) f (x) =

1cos(x)
x2

1+x1

c) h(x) = x + 106 103

d) i(x) = 1 + ex 2

b) g(x) =

Dica: Faa y = ex 1

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


1 cos(x)
1
=
x2
2

sin(x/2)
x/2

!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.7.4. Considere a expresso
f (x) =

1 cos(x)
x2

para x pequeno. Verifique que


lim f (x) = 0,5

x0

Depois calcule no Scilab f (x) para x = 105 , x = 106 , x = 107 , x = 108 ,


x = 109 e x = 1010 . Finalmente, faa uma aproximao analtica que
elimine o efeito catastrfico.
E 2.7.5.

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.
E 2.7.6. Na teoria da relatividade restrita, a energia cintica de uma
partcula e sua velocidade se relacionam pela seguinte frmula:

E = mc q

1
1

(v/c)2

1 ,

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

36

Clculo Numrico

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 ?
E 2.7.7. 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=

a b
c d

inversvel e sua inversa dada por

A1 =

ad bc c

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

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 razes de funes
de uma varivel que so continuamente diferenciveis.

3.1

Condio de existncia de razes reais

Podemos utilizar o teorema do valor intermedirio para determinar a


existncia de raiz real em um intervalo.
Teorema 1 (Teorema do Valor Intermedirio). Se f : [a,b] R um funo
contnua e K for um nmero entre f (a) e f (b), ento existe c (a,b) para o
qual f (c) = K.

Figura 3.1: Teorema do valor intermedirio


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

38

Clculo Numrico

Em particular, se f (a) > 0 e f (b) < 0, ento 0 [f (b),f (a)] e podemos


garantir a existncia de c (a,b) tal que f (c) = 0, i.e. existe uma raiz no
intervalo (a,b). A mesma afirmao vlida se f (a) < 0 e f (b) > 0.
Exemplo 37. Mostre que existe pelo menos uma soluo da equao ex =
x + 2 no intervalo (2,0).
De fato, se tomarmos f (x) = ex x 2, ento f (0) = 1 2 < 0 e
f (2) = e2 + 2 2 > 0. Pelo teorema do valor intermedirio, existe
c (2,0) tal que f (c) = 0, ou seja, existe pelo menos uma soluo nesse
intervalo.
Quando procuramos aproximaes para razes de funes, importante
que cada um delas fique isolada em um intervalo. Ou seja, precisamos garantir a existncia e a unicidade da raiz. A existncia vem do teorema do valor
intermedirio e a unicidade vem da monotonicidade da funo.
Teorema 2. Se f : [a,b] R um funo diferencivel, f (a) f (b) < 0 e
f 0 (x) > 0 (ou f 0 (x) < 0) para x (a,b), ento existe uma nica raiz c em
(a,b).
Em outras palavras, se a funo corta o eixo x e sempre crescente (ou
sempre decrescente), ento a raiz nica.
Exemplo 38. Observamos que existe uma nica soluo da equao ex =
x + 2 no intervalo (2,0). A existncia foi estabelecida no exemplo anterior.
Para garantir a unicidade, observe que f 0 (x) = ex 1 e, portanto, f 0 (x) < 0
para x (2,0). Logo a raiz nica.
Podemos inspecionar o comportamento da funo f (x)ex x 2 e de sua
derivada fazendo seus grficos no Scilab. Para tanto, podemos implementar
o seguinte cdigo:
-->x = linspace(-2,0,50);
-->//grafico de f(x)
-->deff('y = f(x)','y=exp(x)-x-2')
-->plot(x,f(x))
-->//graficando a f'(x)
-->deff('y = fl(x)','y=exp(x)-1')
-->plot(x,fl(x))

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

3.2. MTODO DA BISSEO

39

E 3.1.1. Mostre que a equao


ln(x) + x3

1
= 10
x

possui uma nica soluo positiva. Faa o grfico e observe.


E 3.1.2. Use o teorema do valor intermedirio para mostrar que o erro
absoluto ao aproximar a raiz da funo f (x) = ex x 2 por x = 1,841
menor que 103 .
E 3.1.3. Aplique o teorema do valor intermedirio a um intervalo adequado e mostre que o erro absoluto associado aproximao 1,962 para a
soluo exata x de:
ex + sin(x) + x = 10
inferior a 104 .
E 3.1.4. Mostre que a equao
ln(x) + x

1
=v
x

possui uma soluo para cada v real e que esta soluo nica.

3.2

Mtodo da bisseo

Suponha que a funo contnua f : [a,b] R tal que f (a) f (b) < 0, ou
seja, f possui uma raiz no intervalo. Suponha tambm que a raiz nica.
Uma primeira aproximao para a raiz pode ser o ponto mdio p = a+b
. Se
2
f (p) f (a) < 0, ento a raiz est a esquerda de p, se no, a raiz est a direita
de p (veja Fig. 3.2). Depois de escolher o intervalo correto, fazemos uma
nova aproximao para a raiz tomando o ponto mdio do novo intervalo.
Em outras palavras, seja (a(0) ,b(0) ) = (a,b) o intervalo inicial e p(0) =
(0)
a +b(0)
a aproximao inicial. Se f (p(0) ) f (a(0) ) < 0, ento (a(1) ,b(1) ) =
2
(a(0) ,p(0) ), caso contrrio, (a(1) ,b(1) ) = (p(0) ,b(0) ). A nova aproximao para
(1)
(1)
a raiz p(1) = a +b
. Esse procedimento produz uma sequncia p(n) que
2
converge para a raiz.
Exemplo 39. Faa 5 iteraes do mtodo da bisseo para encontrar a raiz
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

40

Clculo Numrico

Figura 3.2: Mtodo da bisseo.


de f (x) = x3 + 5x2 12 utilizando a(0) = 1 e b(0) = 2.
n

a(n)

b(n)

p(n)

a(0) = 1

b(0) = 2

p(0) = 1,5

16

2,625

a(1) = 1

b(1) = p1 = 1,5

p(1) = 1,25

2,625

2,234375

b(2) = 1,5

p(2) = 1,375

2 a(2) = 1,25

f (a(n) ) f (b(n) )

f (p(n) )

3
4
5
No console do Scilab, temos:
-->deff('y=f(x)','y = x^3 + 5*x^2 - 12')
-->//iteracao 0
-->a=1; b=2; p=(a+b)/2;
-->[a,b,p,f(a),f(b),f(p)]
ans =
1.
2.
1.5 - 6.
16.
2.625
-->//iteracao 1
-->b = p; p = (a+b)/2;
-->[a,b,p,f(a),f(b),f(p)]
ans =
1.
1.5
1.25 - 6.
2.625 - 2.234375
Observe que a distncia entre p(0) e a raiz p no pode exceder metade do
. Da mesma forma, o erro absoluto entre
intervalo, ou seja |p(0) p | ba
2
p(1) e p menor que 14 do intervalo, isto , |p(1) p | ba
. De modo geral,
22
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.2. MTODO DA BISSEO

41

o erro absoluto na iterao n estimado por


|p(n) p |

ba
,
2n+1

n 1.

Tambm, se n := |p(n) p |, ento vale:


n+1

1
(n )1
2

e, por isso, dizemos que o mtodo da bisseo possui taxa de convergncia


linear. Um mtodo com taxa de convergncia super-linear satisfaz
n+1 C (n )m ,
onde m > 1 e C uma constante.
Exemplo 40. Determine quantas iteraes so necessrias para encontrar a
raiz de f (x) = x3 + 5x2 12 com uma preciso de 103 , utilizando a(0) = 1
e b(0) = 2.
Observe que precisamos da seguinte desigualdade
|p(n) p |

ba
1
= n+1 103 .
n+1
2
2

Assim,
log2 2(n+1) log2 103
ou seja,
(n + 1) log2 2 3 log2 (10) n + 1 3 log2 (10) 9,97 n 8,97
Portanto, n 9.

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)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

42

Clculo Numrico
N - nmero mximo de iteraes

A varivel de sada :
p - aproximao da raiz de f, i.e. 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
end
end
error ('Num. max. de iter. excedido!')
endfunction

Exerccios
E 3.2.1. Mostre que a equao do problema 3.1.4 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:
f (v + 1) = f (1) +

Z v+1
1

f 0 (x)dx v +

Z v+1

dx = 0.

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.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.2. MTODO DA BISSEO

43

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


funo:
 
x
2
f (x) = 5 sin(x ) exp
10
em intervalos de comprimento 0,1.

E 3.2.3. Utilize o mtodo da bisseo na equao x = cos(x) para


encontrar p(4) em [a,b] = [0, 1].
E 3.2.4. Considere o seguinte problema fsico: uma plataforma est
fixa a uma parede atravs de uma dobradia cujo momento dado por:
= k,
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.5. 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.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.

4
2
E 3.2.7. O polinmio f (x) = x 4x + 4 possui razes duplas em 2 e
2. O mtodo da bisseo pode ser aplicados a f ? Explique.
E 3.2.8. O desenho abaixo mostra um circuito no linear envolvendo
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

44

Clculo Numrico

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


vt = kT
com k, a constante de Boltzmann, T a temperatura de operao e
q
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:
a) V = 30 V e R = 1 k
mboxOmega.
b) V = 3 V e R = 1 k
mboxOmega.
c) V = 3 V e R = 10 k
mboxOmega.
d) V = 300 mV e R = 1 k
mboxOmega.
e) V = 300 mV e R = 1 k
mboxOmega.
f) V = 30 V e R = 1 k
mboxOmega.
g) V = 30 V e R = 10 k
mboxOmega.
Dica: V = RId + vd .

3.3

Iterao de Ponto Fixo

3.3.1

Exemplo Histrico

Vamos analisar o mtodo babilnico para extrao da raiz quadrada de


um nmero positivo A usando operaes de soma, subtrao, diviso e multiplicao.

Seja x > 0 uma aproximao para A, temos trs caso:


x>
x=
x<

A =

A
x

<

A =

A
x

A =

A
x

>




A = A Ax ,x




A = A x, Ax

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

3.3. ITERAO DE PONTO FIXO

45

natural imaginar que uma melhor aproximao para

y=

x+
2

A dada por

A
x

Aplicando esse mtodo repetidas vezes, construmos a seguinte iterao:


A
x(n)
+ (n)
2
2x
= x

x(n+1) =
x(0)

Exemplo 41. A=5, x=2


2,5
x(n)
+ (n)
2
x
= 2

x(n+1) =
x(0)

x(0) = 2
2 2,5
x(1) =
+
= 1 + 1,25 = 2,25
2
2
2,5
2,25
+
= 2,2361111
x(2) =
2
2,25
2,2361111
2,5
+
= 2,236068
x(3) =
2
2,2361111
2,236068
2,5
x(4) =
+
= 2,236068
2
2,236068
Exemplo 42. A=10, x=1
x(n)
5
+ (n)
2
x
= 1

x(n+1) =
x(0)

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

46

Clculo Numrico
x(0) = 1
1 5
x(1) =
+ = 0,5 + 5 = 5,5
2 1
5
5,5
+
= 3,6590909
x(2) =
2
5,5
3,6590909
5
x(3) =
+
2
3,6590909
3,1960051
5
x(4) =
+
2
3,1960051
3,1624556
5
x(5) =
+
2
3,1624556
3,1622777
5
x(6) =
+
2
3,1622777

= 3,1960051
= 3,1624556
= 3,1622777
= 3,1622777

A experimentao numrica sugere que o mtodo funciona, mas trs perguntas devem ser respondidas:
1. Ser que a sequncia convergente?
2. Caso seja convergente, ser que o limite x = limn xn igual a

A?

3. Caso seja convergente, quo rpida a convergncia?


A segunda pergunta a mais fcil de ser respondida:
Supondo que o limite de xn exista, basta substituir na iterao:
A
x(n)
+ lim
n
2
2x(n)

x
A
=
+
2
2x
A
=
2x
A
=
x
= A

=
A

lim x(n+1) =
n
x
x
2
x
(x )2
x

lim
n

Portanto,
sempre que esse mtodo converge, temos a garantia de que o limite

A. (Independente do valor inicial!)


De fato, podemos provar que o mtodo convergente para qualquer valor
inicial positivo x. E, ainda, que a convergncia rpida (ainda precisamos
definir isso).
Para responder essas perguntas, devemos formalizar o conceito de ponto
fixo. Antes disso, analisemos mais um exemplo:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.3. ITERAO DE PONTO FIXO

3.3.2

47

Outro Exemplo

Suponha que queiramos resolver a equao:


xex = 10.
Observamos que o este problema equivalente a resolver:


x = ln

10
x

ou:
x = 10ex
Para tanto, vamos propor os seguintes processos iterativos:

x(n+1) = ln

x(0) = 1

x(n+1) = 10ex , n 0

x(0) = 1

a)

10
x(n)

, n0

e
b)

(n)

O processo a) produz a seguinte sequncia:


x(0) = 1
x(1) = ln (10) = 2,3025851
!
10
(2)
x
= ln
= 1,4685526
2,3025851
!
10
x(3) = ln
= 1,9183078
1,4685526
!
10
(4)
x
= ln
= 1,6511417
1,9183078
..
.
(10)
x
= 1,7421335
(20)
x
= 1,7455151
(30)
x
= 1,745528
(31)
x
= 1,745528
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

48

Clculo Numrico
O processo b) produz a seguinte sequncia:
x(0)
x(1)
x(2)
x(3)
x(4)
x(5)

=
=
=
=
=
=

1
10e1 = 3,6787944
10e3,6787944 = 0,2525340
10e0,2525340 = 7,7682979
10e7,7682979 = 0,0042293
10e0,0042293 = 9,9577961

O experimento numrico sugere que o processo a no convergente e que


o processo b converge para 1,745528.

3.3.3

Ponto fixo

Seja (x) uma funo, dizemos que x D(f ) um ponto fixo de se


(x ) = x
Seja : [a,b] [a,b] um funo real tal que
|(x) (y)| |x y|, < 1.
Ento dita uma contrao e existe um nico ponto x [a,b] tal que
(x ) = x . Alm disso, a sequncia
x(n+1) = (x(n) )
convergente sempre que x0 [a,b] e vale o limite
lim x(n) = x .

Observao 8. A desigualdade |(x) (y)| |x y| implica que (x)


contnua.
Comeamos demonstrando que existe pelo menos um ponto fixo. Para
tal definimos a funo f (x) = x (x) e observamos que
f (a) = a (a) a a = 0
e
f (b) = b (b) b b = 0
Se f (a) = a ou f (b) = b, ento o ponto fixo existe. Caso contrrio, as
desigualdade so estritas e a funo muda de sinal no intervalo. Como a
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.3. ITERAO DE PONTO FIXO

49

funo contnua, pelo teorema do valor intermedirio, existe um ponto x


no intervalo (a,b) tal que f (x ) = 0, ou seja, x (x ) = 0. Observe que x
um ponto fixo de , pois (x ) = x .
Para provar que o ponto fixo nico, observamos que se x e x so
pontos fixos, eles devem ser iguais, pois:
|x x | = |(x ) (x )| |x x |
A desigualdade |x x | |x x | com < 1 implica |x x | = 0.

Para demonstrar a convergncia da sequncia, observamos a seguinte relao


|x(n+1) x | = |(x(n) ) x | = |(x(n) ) (x )| |x(n) x |.
Agora observamos que
|x(n) x | |x(n1) x | 2 |x(n2) x | n |x(0) x |.
Portanto
lim |x(n) x | = 0

e
lim x(n) = x

Observaes:
A condio |(x) (y)| |x y| satisfeita sempre que |0 (x)|
< 1 em todo o intervalo pois

Z y


0 (s)ds

|(x)(y)| =

Z y

|0 (s)|ds

Z y

ds = |xy|, x < y.

A desigualdade estrita < 1 necessria.


A condio f ([a,b]) [a,b] necessria.

3.3.4

Teste de convergncia

Seja : [a,b] uma funo C 0 [a,b] e x (a,b) um ponto fixo de . Ento


x dito estvel se existe uma regio (x ,x +) chamada bacia de atrao
tal que x(n+1) = (x(n) ) convergente sempre que x(0) (x ,x + ).
Teorema: Se C 1 [a,b] e |0 (x )| < 1, ento x estvel. Se |0 (x )| > 1
instvel e o teste inconclusivo se |0 (x )| = 1.

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

50

Clculo Numrico

Exemplo 43. Considere o problema de encontrar a soluo da equao algbrica


cos(x) = x
vendo-a como o ponto fixo da funo
f (x) = cos(x).
Mostraremos que o teorema do ponto fixo se aplica a esta funo com
[a,b] = [1/2,1].
Precisamos provar:
1. f ([1/2,1]) [1/2,1];
2. |f 0 (x)| < , < 1, x [1/2,1].
Para provar o item 1, observamos que f (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 2, observamos que
f 0 (x) = sin(x)
Da mesma forma, temos a estimativa:
0,85 < sin(1) sin(x) sin(1/2) < 0,47
Assim, |f 0 (x)| < 0,85 temos a desigualdade com = 0,85 < 1.
Agora, observamos o comportamento numrico da sequncia:

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

x(0) = 1

Os primeiros termos podem ser calculados numericamente e so dados


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

3.3. ITERAO DE PONTO FIXO

51

por:
x(1)
x(2)
x(3)
x(4)
x(5)
x(6)
x(7)
x(8)
x(9)
x(10)
x(11)
x(12)
x(13)
x(41)
x(42)
x(43)

3.3.5

=
=
=
=
=
=
=
=
=
=
=
=
=
..
.
=
=
=

cos(x0 ) = cos(1) = 0,5403023


cos(x1 ) = cos(0,5403023) = 0,8575532
cos(x2 ) = cos(0,8575532) = 0,6542898
cos(x3 ) = cos(0,6542898) = 0,7934804
cos(x4 ) = cos(0,7934804) = 0,7013688
cos(x5 ) = cos(0,7013688) = 0,7639597
cos(x6 ) = cos(0,7639597) = 0,7221024
cos(x7 ) = cos(0,7221024) = 0,7504178
cos(x8 ) = cos(0,7504178) = 0,7314040
cos(x9 ) = cos(0,7314040) = 0,7442374
cos(x10 ) = cos(0,7442374) = 0,7356047
cos(x11 ) = cos(0,7356047) = 0,7414251
cos(x12 ) = cos(0,7414251) = 0,7375069
cos(x40 ) = cos(0,7390852) = 0,7390851
cos(x41 ) = cos(0,7390851) = 0,7390851
cos(x42 ) = cos(0,7390851) = 0,7390851

Estabilidade e convergncia

A fim de compreendermos melhor os conceitos de estabilidade e convergncia, considere uma funo (x) com um ponto fixo x = (x ) e analisemos o seguinte processo iterativo:


x(n+1) = x(n)

x(0) = x
Vamos supor que a funo (x) pode ser aproximada por seu polinmio de
Taylor em torno do ponto fixo:


(x) = (x ) + (x x )0 (x ) + O (x x )2 , n 0


= x + (x x )0 (x ) + O (x x )2

x + (x x )0 (x )
Substituindo na relao de recorrncia, temos


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


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

52

Clculo Numrico

Ou seja:


x(n+1) x (x(n) x )0 (x )

Tomando mdulos, temos:





(n+1)
x
x
|
{z
}

n+1

x(n) x |0 (x )| ,
{z
n

onde n = x(n) x .
Concluses:
Se |0 (x )| < 1, ento, a distncia de x(n) at o ponto fixo x est
diminuindo a cada passo.
Se |0 (x )| > 1, ento, a distncia de x(n) at o ponto fixo x est
aumentando a cada passo.
Se |0 (x )| = 1, ento, nossa aproximao de primeiro ordem no
suficiente para compreender o comportamento da sequncia.
Fixaremos, portanto, nos casos quando |0 (x )| < 1.

3.3.6

Erro absoluto e tolerncia

Na prtica, quando se aplica uma iterao como esta,


no se conhece de

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

x(N +k+1) x(N +k)

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

3.3. ITERAO DE PONTO FIXO

53

Usamos tambm as expresses:


x(n+1) x + (x(n) x )0 (x )
x(n) x + (x(n1) x )0 (x )
Subtraindo uma da outra, temos:
x(n+1) x(n) (x(n) x(n1) )0 (x )
Portanto:
k

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


E temos:

x x

(N )


X

x(N +k+1) x(N +k)

k=0

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

k=0

= (x(N +1) x(N ) )

1
, |0 (x )| < 1
1 0 (x )

Tomando mdulo, temos:




x

x(N ) x(N +1) x(N )


N

1
1 0 (x )

N
1 0 (x )

Concluses: Tendo em mente a relao x(n+1) x(n) (x(n) x(n1) )0 (x ),


conclumos:
Quando 0 (x ) < 0, o esquema alternante e o erro N pode ser estimado diretamente da diferena N .
Quando 0 (x ) > 0, o esquema montono e 110 (x ) > 1, pelo que o
erro N maior que a diferena N . A relao ser to mais importante
quando mais prximo da unidade for 0 (x ), ou seja, quando mais lenta
for a convergncia.
Como 0 (x )

x(n+1) x(n)
,
x(n) x(n1)

temos
|0 (x )|

n
n1

e portanto
N

N
.
n
1 n1

Observao 9. Deve-se exigir que n < n1


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

54

Clculo Numrico

Exerccios
E 3.3.1. Mostre que a equao:
cos(x) = x
possui uma nica soluo no intervalo [0, 1]. Encontre uma aproximao para
esta soluo com 4 dgitos significativos.
E 3.3.2. Verifique (analiticamente) que a nica soluo real da equao:
xex = 10
ponto fixo das seguintes funes:
a) (x) = ln

10
x

b) (x) = x

xex 10
15

c) (x) = x

xex 10
10+ex

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


comportamento. Discuta os resultados com base na teoria estudada.
E 3.3.3. Verifique (analiticamente) que a nica soluo real da equao:
cos(x) = x
ponto fixo das seguintes funes:
a) (x) = cos(x)
b) (x) = 0,4x + 0,6 cos(x)
c) (x) = x +

cos(x)x
1+sin(x)

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


comportamento.Discuta os resultados com base na teoria estudada.
E 3.3.4. Encontre a soluo de cada equao com erro absoluto inferior
a 106 .
a) ex = x + 2 no intervalo (2,0).
b) x3 + 5x2 12 = 0 no intervalo (1,2).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.3. ITERAO DE PONTO FIXO


c)

55

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

E 3.3.5. Encontre numericamente as trs primeiras razes positivas da


equao dada por:
x
cos(x) =
10 + x2
com erro absoluto inferior a 106 .
2

E 3.3.6. Calcule uma equao da reta tangente a curva y = e(x1) que


passa pelo ponto (3, 1/2).
E 3.3.7. Resolva numericamente a inequao:
2

ex < 2x
E 3.3.8. Considere os seguintes processos iterativos:

x(n+1) = cos(x(n) )
x(1) = .5

(3.1)

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


x(1) = .5

Use o teorema do ponto fixo para verificar que cada um desses processos
converge para a soluo da equao x de cos(x) = x. Observe o comportamento numrico dessas sequncias. Qual estabiliza mais rpido com cinco
casas decimais? Discuta.
Dica: Verifique que cos([0.5,1]) [0.5,1] e depois a mesma identidade
para a funo f (x) = .4x + .6 cos(x).
E 3.3.9. Use o teorema do ponto fixo aplicado a um intervalo adequado
para mostrar que a funo (x) = ln(100 x) possui um ponto fixo estvel.
E 3.3.10. Na hidrulica, o fator de atrito de Darcy dado pela implicitamente pela equao de Colebrook-White:
1

2.51
= 2 log10
+
14.8Rh Re f
f

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

56

Clculo Numrico

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

(n+1)

= 2 log10

2.51x(n)
+
14.8Rh
Re

E 3.3.11. Encontre uma soluo aproximada para equao algbrica


180 100x = 0.052 sinh1 (1013 x)
com erro absoluto inferior a 103 usando um mtodo iterativo. Estime o erro
associado ao valor de v = 180 100x = 0.052 sinh1 (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.

Considere o seguinte esquema iterativo:

x(n+1) = xn + q n

x(0) = 0

onde q = 1 106 .
a) Calcule o limite
x = lim x(n)
n

analiticamente.
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)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.3. ITERAO DE PONTO FIXO

57

c) Qual deve ser a tolerncia especificada para obter o resultado com erro
relativo inferior a 102 ?
E 3.3.14.

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
convergindo 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.
a) Use o teorema do ponto fixo para mostrar que a funo (x) = 1sin(x)
1
possui um nico ponto fixo estvel o intervalo [ 10
,1]. Construa um
(n+1)
(n)
mtodo iterativo x
= (x ) para encontrar esse ponto fixo. Use
o Scilab para encontrar o valor numrico do ponto fixo.
b) Verifique que funo (x) = 12 [x + 1 sin(x)] possui um ponto fixo x
que tambm o ponto fixo da funo do item a. Use o Scilab 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)
a) Considere a funo (x) e funo composta (x) = = ((x)).
Verifique todo ponto fixo de tambm ponto fixo de .
b) Considere a funo
(x) = 10 exp(x)
e funo composta (x) = = ((x)). Mostre que possui dois
pontos fixos que no so pontos fixos de .
c) No problema anterior, o que acontece quando o processo iterativo x(n+1) =
(x(n) ) inicializado com um ponto fixo de que no ponto fixo de
?
E 3.3.17. 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.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

58

Clculo Numrico
E 3.3.18. 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 . Que relao voc encontra com
o mtodo de Newton?
E 3.3.19. Considere o problema da questo 3.2.8 e dois seguintes esquemas iterativos.
A

I (n+1) =

I (0) = 0

1
R

i

V vt ln 1 +

I (n)
IR

1 ,n > 0

,n > 0

e
B

I (n+1) = IR exp

I (0) = 0

V RI (n)
vt

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

Consideramos o problema de encontrar as razes da equao


f (x) = 0
onde f (x) C 1 atravs do mtodo do ponto fixo. Para tal, observamos que
um nmero real x raiz de f (x) se e somente se x um ponto fixo da
funo
(x) = x + (x)f (x), (x) 6= 0
Aqui (x) uma funo que ser escolhida com base nos critrios de convergncia do processo iterativo.
A derivada de (x) vale
0 (x) = 1 + (x)f 0 (x) + 0 (x)f (x)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.4. MTODO DE NEWTON-RAPHSON

59

no ponto x , temos
0 (x ) = 1 + (x )f 0 (x ) + 0 (x )f (x )
como f (x ) = 0, temos
0 (x ) = 1 + (x )f 0 (x )
Sabemos que o processo iterativo converge to mais rpido quanto menor for 0 (x) nas vizinhanas de x , portanto, supomos que f 0 (x ) 6= 0 e
escolhemos (x ) de forma que
0 (x ) = 0,
ou seja
(x ) =

1
f 0 (x )

Observe que x raiz de f (x) se, e somente se x ponto fixo de


(x) = x

f (x)
f 0 (x)

e 0 (x ) = 0 < 1. Portanto, o teorema do ponto fixo garante que se x(0) for


suficientemente prximo a x , ento o processo iterativo dado por
x(n+1) = x(n)

f (x(n) )
f 0 (x(n) )

converge para x , desde que f 0 (x(n) ) 6= 0 para todo n N.

3.4.1

Interpretao Geomtrica

Considere o problema de calcular a raiz uma funo f , conforme esboo


na figura abaixo

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

60

Clculo Numrico

Queremos calcular x(1) em funo de x(0) sabendo que o corte da reta


tangente em x(0) com o eixo x. A equao da reta que passa por (x(0) , f (x(0) )
e tangente a curva em x(0) tem inclinao m = f 0 (x(0) ) e sua equao
y f (x(0) ) = f 0 (x(0) )(x x(0) ).
Sabendo que essa reta passa por (x(1) ,0), temos:
0 f (x(0) ) = f 0 (x(0) )(x(1) x(0) ).
Portanto,
x(1) = x(0)

f (x(0) )
f 0 (x(0) )

que uma iterao do mtodo de Newton. Repetimos o processo para calcular


x(2) , x(3) ,.... De modo geral, temos:
x(n+1) = x(n)

3.4.2

f (x(n) )
.
f 0 (x(n) )

Anlise de convergncia

Seja f (x) um funo com derivada e derivada segunda contnuas tal que
f (x ) = 0 e f 0 (x ) 6= 0. Seja tambm a funo (x) definida como
(x) = x

f (x)
f 0 (x)

Expandimos em srie de Taylor em torno de x e obtermos:


(x) = (x ) + (x x )0 (x ) + (x x )2



00 (x )
+ O (x x )3
2

Sabemos que
f (x )
= x
f 0 (x )
f 0 (x )f 0 (x ) f (x )f 00 (x )
0 (x ) = 1
=11=0
(f 0 (x ))2
(x ) = x

Portanto:

00
2 (x )

(x) = x + (x x )

+ O (x x )3

2
00

(x
)
x + (x x )2
.
2

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

3.4. MTODO DE NEWTON-RAPHSON

61

Logo,
x(n+1) = (x(n) )
x + (x(n) x )2

x(n+1) x

00 (x )
2

(x(n) x )2

00 (x )
2

Observao 10. Pode-se mostrar facilmente que


00 (x ) =

f 00 (x )
f 0 (x )

Exerccios
E 3.4.1. 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
pequenos intervalos. Use a teoria estudada em aula para argumentar
quanto existncia e unicidade das razes dentro intervalos escolhidos.
b) Calcule o nmero de iteraes necessrias para que o mtodo da bisseo aproxime cada uma das razes com erro absoluto inferior a 108 .
Calcule as razes por este mtodo usando este nmero de passos.
c) Calcule cada uma das razes pelo mtodo de Newton com oito dgitos
significativos e discuta a convergncia comparando com o item b).
Obs: Alguns alunos encontraram como soluo x1 1,5707963 e x2
4,7123890. O que eles fizeram de errado?

Exerccios
E 3.4.2. Considere a equao
2

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

62

Clculo Numrico

trace o grfico com auxlio do Scilab 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.)
E 3.4.3. 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.4. 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

x
+ x4 + 3x + 1
E 3.4.5. Encontre as razes reais do polinmio f (x) = 100
isolando-as pelo mtodo do grfico e depois usando o mtodo de Newton.
Expresse a soluo com 7 dgitos significativos.

E 3.4.6. 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.7. 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.8. 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.9. Aplique o mtodo de Newton funo f (x) = x1 u e construa um esquema computacional para calcular a inversa de u com base em
operaes de multiplicao e soma/subtrao.
E 3.4.10. Aplique o mtodo de Newton funo
f (x) = xn A e

n
construa um esquema computacional para calcular A para A > 0 com base
em operaes de multiplicao e soma/subtrao.
E 3.4.11. Considere a funo dada por
(x) = ln (15 ln(x))
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.5. MTODO DAS SECANTES

63

definida para x > 0


a) (1.5) Use o teorema do ponto fixo para provar que se x0 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
resposta com 5 algarismos significativos corretos.
b) (1.0) Construa a iterao do mtodo de Newton para encontrar x , explicitando a relao de recorrncia e iniciando com x0 = 2. Use o Scilab
para obter a raiz e expresse a resposta com oito dgitos significativos
corretos.

3.5

Mtodo das Secantes

O Mtodo das Secantes semelhante ao Mtodo de Newton. Neste mtodo a derivada f 0 (x) aproximada pela declividade de um reta secante
curva:
f (x + x) f (x)
f 0 (x)
x
Assim, em cada passo do mtodo, calcula-se uma nova aproximao com
base em duas aproximaes anteriores:
f (x(n) )
f (x(n) ) f (x(n1) )
,
m=
m
x(n) x(n1)
Exemplo 44. Encontre as razes de f (x) = cos(x) x.
x(n+1) = x(n)

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)

x(n+1)

m
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

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

64

Clculo Numrico

3.5.1

Anlise de convergncia

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

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

Esta expresso pode ser escrita como:


x(n+1) = x(n)

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


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) )
x(n) f (x(n1) ) x(n1) f (x(n) )
=
f (x(n) ) f (x(n1) )
Subtraindo x de ambos os lados temos:
x(n+1) x =

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


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

n f (x + n1 ) n1 f (x + n )
f (x + n ) f (x + n1 )

Aproximamos a funo f (x) no numerador por

2f

f (x + ) f (x ) + f (x ) + 
f (x + ) f 0 (x ) + 2

00

(x )
2

f 00 (x )
2

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

3.5. MTODO DAS SECANTES

n+1

n n1 f 0 (x ) + 2n1 f

65

00 (x )

n1 n f 0 (x ) + 2n f

00 (x )

f (x + n ) f (x + n1 )
f 00 (x )
2
f (x +

n 2n1 n1 2n

n ) f (x + n1 )

1 f 00 (x )n n1 (n1 n )


=
2 f (x + n ) f (x + n1 )
Observamos, agora, que
f (x + n ) f (x + n1 ) [f (x ) + f 0 (x )n ] [f (x ) + f 0 (x )n1 ]
(3.2)
= f 0 (x )(n n1 )
Portanto:
n+1

1 f 00 (x )
n n1
2 f 0 (x )

(3.3)

ou, equivalentemente:
x(n+1) x



1 f 00 (x )  (n)

(n1)

x
x

x
2 f 0 (x )

(3.4)

Pode-se mostrar que


|x(n+1) x | M |x(n) x | , n grande

com =

5+1
2

(3.5)

1,618 e M uma constante.

Observao 11. 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 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.5.1. Refaa as questes 3.4.2, 3.4.3, 3.4.4 e 3.4.5, usando o mtodo
das secantes.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

66

Clculo Numrico

Tabela 3.1: Quadro comparativo.


Mtodo
Bisseo

Convergncia

Erro

Critrio de parada

Linear

1
n+1 = 
2

bn an
< erro
2

(p = 1)

Iterao
linear

Newton

Linear

n+1 | (x )|n

(p = 1)

Quadrtica

1 f 00 (x )
0 2n
2 f (x )

n+1

5+1
p =
2
1,618

|n |
1 n

< erro

n1

n < n1

(p = 2)

Secante

n+1

00
f (x )
0 n n1
f (x )

|n | < erro

|n | < erro

M n

E 3.5.2. D uma interpretao geomtrica ao mtodo das secantes. Qual


a vantagem do mtodo das secantes sobre o mtodo de Newton?
E 3.5.3. Aplique o mtodo das secantes para resolver a equao
2

ex = 2x
E 3.5.4. Refaa o problema 3.2.8 usando o mtodo de Newton e das
secantes.

Exerccios finais
E 3.5.5. 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.5. MTODO DAS SECANTES

67

para j grande. Use o mtodo de Newton para encontrar uma aproximao


melhor para zj .
E 3.5.6. A corrente eltrica, I, em Ampres em uma lmpada em funo
da tenso eltrica, V , dada por
V
I=
150


0.8

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.5.7. (Bioqumica) A concentrao sangunea de um medicamente
modelado 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.5.8. 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

68

Clculo Numrico
Ano

populao

1960

70992343

1970

94508583

1980 121150573
1991 146917459
Use esses parmetros para calcular a populao em 1980 e compare com
o valor do censo.
E 3.5.9. 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.5.10. 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.5.11. Encontre com 6 casas decimais o ponto da curva y = ln x mais
prximo da origem.
E 3.5.12. 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.5.13. O valor de R$110.000,00 financiado conforme a seguinte
programa de pagamentos:
Ms pagamento
1

20.000,00

20.000,00

20.000,00

19.000,00

18.000,00

17.000,00

7
16.000,00
Calcule a taxa de juros envolvida. A data do emprstimo o ms zero.
E 3.5.14.

Depois de acionado um sistema de aquecedores, a temperaLicena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

3.5. MTODO DAS SECANTES

69

tura 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
durante o qual a temperatura permanece pelo menos 20% superior ao
valor de equilbrio.
E 3.5.15. Encontre os pontos onde a elipse que satisfaz
intersepta a parbola y = x2 2.

x2
3

+ y2 = 1

E 3.5.16. Encontre a rea do maior retngulo que possvel inscrever


2
entre a curva ex (1 + cos(x)) e o eixo y = 0.
E 3.5.17.
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 .
E 3.5.18. A presso de saturao (em bar) de um dado hidrocarboneto
pelo ser modelada pela equao de Antoine:


ln P sat = A

B
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

70

Clculo Numrico
Hidrocarboneto

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 Nheptano presso de 1.2bar quando as fraes molares dos gases so
z1 = z2 = 0.5. Para tal utilize a seguinte equao:
P =

zi Pisat

b) Calcule a temperatura de orvalho de uma mistura de N-pentano e Nheptano presso de 1.2bar quando as fraes molares dos gases so
z1 = z2 = 0.5. Para tal utilize a seguinte equao:
X zi
1
=
sat
P
i Pi

E 3.5.19. 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
Neste parte de nosso curso, estamos interessados em tcnicas para resoluo de sistemas de equaes algbricas lineares.
Trataremos de sistemas de equaes algbricas lineares da seguinte forma:
a11 x1 + a12 x2 + + a1n xn = y1
a21 x1 + a22 x2 + + a2n xn = y2
..
.
am1 x1 + am2 x2 + + amn xn = ym

Observe que m o nmero de equaes e n o nmero de incgnitas. Podemos escrever este problema na forma matricial
Ax = y
onde

a11

a21
A=
.
..

a12

a22
..
.

..
.

am1 am2

a1n

a2n

..
.
amn

x1

x2

x= .

..

xn

y1

y2

y= .

..

ym

Daremos mais ateno ao caso m = n, isto , quando a matriz A que


envolvia no sistema linear quadrada.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

72

Clculo Numrico

4.1

Eliminao gaussiana com pivoteamento


parcial

Lembramos que algumas operaes feitas nas linhas de um sistema no


alteram a soluo:
1. Multiplicao de um linha por um nmero
2. Troca de uma linha por ela mesma somada a um mltiplo de outra.
3. Troca de duas linhas.
O processo que transforma um sistema em outro com mesma soluo,
mas que apresenta uma forma triangular chamado eliminao Gaussiana.
A soluo do sistema pode ser obtida fazendo substituio regressiva.
Exemplo 45 (Eliminao Gaussiana sem pivotamento parcial). Resolva o
sistema:

x+y+z =1

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

Soluo. Escrevemos a matriz completa do sistema:

1 1

2 1 1 0
2 2

0 1 3 2

0 0 1 1

Encontramos z = 1, ou seja, z = 1. Substitumos na segunda equao e


temos y 3z = 2, ou seja, y = 1 e, finalmente x + y + z = 1, resultando
em x = 1.

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 46 (Eliminao Gaussiana com pivotamento parcial). Resolva o
sistema:

x+y+z =1

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

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

4.1. ELIMINAO GAUSSIANA COM PIVOTEAMENTO PARCIAL 73


Soluo. Escrevemos a matriz completa do sistema:

1 1

2 1 1 0
2 2

2 1 1 0

1 1

2 2

1 0

0 1/2 3/2 1

0 1
2 1

1 0

1
1

0 1/2 3/2 1

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

Exemplo 47. Resolva o seguinte sistema por eliminao gaussiana com pivotamento parcial.

0 2 2 x
1 2 1
1 1 1

y
z

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

74

Clculo Numrico

Soluo. Construmos a matriz completa:

0 2 2 8

1 2 1 9

1 1 1 6

1 2 1 9

0 2 2 8

1 1 1 6

1 2 1 9

0 2 2 8

0 0 1 1

1 2 0 8

0 2 0 6

0 0 1 1

0 1 0 3

1 0 0 2

0 2 0 6

0 0 1 1

Portanto x = 2, y = 3 e z = 1.

Exemplo 48 (Problema com elementos com grande diferena de escala).

2 x

Executamos a eliminao gaussiana sem pivotamento parcial para 6= 0 e


|| << 1:

2
4
2 4

1 3
0 2 3 4
Temos
y=

3 4/
2/

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

4.1. ELIMINAO GAUSSIANA COM PIVOTEAMENTO PARCIAL 75


e
x=

4 2y

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


pequeno:
3 4/
3 4
4
= 2

= 2, quando 0.
2/
2
2

y=

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


x=

4 2y
2
= (2 y)

Assim, quando pequeno, a primeira expresso, implementado em um


sistema de ponto flutuante de acurcia finita, produz y = 2 e, consequentemente, a expresso para x produz x = 0. Isto , estamos diante um problema
de cancelamento catastrfico.
Agora, quando usamos a Eliminao Gaussiana com pivotamento parcial,
fazemos uma permutao de linhas de forma a escolher o maior piv a cada
passo:

2 4

1 3

1 3

2 4

0 2

4 3

Continuando o procedimento, temos:


y=

4 4
2 2

e
x = 3 y
Observe que tais expresses so analiticamente idnticas s anteriores,
no entanto, 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

76

Clculo Numrico
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 pivoteamento parcial (no use o computador para resolver essa questo).
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

2 1

1 1

A=
1 2

usando eliminao Gaussiana com pivotamento parcial.


E 4.1.4. Demonstre que se ad 6= bc, ento a matriz A dada por:

A=

a b
c d

inversvel e sua inversa dada por:

A1 =

1
d b

.
ad bc c a

E 4.1.5. Considere as matrizes

0 0 1

A=

0 1 0

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

4.1. ELIMINAO GAUSSIANA COM PIVOTEAMENTO PARCIAL 77


e

E=

e o vetor

1 1 1

1 1 1

1 1 1

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
xi1 + 2.5xi xi+1 = e
2x5 x4 = 0

(i3)2
20

2i4

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 2

1 1 4

a) Usando Eliminao Gaussiana com pivotamento parcial mo.


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

78

Clculo Numrico
b) Usando a rotina gausspp().
c) Usando a rotina inv() do Scilab.

4.2

Condicionamento de sistemas lineares

Quando lidamos com matrizes no corpo do nmeros reais (ou complexos),


existem apenas duas alternativas: i) a matriz inversvel; ii) a matriz no
inversvel e, neste caso, chamada de matriz singular. Ao lidarmos em aritmtica de preciso finita, encontramos uma situao mais sutil: alguns problema lineares so mais difceis de serem resolvidos, pois os erros de arredondamento se propagam 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 49. Observe que o problema

71x + 41y = 100

x + 30y = 70

51,95122.
impossvel quando = 7130
41
Agora, verifique o que acontece quando resolvemos os seguintes sistemas
lineares:

71x + 41y = 100


71x + 41y = 100
e

52x + 30y = 70
51x + 30y = 70
A soluo do primeiro problema x = 65 e y = 115. J para o segundo
e y = 10
.
problema x = 10
3
3
Igualmente, observe os seguintes dois problemas:

71x + 41y = 100

52x + 30y = 70

71x + 41y = 100,4

52x + 30y = 69,3

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

4.2. CONDICIONAMENTO DE SISTEMAS LINEARES

79

A soluo do primeiro problema x = 65 e y = 115 e do segundo problema


x = 85,35 e y = 150,25.
Observe que 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-condicionados.
Para introduzir essa ideia formalmente, precisamos definir o nmero de
condicionamento. Informalmente falando, o nmero de condicionamento
mede o quanto a soluo de um problema em funo de alteraes nos dados de entrada. Para construir matematicamente este conceito, precisamos
de uma medida destas variaes. Como tanto os dados de entrada como os
dados de sada so expressos na forma vetorial, precisaremos do conceito de
norma vetorial. Por isso, faremos uma breve interrupo de nossa discusso para introduzir as definies de norma de vetores e matrizes na prxima
seo.

4.2.1

Norma Lp de vetores

Definimos a norma Lp ou Lp de um vetor em Rn para p 1 como


kvkp = (|v1 |p + |v2 |p + |vn |p )1/p
E a norma L ou L como
n

kvk = max |vj |


j=1

Propriedades: Se um real (ou complexo) e u e v so vetores, temos:


kvk
kvk
ku + vk
lim kukp

=
=

0 v = 0
||kvk
kuk + kvk (desigualdade do tringulo)
kuk

Exemplo: Calcule a norma L1 , L2 e L de

v=

3
0

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

80

Clculo Numrico

kvk1 = 1 + 2 + 3 + 0 = 6

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

4.2.2

Norma matricial

Definimos a norma operacional em Lp de uma matriz A : Rn Rn 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
kAkp
kA + Bkp
kAvkp
kABkp
kIkp
1

=
=

=
=

0 A = 0
||kAkp
kAkp + kBkp (desigualdade do tringulo)
kAkp kvkp
kAkp kBkp
1
kIkp = kAA1 kp kAkp kA1 kp (se A inversvel)

Casos especiais:
n

kAk1 = max

n
X

j=1

kAk2 =

|Aij |

i=1

max{|| : (AA )}

kAk = max
i=1

n
X

|Aij |

j=1

onde (M ) o conjunto de autovalores da matriz M .


Exemplo: Calcule as normas 1, 2 e da seguinte matriz:

A= 1

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

4.2. CONDICIONAMENTO DE SISTEMAS LINEARES

81

Soluo
kAk1 = max{12,8,18} = 18
kAk = max{15,7,16} = 16
kAk2 =

4.2.3

max{0,5865124; 21,789128; 195,62436} = 13,986578

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, ou seja, se o sistema
Ax = y
possui uma soluo x para o vetor y, quando varia a soluo x quando o dado
de entrado y varia. Consideramos, ento, o problema
A(x + x ) = y + y
Aqui x representa a variao em x e y representa a respectiva variao em
y. Temos:
Ax + Ax = y + y
e, portanto,
Ax = y .
Queremos avaliar a magnitude do erro relativo em y, representado por
ky k/kyk em funo da magnitude do erro relativo kx k/kxk.
kx k kyk
kx k/kxk
=
ky k/kyk
kxk ky k
kA1 y k kAxk
=
kxk ky k
kA1 kky k kAkkxk

kxk
ky k
1
= kAkkA k
Assim, definimos o nmero de condicionamento de uma matriz inversvel
A como
kp (A) = kAkp kA1 kp
O nmero de condicionamento, ento, mede o quo instvel resolver o
problema Ax = y frente a erros no vetor de entrada x.
Obs: O nmero de condicionamento depende da norma escolhida.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

82

Clculo Numrico

Obs: O nmero de condicionamento da matriz identidade 1.


Obs: O nmero de condicionamento de qualquer matriz inversvel igual
ou maior que 1.

Exerccios
E 4.2.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.2.2. Calcule o nmero de condicionamento da matriz

A=

nas normas 1, 2 e .
E 4.2.3. Calcule o nmero de condicionamento das matrizes

71 41
52 30

1 2 3

2 3 4
4 5 5

usando as normas 1,2 e .


E 4.2.4. Usando a norma 1, calcule o nmero de condicionameto da
matriz

1
2

A=

2+ 4
em funo de quando 0 < < 1. Interprete o limite 0.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

4.3. MTODOS ITERATIVOS PARA SISTEMAS LINEARES

83

E 4.2.5. Considere os sistemas:

100000x 9999.99y = 10
9999.99x + 1000.1y

= 1

100000x 9999.99y = 9.999


9999.99x + 1000.1y

= 1.01

Encontre a soluo de cada um e discuta.


E 4.2.6. Considere os vetores de 10 entradas dados por
(j/10)3
zj = j/10
, j = 1, . . . ,10
6

xj = sin(j/10), yj = j/10

Use o Scilab para construir os seguintes vetores de erro:


ej =

|xj yj |
|xj |

fj =

|xj zj |
xj

Calcule as normas 1, 2 e de e e f

4.3
4.3.1

Mtodos iterativos para sistemas lineares


Mtodo de Jacobi

Considere o problema Ax = y, ou seja,


a11 x1 + a12 x2 + + a1n xn = y1
a21 x1 + a22 x2 + + a2n xn = y2
..
..
.
.
.
= ..
an1 x1 + an2 x2 + + ann xn = yn
Os elementos xj so calculados iterativamente conforme:
(k+1)

x1

(k+1)

x2

=
=

(k)

(k)
a21 x1

a11

+ + a2n x(k)
n

y1 a12 x2 + + a1n x(k)


n
y2

a22

..
.


x(k+1)
=
n

(k)

(k)

y2 an1 x1 + + an(n1) xn1

ann

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

84

Clculo Numrico
Em notao mais compacta, o mtodo de Jacobi consiste na iterao:
x(0) = aprox. inicial
yi
(k)
xi

n
X

(k)

aij xj

j=1
j6=i

aii

Exemplo: Resolva o sistema

10x + y = 23

x + 8y = 26

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


23 y (k)
10
26 x(k)
=
8

x(k+1) =
y (k+1)

23 y (0)
= 2,3
10
26 x(0)
=
= 3,25
8

x(1) =
y (1)

23 y (1)
= 1,975
10
26 x(1)
=
= 2,9625
8

x(2) =
y (2)

Cdigo Scilab: Jacobi

4.3.2

Mtodo de Gauss-Seidel

Considere o problema Ax = y, ou seja,


a11 x1 + a12 x2 + + a1n xn = y1
a21 x1 + a22 x2 + + a2n xn = y2
..
..
.
.
.
= ..
an1 x1 + a22 x2 + + ann xn = yn
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

4.3. MTODOS ITERATIVOS PARA SISTEMAS LINEARES

85

Os elementos xj so calculados iterativamente conforme:


(k+1)

x1

(k+1)

y2

x2

(k)

a11
(k+1)
a11 x1
+

y1 a12 x2 + + a1n x(k)


n

+ a1n xn(k)

a22

..
.


(k+1)

y2 an1 x1

x(k+1)
=
n

(k+1)

+ + an(n1) xn1

Ann

Em notao mais compacta, o mtodo de Gauss-Seidel consiste na iterao:


x(0) = aprox. inicial
yi
(k)

xi

i1
X

(k+1)

aij xj

j=1

n
X

(k)

aij xj

j=i+1

aii

Exemplo: Resolva o sistema

10x + y = 23

x + 8y = 26

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


x

(k+1)

y (k+1)

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

x(1) =
y (1)

23 y (1)
= 2,00375
10
26 x(2)
=
= 2,9995312
8

x(2) =
y (2)

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

86

Clculo Numrico

Cdigo Scilab: Gauss-Seidel

4.4

Anlise de convergncia

Uma condio suficiente porm no necessria para que os mtodos de


Gauss-Seidel e Jacobi convirjam a que a matriz seja diagonal dominante
estrita. Veja [3].

Exerccios
E 4.4.1. Considere o problema de 5 incgnitas e cinco equaes dado
por
x1 x2
x1 + 2x2 x3
x2 + (2 + )x3 x4
x3 + 2x4 x5
x4 x5

=
=
=
=
=

1
1
1
1
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 o comando A\b.
c) Obtenha o vetor incgnita x com = 103 usando Jacobi com tolerncia 102 . Compare o resultado com o resultado obtido no item d.
d) Obtenha o vetor incgnita x com = 103 usando Gauss-Seidel com
tolerncia 102 . Compare o resultado com o resultado obtido no item
d.
e) Discuta com base na relao esperada entre tolerncia e exatido conforme estudado na primeira rea para problemas de uma varivel.
E 4.4.2. Resolva o seguinte sistema pelo mtodo de Jacobi e GaussSeidel:

5x1 + x2 + x3
= 50

x1 + 3x2 x3

= 10

x1 + 2x2 + 10x3 = 30

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

4.5. MTODO DA POTNCIA PARA CLCULO DE AUTOVALORES


87
Use como critrio de paragem tolerncia inferior a 103 e inicialize com x0 =
y 0 = z 0 = 0.
E 4.4.3. Refaa a questo 4.1.6 construindo um algoritmo que implemente os mtodos de Jacobi e Gauss-Seidel.
E 4.4.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.1)

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 .
E 4.4.5. Resolva o problema 4.5.5 pelos mtodos de Jacobi e GaussSeidel.
E 4.4.6. 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.5

Mtodo da potncia para clculo de autovalores

Consideremos uma matriz A Rn,n diagonalizvel, isto , existe um


conjunto {vj }nj=1 de autovetores de A tais que qualquer elemento x Rn pode
ser escrito como uma combinao linear dos vj . Sejam {j }nj=1 o conjunto de
autovalores associados aos autovetores tal que um deles seja dominante, ou
seja,
|1 | > |2 | |3 | |n | > 0
Como os autovetores so LI, todo vetor x Rn , x = (x1 ,x2 ,...,xn ), pode ser
escrito com combinao linear dos autovetores da seguinte forma:
x=

n
X

j vj .

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

(4.2)

88

Clculo Numrico

O mtodo da potncia permite o clculo do autovetor dominante com


base no comportamento assinttico (i.e. "no infinito") da sequncia
x, Ax, A2 x, A3 x, . . .
.
Por questes de convergncia, consideramos a seguinte sequncia semelhante anterior, porm normalizada:
x
Ax
A2 x
A3 x
,
,
,
,...,
kxk kAxk kA2 xk kA3 xk
que pode ser obtida pelo seguinte processo iterativo:
x

(k+1)

Ak x
=
kAk xk

Observamos que se x est na forma (4.2), ento Ak x pode ser escrito como

n
X

n
X

n
X

j
j kj vj = 1 k1 v1 +
j Ak vj =
Ak x =
j=2 1
j=1
j=1

j
1

!k

vj

Como 1j < 1 para todo j 2, temos


n
X

j
j=2 1
Assim

j
1

!k

vj 0.


Ak x
1 k1
2

)
=
v
+
O
1
1
kAk xk
kAk xk

Como a norma de

Ak x
kAk xk

igual a um, temos




k


1 1

v

1
kAk xk



k
1 1


kAk xk

1
kv1 k

e, portanto,

Ou seja, se definimos (k) =

1 k1
,
kAk xk

ento

|(k) | 1
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

(4.3)

4.5. MTODO DA POTNCIA PARA CLCULO DE AUTOVALORES


89
Retornando a (4.3), temos:
Ak x
(k) v1 0
kAk xk
Observe que um mltiplo de autovetor tambm um autovetor e, portanto,
Ak x
kAk xk
um esquema que oscila entre os autovetores ou converge para o autovetor
v1 .
Uma vez que temos o autovetor v1 de A, podemos calcular 1 da seguinte
forma:
v1T Av1
T
T
Av1 = 1 v1 = v1 Av1 = v1 1 v1 = 1 = T
v1 v1
Observe que a ltima identidade vlida, pois kv1 k = 1 por construo.

Exerccios
E 4.5.1.
matriz

Calcule o autovalor dominante e o autovetor associado da

41 78

48 28 21

26 13 11

Expresse sua resposta com seis dgitos significativos


E 4.5.2.
matriz

Calcule o autovalor dominante e o autovetor associado da

2 1

usando o mtodo da potncia inciando com o vetor x = [1 1]T


E 4.5.3. A norma L2 de um matriz A dada pela raiz quadrada do
autovalor dominante da matriz A A, isto :
kAk2 =

max{|| : (A A)} :

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

90

Clculo Numrico

Use o mtodo da potncia para obter a norma L2 da seguinte matriz:

A=

69

84

88

15 40 11

70 41 20

Expresse sua resposta com seis dgitos significativos


E 4.5.4. Os autovalores de uma matriz triangular so os elementos
da diagonal principal. Verifique o mtodo da potncia aplicada seguinte
matriz:

2 3

.
0 3 1

0 0 1

Exerccios finais
E 4.5.5.
1. O circuito linear da figura 1 pode ser modelado pelo sistema (4.4).
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 V2 V3 V2
+

R1
R2
V2 V3 V4 V3
+

R2
R3
V3 V4 V5 V4
+

R3
R4
V4 V5

R4

V1
V2
R5
V3
R6
V4
R7
V5
R8

= V

(4.4a)

= 0

(4.4b)

= 0

(4.4c)

= 0

(4.4d)

= 0

(4.4e)

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

4.5. MTODO DA POTNCIA PARA CLCULO DE AUTOVALORES


91

Complete a tabela abaixo representado a soluo com 4 algarismos


significativos:
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.5.6.

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 sin(x) + B cos(x)
tais que f (1) = 1.4 e f (2) = 2.8.
c) Encontre a funo g(x) = A1 sin(x)+B1 cos(x)+A2 sin(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

Clculo Numrico

Captulo 5
Soluo de sistemas de
equaes no lineares
O mtodo de Newton aplicado a encontrar a raiz x da funo y = f (x)
estudado na primeira rea de nossa disciplina 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.
Observao: y = f (x(k) ) + (x x(k) )f 0 (x(k) ) a equao da reta que
tangencia a curva y = f (x) no ponto (x(k) ,f (x(k) )).
Queremos, agora, generalizar o mtodo de Newton a fim de resolver problemas 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

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

F (x) =

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

f2 (x1 ,x2 , . . . ,xn )

..

.
fn (x1 ,x2 , . . . ,xn )

Exemplo 50. Suponha que queiramos resolver numericamente os seguinte


sistema de duas equaes e duas incgnitas:
x21
+ x22 = 1
3
x2
x21 + 2 = 1
4
Ento definimos

F (x) =

x21
3

+ x22 1

x21 +

x22
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 II.
Observe que F (x) F (x(0) ) pode ser escrito como

(0)

(0)

(0)

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

(0) (0)

f2 (x1 ,x2 , . . . ,xn ) f2 (x1 ,x2 , . . . ,x(0)


n )
(0)

F (x) F (x ) =
.
..

(0)

fn (x1 ,x2 , . . . ,xn ) fn (x1 ,x2 , . . . ,x(0)


n )

Usamos a regra da cadeia


dfi =

n
X
fi
fi
fi
fi
dx1 +
dx2 + +
dxn =
dxj
x1
x2
xn
j=1 xj

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

94

Clculo Numrico

e aproximamos as diferenas por derivadas parciais:


fi (x1 ,x2 , . . . ,xn )

(0) (0)
fi (x1 ,x2 , . . . ,x(0)
n )

n
X


fi 
(0)
xj xj
j=1 xj

Portanto,

F (x) F (x(0) )

f1
x1

f1
x2

f1
xn

f2
x1

f2
x2

f2
xn

..
.

..
.

..

..
.

fn
x1

fn
x2

fn
xn

(0)

x 1 x1

(0)
x 2 x2

..

(5.1)

xn x(0)
n

Definimos ento a matriz jacobiana por

JF =

(f1 ,f2 , . . . ,fn )


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

f1
x1

f1
x2

f2
x1

f2
x2

f2
xn

..
.

..
.

..

..
.

fn
x1

fn
x2

f1
xn

fn
xn

A matriz jacobiana de uma funo ou simplesmente, o Jacobiano de uma


funo F (x) a matriz formada pelas suas derivadas parciais:
(JF )ij =

fi
xj

Nestes termos podemos reescrever (5.1) como


F (x) F (x(0) ) + JF (x(0) )(x x(0) )
Esta expresso chama 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. O MTODO DE NEWTON PARA SISTEMAS

5.1

95

O mtodo de Newton para sistemas

Vamos agora construir o mtodo de Newton-Raphson, ou seja, o mtodo


de Newton generalizado 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

(k)
A aproximao
 x   definida
 como o ponto x em que a linearizao
(k)
(k)
(k)
F (x ) + JF x
xx
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 12. Usamos subndices para indicar o elemento de um vetor e


super-ndices para indicar o passo da iterao. Assim x(k) se refere iterao
(k)
k e xi se refere componente i no vetor x(k) .


Observao 13. A notao JF1 x(k) enfatiza que a jacobiana deve ser calculada a cada passo.
Observao 14. Podemos definir o passo (k) como
(k) = x(k+1) x(k)


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) ).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

96

Clculo Numrico

Exemplo 51. Retornamos ao nosso exemplo inicial, isto , resolver numericamente os seguinte sistema no-linear:
x21
+ x22 = 1
3
x2
x21 + 2 = 1
4
Para tal, definimos a funo F (x):
x21
+ x22 1

3
F (x) =

x22
2
1
x1 +
4

cuja jacobiana :

2x1
2x
2
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
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

5.1. O MTODO DE NEWTON PARA SISTEMAS

97

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

Observe que as solues exatas desse sistema so

9
,
11

8
11

Exemplo 52. Encontre uma aproximao para a soluo do sistema


x21 = cos(x1 x2 ) + 1
sin(x2 ) = 2 cos(x1 )
que fica prxima ao ponto x1 = 1.5 e x2 = .5.
Resp: (1,3468109, 0,4603195).
Soluo. Vamos, aqui, dar as principais ideias para se obter a soluo. Comeamos definindo a funo F (x) por:

F (x) =

x21

cos(x1 x2 ) 1

sin(x2 ) 2 cos(x1 )

cuja jacobiana :

2x1 + x2 sin(x1 x2 ) x1 sin(x1 x2 )


JF (x) =

2 sin(x1 )
cos(x2 )
No Scilab, podemos implement-las com o seguinte cdigo:
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

98

Clculo Numrico
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. 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 99


d) x(0) = [0, 0, 0]T

5.2
5.2.1

Linearizao de uma funo de vrias variveis


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

g 0 (h) =

d
d
g(h) =
f (x(0) + hv)
dh
dh

Pela regra da cadeia temos:


n
X
d
f dxj
f (x(0) + hv) =
dh
j=1 xj dh
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

100

Clculo Numrico
(0)

Observamos que xj = xj + hvj , portanto


dxj
= vj
dh
Assim:
n
X
d
f
f (x(0) + hv) =
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 =

f
x2

.
..

f
x1

v1

v=

f
xn



v2

.
..

vn

Na notao clculo vetorial escrevemos este produto interno como f v =


v f 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 15. 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) :

T f (x(0) ) =

f x(0)
x1

f x(0)
x2

, ,

f x(0)
xn

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

5.2. LINEARIZAO DE UMA FUNO DE VRIAS VARIVEIS 101

5.2.2

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

F (x) =

f1 (x)

f2 (x)

.
..

fn (x)

Linearizando cada uma das funes fj , temos:

(0)
+ Tf1 (x(0) ) x x(0) + O(kx x(0) k2 )
f1 x

F (x) =

f2 x(0) + Tf2 (x(0) ) x x(0) + O(kx x(0) k2 )


..
.


fn x(0) + Tfn (x(0) ) x x(0) + O(kx x(0) k2 )

{z

Vetor coluna

ou, equivalentemente:

F (x) =

f1 x

(0)




f2 x(0)

..




fn x(0)
{z

Vetor coluna

(0)

f1 (x )
Tf2 (x(0) )
..
.

Tfn (x(0) )
{z

x x(0)

{z

+O(kx x(0) k2 )

Vetor coluna

Matriz jacobiana

Podemos escrever a linearizao de F (x) na seguinte forma mais enxuta:




F (x) = F x

(0)

(0)

+ JF (x ) x x

(0)




(0) 2
+ O x x

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

102

Clculo Numrico

A matriz jacobiana JF matriz cujas linhas so os gradientes transpostos


de fj , ou seja:

JF =

(f1 ,f2 , . . . ,fn )


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

f1
x1

f1
x2

f2
x1

f2
x2

f2
xn

..
.

..
.

...

..
.

fn
x1

fn
x2

fn
xn

f1
xn

A matriz jacobiana de uma funo ou simplesmente, o Jacobiano de uma


funo F (x) a matriz formada pelas suas derivadas parciais:
(JF )ij =

fi
xj

Exemplo 53. Calcule a matriz jacobiana da funo

F (x) =

JF =

f1
x1

f2
x1

x21
3

x22

x21 +

x22
4

f1
x2

f2
x2

1
1
2x1
3

2x1

2x2

x2
2

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

Captulo 6
Aproximao de funes
O problema geral da interpolao pode ser definido da seguinte forma:
Seja F uma famlia de funes f : D E e {(xi ,yi )}N
i=1 um conjunto de
pares ordenados tais que xi D e yi E, encontrar uma funo f da famlia
dada tal que f (xi ) = yi para cada 1 i N .
Exemplo 54. Encontrar uma funo f (x) da forma f (x) = aebx onde a e b
so constantes tal que f (1) = 1 e f (2) = 5. Este problema equivale a resolver
o seguinte sistema de equaes:
aeb = 1
ae2b = 5
Dividindo a segunda equao pela primeira, temos eb = 5, logo, b = ln(5).
Substituindo este valor em qualquer das equaes, temos a = 51 . Assim
1
1
f (x) = eln(5)x = 5x = 5x1 .
5
5
Exemplo 55. Encontrar a funo polinomial do tipo f (x) = a+bx+cx2 que
passe pelos pontos (1,2), (0,1), (1,6). Observamos que podemos encontrar
os coeficientes a, b e c atravs do seguinte sistema linear:
ab+c = 2
a = 1
a+b+c = 6
cuja soluo dada por a = 1, b = 2 e c = 3. Portanto
f (x) = 1 + 2x + 3x2 .
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

104

6.1

Clculo Numrico

Interpolao polinomial

Interpolao polinomial o caso particular do problema geral de interpolao quando a famlia de funes constituda de polinmios.
Teorema 3. Seja {(xi ,yi )}ni=0 um conjunto de n + 1 pares ordenados de
nmeros reais tais que
i 6= j = xi 6= xj

(i.e. as abscissas so distintas)

ento existe um nico polinmio P (x) de grau igual ou inferior a n que passa
por todos os pontos dados.
Demonstrao. Observamos que o problema de encontrar os coeficientes a0 ,
a1 ,. . . , an do polinmio
P (x) = a0 + a1 x + a2 x2 + an xn =

n
X

ak x k

k=0

tal que P (xi ) = yi equivalente ao seguinte sistema linear de n + 1 equaes


e n + 1 incgnitas:
a0 + a1 x0 + a2 x20 + + an xn0 = y0
a0 + a1 x2 + a2 x21 + + an xn1 = y1
..
.
2
n
a0 + a1 xn + a2 xn + + an xn = yn
que pode ser escrito na forma matricial como

2
1 x0 x0

1 x1 x21

xn0 a0

a1
xn1

1 x2 x22 xn2
a2 =

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

.
. .
.
. .

1 xn x2n

xnn

an

y0

y1

y2
..
.
yn

A matriz envolvida uma matriz de Vandermonde de ordem n + 1 cujo


determinante dado por
Y
(xj xi )
0i<jn

fcil ver que se as abscissas so diferentes dois a dois, ento o determinante


no-nulo. Disto decorre que o sistema possui um a soluo e que esta soluo
nica.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.2. DIFERENAS DIVIDIDAS DE NEWTON

105

Exemplo 56. Encontre o polinmio da forma P (x) = a0 + a1 x + a2 x2 + a3 x3


que passa pelos pontos
(0,1),(1,2),(2,4),(3,8)
Este problema equivalente ao seguinte sistema linear:
a0
a0 + a1 + a2 + a3
a0 + 2a1 + 4a2 + 8a3
a0 + 3a1 + 9a2 + 27a3

=
=
=
=

1
2
4
8

cuja soluo a0 = 1, a1 = 65 , a2 = 0 e a3 = 16 . Portanto


5
1
P (x) = 1 + x + x3
6
6
Exemplo 57. Encontre o polinmio da forma P (x) = a0 + a1 x + a2 x2 + a3 x3
que passa pelos pontos
(0,0),(1,1),(2,4),(3,9)
Este problema equivalente ao seguinte sistema linear:
a0
a0 + a1 + a2 + a3
a0 + 2a1 + 4a2 + 8a3
a0 + 3a1 + 9a2 + 27a3

=
=
=
=

0
1
4
9

cuja soluo a0 = 0, a1 = 0, a2 = 1 e a3 = 0. Portanto


P (x) = x2
Esta abordagem direta que fizemos ao calcular os coeficientes do polinmio na base cannica se mostra ineficiente quando o nmero de pontos
grande e quando existe grande discrepncia nas abscissas. Neste caso a matriz de Vandermonde mal-condicionada (ver [5]), acarretando 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 mais bem-condicionado.

6.2

Diferenas divididas de Newton

O mtodo das diferenas divididas de Newton consistem em construir o


polinmio interpolador da seguinte forma:
P (x) = a0 + a1 (x x0 ) + a2 (x x0 )(x x1 ) +
+ an (x x0 )(x x1 ) (x xn1 ).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

106

Clculo Numrico

Assim, o problema de calcular os coeficientes a0 , a1 , . . . , an equivalente ao


seguinte sistema linear:
a0 = y0
a0 + a1 (x1 x0 ) = y1
a0 + a1 (x2 x0 ) + a2 (x2 x0 )(x2 x1 ) = y2
..
.
a0 + a1 (xn x0 ) + a2 (xn x0 )(xn x1 ) + + an (xn x0 ) (xn xn1 ) = yn
. O qual equivalente sua forma matricial:

.
..

(x1 x0 )

(x2 x0 )(x2 x1 )
..
..
.
.

0
..
.

(x2 x0 )
..
.

a0

y0


a y
1 1


a 2 = y2

. .
.. ..

1 (xn x0 ) (xn x0 )(xn x1 ) (xn x0 ) (xn xn1 )

an

yn

Este um sistema triangular inferior que pode ser facilmente resolvido


conforme:
a0

a1

a2

=
...

y0
y1 a0
y1 y0
=
x1 x0
x1 x0
y2 a1 (x2 x0 ) a0
=
(x2 x0 )(x2 x1 )

y2 y1
(x2 x1 )

y1 y0
(x1 x0 )

(x2 x0 )

A soluo deste sistema pode ser escrita em termos das Diferenas Divididas
de Newton, definidas recursivamente conforme:
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
..
.
Nesta notao, temos ak = f [x0 ,x1 ,x2 , . . . ,xk ]
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.2. DIFERENAS DIVIDIDAS DE NEWTON

107

Podemos esquematizar o mtodo na seguinte tabela:

j xj f [xj ]

f [xj1 ,xj ]

f [xj2 ,xj1 ,xj ]

0 x0 f [x0 ]

f [x0 ,x1 ] =

f [x1 ]f [x0 ]
x1 x0

1 x1 f [x1 ]

f [x0 ,x1 ,x2 ] =

f [x1 ,x2 ] =

f [x1 ,x2 ]f [x0 ,x1 ]


x2 x0

f [x2 ]f [x1 ]
x2 x1

2 x2 f [x2 ]

Exemplo 58. Encontrar o polinmio que passe pelos seguintes pontos

(1,3),(0,1),(1,3),(3,43)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

108

Clculo Numrico

f [xj ]

xj

0 1

f [xj1 ,xj ]

13
0(1)

2(2)
1(1)

=2

62
3(1)

=2

202
30

433
31

= 2

31
10

f [xj2 ,xj1 ,xj ] f [xj3 ,xj2 ,xj1 ,xj ]

=1

=6

= 20

43

Portanto
P (x) = 3 2(x + 1) + 2(x + 1)x + (x + 1)x(x 1)
= x3 + 2x2 x + 1

Exerccios
E 6.2.1. Considere o seguinte conjunto de pontos:
(2, 47),(0, 3),(1,4)(2,41)
. Encontre o polinmio interpolador usando os mtodos vistos.
E 6.2.2. No Scilab, faa um grfico com os pontos e o polinmio
interpolador do Exerccio 6.2.1.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.3. POLINMIOS DE LAGRANGE

6.3

109

Polinmios de Lagrange

Outra maneira clssica de resolver o problema da interpolao polinomial


atravs do 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 as seguintes condies:
Lk (xj ) =

1, k = j

0, k 6= j

Assim, a soluo do problema de encontrar os polinmios de grau n 1 tais


P (xj ) = yj ,j = 1, ,n dado por
P (x) = y1 L1 (x) + y2 L2 (x) + + yn Ln (x) =

n
X

yj Lj (x)

j=1

Para construir os polinmios de Lagrange, basta olhar para sua forma


fatorada, ou seja:
Y
Lk (x) = Ck
(x xj )
1j6=kn

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


Lk (xk ) = Ck

1
1j6=kn (xk xj )

(xk xj ) = Ck = Q

1j6=kn

Portanto,
Lk (x) =

(x xj )
1j6=kn (xk xj )
Y

Observao 16. O problema de interpolao quando escrito usando como base


os polinmios de Lagrange produz um sistema linear diagonal.
Exemplo 59. Encontre o polinmio da forma P (x) = a0 + a1 x + a2 x2 + a3 x3
que passa pelos pontos
(0,0),(1,1),(2,4),(3,9)
Escrevemos:
(x 1)(x 2)(x 3)
1
11
= 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
= x3 + 2x2 x
L3 (x) =
2(2 1)(2 3)
2
2
1
1
1
x(x 1)(x 2)
L4 (x) =
= x3 x2 + x
3(3 1)(3 2)
6
2
3

L1 (x) =

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

110

Clculo Numrico

Assim temos:
P (x) = 0 L1 (x) + 1 L2 (x) + 4 L3 (x) + 9 L4 (x) = x2
Exemplo 60. Encontre o polinmio da forma P (x) = a0 + a1 x + a2 x2 + a3 x3
que passa pelos pontos
(0,0),(1,1),(2,0),(3,1)
Como as abscissas so as mesmas do exemplo anterior, podemos utilizar os
mesmos polinmios de Lagrange, assim temos:
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 polinmios interpoladores

Teorema 4. Dados n + 1 pontos distintos, x0 , x1 , , xn , dentro de um


intervalo [a,b] e uma funo f com n + 1 derivadas contnuas nesse intervalo
(f C n+1 [a,b]), ento para cada x em [a,b], existe um nmero (x) em (a,b)
tal que
f (x) = P (x) +

f (n+1) ((x))
(x x0 )(x x1 ) (x xn ),
(n + 1)!

onde P (x) o polinmio interpolador. Em especial, pode-se dizer que


|f (x) P (x)|
onde

M
|(x x0 )(x x1 ) (x xn )| ,
(n + 1)!

M = max |f (n+1) ((x))|


x[a,b]

Exemplo 61. 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)|.
(x 12 )(x 1)
(x 0)(x 21 )
1 (x 0)(x 1)
+
cos
+
cos(1)
2 ( 12 0)( 21 1)
(0 21 )(0 1)
(1 0)(1 12 )
 

P (x) = 1

1 0,0299720583066x 0,4297256358252x2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.4. APROXIMAO DE FUNES REAIS POR POLINMIOS


INTERPOLADORES

111

L1=poly([.5 1],'x');L1=L1/horner(L1,0)
L2=poly([0 1],'x');L2=L2/horner(L2,0.5)
L3=poly([0 .5],'x');L3=L3/horner(L3,1)
P=L1+cos(.5)*L2+cos(1)*L3
x=[0:.05:1]
plot(x,cos)
plot(x,horner(P,x),'red')
plot(x,horner(P,x)-cos(x))
Para encontrar o erro mximo, precisamos estimar |f 000 (x)| = | sin(x)|
sin(1) < 0,85 e





1

(x 1)
max x x
x[0,1]
2


O polinmio de grau trs Q(x) = x x


em x1 =

3+ 3
6

1
2

(x1) tem um mnimo (negativo)

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:
|f (x) P (x)| <

0,85
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 62. Considere o problema de aproximar o valor da integral 01 f (x)dx
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).
R
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 0)(x 12 )
(x 12 )(x 1)
1 (x 0)(x 1)
+f
+ f (1)
P (x) = f (0)
2 ( 12 0)( 12 1)
(0 12 )(0 1)
(1 0)(1 12 )
 
1
= f (0)(2x2 3x + 1) + f
(4x2 + 4x) + f (1)(2x2 x)
2
 

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

112

Clculo Numrico

e a integral de P (x) :
Z 1
0

1
1
1
2
3
4
+ f
P (x)dx = f (0) x3 x2 + x
x3 + 2x2
3
2
2
3
0
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



  



Para fazer a estimativa de erro usando o teorema (4), e temos


Z 1

Z 1



f (x)dx
P (x)dx

0

Z 1




f (x) P (x)dx

0
Z 1

|f (x) P (x)|dx





1
M Z 1

(x 1) dx
x x
6 "0
2


1
M Z 1/2
x x
=
(x 1)dx
6 0
2
#


Z 1
1
x x

(x 1)dx
2
1/2



1
M
M 1

=
.
=
6 64
64
192

Lembramos que M = maxx[0,1] |f 000 (x)|.


Observao 17. Existem estimativas melhores para o erro de truncamento
para este esquema de integrao numrica. Veremos com mais detalhes tais
esquemas na teoria de integrao numrica.
Exemplo 63. Use o resultado do exemplo anterior para aproximar o valor
das seguintes integrais:
a)

Z 1

ln(x + 1)dx

b)

Z 1

ex dx

Soluo. Usando a frmula obtida, temos que


Z 1
0

ln(x + 1)dx 0,39

1
96

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

6.5. AJUSTE DE CURVAS PELO MTODO DOS MNIMOS


QUADRADOS
Z 1

ex dx 0,75

113

3,87
192

Exerccios
E 6.4.1. Use as mesmas tcnicas usadas o resultado do Exemplo (62)
para obter uma aproximao do valor de:
Z 1

f (x)dx

atravs do polinmio interpolador que coincide com f (x) nos pontos x = 0 e


x = 1.

6.5

Ajuste de curvas pelo mtodo dos mnimos quadrados

No problema de interpolao, desejamos encontrar uma funo f (x) tal


que
f (xj ) = yj
para um conjunto de pontos dados.
Existem diversas situaes em que desejamos encontrar uma funo que
se aproxime desses pontos.
No problema de ajuste de curvas, busca-se a funo f (x) de famlia de
funes dadas que melhor se aproxima de um conjunto de pontos dados. O
critrio mais usado para o ajuste critrio dos mnimos quadrados, ou seja,
buscamos a funo f (x) da famlia que minimiza a soma dos erros elevados
ao quadrado:
2

Eq = [f (x1 ) y1 ] + [f (x2 ) y2 ] + + [f (xn ) yn ] =

n
X

[f (xj ) yj ]2

j=1

Exemplo 64. Encontre a funo do tipo f (x) = ax que melhor se aproxima


dos seguintes pontos:
(0, 0,1), (1, 2), (2, 3,7) e (3, 7).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

114

Clculo Numrico

Figura 6.1: Conjunto de 15 pontos e a reta que melhor se ajuste a eles pelo
critrio do mnimos quadrados.

Soluo. Defina
Eq = [f (x1 ) y1 ]2 + [f (x2 ) y2 ]2 + [f (x3 ) y3 ]2 + [f (x4 ) y4 ]2
temos que
Eq = [f (0) + 0,1]2 + [f (1) 2]2 + [f (2) 3,7]2 + [f (3) 7]2
= [0,1]2 + [a 2]2 + [2a 3,7]2 + [3a 7]2
Devemos encontrar o parmetro a que minimiza o erro, portanto, calculamos:
Eq
= 2[a 2] + 4[2a 3,7] + 6[3a 7] = 28a 60,8
a
Portanto o valor de a que minimiza o erro a =

60,8
.
28

x=[0 1 2 3]'
y=[-.1 2 3.7 7]'
plot2d(x,y,style=-4)

Exemplo 65. Encontre a funo do tipo f (x) = bx + a que melhor aproxima


os pontos:
(0, 0,1), (1, 2), (2, 3,7) e (3, 7).
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.6. O CASO LINEAR

115

Soluo.
Eq = [f (0) + 0,1]2 + [f (1) 2]2 + [f (2) 3,7]2 + [f (3) 7]2
= [a + 0,1]2 + [a + b 2]2 + [a + 2b 3,7]2 + [a + 3b 7]2
Devemos encontrar os parmetros a b que minimizam o erro, por isso,
calculamos as derivadas parciais:
Eq
= 2[a + 0,1] + 2[a + b 2] + 2[a + 2b 3,7] + 2[a + 3b 7]
a
Eq
= 2[a + b 2] + 4[a + 2b 3,7] + 6[a + 3b 7]
b
O erro mnimo acontece quando as derivadas so nulas, ou seja:
8a + 12b = 25,2
12a + 28b = 60,8
Cuja soluo dada por a = 0,3 e b = 2,3. Portanto a funo que procuramos f (x) = 0,3 + 2,3x.

6.6
6.6.1

O caso linear
O mtodo dos mnimos quadrados

Considere o sistema linear dado por Ax = b onde A uma matriz n m


e b um vetor de n linhas. Assumimos as seguintes hipteses:
n m. O nmero de linhas igual ou superior ao nmero de colunas.
(Mais equaes que incgnitas)
O posto de A m, i.e., existem m linhas L.I. Isso implica que Av = 0
apenas quando v = 0
Neste caso, no seremos necessariamente capazes de encontrar um vetor
x que satisfaa exatamente a equao Ax = b, pelo que estamos interessamos
no problema de encontrar o vetor x (ordem m) que minimiza o erro quadrtico
dado por:
E :=

n
X

[zi bi ]2

(6.1)

i=1

onde z = Ax e zi linha i do vetor z, dado por:


zi = (Ax)i =

m
X

aij xj , i = 1, ,n

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

(6.2)

116

Clculo Numrico

onde aij o elemento de A na linha i e coluna j. Substituindo (6.2) em (6.1)


E :=

n
m
X
X

aij xj
i=1

bi

(6.3)

j=1

Esta uma funo diferencivel nos coeficientes xj e portanto todo ponto de


mnimo acontece quando E = 0, ou seja, quando

E = 0,1 l m
xl
O que implica a seguinte condio

n
m
X
X

0=
E=
2 aij xj bi ail ,
xl
i=1
j=1

l = 1, , m

Equivalente a
m
n X
X

ail xj aij =

n
X

ail bi , l = 1, , m

i=1

i=1 j=1

que pode ser reescrito na forma vetorial como:

n
i=1 ai1 bi
i=1
j=1 ai1 xj aij

Pn Pm
Pn

i=1 ai2 bi
i=1
j=1 ai2 xj aij
=

..
..

.
.

Pn

P
n

i=1

Pm

Pm

j=1

aim xj aij

P
n

i=1

aim bi

(6.4)

Observamos agora que a expresso (6.4) equivalente ao seguinte problema


matricial:
AT Ax = AT b

(6.5)

Teorema 5. A matriz M = AT A quadrada de ordem m e invertvel


sempre que o posto da matriz A igual a nmero de colunas m.
Demonstrao. Para provar que M invertvel precisamos mostrar que M v =
0 implica v = 0:
M v = 0 = AT Av = 0
tomando o produto interno da expresso 0 = AT Av com v, temos:
D

0 = AT Av,v = hAv,Avi = kAvk2


Ento se M v = 0 Av = 0, como o posto de A igual ao nmero de colunas,
v = 0.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.6. O CASO LINEAR

117

Outra propriedade importante que M simtrica, ou seja, M = M T .


Isso facilmente provado pelo seguinte argumento:
M T = (AT A)T = (A)T (AT )T = AT A = M

6.6.2

Ajuste linear de curvas

Seja f1 (x), f2 (x), . . . , fm (x) um conjunto de m funes e (x1 ,y1 ), (x2 ,y2 ), . . . , (xn ,yn )
um conjunto de n pontos. Procuram-se os coeficientes a1 ,a2 , . . . , am tais que
a funo dada por
f (x) = a1 f1 (x) + a2 f2 (x) + . . . + am fm (x)
minimiza o erro dado por
Eq =

n
X

[f (xi ) yi ]2

i=1

como f (x) =

Pm

j=1

aj fj (x), temos
Eq =

2
n
m
X
X

aj fj (xi ) yi
i=1

j=1

Este problema equivalente a resolver pelo mtodos dos mnimos quadrados o seguinte sistema linear:
f1 (x1 ) f2 (x1 )

fm (x1 )

y1

a1

fm (x2 )

a2

f1 (x3 ) f2 (x3 ) fm (x3 ) . =

..

..
..
..
...

.
.
.

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

f1 (x2 ) f2 (x2 )

y2

y3
..
.
yn

Exemplo 66. Encontre a reta que melhor aproxima o seguinte conjunto de


dados:
xi

yi

0,01

1,99

1,02

4,55

2,04

7,20

2,95

9,51

3,55 10,82
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

118

Clculo Numrico

Soluo. Desejamos ento encontrar os valores de a e b tais que a funo


f (x) = ax + b melhor se ajusta aos pontos da tabela. Afim de usar o critrio
dos mnimos quadrados, escrevemos o problema na forma matricial dada por:
1,99

0,01 1

4,55
1,02 1

2,04 1 = 7,2

2,95 1
9,51

3,55 1

10,82

Multiplicamos agora ambos os lados pela transposta:

0,01 1,02 2,04 2,95 3,55


1

o que fornece:

0,01 1,02 2,04 2,95 3,55


1

0,01 1

1,02 1

a
=
2,04 1

2,95 1

3,55 1

0,01 1,02 2,04 2,95 3,55


1

9,57

1,99

4,55

7,2

9,51

10,82

26,5071 9,57 a

85,8144

34,07

A soluo desse sistema a = 2,5157653 e b = 1,9988251


A tabela abaixo mostra os valores dados e os valores ajustados:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.6. O CASO LINEAR

119

xi

yi

axi + b

axi + b yi

0,01

1,99

2,0239828

0,0339828

1,02

4,55

4,5649057

0,0149057

2,04

7,2

7,1309863 0,0690137

2,95

9,51

9,4203327 0,0896673

3,55 10,82 10,929792

0,1097919

Exerccios
E 6.6.1. Encontrar a parbola y = ax2 + bx + c que melhor aproxima o
seguinte conjunto de dados:
xi

yi

0,01

1,99

1,02

4,55

2,04

7,2

2,95

9,51

3,55 10,82
e complete a tabela:
xi

yi

0,01

1,99

1,02

4,55

2,04

7,20

2,95

9,51

3,55

10,82

ax2i + bxi + c ax2i + bxi + c yi

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

120

Clculo Numrico

E 6.6.2. Dado o seguinte conjunto de dados


xi

yi

0,0 31
0,1 35
0,2 37
0,3 33
0,4 28
0,5 20
0,6 16
0,7 15
0,8 18
0,9 23
1,0 31
Encontre a funo do tipo f (x) = a+b sin(2x)+c cos(2x) que melhor
aproxima os valores dados.
Encontre a funo do tipo f (x) = a+bx+cx2 +dx3 que melhor aproxima
os valores dados.

6.7

Aproximando problemas no lineares por


problemas lineares

Eventualmente, problemas de ajuste de curvas podem recair num sistema


no linear. Por exemplo, se desejamos ajustar a funo y = Aebx ao conjunto
de pontos (x0 ,y0 ), (x1 ,y1 ) e (x2 ,y2 ), temos que minimizar o funcional
Eq = (Aex0 b y0 )2 + (Aex1 b y1 )2 + (Aex2 b y2 )2
ou seja, resolver o sistema
Eq
= 2(Aex0 b y0 )ex0 b + 2(Aex1 b y1 )ex1 b + 2(Aex2 b y2 )ex2 b = 0
A
Eq
= 2Ax0 (Aex0 b y0 )ex0 b + 2Ax1 (Aex1 b y1 )ex1 b
b
+ 2x2 A(Aex2 b y2 )ex2 b = 0
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.7. APROXIMANDO PROBLEMAS NO LINEARES POR


PROBLEMAS LINEARES

121

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
z = ln A + bx := B + bx.
Usamos os trs pontos (x0 , ln y0 ) := (x0 , y0 ), (x1 , ln y1 ) := (x1 ,
y1 ) e (x2 , ln y2 ) :=
(x2 ,
y2 ) e resolvemos o sistema linear

AT A

onde

A=

T
A

y0

,
y1

y2

1 x0

1 x1

1 x2

Exemplo 67. 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 18. Os coeficientes obtidos a partir dessa linearizao so aproximados, ou seja, so diferentes daqueles obtidos quando aplicamos
X mnimos quadrados no linear. Observe que estamos minimizando
[ln yi
i

ln(f (xi ))]2 em vez de

[yi f (xi )]2 . No exemplo resolvido, a soluo do

sistema no linear original seria A = 1,19789 e B = 0,474348


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

122

Clculo Numrico

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

Y = ln y

Y = ln a + b2 + bcx + c2 x2

(b+cx)2

y = ae
y=

a
b+x

y = A cos(x + )

Y =

1
y

Y =

b
a

+ a1 x

y = a cos(x) b sin(x),

conhecido

a = A cos(), b = A sin()

Exemplo 68. Encontre a funo f da forma y = f (x) = A cos(2x + ) que


ajusta a tabela de pontos
xi

yi

0,0

9,12

0,1

1,42

0,2

- 7,76

0,3 - 11,13
0,4

- 11,6

0,5

- 6,44

0,6

1,41

0,7

11,01

0,8

14,73

0,9

13,22

1,0

9,93

Soluo. Usando o fato que y = A cos(2x + ) = a cos(2x) b sin(2x),


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

6.7. APROXIMANDO PROBLEMAS NO LINEARES POR


PROBLEMAS LINEARES

123

onde a = A cos() e b = A sin(), z = [ a b ]T soluo do problema


B T Bz = B T y,
onde

B =

cos(2x0 )

sin(2x0 )

cos(2x1 )
..
.

sin(2x1 )

cos(2x10 ) sin(2x10 )

1.

0.

0,8090170

0,5877853

0,3090170

0,9510565

0,3090170 0,9510565
0,8090170 0,5877853
1,0000000

0,0000000

0,8090170

0,5877853

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 sin() = 11,405721

Observe que
A2 = 7,96147042 + 11,4057212
e, escolhendo A > 0, A = 13,909546 e
sin() =

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

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

124

Clculo Numrico

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


tabela de pontos
xi

a
b+x

que ajusta a

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 = y1 = ab + a1 x, z = [
problema
AT Az = AT Y,

b
a

1
a

]T soluo do

onde

x3

x4

x5

1 0,0

1 0,2

1 x1

1 x

2
A=

1
1
1

1 x6

1 0,4
1 0,6
1 0,8
1 1,0

1/y3

1/y4

1/y5

1/y1

1/y

2
Y =

1/y6

0,0099010

0,0117647

0,0133333
0,0151515
0,0166667
0,0181818

Assim, a1 = 0,0082755 e ab = 0,0100288 e, ento, a = 120,83924 e b =


120,83924
1,2118696, ou seja, f (x) = 1,2118696+x
.

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

6.8. INTERPOLAO LINEAR SEGMENTADA

6.8

125

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
Pi (x) = yi

(x xi )
(xi+1 x)
+ 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 70. 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:

f (x) =

0 x1
+ 1 x0
,0 x < 1
01
10

3 x3
+ 0 x2
,2 x 3
23
32

+ 3 x1
,1 x < 2
4 x2
12
21

Simplificando, obtemos:

3x + 9 , 2 x 3

f (x) = x + 5

,0 x < 1
,1 x < 2

A Figura 6.2 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

126

Clculo Numrico

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

Figura 6.2: Interpolao linear segmentada.

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

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE

6.9

127

Interpolao cbica segmentada - spline

Dado um conjunto de n pontos (xj ,yj )nj=1 tais que xj+1 > xj , ou seja,
as abscissas so distintas e esto em ordem crescente; um spline cbico que
interpola estes pontos uma funo s(x) com as seguintes propriedades:
i Em cada segmento [xj ,xj+1 ], j = 1,2, . . . n 1 s(x) um polinmio
cbico.
ii para cada ponto, s(xj ) = yj , i.e., o spline interpola os pontos dados.
iii s(x) C 2 , i.e., funo duas vezes continuamente diferencivel.
Da primeira hiptese, escrevemos
s(x) = sj (x),x [xj ,xj+1 ], j = 1, . . . , n 1
com
sj (x) = aj + bj (x xj ) + cj (x xj )2 + dj (x xj )3
O problema agora consiste em obter os 4 coeficientes de cada um desses n 1
polinmios cbicos.
Veremos que a simples definio de spline produz 4n 6 equaes linearmente independentes:
sj (xj ) = yj ,

j = 1, . . . , n 1

sj (xj+1 ) = yj+1 ,

j = 1, . . . , n 1

s0j (xj+1 ) = s0j+1 (xj+1 ),

j = 1, . . . , n 2

s00j (xj+1 ) = s00j+1 (xj+1 ),

j = 1, . . . , n 2

Como
s0j (x) = bj + 2cj (x xj ) + 3dj (x xj )2

(6.6)

s00j (x) = 2cj + 6dj (x xj ),

(6.7)

e
temos, para j = 1, . . . , n 1, as seguintes equaes
aj = y j ,
aj + bj (xj+1 xj ) + cj (xj+1 xj )2 + dj (xj+1 xj )3 = yj+1 ,
bj + 2cj (xj+1 xj ) + 3dj (xj+1 xj )2 = bj+1 ,
cj + 3dj (xj+1 xj ) = cj+1 ,
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

128

Clculo Numrico

Por simplicidade, definimos


hj = xj+1 xj
e temos
aj = y j ,
aj + bj hj + cj h2j + dj h3j = yj+1 ,
bj + 2cj hj + 3dj h2j = bj+1 ,
cj + 3dj hj = cj+1 ,
que podem ser escrita da seguinte maneira
aj = y j ,
dj =

bj =

(6.8)

cj+1 cj
,
3hj

yj+1 yj cj h2j

(6.9)

cj+1 cj 3
hj
3hj

,
hj
3yj+1 3yj 3cj h2j cj+1 h2j + cj h2j
=
3hj
3yj+1 3yj 2cj h2j cj+1 h2j
=
3hj

(6.10)

Trocando o ndice j por j 1 na terceira equao (6.8), j = 2, . . . , n 1


bj1 + 2cj1 hj1 + 3dj1 h2j1 = bj

(6.11)

e, portanto,
3yj 3yj1 2cj1 h2j1 cj h2j1
+ 2cj1 hj1 + cj hj1 cj1 hj1
3hj1
(6.12)
3yj+1 3yj 2cj h2j cj+1 h2j
=
.
3hj
Fazendo as simplificaes, obtemos:
cj1 hj1 + cj (2hj + 2hj1 ) + cj+1 hj = 3

yj+1 yj
yj yj1
3
.
hj
hj1

(6.13)

costumeiro acrescentar a incgnita cn ao sistema. A incgnita cn no est


relacionada a nenhum dos polinmios interpoladores. Ela uma construo
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE

129

artificial que facilita o clculo dos coeficientes do spline. Portanto, a equao


acima pode ser resolvida para j = 2, . . . , n 1.
Para determinar unicamente os n coeficientes cn precisamos acrescentar
duas equaes linearmente independentes s n 2 equaes dadas por (6.13).
Essas duas equaes adicionais definem o tipo de spline usado.

6.9.1

Spline natural

Uma forma de definir as duas equaes adicionais para completar o sistema (6.13) impor condies de fronteira livres (ou naturais), ou seja,
S 00 (x1 ) = S 00 (xn ) = 0.

(6.14)

Substituindo na equao (6.7)


s001 (x1 ) = 2c1 + 6d1 (x1 x1 ) = 0 = c1 = 0.
e
s00n1 (xn ) = 2cn1 + 6dn1 (xn xn1 ) = 0.
Usando o fato que
cn1 + 3dn1 hn1 = cn
temos que
cn = 3dn1 (xn xn1 ) + 3dn1 hn1 = 0.
Essa duas equaes para c1 e cn juntamente com as equaes (6.13) formam
um sistema de n equaes Ac = z, onde

1
0

h 2h + 2h
1
2
1
A=

h2

...

0
..
.

0
..
.

h2
..
.

2h3 + 2h2
..
.

h3
..
.

hn2 2hn2 + 2hn1


0

..

hn1

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

130

Clculo Numrico

c=

c1

c2

..
.
cn

z=

0
2
3 y3hy
2

1
3 y2hy
1

3
2
3 y4hy
3 y3hy
3
2
..
.

yn2
yn3
3 yn1hn2
3 yn2hn3

(6.16)

Observe que a matriz A diagonal dominante estrita e, portanto, o sistema


Ac = z possui soluo nica. Calculado c, os valores dos an , bn e dn so
obtidos diretamente pelas expresses (6.8), (6.10) e (6.9), respectivamente.
Exemplo 71. 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:

f (x) =

a1 + b1 (x 2) + c1 (x 2)2 + d1 (x 2)3 , 2 x < 5

a3 + b3 (x 9) + c3 (x 9)2 + d3 (x 9)3 , 9 x 12

a2 + b2 (x 5) + c2 (x 5)2 + d2 (x 5)3 , 5 x < 9

. (6.17)

Os coeficientes c1 , c2 e c3 resolvem o sistema Ac = z, onde

0
1

3 23+24

A=

0
4

24+23 3

c
3

c=

c4

z=

1 0

3 14

0
4

14 3

0,5(1,9)
0,50,5

3 3
3

c1

c2

0
3 0,5(1,9)
4

3 (1,9)4,5
3

0
8,2
2,8
0

Observe que c4 um coeficiente artificial para o problema. A soluo c1 = 0,


c2 = 0,7, c3 = 0,4 e c4 = 0. Calculamos os demais coeficientes usando as
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE


expresses (6.8), (6.10) e (6.9):
a1 = y1 = 4,5
a2 = y2 = 1,9
a3 = y3 = 0,5

c2 c1
0,7 0
=
= 0,0777778
3h1
33
c3 c2
0,4 0,7
=
=
= 0,0916667
3h2
34
c4 c3
0 + 0,4
=
=
= 0,0444444
3h3
33

d1 =
d2
d3

b1 =
=
b2 =
=
b3 =
=

y2 y1 h1
(2c1 + c2 )
h1
3
1,9 4,5 3
(2 0 0,7) = 2,8333333
3
3
y3 y2 h2
(2c2 + c3 )
h2
3
0,5 (1,9) 4
(2 0,7 + 0,4) = 0,7333333
4
3
y4 y3 h3
(2c3 + c4 )
h3
3
0,5 0,5 3
(2 (0,4) + 0) = 0,4666667
3
3

Portanto:

f (x) =

4,5 2,833(x 2) + 0,078(x 2)3

1,9 0,733(x 5) + 0,7(x 5)2 0,092(x 5)3 , 5 x < 9

0,5 + 0,467(x 9) 0,4(x 9)2 + 0,044(x 9)3


, 9 x 12

No Scilab, podemos utilizar:


X
Y
h
A

,2 x < 5

= [2 5 9 12]'
= [4.5 -1.9 0.5 -0.5]'
= X(2:4)-X(1:3)
= [1 0 0 0;h(1) 2*h(1)+2*h(2) h(2) 0; ...
0 h(2) 2*h(2)+2*h(3) h(3);0 0 0 1 ]
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

131

132

Clculo Numrico

z = [0, 3*(Y(3)-Y(2))/h(2)-3*(Y(2)-Y(1))/h(1), ...


3*(Y(4)-Y(3))/h(3)-3*(Y(3)-Y(2))/h(2), 0]'
c = A\z
for i=1:3
a(i) = Y(i)
d(i) = (c(i+1)-c(i))/(3*h(i))
b(i) = (Y(i+1)-Y(i))/h(i)-h(i)/3*(2*c(i)+c(i+1))
end
for i=1:3
P(i) = poly([a(i) b(i) c(i) d(i)],'x','coeff')
z = [X(i):.01:X(i+1)]
plot(z,horner(P(i),z-X(i)))
end

6.9.2

Spline fixado

Alternativamente, para completar o sistema (6.13), podemos impor condies de contorno fixadas, ou seja,
S 0 (x1 ) = f 0 (x1 )
S 0 (xn ) = f 0 (xn ).
Substituindo na equao (6.6)
s01 (x1 ) = b1 + 2c1 (x1 x1 ) + 3dj (x1 x1 )2 = f 0 (x1 ) = b1 = f 0 (x1 ) (6.18)
e
s0n1 (xn ) = bn1 + 2cn1 (xn xn1 ) + 3dj (xn xn1 )2
= bn1 + 2cn1 hn1 + 3dn1 h2n1 = f 0 (xn )

(6.19)

Usando as equaes (6.9) e (6.10) para j = 1 e j = n 1, temos:


2c1 h1 + c2 h1 = 3

y2 y1
3f 0 (x1 )
h1

e
cn1 hn1 + cn hn1 = 3f 0 (xn ) 3

yn yn1
hn1

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

(6.20)

(6.21)

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE

133

Essas duas equaes juntamente com as equaes (6.13) formam um sistema de n equaes Ac = z, onde

2h1
h1

h
1 2h2 + 2h1
A=

h2

..
.

0
..
.

0
..
.

h2
..
.

2h3 + 2h2
..
.

h3
..
.

c=

c1

c2

..
.
cn

z=

hn2 2hn2 + 2hn1


0

1
3 y2hy
1
2
3 y3hy
2

3f (x1 )

1
3 y2hy
1

3
2
3 y4hy
3 y3hy
3
2
..
.

yn3
yn2
3 yn2hn3
3 yn1hn2
n1
3f 0 (xn ) 3 ynhy
n1

..

hn1

2hn1

hn1
0

Observe que a matriz A diagonal dominante estrita e, portanto, o sistema


Ac = z possui soluo nica. Calculado c, os valores dos an , bn e dn so
obtidos diretamente pelas expresses (6.8), (6.10) e (6.9), respectivamente.
Exemplo 72. Construa um spline cbico com fronteira fixada que interpola
e x = 2.
a funo y = sin(x) nos pontos x = 0, x = 2 , x = , x = 3
2
O spline desejado passa pelos pontos (0,0), (/2,1), (,0), (3/2, 1) e
(2,0) e tem a forma:

f (x) =

a1 + b 1 x + c 1 x 2 + d 1 x 3

,0 x <

a2 + b2 (x 2 ) + c2 (x 2 )2 + d2 (x 2 )3

, 2 x <

, x <

3 3
)
2

, 3
x 2
2

a3 + b3 (x ) + c3 (x ) + d3 (x )
a4 + b4 (x

3
)
2

+ c4 (x

3 2
)
2

+ d4 (x

3
2

Observe que ele satisfaz as condio de contorno f 0 (0) = cos(0) = 1 e


f 0 (2) = cos(2) = 1.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

134

Clculo Numrico

Os coeficientes c1 , c2 , c3 e c4 resolvem o sistema Ac = z, onde:

A=

c=

/2

/2

/2

/2

/2

/2

/2

c1

c2

c3

c4

z=

c5

/2

01
10

3 /2 3 /2

10
01
3 /2 3 /2

(1)0

3
3 0(1)

/2
/2

3 10
/2

31

3 1 3 0(1)
/2

6/ 3

12/

0
12/
3 6/

Aqui c5 um coeficiente artificial para o problema. A soluo c1 =


0,0491874, c2 = 0,5956302, c3 = 0, c4 = 0,5956302 e c5 = 0,0491874.
Calculamos os demais coeficientes usando as expresses (6.8), (6.10) e (6.9):
a1
a2
a3
a4

c2 c1
3h1
c3 c2
=
3h2
c4 c3
=
3h3
c5 c4
=
3h4

d1 =
d2
d3
d4

=
=
=
=

y1
y2
y3
y3

=0
=1
=0
= 1

0,5956302 (0,0491874)
= 0,1159588
3 /2
0 (0,5956302)
=
= 0,1263967
3 /2
0,5956302 0
=
= 0,1263967
3 /2
0,0491874 0,5956302
=
= 0,1159588
3 /2
=

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

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE


b1 =
=
b2 =
=
b3 =
=
b4 =
=

135

y2 y1 h1
(2c1 + c2 )
h1
3
1 0 /2

(2 (0,0491874) 0,5956302) = 1
/2
3
y3 y2 h2
(2c2 + c3 )
h2
3
0 1 /2

(2 (0,5956302) + 0) = 0,0128772
/2
3
y4 y3 h3
(2c3 + c4 )
h3
3
1 0 /2

(2 0 + 0,5956302) = 0,9484910
/2
3
y5 y4 h4
(2c4 + c5 )
h4
3
0 (1) /2

(2 0,5956302 + 0,0491874) = 0,0128772


/2
3

Portanto,

f (x) =

x 0,049x2 0,12x3

1 + 0,01(x ) 0,6(x )2 + 0,13(x )3


2
2
2

,0 x <

0,95(x ) + 0,13(x )3

1 0,01(x 3 ) + 0,6(x 3 )2 0,12(x 3 )3


2
2
2

, x <

No Scilab, podemos resolver este problema fazendo:


//limpa memoria
clear A, B, a, b, c, d
//pontos fornecidos
xi = [0; %pi/2; %pi; 3*%pi/2; 2*%pi]
yi = sin(xi)
//numero de pontos
n = 5
disp('Pontos fornecidos:')
disp([xi, yi])
//vetor h
h = xi(2:n) - xi(1:n-1);
//matriz A
for i=1:n
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

, 2 x <
3
2

, 3
2 x 2

136

Clculo Numrico
for j=1:n
if ((j==1) & (i==1)) then
A(i,j) = 2*h(1);
elseif (j == i-1) then
A(i,j) = h(i-1);
elseif ((i>1) & (i<n) & (i==j)) then
A(i,j) = 2*(h(i) + h(i-1));
elseif (j==i+1) then
A(i,j) = h(i);
elseif ((j==n) & (i==n)) then
A(i,j) = 2*h(n-1);
else
A(i,j) = 0;
end
end

end
disp('Matriz A:')
disp(A)
//vetor z
for i=1:n
if ((i==1)) then
z(i) = 3*(yi(2)-yi(1))/h(1) - 3*cos(xi(1));
elseif ((i>1) & (i < n)) then
z(i) = 3*(yi(i+1)-yi(i))/h(i) ...
- 3*(yi(i) - yi(i-1))/h(i-1);
elseif (i == n) then
z(i) = 3*cos(xi(n)) - 3*(yi(n) - yi(n-1))/h(n-1);
end
end
disp('Vetor z:')
disp(z)
//coeficientes c
c = inv(A)*z
disp('Coeficientes c:')
disp(c)
//coeficientes a
a = yi(1:n-1);
disp('Coeficientes a:')
disp(a)
//coeficientes b
for j=1:n-1
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

6.9. INTERPOLAO CBICA SEGMENTADA - SPLINE

137

b(j) = (3*yi(j+1) - 3*yi(j) - 2*c(j)*h(j)^2 ...


- c(j+1)*h(j)^2)/(3*h(j));
end
disp('Coeficientes b:')
disp(b)
//coeficientes d
for j=1:n-1
d(j) = (c(j+1) - c(j))/(3*h(j));
end
disp('Coeficientes d:')
disp(d)
//spline cubico obtido
function [y] = s(x)
for i=1:n-2
if ((x>=xi(i)) & (x<xi(i+1))) then
y = a(i) + b(i)*(x-xi(i)) ...
+ c(i)*(x-xi(i))^2 + d(i)*(x-xi(i))^3;
end
end
if ((x>=xi(n-1)) & (x<=xi(n))) then
y = a(n-1) + b(n-1)*(x-xi(n-1)) ...
+ c(n-1)*(x-xi(n-1))^2 + d(n-1)*(x-xi(n-1))^3;
end
endfunction

Resumo sobre Splines


Dado um conjunto de pontos (xi ,yi ), i = 1,2, . . . ,n, um spline cbico a
seguinte funo definida por partes:

s(x) =

a1 +b1 (xx1 )+c1 (xx1 )2 +d1 (xx1 )3

a2 +b2 (xx2 )+c2 (xx2 )2 +d2 (xx2 )3

..
.

, x1 x < x2
, x2 x < x3
..
.

an1 +bn1 (xxn1 )+cn1 (xxn1 )2 +dn1 (xxn1 )3 , xn1 x xn

Definindo-se hj = xj+1 xj , os coeficientes cj , j = 1,2, . . . ,n, so soluo


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

138

Clculo Numrico

do sistema linear Ac = z, onde:


Spline Natural

Spline Fixado

s001 (x1 ) = 0 e s00n1 (xn ) = 0

s01 (x1 ) = f 0 (x1 ) e s0n1 (xn ) = f 0 (xn )

ai,j =

hi1

,j = i = 1
, j = i 1, i < n

2(hi + hi1 ) , j = i, 1 < i < n

hi

zi =

3 yi+1hiyi

ai,j =

, j = i + 1, i > 1

, caso contrrio.

,i = 1

,1 < i < n
,i = n

zi =

,j = i = 1
,j = i 1

2(hi + hi1 ) , j = i, 1 < i < n

hi

2hn1

,j = i = n

i1
3 yihy
i1

2h1

hi1

,j = i + 1
,j = i = n
, caso contrrio.

3 y2hy
3f 0 (x1 )

,i = 1

,i = n

3 yi+1hiyi

i1
3 yihy
i1
n1
3f 0 (xn ) 3 ynhy
n1

,1 < i < n

os coeficientes aj , bj e dj , j = 1,2, . . . ,n 1, so calculados conforme segue:


aj = y j
3yj+1 3yj 2cj h2j cj+1 h2j
bj =
3hj
cj+1 cj
dj =
3hj

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

Captulo 7
Derivao e integrao
numrica
7.1

Derivao Numrica


dy
pode ser calDado um conjunto de pontos (xi ,yi )ni=1 , a derivada dx
i
culada de vrias formas. Na prxima seo trabalharemos com diferenas
finitas, que mais adequada quando as abcissas esto prximas e os dados
no sofrem perturbaes significativas. Na seo subsequente trataremos os
casos quando os dados oscilam via ajuste ou interpolaes de curvas.

7.1.1

Aproximao da derivada por diferenas finitas

A derivada f 0 (x0 ) de uma funo f (x) no ponto x0


f (x0 + h) f (x0 )
.
h0
h

f 0 (x0 ) = lim

Da definio, se h 6= 0 pequeno (no muito pequeno para evitar o cancelamento catastrfico), esperado que uma aproximao para a derivada no
ponto x0 seja dada por:
f 0 (x0 )

f (x0 + h) f (x0 )
.
h

(7.1)

Exemplo 73. Calcule a derivada numrica da funo f (x) = cos(x) no ponto


x = 1 usando h = 0,1, h = 0,01, h = 0,001 e h = 0,0001.
Soluo. Usando a frmula de diferenas dada pela Equao (7.1), devemos
calcular:
cos(1 + h) cos(1)
f 0 (x)
h
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

140

Clculo Numrico

para cada valor de h solicitado. Fazendo isso, obtemos a seguinte tabela:

f (1 + h) f (1)
h

0,1

0,4535961 0,5403023
= 0,8670618
0,1

0,01

0,5318607 0,5403023
= 0,8441584
0,01

0,001

0,5403023 0,5403023
= 0,841741
0,001

0,0001

0,5403023 0,5403023
= 0,841498
0,0001

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
dp = (f(x0+h) - f(x0))/h
E, similarmente, para outros valores de x0 e h.

Observe que, no exemplo anterior, quanto menor h, melhor a aproximao, visto que o valor exato para a derivada f 0 (1) = sin(1) = 0,8414710.
Porm, quando h = 1013 , a derivada numrica 0,8404388 (usando aritmtica double), resultado pior que aquele para h = 0,0001. Alm disso, na
mesma aritmtica, quando h = 1016 a derivada numrica calculada zero
(cancelamento catastrfico). Isso nos motiva a pensar qual o melhor h.
Essa aproximao para a derivada denominada diferenas progressivas.
A derivada numrica tambm pode ser aproximada usando definies equivalentes:
yi yi1
f (x0 ) f (x0 h)
=
f 0 (x0 )
h
h
que denominada diferenas regressivas ou
f 0 (x0 )

f (x0 + h) f (x0 h)
yi+1 yi1
=
2h
2h

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

7.1. DERIVAO NUMRICA

141

que denominada diferenas centrais.


Exemplo 74. Calcule a derivada numrica da funo f (x) = cos(x) no ponto
x = 1 usando diferenas progressivas, diferenas regressivas e diferenas centrais com h = 0,1, h = 0,01 e h = 0,001.
Soluo. A tabela abaixo mostra a derivada numrica para cada valor de h.
Diferenas
Progressivas
Regressivas
Centrais
Diferenas
Progressivas
Regressivas
Centrais
Diferenas
Progressivas
Regressivas
Centrais

h=0,1
0,8670618
cos(1) cos(0,9)
= 0,8130766
0,1
cos(1,1) cos(0,9)
= 0,8400692
0,2
h=0,01
0,8441584
cos(1) cos(0,99)
= 0,8387555
0,01
cos(1,01) cos(0,99)
= 0,8414570
0,02
h=0,01
0,841741
cos(1) cos(0,999)
= 0,8412007
0,001
cos(1,001) cos(0,999)
= 0,8414708
0,002

7.1.2

Erros de truncamento

Seja D+,h f (x0 ) a aproximao da derivada de f em x0 por diferenas


progressivas, D,h f (x0 ) a aproximao por diferenas regressivas e D0,h f (x0 )
a aproximao por diferenas centrais, ento
f (x0 + h) f (x0 )
D+,h f (x0 ) f 0 (x0 ) =
f 0 (x0 )
h
2
f (x0 ) + hf 0 (x0 ) + h2 f 00 (x0 ) + O(h3 ) f (x0 )
=
f 0 (x0 )
h
h 00
2
=
f (x0 ) + O(h ) = O(h).
2

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

142

Clculo Numrico

Analogamente:
D,h f (x0 ) f 0 (x0 ) =
=

f (x0 ) f (x0 h)
f 0 (x0 )
h

f (x0 ) f (x0 ) hf 0 (x0 ) +

h2 00
f (x0 )
2

+ O(h3 )

f 0 (x0 )

h
= f 00 (x0 ) + O(h2 ) = O(h).
2
Tambm:
f (x0 + h) f (x0 h)
f 0 (x0 )
2h
2
f (x0 ) + hf 0 (x0 ) + h2 f 00 (x0 ) + O(h3 )
=
2h
2
0
f (x0 ) hf (x0 ) + h2 f 00 (x0 ) + O(h3 )

f 0 (x0 )
2h
= O(h2 ).

D0,h f (x0 ) f 0 (x0 ) =

Exemplo 75. Calcule a derivada numrica e o erro de truncamento de


f (x) = ex em x = 1,5 pela frmula de diferena progressiva para h = 0,1,
h = 0,01 e h = 0,001.
Soluo. Como |f 00 (x)| = |ex | < 1, ento |f+0 (x0 ) f 0 (x0 )| < h2 .
h

diferenas progressivas erro =

h
2

0,1

0,2123364

0,05

0,01

0,2220182

0,005

0,001

0,2230186

0,0005

O valor exato da derivada f 0 (1,5) = 0,2231302.

7.1.3

Erros de arredondamento

Para entender como os erros de arredondamento se propagam ao calcular


as derivadas numricas vamos considerar o operador de diferenas finitas
progressivas
f (x + h) f (x)
D+,h f (x) =
.
h
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.1. DERIVAO NUMRICA

143

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). Seja (x,h) o erro de arredondamento ao calcularmos a derivada e consideremos
D+,h f (x) = D+,h f (x)(1 + (x,h)) =

f (x + h) f (x)
(1 + (x,h)).
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 representao em ponto flutuante dos nmeros
f (x + h) e f (x), respectivamente. A diferena do valor da derivada e sua
aproximao representada em ponto flutuante pode ser estimada da seguinte
forma:


0

f (x) D+,h f (x)



0
f (x)



0
f (x)


f (x + h) f (x)
(1 + (x,h))

h

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

!

f (x) f (x)
(1 + )
+

h
=



0
f (x) +

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

h
h
!


f (x) f (x)
+
(1 + )

h






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


f (x)
+





h
h

!


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





|1 + | +





h
h
!

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

Mh +

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

onde
M=

1
max |f 00 (y)|
2 xyx+h

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

144

Clculo Numrico

est relacionado com o erro de truncamento.


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

Exemplo 76. Estude o comportamento da derivada de f (x) = ex no ponto


x = 1,5 quando h fica pequeno.
Soluo. 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

1010

1011

1012

1013

1014

1015

D+,h f (1,5)

0,3161976

0,3161971

0,3162332

0,3158585

0,3178013

0,3747003

102

104

106

107

108

109

D+,h f (1,5)

0,3125246

0,3161608

0,3161973

0,3161976

0,3161977

0,3161977

Observe que o valor exato 0,3161977 e o h timo algo entre 108 e


10 .

7.1.4

Aproximaes de alta ordem

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 (x1 )
(x0 x1 )(x0 x2 )
(x1 x0 )(x1 x2 )
000
(x x0 )(x x1 )
f ((x))
+ f (x2 )
+
(x x0 )(x x1 )(x x2 ).
(x2 x0 )(x2 x1 )
6

f (x) = f (x0 )

A derivada de f (x)
2x x1 x2
2x x0 x2
+ f (x1 )
(x0 x1 )(x0 x2 )
(x1 x0 )(x1 x2 )
2x x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
000
f ((x))
+
((x x1 )(x x2 ) + (x x0 )(2x x1 x2 ))
6
!
f 000 ((x))
+ Dx
(x x0 )(x x1 )(x x2 ).
6

f 0 (x) = f (x0 )

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

(7.2)

7.1. DERIVAO NUMRICA

145

Trocando x por x0 , temos


2x0 x1 x2
2x0 x0 x2
+ f (x1 )
(x0 x1 )(x0 x2 )
(x1 x0 )(x1 x2 )
2x0 x0 x1
+ f (x2 )
(x2 x0 )(x2 x1 )
000
f ((x0 ))
+
((x0 x1 )(x0 x2 ) + (x0 x0 )(2x0 x1 x2 ))
6
!
f 000 ((x0 ))
(x0 x0 )(x0 x1 )(x0 x2 ).
+ Dx
6

f 0 (x0 ) = f (x0 )

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)
000
h
f ((x0 ))
+ 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 (7.2),
temos outras duas expresses
1
1
1
f 000 ((x1 ))
f (x1 ) =
f (x0 ) + f (x2 ) + h2
h
2
2
6


1
3
f 000 ((x2 ))
1
f 0 (x2 ) =
f (x0 ) 2f (x1 ) + f (x2 ) + h2
h 2
2
3
Podemos reescrever as trs frmulas da seguinte forma:


1
1
3
f 000 ((x0 ))
f (x0 ) =
f (x0 ) + 2f (x0 + h) f (x0 + 2h) + h2
h
2
2
3


000
1
1
1
f
((x
+
h))
0
f (x0 ) + f (x0 + 2h) + h2
f 0 (x0 + h) =
h
2
2
6


f 000 ((x0 + 2h))
1 1
3
0
f (x0 + 2h) =
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
(7.3)
2h
3
1
f 000 ((x0 ))
f 0 (x0 ) =
[f (x0 + h) f (x0 h)] + h2
(7.4)
2h
6
1
f 000 ((x0 ))
f 0 (x0 ) =
[f (x0 2h) 4f (x0 h) + 3f (x0 )] + h2
(7.5)
2h
3
0

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

146

Clculo Numrico

Observe que uma das frmulas exatamente as diferenas centrais obtida


anteriormente.
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:
f 0 (x0 ) =

1
h4
[f (x0 2h) 8f (x0 h) + 8f (x0 + h) f (x0 + 2h)]+ f (5) ((x0 ))
12h
30
(7.6)
2

Exemplo 77. Calcule a derivada numrica de f (x) = ex em x = 1,5 pela


frmula de trs e cinco pontos 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

diferenas progressivas

0,2809448

0,3125246

0,3158289

diferenas regressivas

0,3545920

0,3199024

0,3165667

trs pontos usando (7.3)

0,3127746

0,3161657

0,3161974

trs pontos usando (7.4)

0,3177684

0,3162135

0,3161978

trs pontos usando (7.5)

0,3135824

0,3161665

0,3161974

cinco pontos usando (7.6) 0,3162384 0,316197677 0,3161976736860


O valor exato da derivada f 0 (1,5) = 0,3161976736856.

7.1.5

Aproximao para a segunda derivada

Para aproximar a derivada segunda, considere as expanses em srie de


Taylor
f (x0 + h) = f (x0 ) + hf 0 (x0 ) +

h2 00
h3
f (x0 ) + f 000 (x0 ) + O(h4 )
2
6

f (x0 h) = f (x0 ) hf 0 (x0 ) +

h2 00
h3
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 )
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.1. DERIVAO NUMRICA

147

ou seja, uma aproximao de segunda ordem para a derivada segunda em x0

f 00 (x0 ) =

f (x0 + h) 2f (x0 ) + f (x0 h)


2
+ O(h2 ) := D0,h
f (x0 ) + O(h2 ),
2
h

onde
2
f (x0 ) =
D0,h

f (x0 + h) 2f (x0 ) + f (x0 h)


.
h2
2

Exemplo 78. Calcule a derivada segunda numrica de f (x) = ex em


x = 1,5 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
f (1,5) 0,7364712 0,7377814 0,7377944
D0,h
2

Observe que f 00 (x) = (4x2 2)ex e f 00 (1,5) = 0,7377946.

7.1.6

Derivada via ajuste ou interpolao




dy
Dado os valores de uma funo em pontos {(xi ,yi )}N
i=1 , as derivadas 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
e
y 0 (x1 ) Q0 (x1 ) = 0,45,
y 0 (x3 ) Q0 (x3 ) = 3,45

y 0 (x2 ) Q0 (x2 ) = 1,95,


y 0 (x4 ) Q0 (x4 ) = 4,95

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

148

Clculo Numrico

Agora olhe o grfico da seguinte tabela de pontos.


x

1,95

1,67

3,71

3,37

5,12

5,79

7,50

7,55

9,33

9,41

10 11,48

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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.1. DERIVAO NUMRICA

149

diferenas regressivas f 0 (7) (7,557,50)


= 0,05 e por diferenas progres1
(9,337,55)
0
sivas f (7)
= 1,78. A melhor forma de calcular a derivada
1
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
E 7.1.1. 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

d) f 00 (x) =

f (x+h)2f (x)+f (xh)


h2

+ O(h2 )
+ O(h2 )

E 7.1.2. Use os esquemas numricos do exerccio 7.1.1 para aproximar


as seguintes derivadas:
a) f 0 (x) onde f (x) = sin(x) e x = 2.
b) f 0 (x) onde f (x) = ex e x = 1.
c) f 00 (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 7.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)
d) f 00 (0) = a1 f (0) + a2 f (h) + a3 f (2h) + O(h)
e) 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

150

Clculo Numrico

E 7.1.4. As tenses na entrada, vi , e sada, vo , de um amplificador foram


medidas em regime estacionrio conforme tabela abaixo.
0.

0.5

1.

1.5

2.

2.5

3.

3.5

4.

4.5

5.

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

vi = 1
vi = 4.5
Dica:
y=[0 1.05 1.83 2.69 3.83 4.56 5.49 6.56 6.11 7.06 8.29]

7.2

Problemas de valor contorno

Nesta seo usaremos a aproximao numrica da derivada para resolver


problemas de valor de contorno da forma

uxx = f (x,u), a < x < b.

u(b) = ub

u(a) = ua

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

7.2. PROBLEMAS DE VALOR CONTORNO

151

Resolver numericamente o problema acima exige uma discretizao do domnio [a,b], ou seja, dividir o domnio em N partes iguais, definindo
h=

ba
N

O conjunto de abcissas xi , i = 1,...,N +1 formam uma malha para o problema


discreto. Nosso objetivo encontrar as ordenadas ui = u(xi ) que satisfazem
a verso discreta:

i +ui1
= f (xi ,ui ), 2 i N.
ui+1 2u
h2

u1 = ua
uN +1 = ub

+1
O vetor soluo (ui )N
i=1 do problema soluo do sistema acima, que linear
se f for linear em u e no linear caso contrrio.

Exemplo 79. Encontre uma soluo numrica para o problema de contorno:

uxx + u = ex , 0 < x < 1.


u(0) = 1
u(1) = 2

Soluo. Observe que


h=

1
N

e a verso discreta da equao

i +ui1
ui+1 2u
+ ui = exi , 2 i N.
h2

u1 = 1
uN +1 = 2

ou seja,

u1 = 1

uN +1 = 2

ui+1 + (2 + h2 )ui ui1 = h2 exi , 2 i N.

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

152

Clculo Numrico

que um sistema linear. A sua forma matricial :

1
0

1 2 + h2

0
1

2 + h2

0
..
.

0
...

u1

u3
..
.

1 2 + h2 1
0

u2

uN
uN +1

1
2 x2

he

h2 ex3
..
.
h2 exN
2

Para N = 10, temos a seguinte soluo:

1,000000

1,0735083

1,1487032

1,2271979
1,3105564
1,4003172
1,4980159
1,6052067
1,7234836
1,8545022
2,000000

Exerccios
E 7.2.1. Considere o seguinte problema de valor de contorno para a
equao de calor no estado estacionrio:

uxx = 32, 0 < x < 1.

u(1) = 10

u(0) = 5

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

7.2. PROBLEMAS DE VALOR CONTORNO

153

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 7.2.2. Considere o seguinte problema de valor de contorno para a
equao de calor no estado estacionrio:

uxx = 200e(x1) , 0 < x < 2.

u(2) = 100

u(0) = 120

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 7.2.3. Considere o seguinte problema de valor de contorno para a
equao de calor no estado estacionrio:

uxx = 200e(x1) , 0 < x < 2.

u(2) = 100

u0 (0) = 0

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 7.2.4. Considere o seguinte problema de valor de contorno para a
equao de calor no estado estacionrio com um termo no-linear de radiao:

uxx = 100

u4
,
10000

0 < x < 2.

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

154

Clculo Numrico

Expresse a soluo com dois algarismos depois do separador decimal. Dica:


Veja problema 38 da lista 2, seo de sistemas no lineares.
E 7.2.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:

uxx + 3ux = 100

u(2) = 10

u4
,
10000

0 < x < 2.

u0 (0) = 0

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 7.2.6. Considere o seguinte problema de valor de contorno:

u00 + 2u0 = ex

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

7.3

Integrao numrica

Considere o problema de calcular a rea entre uma funo positiva, o eixo


x e as retas x = a e x = b. O valor exato dessa rea calculada fazendo
uma aproximao por retngulos com bases iguais e depois tomando o limite
quando o nmero de retngulos tende ao infinito:
A = n
lim

n
X

f (xi )hn ,

i=1

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

7.3. INTEGRAO NUMRICA

155

onde hn = ba
o tamanho da base dos retngulo e f (xi ), 1 i n,
n
a + (i 1)h xi a + ih, a altura dos retngulos. Essa definio
generalizada para clculo de integrais num intervalo [a,b]:
Z b

f (x)dx = lim

n
X

f (xi )hn .

i=1

A figura abaixo 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 tabela:


h1 = 2
R2
0

h2 = 1

(x2 + 1)dx h1 f (1) = 4 h2 f (0,5) + h2 f (1,5) = 4,5

h3 = 0,5 h4 = 0,25
4,625

Observe que
Z 2
0

"

x3
(x + 1)dx =
+x
3

#2

=
0

8
+ 2 = 4,6666667
3

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

4,65625

156

Clculo Numrico

7.3.1

Regras de Newton-Cotes

A integral de uma funo num intervalo [a,b], tambm chamada de quadratura numrica, aproximada pela soma
Z b

f (x)dx

n
X

ai f (xi ),

i=1

onde xi , 1 R i n, so pontos distintos do intervalo [a,b]. Nessa definio,


a integral 02 (x2 + 1)dx (dada na seo ??) usando uma aproximao por
retngulo usa apenas um ponto, o ponto mdio do intervalo (x1 = 1), e a
soma se reduz a uma parcela ((2 0)f (1)). A frmula geral para essa caso,
chamado de regra do ponto mdio :
Z b

f (x)dx (b a)f

a+b
2

:= hf (x1 ).

(7.7)

Regra do ponto mdio


A regra do ponto mdio (7.7) pode ser deduzida mais formalmente usando
a expanso de Taylor
f (x) = f (x1 ) + f 0 (x1 )(x x1 ) +

f 00 ((x))
(x x1 )2
2

que leva a integral


Z b

f (x)dx =

Z b
a

f (x1 )dx + f (x1 )

Z b
a

(x x1 )dx +

Z b
a

f 00 ((x))
(x x1 )2 dx.
2

Usando o teorema do valor mdio para integrais e que h = b a e x1 =


(a + b)/2, temos:
Z b
a

f (x)dx = hf (x1 ) + f (x1 )

Z b
a

"

00

(x x1 )dx + f ()
#
2 b

(x x1 )
= hf (x1 ) + f (x1 )
2
0

"

Z b
a

1
(x x1 )2 dx
2

1
+ f () (x x1 )3
6
a
00

(b x1 )2 (a x1 )2

2
2


1
1
+ f 00 () (b x1 )3 (a x1 )3
6
6
h3 f 00 ()
= hf (x1 ) +
.
3

= hf (x1 ) + f 0 (x1 )

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

b
a

7.3. INTEGRAO NUMRICA

157

Exemplo 80. Use a regra do ponto mdio para aproximar a integral


Z 1

ex dx.

Depois divida a integral em duas


Z 1/2

x2

Z 1

dx +

ex dx.

1/2

e aplique a regra do ponto mdio em cada uma delas. Finalmente, repita o


processo dividindo em quatro integrais.
Usando o intervalo [0,1], temos h = 1 e x1 = 1/2. A regra do ponto mdio
resulta em
Z 1
2
ex dx 1 e1/4 = 0,7788008
0

Usando dois intervalos, [0,1/2] e [1/2,1] e usando a regra do ponto mdio em


cada um dos intervalos, temos:
Z 1

ex dx 0,5 e1/16 + 0,5 e9/16 ) = 0,4697065 + 0,2848914 = 0,7545979

Agora, usando quatro intervalos, temos


Z 1

ex dx 0,25e1/64 +0,25e9/64 +0,25e25/64 +0,25e49/64 = 0,7487471

Observe que o valor da integral


Z 1

ex dx = 0,7468241330.

A forma natural de obter as regras de integrao usar o polinmio de


Lagrange que passa pelo pontos {(xi ,f (xi ))}ni=1
n
X

f (x) = Pn (x) + termo de erro =

f (xi )Li (x) +

n
Y

(x xi )

i=1

i=1

f (n+1) ((x))
.
(n + 1)!

e integramos
Z b

f (x)dx =

n
X
i=1

"

f (xi )

Z b
a

Z bY
n
1
Li (x)dx +
(x xi )f (n+1) ((x))dx.
(n + 1)! a i=1
#

A frmula de quadratura ento


Z b

f (x)dx

n
X

ai f (xi ),

i=1

onde
ai =

Z b
a

Li (x)dx

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

158

Clculo Numrico

Regra do Trapzio
A regra do trapzio consiste em aproximar a integral por um trapzio em
vez de um retngulo, como fizemos. Para isso, o polinmio de Lagrange deve
ser uma reta, como mostra a figura.

O polinmio de Lagrange de primeira ordem que passa por (x0 ,f (x0 )) :=


(a,f (a)) e (x1 ,f (x1 )) := (b,f (b)) dado por

P1 (x) = f (x0 )

(x x1 )
(x x0 )
(x x1 )
(x x0 )
+ f (x1 )
= f (x0 )
f (x1 )
,
(x1 x0 )
(x0 x1 )
h
h

onde h = x1 x0 . Podemos integrar a funo f (x) aproximando-a por esse


polinmio:
Z b
a

f (x)dx = f (x0 )

Z b
a

Z b
(x x0 )
(x x1 )
dx f (x1 )
dx
h
h
a

1 Zb
+
(x x0 )(x x1 )f 00 ((x))dx.
2! a
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

159

Pelo Rteorema do valor mdio, existe a b tal que


f () ab g(x)dx e, portanto,
Z b
a

"

(x x0 )2
f (x)dx = f (x0 )
2h
00

"

# x1

"

(x x1 )2
f (x1 )
2h

x0

f () x
x
(x1 + x0 ) + x0 x1 x
2
3
2

Rb
a

f ((x))g(x)dx =

# x1
x0

#x1
x0

(x1 x0 )2
(x0 x1 )2
= f (x0 )
+ f (x1 )
2h
2h
!
x30 x20
f 00 () x31 x21
(x1 + x0 ) + x0 x1 x1
+ (x1 + x0 ) x0 x1 x0
+
2
3
2
3
2
2
2
h
h
= f (x0 ) + f (x1 )
2h
2h
3
2
00
f () 2x1 3x1 (x1 + x0 ) + 6x21 x0 2x30 + 3x20 (x1 + x0 ) 6x1 x20
+
2
6

h
f 00 ()  3
= (f (x0 ) + f (x1 )) +
x0 3x20 x1 + 3x21 x0 x31
2
12
3 00
h f ()
h
= (f (x0 ) + f (x1 ))
2
12
Exemplo 81. Use a regra do trapzio para aproximar a integral
Z 1

ex dx.

Depois divida a integral em duas


Z 1/2
0

x2

dx +

Z 1

ex dx.

1/2

e aplica 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
0

1
2
ex dx (e0 + e1 ) = 0,6839397
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
0



0,5  0
0,5  1/4
e + e1/4 +
e
+ e1
2
2
= 0,4447002 + 0,2866701 = 0,7313703.

ex dx

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

160

Clculo Numrico

Agora, usando quatro intervalos, temos


Z 1



0,25  0
0,25  1/16
e + e1/16 +
e
+ e1/4
2
2


0,25  1/4
0,25  9/16
9/16
+
e
+e
+
e
+ e1
2
2
= 0,7429841

ex dx

Regra de Simpson
A regra de Simpson consiste em aproximar a integral usando trs pontos
do intervalo:
x0 = a,

x1 :=

a+b
= x0 + h
2

x2 := b = x1 + h.

com h = (ba)/2. Para isso, o polinmio de Lagrange deve ser uma parbola:
(x x1 )(x x2 )
(x x0 )(x x2 )
+ f (x1 )
(x0 x1 )(x0 x2 )
(x1 x0 )(x1 x2 )
(x x0 )(x x1 )
.
+ f (x2 )
(x2 x0 )(x2 x1 )

P2 (x) = f (x0 )

Se usarmos o mesma metodologia da regra dos trapzios, calcularemos


Z b

f (x)dx =

Z b
a

P2 (x)dx +

Z b
a

(x x0 )(x x1 )(x x2 ) 000


f ((x))dx
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
alternativa. Considere o polinmio de Taylor
f (x) = f (x1 )+f 0 (x1 )(xx1 )+

f 00 (x1 )
f 000 (x1 )
f (4) ((x))
(xx1 )2 +
(xx1 )3 +
(xx1 )4 ,
2
6
24

onde x0 (x) x2 e integre no intervalo [a,b] = [x0 ,x2 ]:


Z b
a

"

f (x)dx = f (x1 )(x x1 ) + f 0 (x1 )

(x x1 )2 f 00 (x1 )
+
(x x1 )3
2
6

#x

2
f 000 (x1 )
4
+
(x x1 )
24
x0
1 Z x2 (4)
+
f ((x))(x x1 )4 dx,
24 x0

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

7.3. INTEGRAO NUMRICA

161

Pelo teorema do valor mdio, existe x0 x2 tal que


Z b
a

"

f (x)dx = f (x1 )(x x1 ) + f 0 (x1 )


f 000 (x1 )
+
(x x1 )4
24

#x2
x0

f (4) () Z x2
(x x1 )4 dx
+
24
x0
"
= f (x1 )(x x1 ) + f 0 (x1 )
f 000 (x1 )
+
(x x1 )4
24
+

(4)

(x x1 )2 f 00 (x1 )
+
(x x1 )3
2
6

#x2

()
(x x1 )5
120
h

(x x1 )2 f 00 (x1 )
+
(x x1 )3
2
6

x0

ix2
x0

Usando o fato que


(x2 x1 )3 (x0 x1 )3 = 2h3 ,
(x2 x1 )4 (x0 x1 )4 = 0
e
(x2 x1 )5 (x0 x1 )5 = 2h5 ,
temos

h5 f (4) ()
h3 00
f (x1 ) +
.
3
60
a
Usando a diferenas finitas centrais para a derivada segunda:
Z b

f (x)dx = 2hf (x1 ) +

f (x0 ) 2f (x1 ) + f (x2 ) h2 (4)


f (x1 ) =
+ f (1 ),
h2
12
x0 1 x2 , temos
00

Z b
a

h3
f (x)dx = 2hf (x1 ) +
3

f (x0 ) 2f (x1 ) + f (x2 ) h2 (4)


+ f (1 )
h2
12

h5 f (4) ()
60


h
h5 1 (4)
1 (4)
=
(f (x0 ) + 4f (x1 ) + f (x2 ))
f (1 ) f () .
3
12 3
5
+

Pode-se mostrar que possvel escolher 2 que substitua e 1 com a seguinte


estimativa
Z b
a

f (x)dx =

h
h5
(f (x0 ) + 4f (x1 ) + f (x2 )) f (4) (2 ).
3
90

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

162

Clculo Numrico

Exemplo 82. Use a regra de Simpson para aproximar a integral


Z 1

ex dx.

Depois divida a integral em duas


Z 1/2

ex dx +

Z 1

ex dx.

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

ex dx

0,5 0
(e + 4e1/4 + e1 ) = 0,7471804
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

ex dx

7.3.2

0,25 0
0,25 1/4
(e +4e1/16 +e1/4 )+
(e
+4e9/16 +e1 ) = 0,7468554
3
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:
Z
n Z
b

f (x)dx =

xi+1

f (x)dx

i=1 xi

onde xi = a + (i 1)h, h = (b a)/n e i = 1,2, . . . ,n + 1, sendo n o nmero


de subintervalos da partio do intervalo de integrao. Depois, aplica-se um
mtodo simples de integrao em cada subintervalo.
Mtodo composto dos trapzios
A regra composta dos trapzios assume a seguinte forma:
Z b

f (x)dx =

n Z xi+1
X

f (x) dx

i=1 xi
n
X
xi+1
i=1

xi
[f (xi ) + f (xi+1 )]
2

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

7.3. INTEGRAO NUMRICA

163

Como h = xi+1 xi , temos:


Z b
a

Ni
hX
f (x) dx
[f (xk ) + f (xk+1 )]
2 k=1
h
= [f (x1 ) + 2f (x2 ) + 2f (x3 ) + + 2f (xNi ) + f (xNi +1 )]
2
Ni
X
h
= [f (x1 ) + f (xNi +1 )] + h
f (xi )
2
i=2

Cdigo Scilab: Trapzio Composto


O cdigo Scilab abaixo uma implementao do mtodo do trapzio
composto para calcular:
Z b

f (x) dx =

n
X
h
[f (x1 ) + f (xn+1 )] + h
f (xi ) + O(h3 ),
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 Rdesejado. A varivel de sada y e corresponde a aproximao
calculada de ab f (x) dx.
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
Mtodo composto de Simpson
J a regra composta de Simpson assume a seguinte forma:
Z b

f (x) dx =

n Z xk+1
X
k=1 xk
n
X
xx+1
k=1

f (x)dx

xk+1 + xk
xk
f (xk ) + 4f
+ f (xk+1 )
6
2


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

164

Clculo Numrico

onde, como anteriormente, xk = a+(k1)h, h = (ba)/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:
Z b
a

n1
n
X
X
h
f (x) dx
f (x1 ) + 2
f (x2i+1 ) + 4
f (x2i ) + f (x2n+1 ) + O(h5 )
3
i=1
i=1

"

onde, agora, h = (b a)/(2n), xi = a + (i 1)h, i = 1,2, . . . ,2n + 1.


Cdigo Scilab: Simpson Composto
O cdigo Scilab abaixo uma implementao do mtodo de Simpson
composto para calcular:
Z b
a

n1
n
X
X
h
f (x1 ) + 2
f (x2i+1 ) + 4
f (x2i ) + f (x2n+1 ) + O(h3 ),
f (x) dx =
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
subintervalos Rdesejado. A varivel de sada y e corresponde a aproximao
calculada de ab f (x) dx.
Exemplo 83. Calcule numericamente a integral
Z 2

x2 ex dx

pelas regras compostas do ponto mdio, trapzio e Simpson variando o nmero de intervalos
Ni = 1, 2, 3, 6, 12, 24, 48, 96.
n

ponto mdio Trapzios

Simpson

5,4365637

218,3926

76,421909

21,668412

111,91458 51,750469

31,678746

80,272022 47,876505

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

96

46,352096

46,411323 46,371838

46,37187

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

7.3. INTEGRAO NUMRICA

7.3.3

165

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

Defina I(h) a aproximao desta integral pelo mtodo dos trapzios composto
com malha de largura constante igual a h. Aqui h = ba
para algum Ni
Ni
inteiro, i.e.:

I(h) =

Ni
X

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

Teorema 6. 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
a

f (x)dx = lim I(h) = I0


h0

Ou seja, o valor exato da integral procurada dado pelo coeficiente I0 .


A ideia central do mtodo de Romberg, agora, consiste em usar a extrapolao de Richardson para construir mtodos de maior ordem a partir do
mtodos dos trapzios para o intervalo (a,b)
Exemplo 84. Construo do mtodo de quarta ordem.
I(h) = I0 + I2 h2 + I4 h4 + I6 h6 + . . .
I

h
2

= I0 + I2

h2
h4
h6
+ I4 + I6 + . . .
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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

166

Clculo Numrico

Vamos agora aplicar a frmula para h = b a,


h
[f (a) + f (b)]
2
h
a+b
I(h/2) =
[f (a) + 2f (c) + f (b)] , c =
4
2
I(h) =

h
h
4I(h/2) I(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 )
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:
Rk,1

k2
1
h 2X
h
= Rk1,1 + k1
f a + (2i 1) k1
2
2
2
i=1

Definimos Rk,2 para k 2 como o esquema de ordem quatro obtido da


frmula do exemplo 84:
Rk,2 =

4Rk,1 Rk1,1
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,j = Rk,j1 +

Rk,j1 Rk1,j1
.
4j1 1

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

7.3. INTEGRAO NUMRICA

167

Exemplo
85. Construa o esquema de Romberg para aproximar o valor de
R 2 x2
e
dx
com
erro de ordem 8.
0
O que nos fornece os seguintes resultados:
55,59815

0,000000

0,000000

0,000000

30,517357 22,157092

0,000000

0,000000

20,644559 17,353626 17,033395

0,000000

17,565086 16,538595 16,484259 16,475543


Ou seja, temos:
Z 2

ex dx 16,475543

usando uma aproximao de ordem 8.


Exemplo
86. Construa o esquema de Romberg para aproximar o valor de
R 2 2 x2
x
e
dx
com erro de ordem 12.
0
O que nos fornece:
218,3926
111,91458 76,421909
66,791497 51,750469 50,105706
51,892538 46,926218 46,604601 46,549028
47,782846 46,412949 46,378731 46,375146 46,374464
46,72661

46,374531

46,37197

46,371863

46,37185

46,371847

Ou seja, temos:
Z 2

x2 ex dx 46,371847

com uma aproximao de ordem 12.

7.3.4

Ordem de preciso

Todos os mtodos de quadratura que vimos at o momento so da forma


Z b
a

f (x)dx

N
X

wj f (xj )

j=1

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

168

Clculo Numrico

Exemplo 87.

(a) Mtodo do trapzio


Z b

ba
2
ba
ba
f (a) +
f (b)
2
2

f (x)dx [f (a) + f (b)]

:= w1 f (x1 ) + w2 f (x2 ) =

2
X

wj f (xj )

j=1

(b) Mtodo do trapzio com dois intervalos


Z b

"

f (x)dx

ba
a+b
+ f (b)
f (a) + 2f
2
4
!
ba
ba
a+b
ba
f (a) +
f
f (b)
+
4
2
2
4

:= w1 f (x1 ) + w2 f (x2 ) + w3 f (x3 ) =

3
X

wj f (xj )

j=1

(c) Mtodo de Simpson


Z b

"

a+b
ba
f (a) + 4f
+ f (b)
2
6
!
ba
2(b a)
ba
a+b
f (a) +
f
+
f (b)
6
3
2
6

f (x)dx

=
:=

3
X

wj f (xj )

j=1

(d) Mtodo de Simpson com dois intervalos


Z b

"

f (x)dx

+
=
+
:=

3a + b
a+b
f (a) + 4f
+ 2f
4
2
!
#
a + 3b
ba
4f
+ f (b)
4
12
!
ba
ba
ba
3a + b
f (a) +
f
+
f
12
3
4
6
!
ba
a + 3b
ba
f
+
f (b)
3
4
12

5
X

wj f (xj )

j=1

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

a+b
2

7.3. INTEGRAO NUMRICA

169

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

f (x)dx =

Z b
a
Z b
a

a0 dx +

Z b
a

an xn dx +

a1 xdx +

Z b

= a0 (b a) + a1
an

a
2

Z b
a

a2 x2 dx + . . . +

Rn (x)dx

b a2
b 3 a3
+ a2
+ ... +
2
3

bn+1 an+1 Z b
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 5. 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
X

wj f (xj ) =

Z b

j=1

f (x)dx,

f (x) = xk , k = 0,1, . . . n

ou, equivalentemente:
n
X

wj xkj

j=1

Z b

xk dx =

bk+1 ak+1
,
k+1

k = 0,1, . . . n

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


n
X

wj = b a

j=1

Exemplo 88. A ordem de preciso do esquema de trapzios 1:


Z b
a

f (x)dx [f (a) + f (b)]

2
ba X
=
wj f (xj )
2
j=1

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

170

Clculo Numrico

onde wj =

ba
,
2

x1 = a e x2 = b.
n
X

(k = 0) :

wj = b a

j=1
n
X

b 2 a2
ba
=
wj xj = (a + b)
2
2
j=1

(k = 1) :

n
X

(k = 2) :

wj x2j

j=1

b 3 a3
ba
6
=
= (a + b )
2
3
2

Exemplo 89. A ordem de preciso do esquema de Simpson 3:


Z b

f (x)dx f (a) + 4f

onde w1 = w3 =
(k = 0) :
(k = 1) :

ba
,w2
6

n
X
j=1
n
X

(k = 3) :

wj = (1 + 4 + 1)
wj xj = (a + 4

!2

n
X

a+b
= (a + 4
2

!3

wj x3j

a+b
= (a + 4
2

!4

wj x4j

(k = 4) :

j=1

e x3 = b

a+b
ba
ba
b 2 a2
+ b)
= (a + b)
=
2
6
2
2

a+b
wj x2j = (a2 + 4
2
j=1

n
X

a+b
2

ba
=ba
6

n
X

j=1

= 4 ba
, x1 = a, x2 =
6

j=1

(k = 2) :

3
ba X
a+b
wj f (xj )
+ f (b)
=
2
6
j=1

"

+ b2 )

ba
b 3 a3
=
6
3

+ b3 )

ba
b 4 a4
=
6
4

+ b4 )

ba
b 5 a5
6=
6
4

Exemplo 90. Encontre os pesos wj e as abscissas xj tais que o esquema de


dois pontos
Z 1
1

f (x)dx = w1 f (x1 ) + w2 f (x2 )

de ordem 3.
Soluo. Temos um sistema de quatro equaes e quatro incgnitas dado
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

171

por:
w1 + w2 = 2
x 1 w 1 + x2 w 2 = 0
2
x21 w1 + x22 w2 =
3
3
3
x 1 w 1 + x2 w 2 = 0
Da segunda e quarta equao, temos:
w1
x2
x3
= = 32
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
3
3
1

Exemplo 91. Comparao


f (x)

Exato

Trapzio

e e1

ex

3+

x3

16
9

4
9

Gauss-Legendre (2)

3
3

3,08616

e1 + 4e0 + e1
3
2,36205

3,41421

1,13807

1,15411

3,08616

1,02872

0,67905

e1 + e

2,35040

Simpson

+e

2,34270

1,14924

x2 e x

ee1
3

0,78347

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

3
3

172

7.3.5

Clculo Numrico

Quadratura de Gauss-Legendre

A quadratura de Gauss-Legendre de n pontos o esquema numrico

Z 1

f (x)dx =

n
X

wj f (xj )

j=1

cuja ordem de exatido 2n 1.

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 x1 < x2 < . . . < xn

As abscissas so das pelos zeros do ensimo polinmio de Legendre,


Pn (x).

Os pesos so dados por

wj = 

2
1

x2j

[Pn0 (xj )]2

Estes dados so tabelados e facilmente encontrados.


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

7.3. INTEGRAO NUMRICA

173

xj

wj

3
3

8
9

0
3

s

3
5

5
9

18+ 30
36

18 30
36

3 2 6/5 /7

s

3 + 2 6/5 /7

Exemplo 92. Aproximar


Z 1

1 + x2 dx

pelo mtodo de Gauss-Legendre com 3 pontos.


Soluo.
s

5
3 8
5
3
+ f (0) + f
2,2943456
I3 = f
9
5
9
9
5
No Scilab:

Exemplo 93. Aproximar


Z 1

1 + x2 dx

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

174

Clculo Numrico

pelo mtodo de Gauss-Legendre com 4 pontos.


Soluo. I4=f(x4(1))*w4(1)+f(-x4(1))*w4(1)+f(x4(2))*w4(2)+f(-x4(2))*w4(2)

Exemplo 94. Aproximar


Z 1

1 + x2 dx

pelo mtodo de Gauss-Legendre com 3, 4 e 5 pontos.


Soluo. Para tanto, fazemos a mudana de variveis u = 2x 1:
Z 1
0

1Z 1
2
1 + x dx =
2 1

u+1
1+
2


2

du

E, ento aplicamos a quadratura gaussiana nesta ltima integral.

deff('y=f(u)','y=sqrt(1+(u+1)^2/4)/2')
I3=f(0)*w3(1)+f(x3(2))*w3(2)+f(-x3(2))*w3(2)
I4=f(x4(1))*w4(1)+f(-x4(1))*w4(1)+f(x4(2))*w4(2)+f(-x4(2))*w4(2)
I5=f(0)*w5(1)+f(x5(2))*w5(2)+f(-x5(2))*w5(2)+f(x5(3))*w5(3) ...
+f(-x5(3))*w5(3)

Exerccios
E 7.3.1. Calcule numericamente as seguintes integrais usando os mtodos simples do Ponto mdio, Trapzio e Simpson. Calcule tambm o valor
exato usando seus conhecimentos de Clculo I. Complete a tabela abaixo
conforme modelo:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

exato
R 1 x
e dx
0

175

Ponto mdio

Trapzio
1+e1
2

1 e1 0.6321206 e1/2 0.6065307

0.6839397

R1 2
x dx
0

R1 3
x dx
0

R1
0

xex dx

R1

1
0 x2 +1 dx

R1

x
0 x2 +1 dx

R1 1

0 x+1 dx

E 7.3.2. Dados os valores da funo f (x), f (2) = 2, f (3) = 4 e f (4) = 8,


calcule o valor aproximado de
Z 4

f (x)dx

pelos mtodos simples de ponto mdio, trapzio e Simpson.


E 7.3.3. D a interpretao geomtrica dos mtodos do ponto mdio,
trapzio e Simpson. A partir desta construo geomtrica, deduza as frmulas para aproximar
Z
b

f (x)dx.

Verifique o mtodo de Simpson pode ser entendido como uma mdia aritmtica ponderada entre os mtodos de trapzio e ponto mdio. Encontre os
pesos envolvidos. Explique o que so os mtodos compostos.
2

E 7.3.4. Calcule numericamente o valor de 25 e4x dx usando os mtodos compostos do ponto mdio, trapzio e Simpson. Obtenha os resultados
R

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

Simpson
1+4e1/2 +e1
6

0.632333

176

Clculo Numrico

utilizando, em cada quadratura, o nmero de pontos indicado.


n

Ponto mdio Trapzios

Simpson

3
5
7
9
E 7.3.5. Use as rotinas construdas em aula e calcule numericamente o
valor das seguintes integrais usando o mtodo composto dos trapzios para
os seguintes nmeros de pontos:
n

R 1 4x2
e
dx
0

R1

1
0 1+x2 dx

R1 4
x (1 x)4 dx
0

R 1 21
x +1
0

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

Para cada integrando encontre o funo I(h) = a0 +a1 h+a2 h2 +a3 h3 +a4 h4
1
que melhor se ajusta aos dados, onde h = n1
. Discuta os resultados com
base no teorema envolvido na construo do mtodo de Romberg.
ER7.3.6. Calcule os valores da quadratura de Romberg de R1,1 at R4,4
para 0 sin(x)dx. No use rotinas prontas neste problema.

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

7.3. INTEGRAO NUMRICA

177

E 7.3.7. Sem usar rotinas prontas, use o mtodo de integrao de Romberg para obter a aproximao R3,3 das seguintes integrais:
a)

R 1 x2
e dx

b)

R2q

c)

R2

2 cos(x)dx

1
dx
2cos(x)

E 7.3.8. 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 7.3.9. Considere o problema de aproximar numericamente o valor de
Z 100 

e 2 cos(x) 1 dx

pelo mtodo de Romberg. Usando rotinas prontas, faa o que se pede.


Calcule R(6,k), k = 1, . . . ,6 e observe os valores obtidos.
Calcule R(7,k), k = 1, . . . ,6 e observe os valores obtidos.
Calcule R(8,k), k = 1, . . . ,6 e observe os valores obtidos.
Discuta os resultados anteriores e proponha uma estratgia mais eficiente para calcular o valor da integral.
E 7.3.10. Encontre os pesos w1 , w2 e w3 tais que o esquema de quadratura dado por
Z 1
0

f (x)dx w1 f (0) + w2 f (1/2) + w3 f (1)

apresente mxima ordem de exatido. Qual a ordem obtida?


E 7.3.11. Encontre a ordem de exatido do seguinte mtodo de integrao:
!
!#
"
Z 1
2
2
2
f (x)dx
f
+ f (0) + f
3
2
2
1

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

178

Clculo Numrico

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


Z 1

f (x)dx =

136
62
136
1 0
1 0
f (1) +
f (1/2)
f (0) +
f (1/2) +
f (1)
210
105
105
105
210

E 7.3.13. Encontre os pesos w1 , w2 e w3 tal que o mtodo de integrao


Z 1
0

f (x)dx w1 f (1/3) + w2 f (1/2) + w3 f (2/3)

tenha ordem de exatido mxima. Qual ordem obtida?


E 7.3.14. Explique por qu quando um mtodo simples tem estimativa de erro de truncamento local de ordem hn , ento o mtodo composto
associado tem estimativa de erro de ordem hn1 .
E 7.3.15. 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 quadradura?
E 7.3.16. Encontre os pesos w1 e w2 e as abcissas x1 e x2 tais que
Z 1
1

f (x) = w1 f (x1 ) + w2 f (x2 )

quando f (x) = xk , k = 0,1,2,3, isto o mtodo apresente mxima ordem de


exatido possvel com dois pontos.
Use esse mtodo para avaliar o valor da integral das seguintes integrais e
compare com os valores obtidos para Simpson e trapzio, bom como com o
valor exato.
a)

R1

(2 + x 5x2 + x3 ) dx

b)

R1

ex dx

c)

R1

dx
x2 +1

1
1
1

E 7.3.17. 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
3
3
1
tenha ordem de exatido mxima. Qual ordem obtida?
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

179

E 7.3.18. Encontre aproximaes para a seguinte integral via GaussLegendre com 2, 3, 4, 5, 6 e 7 pontos e compare com o valor exato
Z 1

x4 ex dx.

E 7.3.19. Encontre aproximaes para as seguintes integrais via GaussLegendre com 4 e 5 pontos:
a)

R 1 x4
e dx

b)

R4

c)

R 1 x2
e dx

log(x + ex )dx

E 7.3.20. Calcule numericamente o valor das seguintes integrais usando


a quadratura de Gauss-Legendre para os seguintes valores de n:
n

R 1 4x2
e
dx

R1

1
0 1+x2 dx

R1 4
x (1 x)4 dx

0.4410407

0.7853982

0.0015873

R 1 21
x +1
0

dx

2
3
4
5
8
10
12
14
16

0.4619172

Exerccios finais
E 7.3.21. O valor exato da integral imprpria
Z 1
0

x ln(x)dx =

x2
x2
ln x
2
4

! 1



R1
0

x ln(x)dx dado por

= 1/4

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

180

Clculo Numrico

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 7.3.22. O valor exato da integral imprpria
Escreva esta integral como
I=

Z 1

ex dx +

Z 1

u2 e1/u du =

Z 1

R x2
e dx
0

dado por
2

ex + x2 e1/x

.
2

dx

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


n = 7 e n = 9.
E 7.3.23. Estamos interessados em avaliar numericamente a seguinte
integral:
Z
1

ln(x) sin(x)dx

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.
b) Use a identidade
Z 1

ln(x) sin(x)dx =

Z 1

ln(x)xdx +

ln(x) [sin(x) x] dx

0
!
2 1

Z 1

Z 1
x
x2
=
ln x
+
ln(x) [sin(x) x] dx
2
4 0
0
1 Z1
ln(x) [sin(x) x] dx
= +
4
0

e aproxime a integral 01 ln(x) [sin(x) x] dx numericamente via GaussLegendre com n = 2, n = 3, n = 4, n = 5, n = 6 e n = 7.


R

c) Compare os resultados e discuta levando em considerao as respostas s seguintes perguntas: 1)Qual funo mais bem-comportada na
origem? 2)Na segunda formulao, qual poro da soluo foi obtida
analiticamente e, portanto, sem erro de truncamento?
ER 7.3.24. Considere o problema de calcular numericamente a integral
1
.
I = 1
f (x)dx quando f (x) = cos(x)
|x|

a) O que acontece quando se aplica diretamente a quadratura gaussiana


com um nmero impar de abscissas?
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

181

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

I =

cos(x)
q

Z 1

|x|

dx =

cos(x) 1
q

cos(x) 1
q

|x|

Z 1

dx + 2

Z 1
0

|x|

dx +

Z 1
1

|x|

dx

Z 1
1
cos(x) 1
q
dx =
dx + 4
x
1
|x|

e aplicando quadratura gaussiana com n = 2, n = 4, n = 6 e n = 8.


d) Calcule o valor aproximado da integral removendo a singularidade, considerando a paridade da funo
cos(x) 1

Z 1

I = 4+

|x|

dx = 4 + 2

Z 1
0

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

Z 1

cos(x)
q

= 2

Z 1
0

|x|

dx =

Z 1

cos(x) P4 (x)
q

|x|

dx +

Z 1
1

P4 (x)
q

|x|

dx
!

Z 1
cos(x) P4 (x)
x3/2 x7/2

dx +2
x1/2
+
dx
x
2
24
0
{z

Resolver numericamente

{z

Resolver analiticamente

E 7.3.25. Calcule numericamente o valor das seguintes integrais com


um erro relativo inferior a 104 .
a)

Z 1
0

1
Z 1 cos 1+u
cos(x) 1
2

du
dx = 4 + 2
x
1
1+u

sin(x)
dx
x
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

182
b)

Clculo Numrico
Z 1
0

c)

Z 1
0

d)

Z 1

sin(x)
dx
x(1 x)
sin
q

x
2

x(1 x)

dx

ln(x) cos(x)dx

E 7.3.26. Calcule as integrais


mentos analticos e numricos.

R 1 ex

0 |x|1/4 dx

R 1 ex

0 |x|4/5 dx

usando procedi-

E 7.3.27. Use a tcnica de integrao por partes para obter a seguinte


identidade envolvendo integrais imprprias:
I=

Z
0

Z
cos(x)
sin(x)
dx =
dx.
1+x
(1 + x)2
0

Aplique as tcnicas estudadas para aproximar o valor de I e explique por que


a integral da direita mais bem comportada.
E 7.3.28. Resolva a equao
x+

Z x

ey dy = 5

com 5 dgitos significativos.


E 7.3.29. O calor especfico (molar) de um slido pode ser aproximado
pela teoria de Debye usando a seguinte expresso


CV = 9N kB

T
TD

3 Z TD /T
0

y 4 ey
dy
(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
temperatura de 300K 24J/K/mol. Dica: aproxime a integral por um
esquema numrico com um nmero fixo de pontos.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

7.3. INTEGRAO NUMRICA

183

c) Melhore sua cultura geral: A lei de Dulong-Petit para o calor especfico


dos slidos precede a teoria de Debye. Verifique que a equao de Debye
consistente com Dulong-Petit, ou seja:
lim Cv = 3N kB .

Dica: use ey 1 + y quando y 0

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

Clculo Numrico

Captulo 8
Problema de valor inicial
Muitos problemas de valor inicial da forma
y 0 (t) = f (y(t),t)
y(t0 ) = y0 condio inicial
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 solues numricas. Para esse propsito,
construmos uma malha de pontos no eixo t, {ti }N
i=1 e calculamos o valor aproximado da funo soluo y(ti ) em cada ponto da malha usando esquemas
numricos.

8.1

Mtodo de Euler

Seja o problema de valor inicial


y 0 (t) = f (y(t),t)
y(0) = y0 condio inicial
Aproximamos a derivada y 0 (t) por um esquema de primeira ordem do tipo
y 0 (t) =

y(t + h) y(t)
+ O(h), h > 0
h

assim temos
y(t + h) y(t)
= f (y(t),t) + O(h)
h
y(t + h) = y(t) + hf (y(t),t) + O(h2 )
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

8.1. MTODO DE EULER

185

Definindo y (k) como uma aproximao para y ((k 1)h) e t(k) = (k 1)h,
temos
y (k+1) = y (k) + hf (y (k) ,t(k) )
y (1) = y0 condio inicial
Exemplo 95. Considere o problema de valor inicial:
y 0 (t) = 2y(t)
y(0) = 1
Sabemos da teoria de equao diferenciais ordinrias, que a soluo exata
deste problema nica e dada por
y(t) = e2t .
O mtodo de Euler aplicado a este problema produz o seguinte esquema:
y (k+1) = y (k) + 2hy (k) = (1 + 2h)y (k)
y (1) = 1,
cuja soluo dada por
y (k) = (1 + 2h)k1 .
Como t = (k 1)h, a soluo aproximada
t

y(t) y(t) = (1 + 2h) h .


Da, vemos que se h 0, ento
y(t) e2t .
Exemplo 96. Considere o problema de valor inicial:
y 0 (t) = y(t)(1 y(t))
y(0) = 1/2
fcil encontrar a soluo exata desta equao pois
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

186

Clculo Numrico

dy(t)
y(t)(1 y(t))
!
1
1
+
dy
y 1y
ln(y) ln(1 y)
!
y
ln
1y
y
1y
y
t+C
y(1 + e )

= dt
= dt
= t+C
= t+C
= et+C

= et+C (1 y)
= et+C
et+C
y =
1 + et+C

ainda y(0) =

eC
1+eC

= 1/2, temos eC = 1 e, portanto, C = 0.

Assim, a soluo exata dada por y =

et
1+et

O mtodo de Euler produz o seguinte esquema iterativo:

y (k+1) = y (k) + hy (k) (1 y (k) )


y (1) = 1/2
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

8.1. MTODO DE EULER

187

Comparao
t

Exato

1/2

Euler h = 0,1 Euler h = 0,01

0,5

0,5

0,6231476

0,6225316

1/2

e1/2
1+e1/2

e
1+e

0,7310586

0,7334030

0,7312946

e2
1+e2

0,8807971

0,8854273

0,8812533

e3
1+e3

0,9525741

0,9564754

0,9529609

0,6224593

Exemplo 97. Resolva o problema de valor inicial


y 0 = y + t
y(0) = 1,
cuja soluo exata y(t) = 2et + t 1.
O esquema recursivo de Euler fica:
y (k+1) = y(k) hy(k) + ht(k)
y(0) = 1
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

188

Clculo Numrico

Comparao
t

Exato

Euler h = 0,1 Euler h = 0,01

2e1 0,7357589

0,6973569

0,7320647

2 2e2 + 1 1,2706706

1,2431533

1,2679593

3 2e3 + 2 2,0995741

2,0847823

2,0980818

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

8.1. MTODO DE EULER

189

Exemplo 98. Resolva o seguinte sistema de equaes diferenciais:


x0
y0
x(0)
y(0)

y
x
1
0,

=
=
=
=

cuja soluo exata x(t) = cos(t) e y(t) = sin(t).


Escreva

x(t)

z(t) =

y(t)

e temos

(k+1)
(k)
(k)
x

=
+ h

y (k+1)
y (k)
x(k)

Equivalente a
x(k+1) = x(k) hy (k)
y (k+1) = y (k) + hx(k)

Exemplo 99. Resolva o problema de valor inicial de segunda ordem dado


por
y 00 + y 0 + y = cos(t)
y(0) = 1
y 0 (0) = 0
e compare com a soluo exata para h = 0,1 e h = 0,01.
Procedemos com a substituio w = y 0 , de forma que obtermos o sistema:
y0
w0
y(0)
w(0)

=
=
=
=

w
w y + cos(t)
1
0

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

190

Clculo Numrico

y (k+1)
w(k+1)
y (1)
w(1)

8.1.1

=
=
=
=

y (k) + hw(k)
w(k) hw(k) hy (k) + h cos(t(k) )
1
0

Mtodo de Euler melhorado

No mtodo de Euler, usamos a seguinte iterao:


y (k+1) = y (k) + hf (y (k) ,t(k) )
y (1) = yi condio inicial
A ideia do mtodo de Euler melhorado substituir a declividade f (y (k) ,t(k) )
pela mdia aritmtica entre f (y (k) ,t(k) ) e f (y (k+1) ,t(k+1) ).
No entanto, no dispomos do valor de y (k+1) pelo que aproximamos por
y(k+1) = y (k) + hf (y (k) ,t(k) ).

y(k+1) = y (k) + hf (y (k) ,t(k) )


i
h h (k) (k)
y (k+1) = y (k) +
f (y ,t ) + f (
y (k+1) ,t(k+1) )
2
(1)
y
= yi condio inicial

Exerccios
E 8.1.1. Refaa o exemplo 96 via mtodo de Euler melhorado.

8.1.2

Ordem de preciso

Considere o problema de valor inicial dado por


y 0 (t) = f (y(t),t)
y(0) = yi
No mtodo de Euler, aproximamos a derivada y 0 (t) por um esquema de
primeira ordem do tipo
y 0 (t) =

y(t + h) y(t)
+ O(h), h > 0
h

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

8.2. MTODOS DE RUNGE-KUTTA

191

de forma que tnhamos


y(t + h) = y(t) + hf (y(t),t) + O(h2 )
Se fixarmos um instante de tempo t = N h, temos:
y(t) =

y(0) + hf (y(0),0) + O(h2 ) + y(h) + hf (y(h),h) + O(h2 )


h

+ . . . y(t h) + hf (y(t h),t h) + O(h2 )


= yk +

N
1
X

O(h2 ) = y k + O(h)

j=0

Por isso, o mtodo de Euler dito ter ordem global de preciso h.

8.2

Mtodos de Runge-Kutta

Os mtodos de Runge-Kutta consistem em iteraes do tipo:


y (k+1) = y (k) + w1 k1 + . . . + wn kn
onde
k1 = hf (y (k) ,t(k) )
k2 = hf (y (k) + 2,1 k1 ,t(k) + 2 h)
k3 = hf (y (k) + 3,1 k1 + 3,2 k2 ,t(k) + 3 h)
..
.
kn = hf (y (k) + n,1 k1 + n,2 k2 + . . . n,n1 kn1 ,t(k) + n h)

Os coeficientes so escolhidos de forma que a expanso em Taylor de


y (k+1) e y (k) + w1 k1 + . . . + wn kn coincidam at ordem n + 1.
Exemplo 100. O mtodo de Euler melhorado um exemplo de Runge-Kutta
de segunda ordem
k1 + k2
y (n+1) = y (n) +
2
onde k1 = hf (y (n) ,t(n) ) e k2 = hf (y (n) + k1 ,t(n) + h)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

192

8.2.1

Clculo Numrico

Mtodos de Runge-Kutta - Quarta ordem


y (n+1) = y (n) +

k1 + 2k2 + 2k3 + k4
6

onde
k1
k2
k3
k4

=
=
=
=

hf (y (n) ,t(n) )
hf (y (n) + k1 /2,t(n) + h/2)
hf (y (n) + k2 /2,t(n) + h/2)
hf (y (n) + k3 ,t(n) + h)

Este mtodo tem ordem de truncamento local de quarta ordem. Uma discusso heurstica usando mtodo de Simpson pode ajudar a compreender os
estranhos coeficientes:
y(t(n+1) ) y(t(n) ) =

Z t(n+1)
t(n)

f (y(s),s)ds



h h  (n) (n) 
f y(t ),t
+ 4f y(t(n) + h/2),t(n) + h/2
6
i
+ f y(t(n) + h),t(n) + h

3
) + k4
k1 + 4( k2 +k
2

onde k1 e k4 representam as inclinaes nos extremos e k2 e k3 so duas


aproximaes diferentes para a inclinao no meio do intervalo.

8.3

Mtodos de passo mltiplo - Adams-Bashforth

O mtodo de Adams-Bashforth consiste de um esquema recursivo do tipo:


y (n+1) = y (n) +

k
X

wj f (y (nj) ,t(nj) )

j=0

Exemplo 101. Adams-Bashforth de segunda ordem


i

h h  (n) (n) 
f y (n1) ,t(n1)
3f y ,t
2
Exemplo 102. Adams-Bashforth de terceira ordem

y (n+1) = y (n) +

y (n+1) = y (n) +






i
h h
23f y (n) ,t(n) 16f y (n1) ,t(n1) + 5f y (n2) ,t(n2)
12
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

8.4. MTODOS DE PASSO MLTIPLO - ADAMS-MOULTON

193

Exemplo 103. Adams-Bashforth de quarta ordem






h h
55f y (n) ,t(n) 59f y (n1) ,t(n1)
 24


i
+ 37f y (n2) ,t(n2) 9f y (n3) ,t(n3)

y (n+1) = y (n) +

Os mtodos de passo mltiplo evitam os mltiplos estgios do mtodos


de Runge-Kutta, mas exigem ser "iniciados"com suas condies iniciais.

8.4

Mtodos de passo mltiplo - Adams-Moulton

O mtodo de Adams-Moulton consiste de um esquema recursivo do tipo:


y (n+1) = y (n) +

k
X

wj f (y (nj) ,t(nj) )

j=1

Exemplo 104. Adams-Moulton de quarta ordem




h h  (n+1) (n+1) 
9f y
,t
+ 19f y (n) ,t(n)
 24


i
5f y (n1) ,t(n1) + f y (n2) ,t(n2)

y (n+1) = y (n) +

O mtodo de Adams-Moulton implcito, ou seja, exige que a cada passo,


uma equao em y (n+1) seja resolvida.

8.5

Estabilidade

Consideremos o seguinte problema de teste:

y 0 = y
y(0) = 1

cuja soluo exata dada por y(t) = et .


Considere agora o mtodo de Euler aplicado a este problema com passa
h:

y (k+1) = y (k) hy (k)

y (1) = 1

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

194

Clculo Numrico

A soluo exata do esquema de Euler dada por


y (k+1) = (1 h)k
e, portanto,
y(t) = y (k+1) = (1 h)t/h
Fixamos um > 0, de forma que y(t) 0. Mas observamos que y(t) 0
somente quando |1 h| < 1 e soluo positivas somente quando h < 1.
Concluso: Se o passo h for muito grande, o mtodo pode se tornar
instvel, produzindo soluo esprias.

Exerccios
E 8.5.1. Resolva o problema 1 pelos diversos mtodos e verifique heuristicamente a estabilidade para diversos valores de h.

Exerccios finais
E 8.5.2. Considere o seguinte modelo para o crescimento de uma colnia
de bactrias:
dy
= y(A y)
dt
onde y 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 y(0) igual a 0 ou A?
b) O que acontece quando a condio inicial y(0) um nmero entre 0 e
A?
c) O que acontece quando a condio inicial y(0) um nmero negativo?
d) O que acontece quando a condio inicial y(0) um nmero positivo
maior que A?
e) Se A = 10 e = 1 e y(0) = 1, use mtodos numricos para obter tempo
necessrio para que a populao dobre?
f) Se A = 10 e = 1 e y(0) = 4, use mtodos numricos para obter tempo
necessrio para que a populao dobre?

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

8.5. ESTABILIDADE

195

E 8.5.3. 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 8.5.4. Considere o seguinte modelo para o oscilador no-linear de Van
der Pol:
y 00 (t) (A y(t)2 )y 0 (t) + w02 y(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?
E 8.5.5. Considere o seguinte modelo para um oscilador no-linear:
y 00 (t) (A z(t))y 0 (t) + w02 y(t) = 0
Cz 0 (t) + z(t) = y(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 8.5.6. Considere o seguinte modelo para o controle de temperatura
em um processo qumico:
CT 0 (t) + T (t) = P (t) + Text
P 0 (t) = (Tset T (t))
onde C, e so constantes positivas e P (t) indica o potncia do aquecedor.
Sabendo que Tset a temperatura desejada, interprete o funcionamento esse
sistema de controle.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

196

Clculo Numrico

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 8.5.7. Considere a equao do pndulo dada por:
d2 (t) g
+ sin((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
1
2

d(t)
dt

!2

g
cos((t))
l

mantida constante.
Resolva numericamente esta equao para g = 9,8m/s2 e l = 1m e as
seguintes 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 8.5.8. Considere o modelo simplificado de FitzHugh-Nagumo para o
potencial eltrico sobre a membrana de um neurnio:
dV
= V V 3 /3 W + I
dt
dW
= 0.08(V + 0.7 0.8W )
dt
onde I a corrente de excitao.
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

8.5. ESTABILIDADE

197

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 8.5.9. 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 mtodos de Euler, Euler modificado, Runge-Kutta Clssico e
Adams-Bashforth de ordem 4 conforme pedido nos itens.
a) Construa uma tabela apresentando valores com 7 algarismos significativos para comparar a soluo analtica com as aproximaes numricas
produzidas 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 formato 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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

198

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

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:
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,
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

200

Clculo Numrico

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 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
arquivo externo;
usando processamento bash.
Exemplo 105. 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:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

A.2. ELEMENTOS DA LINGUAGEM

201

s = "Ol Mundo!"
disp(s)
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

202

Clculo Numrico

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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

A.3. MATRIZES

203

> maior que


<= menor ou igual que
>= maior ou igual que
Exemplo 106. 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 =
T

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 107. Defina a matriz:

A=

1 2 3
4 5 6

Soluo. No Scilab, digitamos:


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

2.
5.

3.
6.

A seguinte lista contm uma srie de funes que geram matrizes particulares:
eye
linspace
ones
zeros

matrix identidade
vetor de elementos linearmente espaados
matriz cheia de uns
matriz nula
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

204

Clculo Numrico

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 108. Veja as seguintes linhas de comando:
-->v = 10:-2:3
v =
10.

8.

6.

-->u = 2:6
u =
2.
3.

A.3.2

4.

4.

5.

6.

Obtendo dados de uma matriz

A funo size retorna o tamanho 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:
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

A.3. MATRIZES

205

a matriz inteira acessa-se com a sintaxe:


A
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 109. Veja as seguintes linhas de comando:
-->A = rand(3,4) //gera uma matriz randmica
A =
0.2113249
0.7560439
0.0002211

0.3303271
0.6653811
0.6283918

0.8497452
0.6857310
0.8782165

0.0683740
0.5608486
0.6623569

0.8497452
0.6857310
0.8782165

0.0683740
0.5608486
0.6623569

-->A //mostra toda a matriz A


ans =
0.2113249
0.7560439
0.0002211

0.3303271
0.6653811
0.6283918

-->A(2,3) //acessa o elemento a23


ans =
0.6857310
-->A(2:3,2:4) //acessa um bloco de A
ans =
0.6653811
0.6283918

0.6857310
0.8782165

0.5608486
0.6623569

Definida uma matriz A no Scilab, as seguintes sintaxes so bastante teis:


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

206

Clculo Numrico

A(:,:)
A(i:j,k)
A(i,j:k)
A(i,:)
A(:,j)
A(i,$)
A($,j)

toda a matriz
os elementos das linhas i at j (inclusive) da k-sima coluna
os elementos da i-sina linha das colunas j at k (inclusive)
a i-sima linha da matriz
a j-sima coluna da matriz
o elemento da i-sima linha e da ltima coluna
o elemento da ltima linha e da j-sima coluna

Exemplo 110. Veja as seguintes linhas de comando:


-->B = rand(4,4)
B =
0.2113249
0.7560439
0.0002211
0.3303271

0.6653811
0.6283918
0.8497452
0.6857310

0.8782165
0.0683740
0.5608486
0.6623569

0.7263507
0.1985144
0.5442573
0.2320748

-->aux = B(:,2); B(:,2) = B(:,3); B(:,3) = aux


B =
0.2113249
0.7560439
0.0002211
0.3303271

A.3.3

0.8782165
0.0683740
0.5608486
0.6623569

0.6653811
0.6283918
0.8497452
0.6857310

0.7263507
0.1985144
0.5442573
0.2320748

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
- subtrao
* multiplicao

.+
..*
./
^ potenciao
.^
' transposta conjugada .'

adio elemento-a-elemento
subtrao elemento-a-elemento
multiplicao elemento-a-elemento
diviso elemento-a-elemento
potenciao elemento-a-elemento
transposta (no conjugada)

Exemplo 111. Veja as seguintes linhas de comando:


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

A.4. ESTRUTURAS DE RAMIFICAO E REPETIO

207

-->A = ones (2 ,2)


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

A.4

2.
2.

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 112. Veja o seguinte cdigo Scilab:
i = 2
if ( i == 1 ) then
disp ( " Hello ! " )
elseif ( i == 2 ) then
disp ( " Goodbye ! " )
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

208

Clculo Numrico

elseif ( i == 3 ) then
disp ( " Tchau ! " )
else
disp ( " Au Revoir ! " )
end
Qual a sada apresentada no console do Scilab? Porqu?

A.4.2

A instruo de repetio for

A instruo for permite que um pedao de cdigo seja executado repetidamente.


Exemplo 113. Veja o seguinte cdigo:
for i = 1:5
disp(i)
end
O que mostrado no console do Scilab?
Exemplo 114. Veja o seguinte cdigo:
for j = 1:2:8
disp(j)
end
O que mostrado no console do Scilab?
Exemplo 115. Veja o seguinte cdigo:
for k = 10:-3:1
disp(k)
end
O que mostrado no console do Scilab?
Exemplo 116. 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

A.5. FUNES

A.4.3

209

A instruo de repetio while

A instruo while permite que um pedao de cdigo seja executado repetidamente at que uma dada condio seja satisfeita.
Exemplo 117. 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? Porqu?

A.5

Funes

Alm das muitas funes j pr-definidas no Scilab, o usurio podemos


definir nossas prprias funes. Para tanto, existem duas instrues no Scilab:
deff
function
A instruo deff apropriada para definirmos funes com poucas computaes. Quando a funo exige um grande quantidade de cdigo para ser
definida, a melhor opo usar a instruo function. Veja os seguintes
exemplos:
Exemplo 118. 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

210

Clculo Numrico

Verifique!
Exemplo 119. 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:
h(x,y) =

y x ,x < y

x y ,x y

Exemplo 120. 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 121. 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.
Devido 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.5. (101,1)2

E 2.1.6. (11,1C)16

E 2.1.7. 50; 18

E 2.1.8. 10,5; (1010,1)2

E 2.3.2. a) 1,7889; b) 1788,9; c) 0,0017889; d) 0,0045966; e) 2,1755 1010 ; f) 2,1755 1010

E 2.3.6. a) abs = 3,46 107 , rel = 1,10 107 ; b) abs = 1,43 104 , rel = 1,00 103

E 2.6.1. 2%

E 2.6.2. 3,2% pela aproximao ou 3,4% pela segundo mtodo (0,96758 I 1,0342).

E 2.6.4. a) 0,0294; b) 2.44e 3; c) 2.50e 4; d) 1.09 107 ; e) 1012 ; f) 1012 ; g) 1012

2
E 2.7.2. a) 1
+ x4! + O(x4 ); b) x/2 + O(x2 ); c) 5 104 x + O(x2 ); d)
2

2
y
4

+ O(y 2 ) =

2
x
4

+ O(x2 )

E 2.7.6. 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 2.7.7. Em ambos casos, temos a seguinte estrutura:

S11

S12

S21

S22



[A]

 
=

v1

v2

[B]

De forma que

[A]
[B]

 
=

S11

S12

S21

S22

1 

v1
v2


=

1
S11 S22 S12 S21

S22

S12

S21

S11

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



v1
v2

212

Clculo Numrico

Portanto

[A]

[B]

S22 v1 S12 v2
S11 S22 S12 S21
S21 v1 + S11 v2
S11 S22 S12 S21

Usando derivao logartmica, temos

[A]

[A] S11
1

[A]

[A] S12
1

[A]

[A] S21
1

[A]

[A] S22

S22
S11 S22 S12 S21
v2

S22 v1 S12 v2

S21
S11 S22 S12 S21

[A]
[B]

S22
S11 S22 S12 S21

S12

S11 S22 S12 S21


v1

S22 v1 S12 v2

S11

S11 S22 S12 S21

[A]

[B]

S12
S11 S22 S12 S21

e
1 [B]
[B] S11
1 [B]
[B] S12
1 [B]
[B] S21
1 [B]
[B] S22

v2

S21 v1 + S11 v2

S22
S11 S22 S12 S21

S21

[B]

[A] S11 S22 S12 S21

S21

S11 S22 S12 S21

v1

S21 v1 + S11 v2

S21
S11 S22 S12 S21

[B]

S11

[A] S11 S22 S12 S21

S11
S11 S22 S12 S21

E o erro associado s medidas pode ser aproximado por


1
[A]

[A]









1 [A] + 1 [A] + 1 [A] + 1 [A]
[A] S11 S11 [A] S12 S12 [A] S21 S21 [A] S22 S22
h
i
1

|det S|

S22 S11 +

[A]

[B]

S22 S12 + S12 S21 +

[A]

[B]

S12 S22

Analogamente, temos:
1
[B]

[B]

1
|det S|

[B]
[A]

S21 S11 + S21 S11 +

[B]
[A]

S11 S21 + S11 S22

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


Fazemos agora a aplicao numrica:
Caso do par 1-2:
det S =

1
[A]

[A]

=
=

1
[B]

[B]

=
=

1
1200
216
1200
1
1200
426
1200

270

30

140

20



= 1200

[20 270 2% + 20 30 2% + 30 140 2% + 30 20 2%]


= 0.18 = 18%
[140 270 2% + 140 30 2% + 270 140 2% + 270 20 2%]
= 0.355 = 35.5%

Caso do par 1-3:


det S =

270

30

15

200



= 53550

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

A.6. GRFICOS
1
[A]

[A]

=
=

1
[B]

[B]

=
=

213
1
53550
1804,6
52550
1
53550
5895
53550

[200 270 2% + 200 30 2% + 30 15 10% + 30 200 10%]


0.0337 = 3.37%
[15 270 2% + 15 30 2% + 270 15 10% + 270 200 10%]
0.11 = 11%

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 adequada.
E 3.2.1. 1,390054; 1,8913954; 2,4895673; 3,1641544; 3,8965468

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. k = lP
cos() com (0, /2); 1,030.
2

E 3.2.5. k 0,161228

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.3.1. 0,7391

E 3.3.7. x > a com a 0,4193648.

E 3.3.10.

0.0431266

E 3.4.1.
, pelo
a) Primeiramente, deve-se observar que a funo tg (x) no est definida quando x um mltiplo mpar de
2
que devemos cuidado nas singularidades. Traamos o grfico da funo f (x) = tg (x) 2x2 no Scilab usando os
seguintes comandos:
-->deff('y=f(x)','y=tan(x)-2*x^2')
-->plot([0:.01:1.3],f)

Observamos facilmente uma raiz no intervalo (0,5, 0,6) e outra no intervalo (1,2, 1,3). Como a funo f (x)
contnua fora dos pontos de singularidade da tangente, fcil verificar que existe pelo menos uma soluo nos
intervalos dados pelo teorema do valor intermedirio:
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

f (x) = sec (x) 4x =


0

f (x) = sec (x) 4x =

1
cos2 (x)
1
cos2 (x)

4x
4x

1
cos2 (0,6)
1
cos2 (1,2)

4 0,5 < 0,

x [0,5, 0,6]

4 1,3 > 0,

x [1,2, 1,3]

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

214

Clculo Numrico

b) J isolamos as razes em intervalos de comprimento 101 e a preciso requerida exige que as isolemos em intervalos
de comprimento 2 108 . Como cada passo da bisseo, confina a raiz em um intervalo com comprimento igual
metade do comprimento do intervalo anterior, temos a seguinte condio para o nmero de passos Np :
101
2N
p

2 10

isso equivalente a

Np log2

101
2 108

= log2

107
2

= 7 log2 10 1 =

7
log1 02

1 22.22

Como Np inteiro, o menor Np que satisfaz a condio 23.


As razes obtidas so 0.55970415 e 1.2703426.
c) Para recalcular as razes pelo mtodo de Newton, basta executar a interao

(n+1)

=x

(n)

f (x(n) )
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
. Nestes pontos, a funo f (x) troca
2
de sinal, mas no passa por zero.
E 3.4.2. 0,65291864

E 3.4.3.

0.0198679; 0.533890; 0.735412; 1.13237; 1.38851

E 3.4.5.

- 99.99970, - 0.3376513; -1.314006

E 3.4.8.

x0 > 1.

z1 0.3252768, z2 1.5153738, z3 2.497846, z4 3.5002901,


2j+1
zj j 1/2 (1)j e , j > 4
E 3.5.5.

E 3.5.6.

150W, 133W, 87W, 55W, 6.5W

E 3.5.7.

a) 42s e 8min2s, b) 14min56s.

E 3.5.8.

118940992

E 3.5.9.

7.7cm

E 3.5.10.

4.32cm

E 3.5.11.

(0.652919,0.426303)

E 3.5.12.

7.19% ao ms

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

A.6. GRFICOS

215

E 3.5.13.

4.54% ao ms.

E 3.5.14.

500K, 700K em t = 3 ln(2), 26min, 4h27min.

E 3.5.15.

(1.1101388, .7675919), (1.5602111,0.4342585)

E 3.5.16.

1.5318075

E 3.5.17.

Aproximadamente 2500 reais por hora.

E 3.5.18.

a) 332.74K b), 359.33K

E 3.5.19.

1.72285751 ,4.76770758, 7.88704085

E 4.1.1. Escrevemos o sistema na forma matricial e resolvemos:

"

10

48

10

25

"

"

"

"

48

10

25

0
0

"

10

25

9.1

45.5

10

30

"

10

25

48

"

10

25

E 4.1.5.
a) x = [4 3 2]T
b) O sistema equivalente a
x1

x2

(1 + )x3

x1

(1 + )x2

x3

(1 + )x1

x2

x3

Somando as trs equaes temos


(1 + 3)(x1 + x2 + x3 ) = 9 = x1 + x2 + x3 =

9
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

x = [4 3 2]

9
1 + 3

Portanto x = 2, y = 3, z = 5

Assim temos:

0
0

[1 1 1]

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

216

Clculo Numrico

E 4.1.6. x = [1.6890368 1.6890368 1.5823257 1.2667776 0.6333888]T

E 4.1.7.

"

1/2

1/2

1/3

1/2

1/6

1/3

1/3

51.95122, para = 51: k1 = k = 350.4, k2 = 262.1. Para = 52: k1 = k = 6888,


E 4.2.1. = 7130
41
k2 = 5163.
E 4.2.2. k1 (A) = 36, k2 (A) = 18,26, K (A) = 20,8.

k1 = k = 6888, k2 =
= 210

E 4.2.3.

26656567 e k1 = 180, k2 = 128,40972 e

18
+3.

Quando 0+, a matriz converge para uma matriz singular


e o nmero de condicionamento diverge para +.
E 4.2.4.

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:
E 4.2.5.

A=[1e5 -1e4+1e-2; -1e4+1e-2 1000.1]


b1=[-10 1]'
b2=[-9.999 1.01]'
A\b1
A\b2
0,695; 0,292; 0,188; 0,0237; 0,0123; 0,00967
Exemplo de implementao:

E 4.2.6.

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)
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

A.6. GRFICOS

217

norm(f,2)
norm(f,'inf')
E 4.4.1.

epsilon=1e-3;
A=[1 -1 0 0 0; -1 2 -1 0 0; 0 -1 (2+epsilon) -1 0; 0 0 -1 2 -1; 0 0 0 1 -1]
v=[1 1 1 1 1]'
xgauss=gauss([A v])
function x=q_Jacobi()
x0=[0 0 0 0 0]'
i=0
controle=0
while controle<3 & i<1000
i=i+1
x(1)=1+x0(2)
x(2)=(1+x0(3)+x0(1))/2
x(3)=(1+x0(2)+x0(4))/(2+epsilon)
x(4)=(1+x0(3)+x0(5))/2
x(5)=x0(4)-1
delta=norm(x-x0,2)
if delta<1e-6 then
controle=controle+1
else
controle=0
end
mprintf('i=%d, x1=%f, x5=%f, tol=%.12f\n',i,x(1),x(5),delta)
x0=x;
end
endfunction
function x=q_Gauss_Seidel()
x0=[0 0 0 0 0]'

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

218

Clculo Numrico
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
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:
E 4.4.4.

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
Licena CC-BY-SA-3.0. Contato: livro_colaborativo@googlegroups.com

A.6. GRFICOS

219

if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;

end

endfunction
function x=gs()
x0=zeros(11,1)
k=0;
controle=0;
while controle<3 & k<1000
k=k+1
x(1)=x0(2)
for j=2:10
x(j)=(cos(j/10)+x(j-1)+x0(j+1))/5
end
x(11)=x0(10)/2
delta=norm(x-x0) //norma 2
if delta<1e-5 then
controle=controle+1
else
controle=0;
end
mprintf('k=%d, x=[%f,%f,%f], tol=%.12f\n',k,x(1),x(2),x(3),delta)
x0=x;

end
endfunction
E 4.4.6.

E 4.5.1.

Permute as linhas 1 e 2.

= 86.1785 associado ao autovetor dado por v1 = [0.65968 0.66834 0.34372]T .

E 4.5.3.

158,726

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

220

Clculo Numrico

a)V5 = 98.44V b) V5 = 103.4V


O problema com cinco incgnitas pode ser escrito na forma matricial
conforme a seguir:
E 4.5.5.

R1

1
R1

1
R2

1
R5

1
R2

1
R2

1
R2

1
R3

1
R3

1
R3

1
R6

1
R3

1
R4

1
R7

1
R4

1
R4

1
R4

V2

V3

v4

R8

V1

V5

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
1/R1 -(1/R1+1/R2+1/R5)
0
1/R2
0
0
0
0
v=[V; 0; 0; 0; 0]
y=A\v

0
0
1/R2
0
-(1/R2+1/R3+1/R6)
1/R3
1/R3
-(1/R3+1/R4+1/R7)
0
1/R4

0;
0;
0;
1/R4;
-(1/R4+1/R8)

O problema com quatro incgnitas pode ser escrito na forma matricial conforme a seguir:

1
R1

1
R2

1
R2

1
R5

1
R2

1
R2

1
R3

1
R3

0
+

1
R6

1
R3

1
R3

1
R4

0
+

1
R7

1
R4

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

1
R4

1
R4

V3

v4

V
2

R8

V5

V
R1

0
0
0

A.6. GRFICOS

221

Cuja implementao pode ser feita conforme


A=[

-(1/R1+1/R2+1/R5)
1/R2
0
0

1/R2
0
-(1/R2+1/R3+1/R6)
1/R3
1/R3
-(1/R3+1/R4+1/R7)
0
1/R4

0;
0;
1/R4;
-(1/R4+1/R8)]

v=[-V/R1; 0; 0; 0]
y=A\v
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 4.5.6.

E 6.2.1. 5x3 + 2x 3

E 6.4.1.

R1
0

P (x)dx =

f (0)+f (1)
1
, 12
2

maxx[0,1] |f 00 (x)|

E 6.6.1. y = 0,0407898x2 + 2,6613293x + 1,9364598

E 6.6.2.

xi

yi

ax2
i + bxi + c

ax2
i + bxi + c yi

0,01

1,99

1,963069

-0,0269310

1,02

4,55

4,6085779

0,0585779

2,04

7,2

7,1958206

-0,0041794

2,95

9,51

9,4324077

-0,0775923

3,55

10,82

10,870125

0,0501249

a = 25,638625, b = 9,8591874, c = 4,9751219 e a = 31,475524, b = 65,691531, c = 272,84382,

d = 208,23621.
E 7.1.3.

a) f 0 (0) =

3f (0)+4f (h)f (2h)


2h

b) f 0 (0) =

3f (0)4f (h)+f (2h)


2h

+ O(h2 )

+ O(h2 )

1
c) f 0 (0) = h +h
l h2 f (h1 ) +
1
2
1

d) f 00 (0) =

f (0)2f (h)+f (2h)


h2

e) f 00 (0) =

f (0)2f (h)+f (2h)


h2

h2
h1

h1
2

f (0) + h1 f (h2 )
2

+ O(h)

+ O(h)

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

222

Clculo Numrico

E 7.1.4.
Caso

vi = 1

1.72

1.56

1.64

1.86

vi = 4.5

2.46

1.90

2.18

1.14

E 7.2.1.

u1
u2
u3
u4

2
2

u5

10

Soluo: [5, 9.25, 11.5, 11.75, 10]

u1
u2
u3
u4
u5
u6
u7
u8

0.5

0.5
0.5
0.5
0.5
0.5
0.5

u9

10

Soluo: [5, 7.375, 9.25, 10.625, 11.5, 11.875, 11.75, 1.125, 10]
E 7.2.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 7.2.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 7.2.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 7.2.5. u(0)=31.62, u(1)=31.50, u(1.9)=18.17

E 7.2.6. u(1)=1.900362, u(2.5)=1.943681, u(4)=1.456517

E 7.3.1.

exato

R1
0

R1
0

R1
0

R1
0

0.6321206

Ponto mdio
e

1/2

0.6065307

Trapzio
1+e1
2

0.6839397

Simpson
1+4e1/2 +e1
6

0.6323337

x2 dx

1/3 0.3333333

0.25

0.5

0.3333333

x3 dx

1/4 = 0.25

0.125

0.5

0.25

0.3894004

0.1839397

0.3209135

0.8

0.75

0.7833333

0.4

0.25

0.35

0.6666667

0.75

0.6944444

xex dx

R1

1
dx
0 x2 +1

R1

x dx
0 x2 +1

R1

1e

dx

1 dx
0 x+1

1
2

1e


1

0.3160603

tan1 (1) 0.7853982


1
2

ln(2) 0.3465736

ln(2) 0.6931472

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

A.6. GRFICOS

223

E 7.3.2. Resp: 8, 10 e 8.666667.

E 7.3.3.
ISimpson =

1
3

IT rap +

2
3

IP M

E 7.3.4.

Ponto mdio

Trapzios

Simpson

0.1056606

0.7503919

0.5005225

0.1726140

0.3964724

0.2784992

0.1973663

0.3062023

0.2393551

0.2084204

0.2721145

0.2306618

E 7.3.5.
1

8.49372 10

1.46294 10

a)I(h) = 4.41041 10

b)I(h) = 7.85398 10

c)I(h) = 1.58730 10

d)I(h) = 4.61917 10

12

h 1.22104 10

11

h 4.16667 10

9.68958 10

10

+ 3.83229 10

12

h + 2.03315 10

2 2

7 3

h 1.22376 10

h + 8.14294 10

3 4

2 2

7 3

6 4

7 2

5 3

4 4

2 2

8 3

4 4

h + 2.52721 10

h 2.16110 10

h + 4.65117 10

h 1.38695 10

h + 2.97262 10

h + 5.48935 10

h + 5.25326 10

E 7.3.6.

1.5707963

2.0943951

1.8961189

2.0045598

1.9985707

1.9742316

2.0002692

1.9999831

2.0000055

E 7.3.7. 0.7468337,2.4606311, 1.6595275.

E 7.3.9.

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 7.3.10. w1 = 1/6, w2 = 2/3, w3 = 1/6. O esquema construdo o de Simpson e a ordem de exatido 3.

E 7.3.11. 3

E 7.3.12. 5

E 7.3.13.

R1
0

3 f (1/3) 2f (1/2) + 3 f (2/3) com ordem 3.


f (x)dx 2
2

E 7.3.15. 5, 4, 3

E 7.3.16.

R1
1

f (x)dx = f

33

+f

3
3

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

224

Clculo Numrico

E 7.3.17. w1 = w3 = 1 e w2 = 0 com ordem 3.

E 7.3.21. -0.2310491, -0.2452073, - 0.2478649.

E 7.3.23. a)-0.2472261, -0.2416451, -0.2404596, -0.2400968, -0.2399563, -0.2398928. b)-0.2393727, -0.2397994, 0.2398104, -0.2398115, -0.2398117, -0.2398117.
E 7.3.24.

2.205508

3.5733599

3.6191866

3.6185185

3.618146

2.5973554

3.6107456

3.6181465

3.6180970

3.6180970

2.7732372

3.6153069

3.6181044

3.6180970

3.6180970

2.880694

3.6166953

3.6180989

3.6180970

3.6180970

Soluo do item e: Como


cos(x) = 1 +

(1)

x2n
(2n)!

n=1

temos
1 cos(x)
=

(1)

x2n1/2
(2n)!

, x0

n=1

Logo, podemos integrar

Z
I

4+2

cos(x) 1

42

|x|

dx = 4 2

x2n1/2
(2n)!

dx

n=1

(1)

Z
n

(1)

(2n)!(2n + 1/2)

n=1

Soluo do item f)

Z 1

1/2

x3/2
2

x7/2

24

dx = 2

1
5

1
54

977
270

cos(x) P4 (x)
dx = 2

cos

1+u
2

P4

1+u

1+u
2


du

E 7.3.28. 4.1138

E 7.3.29. a)19.2, 22.1, 23.3 b)513.67K

1 ln
E 8.5.2. Os valores exatos para os itens e e f so: 10

E 8.5.3. O valor exato

q 
g

1 e200

9
4

1 ln (6)
e 10

em t = 1
tanh1
g

p

1 e200

E 8.5.9.

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

A.6. GRFICOS

225
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

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

Clculo Numrico

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] Walter Gautschi and Gabriele Inglese. Lower bounds for the condition
number of vandermonde matrices. Numerische Mathematik, 52(3):241
250, 1987/1988.
[6] L.F. Guidi. Notas da disciplina clculo numrico. http://www.mat.
ufrgs.br/~guidi/grad/MAT01169/calculo_numerico.pdf. Acessado
em julho de 2016.
[7] R. Rannacher. Einfhrung in die numerische mathematik (numerik
0). http://numerik.uni-hd.de/~lehre/notes/num0/numerik0.pdf.
Acessado em 10.08.2014.

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

ndice Remissivo
ajuste
derivao, 147
ajuste de curvas, 113
aproximao
de funes, 103
por polinmios, 110
aritmtica
de mquina, 3
autovalores, 87
cancelamento catastrfico, 23
derivao numrica, 139
diferenas divididas de Newton, 105
eliminao gaussiana
com pivoteamento parcial, 72
equaes
de uma varivel, 37
erro
absoluto, 18
relativo, 18
erros, 17
absoluto, 52
arredondamento, 142
de arredondamento, 20
propagao, 25
truncamento, 141
estabilidade, 193
frmula de diferenas finitas, 139
alta ordem, 144
central, 146
funo

raiz, 37
zero, 37
integrao numrica, 154
mtodo composto
de Simpson, 163
dos trapzios, 162
mtodo de Romberg, 165
ordem de preciso, 167
regra de Simpson, 160
regra do ponto mdio, 156
regra do trapzio, 158
regras compostas, 162
regras de Newton-Cotes, 156
interpolao
cbica segmentada, 127
derivao, 147
linear segmentada, 125
polinomial, 104
iterao
do ponto fixo, 44
iterao do ponto fixo
convergncia, 51
estabilidade, 51
mtodo
da bisseo, 39
de Euler, 184
de Euler melhorado, 190
de passo mltiplo
Adams-Bashforth, 192
de Runge-Kutta, 191
de quarta ordem, 192
dos mnimos quadrados, 113

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

228

Clculo Numrico

mtodo da potncia, 87
mtodo das secantes, 63
convergncia, 64
mtodo de
Gauss-Seidel, 84
Jacobi, 83
mtodo de Newton
para sistemas, 95
mtodo de Newton-Raphson, 58
convergncia, 60
mtodo de passo mltiplo
Adams-Moulton, 193
mtodos iterativos
sistemas lineares, 83
convergncia, 86
matriz
condicionamento, 78
jacobiana, 101
norma, 80
medida
de erro, 18
de exatido, 18
mudana de base, 3
nmero de condicionamento, 81
ordem de preciso, 190
polinmios
de Lagrange, 109
ponto fixo, 48
problema de valor de contorno, 150
problema de valor inicial, 184
quadratura numrica
Gauss-Legendre, 172
representao
de nmeros, 8
nmeros inteiros, 8
representao de nmeros
inteiros

bit de sinal, 9
complemento de dois, 10
sem sinal, 9
Scilab, 199
elementos da linguagem, 201
funes, 209
funes e constantes, 202
grficos, 210
instalao e execuo, 199
matrizes, 203
operaes matemticas, 202
operador :, 204
operadores lgicos, 202
ramificao e repetio, 207
sobre, 199
usando, 200
simulao
computacional, 1
numrica, 1
sistema de equaes
no lineares, 92
sistema de numerao, 3
sistema linear, 71
condicionamento, 78
sistema numrico
de ponto fixo, 11
de ponto flutuante, 13
ponto fixo
normalizao, 12
spline, 127
fixado, 132
natural, 129
tolerncia, 52
vetor
norma, 79

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