Prévia do material em texto
k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f(k=1;x(k)=0.5*(a+b);FX=f(x(k));FA=f(a);FB=f(
b);e_rel=+Inf;whilek<kmax&&abs(e_rel)>tolifb);e_rel=+Inf;whilek<kmax&&abs(e_rel)>tolif
FA*FX<=0b=x(k);FB=FX;elsea=x(k);FA=FX;endk=FA*FX<=0b=x(k);FB=FX;elsea=x(k);FA=FX;endk=
k+1;x(k)=0.5*(a+b);FX=f(x(k));e_rel=(x(k1),k+1;x(k)=0.5*(a+b);FX=f(x(k));e_rel=(x(k1),
x(k));endz=x(k);n=size(A,1);fori=1:nforj=1:x(k));endz=x(k);n=size(A,1);fori=1:nforj=1:
nifi==jC(i,j)=0;elseC(i,j)=A(i,j)/A(i,i);ennifi==jC(i,j)=0;elseC(i,j)=A(i,j)/A(i,i);en
dendd(i,1)=)=((j1)/n)^(i);s(n+1,1);b(i)/A(idendd(i,1)=)=((j1)/n)^(i);s(n+1,1);b(i)/A(i
,i);endk=1;x=ones(n,1);e_rel=+Inf;whilek<km,i);endk=1;x=ones(n,1);e_rel=+Inf;whilek<km
ax&e_rel>tolk=k+1;x_ant=x;fori=1:nx(i)=C(i,ax&e_rel>tolk=k+1;x_ant=x;fori=1:nx(i)=C(i,
:)*x+d(i);ende_rel=t(x_ant,x);endn=length(c:)*x+d(i);ende_rel=t(x_ant,x);endn=length(c
);y=0;fork=1:ny=y.*x+c(k);endn=length(x);fo);y=0;fork=1:ny=y.*x+c(k);endn=length(x);fo
ri=1:nX(i,m+1)=1;forj=m:1:1X(i,j)=x(i)*X(i,ri=1:nX(i,m+1)=1;forj=m:1:1X(i,j)=x(i)*X(i,
j+1);endA=zeros(n+1,n+1);for)=((j1)/n)^(i1)j+1);endA=zeros(n+1,n+1);for)=((j1)/n)^(i1)
;s(n+1,1))=((j1)/n)^(i1);sfori=0:nwhilek<1;;s(n+1,1))=((j1)/n)^(i1);sfori=0:nwhilek<1;
Cálculo Numérico
Notas de Aula
Cálculo Numérico
Notas de Aula
Adalberto Ayjara Dornelles Filho
aadornef@ucs.br
19 de fevereiro de 2015
versão 11
aadornef@ucs.br
Sumário
Apresentação v
1 Introdução ao Matlab 1
1.1 Obtendo ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Calculando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Programando com o Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Estruturas lógicas de um algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Estrutura de sequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.3 Estruturas de decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Estruturas de repetição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Erros e Aritmética Computacional 14
2.1 Resolução de problemas numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Representação numérica de ponto �utuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Erros nos processos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Erro de arredondamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.2 Erro de truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Notação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Estimativas para o erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Convergência nos processos numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
i
SUMÁRIO ii
2.7 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Zeros de funções 25
3.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Método da bisseção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Critérios de parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Método de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Sistemas Lineares 34
4.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Método de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1 Pivotamento Parcial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Métodos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4 Método de Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4.1 Convergência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5 Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Interpolação 47
5.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.2 Método de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.3 Método de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3.1 Fórmulas para 2 e 4 nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3.2 Erro na interpolação polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Método do spline cúbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4.1 De�nição e propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.2 Dedução dos coe�cientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.3 Determinação do spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
SUMÁRIO iii
6 Ajuste de funções 61
6.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.2 Resíduo quadrático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3 Ajuste polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.1 Um pouco de Álgebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.2 Obtendo o polinômio de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.4 Ajuste exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7 Integração Numérica 74
7.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2 Método de Newton-Cotes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2.1 Dedução dos pesos de integração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.3 Método de Newton-Cotes composto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.4 Método de Newton-Cotes adaptável . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.5 Método do Spline Cúbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8 Equações Diferenciais Ordinárias 86
8.1 De�nição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.2 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.3 Método de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.4 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
A Respostas para problemas selecionados 96
Lista de Algoritmos
1 VPol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 MVander . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 PivotamentoParcial . . . . . . . . . . . . . . . . . . . . 13
4 EpsilonMaq . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 ErroRel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 RaizQuadrada . . . . . . . . . . . . . . . . . . . . . . . . 21
7 ZeroBisseção . . . . . . . . . . . . . . . . . . . . . . . . . 27
8 ZeroNewton . . . . . . . . . . . . . . . . . . . . . . . . . 29
9 SLGaussProv . . . . . . . . . . . . . . . . . . . . . . . . . 36
10 SLGauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
11 ErroRelVet . . . . . . . . . . . . . . . . . . . . . . . . . 39
12 SLGaussJacobi . . . . . . . . . . . . . . . . . . . . . . . . 40
13 SLGaussSeidel . . . . . . . . . . . . . . . . . . . . . . . . 42
14 ILagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
15 CoefSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . 56
16 ISpline3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
17 AjustePol . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
18 QuadNCAdapt . . . . . . . . . . . . . . . . . . . . . . . . 80
19 QuadRec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
20 QuadSpline3 . . . . . . . . . . . . . . . . . . . . . . . . . 82
21 EDOEuler . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
22 EDORK4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
iv
Apresentação
É cada vez mais intenso é o uso de técnicas computacionais para a re-
solução de problemas nas Ciências Exatas e Engenharias. Boa parte dessas
técnicas requer o conhecimento dos fundamentos do Cálculo Numérico.
Diante da importância dessa disciplina na formação de pro�ssionais, as uni-
versidades a incluem em seus currículos (em intensidades muito variadas).
Estas Notas de Aula foram preparadas especi�camente para o estudante
que se inicia nessa disciplina.
No Capítulo 1, veremos uma explicação breve das funcionalidades bá-
sicas do Matlab (incluindo cálculo e programação). No Capítulo 2, apre-
sentamos a forma de representação numérica bem como os conceitos de
erro (de truncamento e arredondamento) inerentes aos processos compu-
tacionais. O estudo dos métodos numéricos propriamente ditos se iniciam
no Capítulo 3 com os métodos para determinar zeros de funções (bisse-
ção e Newton). No Capítulo 4 estudamos métodos diretos (escalonamento
de Gauss) e iterativos (Gauss-Jacobi e Gauss-Seidel) para resolução de
sistemas de equações lineares. No Capítulo 5 estudamos o problema da in-
terpolação polinomial (Vandermonde e Lagrange) e por spline cúbico. Em
seguida, no Capítulo 6 estudamos o método dos quadrados mínimos para
ajuste de curvas polinomiais. O problema clássico da integração numérica é
estudado no Capítulo 7 com a apresentação dos métodos de Newton-Cotes
(regras simples, compostas e adaptáveis) e por spline cúbico. Por �m, a
resolução de equações diferenciais ordinárias é vista no Capítulo 8 a partir
dos métodos de Euler e Runge-Kutta. No apêndice A, são apresentadas as
respostas e dicas problemas selecionados.
Existem muitos métodos disponíveis para resolver cada um dos proble-
mas abordados. Para tornar o material su�cientemente compacto para uso
em sala de aula tivemos que optar por escolher apenas um punhado deles.
Seguindo a orientação de Burden e Faires [8], os métodos foram escolhidos
de modo a seguir os seguintes critérios:
• Simplicidade: O desenvolvimento e a implementação são su�ciente-
mente claros e simples de modo que o estudante iniciante seja capaz
entender como funcionam;
• Desempenho: Os algoritmos resolvem satisfatoriamente uma boa
quantidade de problemas que o estudante pode encontrar em sua
vida pro�ssional;
• Base: A maioria das técnicas mais avançadas toma por base as ideias,
ou combinações de ideias, de métodos mais simples como os aqui
estudados.
O leitor interessado em outros métodos pode (e deve) recorrer a literatura
especializada como, por exemplo, [8, 19, 30, 40].
Para complementar o entendimento da teoria, muitos problemas são
propostos. Os problemas assinalados pelo símbolo . indicam que o
mesmo é su�cientemente simples para ser resolvido à mão (com ajuda de
uma calculadora, se for o caso) ou apresenta alguma resolução algébrica
(não numérica). Esse tipo de problema é importante para que o estudante
exercite passo-a-passo e absorva as ideias subjacentes aos método numéri-
cos apresentados
O estudo do Cálculo Numérico não pode ser realizado sem a efetiva
implementação dos algoritmos em alguma linguagem de programação. O
presente texto enfatiza essa visão, através dos exercícios propostos onde a
implementação dos algoritmos é sempre solicitada nos exercícios precedidos
pelo símbolo + . Nesse sentido, o conhecimento de alguma linguagem de
programação deveria ser pré-requisito (o que nem sempre é o caso). Aos
estudantes que já conhecem linguagens de programação, esta disciplina
será uma excelente oportunidade de aplicação desse conhecimento. Aos
v
APRESENTAÇÃO vi
quenão o possuem, será uma excelente oportunidade de aprendizagem de
tais linguagens.
A princípio, qualquer linguagem pode ser utilizada (C, Pascal, Java,
...), desde que apresente os comandos matemáticos mínimos necessários.
Por preferência pessoal do autor, estas notas utilizam a linguagem do
Matlab. Essa aproximação se re�ete em duas características do texto:
Primeiramente, os algoritmos, apresentados em pseudo-código, estão escri-
tos usando uma estrutura sintática muito similar a do Matlab o que faz
com que a implementação seja bastante simpli�cada. Em segundo lugar,
ao longo do texto, diversos parágrafos precedidos pelo símbolo mostram
informações relativas ao uso do Matlab e aos algoritmos implementados.
Para os exemplos mostrados nestas notas, foi utilizada a versão R2012a.
Existem boas opções (livres) ao Matlab: pode-se citar o Scilab e o Freemat.
O autor agradece aos colegas
Ana Grisa, Eliana S. Soares, Mônica Scotti,
Oclide J. Dotto, Vania P. Slaviero,
pelas correções, comentários e sugestões recebidas.
O texto foi editado usando o sistema de preparação de documentos
LATEX (www.latex-project.org). O editor de texto utilizado foi oWinEdt
(www.winedt.com). A atualização de pacotes tipográ�cos foi feita com o
auxílio do MiKTeX (www.miktex.com). Os grá�cos foram elaborados com
o software matemático Matlab (www.mathworks.com) e os desenhos com o
IPE Draw (ipe7.sourceforge.net).
www.latex-project.org
www.winedt.com
www.miktex.com
www.mathworks.com
ipe7.sourceforge.net
Capítulo 1
Introdução ao Matlab
Neste capítulo, estudaremos brevemente algumas características e fun-
cionalidades do Matlab.
O Matlab (acrônimo de Matrix Laboratory) é um software que permite
ao usuário efetuar cálculos via digitação direta de comandos e também a
construção de programas que automatizam procedimentos de cálculo mais
complexos. O Matlab é uma ferramenta de larga utilização tanto no mundo
acadêmico (ensino, pesquisa, etc.) quanto no pro�ssional (desenvolvimento
de produtos, análise de problemas, etc.). Tem um interface simples e in-
tuitiva, e constitui ferramenta indispensável (na visão do autor) para o
estudante de ciências exatas e engenharia. Existem várias e boas referên-
cias bibliográ�cas para o estudante interessado. Para citar apenas uma:
Essential MATLAB for Engineers and Scientists de Brian D. Hahn e Da-
niel T. Valentine [24].
1.1 Obtendo ajuda
Existem três níveis de ajuda:
1. Ao se digitar help <comando> na área de trabalho do Matlab, se ob-
tém uma breve informação sobre o comando especi�cado, por exem-
plo:
>> help log
log Natural logarithm.
log(X) is the natural logarithm of the elements of X.
Complex results are produced if X is not positive.
See also log1p, log2, log10, exp, logm, reallog.
2. No menu HELP >> MATLAB HELP, é possível obter informações mais
detalhadas sobre os comandos, exemplos, informações técnicas, algo-
ritmos e referências bibliográ�cas detalhadas.
3. Na internet, acessando o sítio o�cial do fabricante (www.mathworks.
com), é possível acessar o suporte técnico, fóruns de discussão, tuto-
riais e manuais (em formato PDF), etc.
1.2 Calculando com o Matlab
No Matlab, a janela de trabalho é o espaço onde os comandos são digitados,
as operações são executadas e os resultados são mostrados. O símbolo >>,
chamado prompt, denota que o Matlab está esperando que o usuário digite
um comando. Após teclar Enter , o resultado é apresentado como mostra
a Figura 1.1.
Variáveis
No Matlab, todos os resultados (números, vetores, matrizes, etc.) são
armazenados em variáveis. Os nomes das variáveis devem começar com
uma letra seguida de qualquer número de letras, dígitos ou underscores:
>> a = 3, b = 7, c = a + b
1
www.mathworks.com
www.mathworks.com
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 2
Figura 1.1: A janela de trabalho do Matlab.
a = 3
b = 7
c = 10
>> fatorial_de_5 = 5 * 4 * 3 * 2 * 1
fatorial_de_5 = 120
Se uma variável não é explicitada pelo usuário, o resultado será arma-
zenado na variável ans:
>> 7 * 8
ans = 56
O Matlab distingue letras maiúsculas de minúsculas. Assim var, VAR,
e Var representam variáveis distintas:
>> Num_1 = 1234, Num_2 = 4567
Num_1 = 1234
Num_2 = 4567
>> Tot = Num_1 + num_2
??? Undefined function or variable 'num_2'.
Não são permitidos diacríticos (acento, cedilha, til, etc.):
>> solução = a * b * c
solução = a * b * c
|
Error: The input character is not valid in MATLAB
statements or expressions.
O uso de ; no �nal de um comando de atribuição inibe a apresentação
do resultado:
>> a = 1 + 3
a = 4
>> b = 5 - 2;
>>
Comentários (muito úteis em programação) são escritos após um %:
>> b = 5; % base
>> h = 7; % altura
>> A = b * h % Área do retângulo
A = 35
Operações elementares
O Matlab realiza operações matemáticas elementares como uma calcula-
dora.
As operações aritméticas elementares:
Adição, subtração, multiplicação, divisão:
>> 4 + 5 % adição
ans = 9
>> 4 - 5 % subtração
ans = -1
>> 4 * 5 % multiplicação
ans = 20
>> 4 / 5 % divisão
ans = 0.8000
>> 1 * 2 + 3 / 4 - 5 % Qual é o resultado?
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 3
Potenciação, raiz quadrada e outras raízes:
>> a = sqrt(5), b = a^2
a = 2.2361
b = 5.0000
>> a = 7^(1/3), b = a^3
a = 1.9129
b = 7.0000
Valor absoluto, resto da divisão inteira:
>> n = abs(-500)
n = 500
>> r = rem(n, 3)
r = 2
Arredondamento:
>> x = sqrt(10)
x = 3.1623
>> a = floor(x), b = ceil(x), c = round(x)
a = 3 % arredonda para o inteiro inferior
b = 4 % arredonda para o inteiro superior
c = 3 % arredonda para o inteiro mais próximo
Operações trigonométricas:
O número π:
>> pi
ans = 3.1416
Seno, cosseno e tangente de um ângulo em radianos:
>> a = sin(pi/3), b = cos(pi/3), c = tan(pi/3)
a = 0.8660
b = 0.5000
c = 1.7321
Seno, cosseno e tangente de um ângulo em graus:
>> a = sind(60), b = cosd(60), c = tand(60)
a = 0.8660
b = 0.5000
c = 1.7321
Funções trigonométricas inversas
>> t1 = asin(sqrt(2)/2), t2 = asind(sqrt(2)/2)
t1 = 0.7854 % ângulo em radianos
t2 = 45.0000 % ângulo em graus
Exponencial e Logaritmo:
Potência de base natural: ex
>> exp(4)
ans = 54.5982
Logaritmos: lnx, log10 x, log2 x
>> log(5) % logaritmo de base natural
ans = 1.6094
>> log10(1000) % logaritmo de base 10
ans = 3
>> log2(512) % logaritmo de base 2
ans = 9
Vetores e matrizes
O Matlab opera com vetores e matrizes com facilidade.
Vetor de�nido por seus elementos:
>> x = [1 2 3 4 5]
x = 1 2 3 4 5
Vetor de�nido por intervalo de valores:
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 4
>> y = 1 : 0.5 : 3
y = 1.0000 1.5000 2.0000 2.5000 3.0000
Operações com o vetores:
>> x + y % adição
ans = 2.0000 3.5000 5.0000 6.5000 8.0000
>> x .* y % multiplicação elemento-elemento
ans = 1 3 6 10 15
>> x.^2 % potência dos elementos
ans =
1 4 9 16 25
>> exp(y) % operações elementares
ans = 2.7183 4.4817 7.3891 12.1825 20.0855
>> dot(x, y) % produto escalar entre x e y
ans = 35
>> n = length(x) % tamanho do vetor
n = 5
Matriz de�nida por seus elementos:
>> A = [-2 0 1; -2 -3 0; 3 -2 -2] % uma matriz 3x3
A =
-2 0 1
-2 -3 0
3 -2 -2
Operações matriciais:
>> det(A) % o determinante de A
ans = 1
>> inv(A) % a matriz inversa da A
ans =
6.0000 -2.0000 3.0000
-4.0000 1.0000 -2.0000
13.0000 -4.0000 6.0000
>> A^2 % multiplicando matrizes: A * A
ans =
7 -2 -4
10 9 -2
-8 10 7
>> A.^2 % cada elemento de A ao quadrado
ans =
4 0 1
4 9 0
9 4 4
>> [l, c] = size(A) % número de linhas e colunas de A
l = 3
c = 3
Os comandos length e size são semelhantes mas têm uso distinto: o
primeiro é indicado para determinar o tamanho de um vetor enquanto o
último é indicado para determinar o tamanho de uma matriz.
Transposição de vetores e matrizes:
>> A = [1 2 3; 4 5 6], x = [2 4 6]
A =
1 2 3
4 5 6
x =
2 4 6
>> A', x'
ans =
1 4
2 5
3 6
ans =
2
4
6
Matrizes especiais:
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 5
>> B = zeros(3,2) % matriz de zeros
B =
0 0
0 0
0 0
>> W = ones(2,3) % matriz de uns
W =
1 1 1
1 1 1
>> I = eye(3) % matriz identidade
I =
1 0 0
0 1 0
0 0 1
>> rand(2,4) % matriz com elementos aleatórios
ans =
0.6223 0.4123 0.1355 0.28960.7159 0.3622 0.9021 0.7814
Comandos úteis para vetores e matrizes
Os comandos max, min e sum, são bastante úteis na manipulação de vetores:
>> x = [4 -2 5 0 -3] % Um vetor x
x =
4 -2 5 0 -3
>> M = max(x) % O maior elemento de x
M =
5
>> m = min(x) % O menor elemento de x
m =
-3
>> S = sum(x) % A soma dos elementos de x
S =
4
Os comandos acima funcionam também para matrizes:
>> A = [1 5; 3 -4] % Uma matriz A
A =
1 5
3 -4
>> M = max(A) % Os maiores elementos de cada coluna de A
M =
3 5
>> MM = max(max(A)) % O maior elemento de A
MM =
5
>> S = sum(A) % A soma dos elementos de cada coluna de A
S =
4 1
>> S = sum(sum(A)) % A soma de todos os elementos de A
S =
5
Os colchetes [ ] podem ser usados para justapor (concatenar) vetores
ou matrizes:
>> A = [1 2; 4 5], b = [3; 6]
A =
1 2
4 5
b =
3
6
>> Ab = [A b]
Ab =
1 2 3
4 5 6
Função anônima
O comando @ de�ne funções a partir de expressões algébricas. Por exemplo:
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 6
>> f = @(z) 1/sqrt(2*pi) * exp(-0.5 * z.^2)
f =
@(z)1/sqrt(2*pi)*exp(-0.5*z.^2)
>> a = f(0), b = f(1)
a =
0.3989
b =
0.2420
>> z = 0 : 5, d = f(z)
z =
0 1 2 3 4 5
d =
0.3989 0.2420 0.0540 0.0044 0.0001 0.0000
>>
A variável f pode ser passada como argumento para outras funções,
como no exemplo a seguir, onde o comando quad calcula a integral da
função no intervalo −2 < z < 2:
>> P = quad(f, -2, 2)
P =
0.9545
Grá�cos
O Matlab possui uma variedade de comandos para produzir grá�cos. O
comando plot, para grá�cos bidimensionais, é o mais simples deles.
>> z = -4 : 0.1 : 4; % valores para z
>> d = f(z); % valores para f(t)
>> plot(z, d ,'r--') % gráfico
>> grid on % grade
>> xlabel('valor da variável aleatória') % rótulo horiz.
>> ylabel('densidade de probabilidade') % rótulo vert.
>> title('Distribuição normal padrão') % título
A Figura 1.2 mostra o resultado dos comandos.
Figura 1.2: Janela grá�ca do Matlab com um grá�co 2D simples.
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 7
1.3 Programando com o Matlab
O Matlab permite a execução de conjuntos de comandos a partir de pro-
gramas. Os programas são arquivos de texto escritos em um editor de
programas. A Figura 1.3 mostra a janela de edição.
Figura 1.3: A janela de edição de programas com uma function.
Os programas do Matlab são de dois tipos: scripts e functions. Os
scripts são programas que realizam operações especí�cas com dados �xos
enquanto functions realizam operações mais genéricas com entrada e saída
de dados.
Exemplo: Um script para o cálculo da média harmônica:
clear all
clc
P1 = 7.6
P2 = 8.1
P3 = 8.6
H = 3 / (1/P1 + 1/P2 + 1/P3)
Exemplo: Uma function para o cálculo da média harmônica:
function H = MH2(P1, P2, P3)
H = 3 / (1/P1 + 1/P2 + 1/P3);
O quadro a seguir, resume as principais diferenças entre scripts e func-
tions:
script function
Uso: especí�co geral
Variáveis: globais (workspace) locais
Entrada de dados: workspace ou no corpo do texto argumentos
Saída de dados: workspace ou eco na tela argumentos
A Figura 1.3 mostra a janela de edição com uma function e a Figura 1.4
mostra a janela de edição com um script. Observe a sintaxe do cabeçalho
da function. Observe também a forma como os dados estão inclusos no
corpo do script.
1.3.1 Estruturas lógicas de um algoritmo
Um algoritmo é uma sequência determinada de passos para a resolução
de algum problema. Do ponto de vista lógico, existem 3 estruturas que
determinam quais, e como, os passos devem ser executados:
• Sequência: determina qual passo deve ser executado antes de outro;
• Decisão: determina se um conjunto de passos deve ou não ser exe-
cutado;
• Repetição: determina se (e quantas vezes) um conjunto de passos
deve ser repetido.
A seguir veremos como essas estruturas lógicas podem ser implemen-
tadas na linguagem do Matlab, isto é, qual é a sintaxe dos comandos
utilizados
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 8
Figura 1.4: A janela de edição de programas com um script.
1.3.2 Estrutura de sequência
No Matlab os comandos são executados um de cada vez (não há processa-
mento paralelo). E a sintaxe é simples: os comandos são escritos um a um
de cima para baixo. Embora seja possível, não se recomenda escrever dois
comando em uma mesma linha.
Exemplo: Determinação das raízes de uma equação quadrática
ax2 + bx+ c = 0 com a 6= 0:
clear all
clc
a = 1
b = 2
c = -4
d = b^2 - 4*a*c
x1 = (-b + sqrt(d))/(2*a)
x2 = (-b - sqrt(d))/(2*a)
1.3.3 Estruturas de decisão
O Matlab possui duas estruturas de decisão básicas: if...else...end e
switch...case.
Exemplo: Cálculo da média harmônica com if...else...end:
function [H, C] = MH3(P1, P2, P3)
% Calcula média harmônica
if P1 <= 0 || P2 <= 0 || P3 <= 0
H = 0;
else
H = 3 / (1/P1 + 1/P2 + 1/P3);
end
% Calcula conceito
if H >= 9.0
C = 4;
elseif H >= 8.0
C = 3;
elseif H >= 7.0
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 9
C = 2;
elseif H >= 6.0
C = 1;
else
C = 0;
end
Exemplo: Cálculo do intervalo de con�ança para uma estimativa de
média, com switch...case:
function [a, b] = ICMed(xb, sig, n, alfa, L)
switch L
% IC lateral esquerdo
case -1
z_alfa = norminv(1 - alfa);
a = -inf;
b = xb + z_alfa * sig / sqrt(n);
% IC bilateral
case 0
z_alfa_2 = norminv(1 - alfa/2);
a = xb - z_alfa_2 * sig / sqrt(n);
b = xb + z_alfa_2 * sig / sqrt(n);
% IC lateral direito
case +1
z_alfa = norminv(1 - alfa);
a = xb - z_alfa * sig / sqrt(n);
b = +inf;
end
1.3.4 Estruturas de repetição
São duas as estruturas de repetição no Matlab: A estrutura for...end e
a estrutura while...end.
Exemplo: Cálculo da tabuada com for...end:
function T = Tabuada(n)
T = zeros(10,1);
for i = 1 : 10
T(i) = i * n;
end
Exemplo: Cálculo da tabuada com for...end aninhados:
clear all
clc
T = zeros(10,10);
for j = 1 : 10 % para cada coluna j ...
for i = 1 : 10 % para cada linha i ...
T(i,j) = i * j;
end
end
T
Exemplo: Encontrando uma matriz singular com while...end:
function [A] = MatrizSingular(n)
D = 1; % para "entrar" no laço...
while D ~= 0
A = fix(20 * rand(n) - 10);
D = det(A);
end
Exemplo: Ordenamento de uma lista com várias estruturas:
function [L] = Ordenar(L)
% Método 'Bubble Sort'
% Inicialização
n = length(L);
cont = 1;
% Enquanto ocorrerem trocas...
while cont > 0
cont = 0;
% ... faz varredura na lista
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 10
for i = 1 : n - 1
% Se elementos fora de ordem...
if L(i) > L(i + 1)
temp = L(i);
L(i) = L(i + 1);
L(i + 1) = temp;
cont = cont + 1;
end
end
end
1.4 Problemas
Comandos do Matlab
Nos problemas 1.1 a 1.6 a seguir, escreva a linha de comando do Matlab necessária
para calcular os valores dados. Justi�que.
1.1. a = 25, b =
√
7.
1.2. a = e2, b = 3
√
2, c = 3
√
−8.
1.3. a = cos(60◦), b = tg(π/4).
1.4. a = log(1000), b = ln(1000), c = log2(1000).
1.5. a = |−5|, b = 9!.
1.6. a = 3,5603× 104 + 2,0034× 103.
Nos problemas 1.7 a 1.10 a seguir, escreva a linha de comando do Matlab
necessária para construir os vetores dados. Justi�que.
1.7. x = [6 2 0 5] (um vetor-linha), y = [6 2 0 5]T (um vetor-coluna).
1.8. w = [0,0 0,1 0,2 · · · 9,8 9,9 10,0].
1.9. z = [0 0 0 · · · 0 0 0] (um vetor-linha com 20 zeros).
1.10. u = [1 1 1 · · · 1 1 1]T (um vetor-coluna com 20 uns).
Nos problemas 1.11 e 1.12 a seguir, escreva a linha de comando do Matlab
necessária para construir as matrizes dadas. Justi�que.
1.11. A =
[
1 7
−4 3
]
.
1.12. B =
0 1 2
3 −3 1
−1 0 3
2 1 −1
.
Nos problemas 1.13 a 1.18 a seguir, determine o resultado do comando no
Matlab. Justi�que.
1.13. >> a = 1 + 2 / 3 - 4 * 5
1.14. >> x = 30, b = sin(x) * cos(x)
1.15. >> y = 100, c = sqrt(y) - log(y)
1.16. >> z = 0.0001, d = abs(log10(z))
1.17. >> w = pi/2, e = exp(cos(w))
1.18. >> A = [1 2 3; 4 5 6], [m, n] = size(A)
Ao se digitar os comandos mostrados nos problemas 1.19 a 1.22 a seguir, se
obtém mensagens de erro. O que elas signi�cam? Como corrigir o comando?
1.19. >> a = ln(5)
Undefined function 'ln' for input arguments of type 'double'.
1.20. >> y = 1 + e^3
Undefined function or variable 'e'.
1.21. >> t = cos(3,1416)
Error using cos
Too many input arguments.
1.22.>> x = 16, y = sqrt(X)
Undefined function or variable 'X'.
1.23. Ao calcular o vetor de coe�cientes de um polinômio interpolador, um es-
tudante obteve o seguinte resultado:
c =
1.0e+003 *
0.0033
0.1742
-6.6277
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 11
Quais são os valores dos coe�cientes? Qual é o polinômio?
Nos problemas 1.24 a 1.27 a seguir, desenhe os grá�cos das funções mostra-
das. Adicione grade, legenda, rótulos nos eixos x e y e título. Use os comandos
plot, grid, legend, xlabel, ylabel, title.
1.24. f(x) = x2 + x− 4
1.25. g(x) = e−x − 1
1.26. h(x) = 2 + 3 cos(πx)
1.27. i(x) =
x+ 1
x− 1
1.28. Se C é uma matriz de ordem n×m, p é um número real e i e j são inteiros
positivos tais que 1 ≤ i, j ≤ n. O que fazem as seguintes linhas de código?
Justi�que. Dê um exemplo. (Estas operações serão utilizadas nos algoritmos do
Capítulo 4).
>> C(i,:) = C(i,:) + p * C(j,:);
>> T = C(i,:);
>> C(i,:) = C(j,:);
>> C(j,:) = T;
Programação no Matlab
1.29. (a) Escreva um script que gera um vetor de 5 elementos aleatórios e, em se-
guida, calcula a média aritmética desses elementos. (b) Escreva uma function que
recebe um vetor de n elementos e retorna a média aritmética dos seus elementos.
(c) Compare os resultados com o comando mean.
1.30. (a) Escreva um script que gera um vetor de n elementos aleatórios e, em
seguida, determina o valor e a localização do maior elemento do vetor. (b) Escreva
uma function que recebe um vetor de n elementos e retorna o valor e a posição
do maior elemento do vetor. (c) Compare os resultados com o comando max.
1.31. Escreva uma function que calcula a soma de todos os elementos de uma
matriz A dada. Compare o resultado com o comando sum.
1.32. Com três segmentos de reta de comprimento a, b e c somente é possível
construir um triângulo se o comprimento de cada segmento é menor que a soma
dos outros dois. Escreva uma function que recebe os comprimentos a, b e c de
3 segmentos de reta e retorna o valor 1 se eles podem representar lados de um
triângulo e 0 em caso contrário.
1.33. Escreva uma function que recebe um inteiro n e retorne um vetor d con-
tendo todos os divisores de n entre 1 e n, inclusive. Use os comandos mod ou
rem.
1.34. Escreva uma function que recebe um inteiro n e retorna o valor 1 se n
é primo e 0 se n é composto. Compare os resultados com o comando isprime.
Sugestão: modi�que a function do problema anterior.
1.35. Considere a função polinomial
F (x) = 3x4 − 2x3 + 7x2 − 5x+ 4.
Essa função pode ser reescrita na forma fatorada de Horner1:
H(x) = (((3x− 2)x+ 7)x− 5)x+ 4.
Do ponto de vista computacional, essa forma fatorada é preferida por realizar
uma quantidade menor de operações.
(a) Veri�que esse fato determinando quantas operações de multiplicação e adição
são necessárias para calcular F (x) e H(x). Considere que o cálculo de xn é
efetuado com multiplicações.
(b) Generalize o resultado do item anterior para o caso de um polinômio de grau
m.
1.36. + Implemente o algoritmoVPol que usa a forma de Horner para avaliação
polinomial, isto é, recebe um vetor c com os coe�cientes de uma função polinomial
p, o valor x e determina y = p(x). Use y = y .* x + c(i) para implementar
a linha 4, assim x pode ser tanto um escalar quanto um vetor. Compare com o
comando polyval do Matlab. (Esse algoritmo será utilizado no Capítulo 5).
1.37. Em 1674, Leibniz2 mostrou que o número π pode ser calculado pela série
π = 4
(
1− 1
3
+
1
5
− 1
7
+ · · ·
)
,
1 ÿWilliam George Horner (1786 - 1837), clérigo metodista e estudioso inglês, conhe-
cido pelo método (que leva seu nome) de resolução de equações algébricas publicado em
A new method of solving numerical equations of all orders, by continuous approximation
em 1819. No entanto o método não é original, foi antecipado no século XIX por Paolo
Ru�ni na Itália e, antes disso, no século XIII por Zhu Shijie na China [38].
2 ÿGottfried Wilhelm von Leibniz (1646 - 1716), matemático e �lósofo alemão,
desenvolveu a teoria do Cálculo (é dele a notação dy
dx
) na mesma época que Newton.
É conhecido ainda pelos estudos na aritmética binária e pelo desenvolvimento de uma
máquina mecânica de calcular. Tanto quanto matemático, Leibniz foi importante �lósofo
e, entre outros temas, tratou do problema da conciliação da noção do mal em um mundo
criado por um deus bom [38].
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 12
Algoritmo 1 VPol
entrada : c, x
saída : y
1: n ← tamanho de c
2: y ← 0
3: para i ← 1 : n
4: y ← y · x+ ci
5: �m
[4, p. 132]. Escreva uma function que recebe um valor n e que retorna uma
aproximação P (n) para o valor de π usando os n primeiros termos da série.
Quantos termos são necessários para se obter uma aproximação P cuja diferença
para o valor exato de π seja menor que 0,0005?
1.38. + Implemente o algoritmo MVander, que recebe um vetor x =
[x1, x2, . . . , xn]
T e um inteiro positivo m e retorna a matriz
X =
xm1 · · · x21 x1 1
xm2 · · · x22 x2 1
...
...
...
...
xmn · · · x2n xn 1
,
denominada matriz de Vandermonde3. Esse algoritmo será utilizado nos Ca-
pítulos 5 e 6. Compare com o comando vander do Matlab.
1.39. A sequência
1, 1, 2, 3, 5, 8, 13, 21, . . .
é conhecida como sequência de Fibonacci4. Ela pode ser escrita recursivamente
3 ÿAlexandre-Théophile Vandermonde (1735 - 1796), matemático francês, é conhe-
cido como o fundador da teoria do determinante de uma matriz. Embora já utilizados
na resolução de sistemas lineares, as propriedades algébricas dos determinantes ainda
não eram bem conhecidas. É de Vandermonde a demonstração do efeito da permutação
de linhas ou colunas de uma matriz sobre seu determinante. Dessa propriedade, deduziu
que se duas linhas ou colunas de uma matriz são iguais, o seu determinante é zero [38].
4 ÿLeonardo Pisano (1170 - 1250), matemático italiano, mais conhecido por seu
apelido Fibonacci, teve papel importante na história da matemática. Seu livro Liber
Abaci de 1202 introduziu a notação decimal posicional com algarismos hindu-arábicos
que usamos até hoje. A sequência numérica que leva seu nome é a solução de um
problema envolvendo a reprodução de coelhos. A revista The Fibonacci Quarterly,
editada ininterruptamente desde 1963, publica artigos sobre a matemática relacionada
a essa sequência [38] [17, p. 108].
Algoritmo 2 MVander
entrada : x, m
saída : X
1: n ← tamanho de x
2: X ←Zeros(n,m+ 1)
3: para i ← 1 : n
4: Xi,m+1 ← 1
5: para j ←m : −1 : 1
6: Xi,j ←xi ·Xi,j+1
7: �m
8: �m
com
F1 = 1, F2 = 1, Fk = Fk−1 + Fk−2.
Escreva uma function que recebe um inteiro positivo k ≥ 2 e retorna a razão
Rk =
Fk
Fk−1
.
Observe que a medida que k aumenta, a razão Rk aproxima-se de um certo
número. Que número é esse?
1.40. + Implemente o algoritmo PivotamentoParcial que recebe uma matriz
C, seu número de linhas n e um inteiro j tal que 1 ≤ j ≤ n − 1. Em seguida,
procura entre os elementos da coluna j, nas linhas i ≥ j o elemento de maior
valor absoluto p (denominado pivô). Se p está na linha i, sendo i 6= j, então
permuta as linhas i e j entre si. O programa retorna a matriz C pivotada. Esse
algoritmo será utilizado pelo algoritmo SLGauss (p. 37) no Capítulo 4.
CAPÍTULO 1. INTRODUÇÃO AO MATLAB 13
Algoritmo 3 PivotamentoParcial
entrada : C, n, j
saída : C
Inicialização
1: p ←|Cj,j |
2: k ← j
Busca pivô
3: para i ← j + 1 : n
4: se |Ci,j | > p então
5: p ←|Ci,j |
6: k ← i
7: �m
8: �m
Pivotamento impossível
9: se p = 0 então
10: Erro: Pivotamento impossível
11: �m
Permutação das linhas j e k
12: se k > j então
13: T ←Cj,:
14: Cj,: ←Ck,:
15: Ck,: ←T
16: �m
Capítulo 2
Erros e Aritmética Computacional
Ao contrário do senso comum, o computador não é uma máquina de cal-
cular perfeita. Os cálculos efetuados no computador estão sujeitos a erros
(em maior ou menor magnitude). A compreensão da natureza desses erros
permite estabelecer estratégias (algoritmos) para a resolução de problemas.
Neste capítulo abordaremos a forma com que os números são armazena-
dos pelo computador e como os erros aparecem. Veremos também uma
estratégia geral de abordagem dosalgoritmos numéricos: os re�namentos
sucessivos.
2.1 Resolução de problemas numéricos
Resolver problemas é uma arte. Nas Ciências e Engenharias, o computador
cumpre um papel importante no processo de resolução de problemas, espe-
cialmente naqueles onde o uso de cálculos aritméticos é intenso. O processo
de resolução de problemas numéricos segue, em geral, os seguintes passos:
1. De�nição do problema: O que se quer resolver? Qual a natureza
do problema? É teórico ou prático? Quais as informações disponí-
veis? Quais áreas do conhecimento são aplicáveis?
2. Modelagem matemática: Como representar o problema matema-
ticamente? Desenho, esquemas, equações, fórmulas?
3. Resolução do problema matemático: Existe solução? É única?
Como determinar a solução? É possível encontrar solução exata (ana-
lítica) ou devemos optar por uma solução aproximada (numérica)?
No caso de se optar por uma resolução numérica:
1. Determinação do método: Existe algum método (algoritmo) dis-
ponível? Qual método é mais indicado? Alguma adaptação ou ela-
boração é necessária?
2. Codi�cação e implementação: Qual é a linguagem a ser utili-
zada? Em que máquina ou sistema o programa vai rodar? O pro-
grama está funcionando corretamente?
3. Processamento: Resolver o problema.
4. Análise de resultados: O resultado é o esperado? É solução para
o problema? Qual é a estimativa de erro? Qual é a precisão do
resultado?
Exemplo 2.1. Consideremos o problema seguinte. Uma esfera de
madeira (densidade relativa µe = 0,638) e raio r = 10 cm é colocada
a �utuar sobre a água (densidade relativa µa = 1) conforme mostra
a Figura 2.1. Qual é a altura d da esfera que �cará submersa? [30,
p. 43]
Solução: Para encontrar o valor de d, inicialmente observamos que, pelo
Princípio de Arquimedes1, o peso da esfera deve ser equilibrado pelo peso
da água deslocada por sua porção submersa:
14
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 15
d
r
µa
µe
Figura 2.1: Uma esfera �utuante.
Meg = Mag
µe
4πr3
3
= µa
∫ d
0
π
[
r2 − (x− r)2
]
dx
= µa
πd2(3r − d)
3
4µer
3 = µad
2(3r − d). (2.1)
Após a substituição de valores, a expressão (2.1) pode ser reescrita como
d3 − 30d2 + 2552 = 0. (2.2)
A solução do problema consiste em encontrar o valor de d que satisfaz
(2.2). A solução analítica de (2.2), embora existente, é um tanto complicada
(veja o Problema 3.27). A solução numérica pode ser obtida calculando os
valores de f(x) = x3 − 30x2 + 2552 de forma sistemática.
Na primeira tabela mostrada a seguir vemos os valores de x e f(x)
calculados no intervalo 0 ≤ x ≤ 20. Como a função é contínua e troca de
sinal no intervalo 10 ≤ x ≤ 12 (assinalado com *), deduzimos que o valor
procurado de d está dentro desse intervalo. A segunda tabela mostra os
valores calculados no intervalo re�nado 10,0 ≤ x ≤ 12,0. Por raciocínio
semelhante deduzimos que 11,8 < d < 12,0, depois que 11,86 < d < 11,88 e
por �m 11,860 < d < 11,862.
x f(x) x f(x) x f(x) x f(x)
0 2552 10,0 552,0 11,80 17,83 *11,860 0,4349
2 2440 10,2 492,0 11,82 12,03 *11,862 -0,1444
4 2136 10,4 432,1 11,84 6,23 11,864 -0,7235
6 1688 10,6 372,2 *11,86 0,43 11,866 -1,3027
8 1144 10,8 312,5 *11,88 -5,36 11,868 -1,8818
*10 552 11,0 253,0 11,90 -11,14 11,870 -2,4608
*12 -40 11,2 193,7 11,92 -16,92 11,872 -3,0398
14 -584 11,4 134,7 11,94 -22,70 11,874 -3,6187
16 -1032 11,6 76,1 11,96 -28,47 11,876 -4,1977
18 -1336 *11,8 17,8 11,98 -34,24 11,878 -4,7765
20 -1448 *12,0 -40,0 12,00 -40,00 11,880 -5,3553
Assim um valor aceitável para a porção d da esfera que �cará
submersa é d ≈ 11,861 cm.
Importante: O Exemplo 2.1 demonstra um recurso muito comum na
resolução de problemas numéricos: a partir de uma estimativa inicial de
solução, segue uma sequência de re�namentos que convergem para uma
estimativa �nal de solução com a qualidade desejada.
1 ÿArquimedes de Siracusa (287 a. C. - 212 a. C.) foi o maior matemático de sua
época. Seu principal legado são suas contribuições na geometria onde seus métodos
para determinação de áreas e volumes anteciparam o cálculo integral dois mil anos
antes de Newton e Leibniz. Homem bastante prático, inventou uma grande variedade
de máquinas e dispositivos, incluindo polias e bombas d'água [38].
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 16
2.2 Representação numérica de ponto �utuante
Na maioria dos computadores, os números são representados na base biná-
ria normalizada (semelhante a notação cientí�ca). Por exemplo,
x = (5,125)10
= 4 + 1 + 0,125
= 22 + 20 + 2−3
= 1× 22 + 0× 21 + 1× 20 + 0× 2−1 + 0× 2−2 + 1× 2−3
= (101,001)2
= (1,01001)2 × 22
= (1,01001)2 × 2(10)2
= (1,f)2 × 2(e)2 ,
onde f = 01001 e e = 10 são, respectivamente, a parte fracionária e o
expoente da representação binária de ponto �utuante de x.
Nos sistemas computacionais que utilizam o padrão aritmético IEEE
754, um número é representado por uma sequência de k dígitos binários
(bits)
(s, e1, e2, . . . , ep, f1, f2, . . . , ft) .
O bit s representa o sinal no número: s = 0 para números positivos e
s = 1 para números negativos. Os bits f1f2 . . . ft = f representam a parte
fracionária do número. Os bits e1e2 . . . ep estão associados ao expoente e
do número. Aqui os detalhes técnicos são um tanto complicados mas pode-
mos simpli�car um pouco dizendo que o expoente e está em um intervalo
especi�cado por [emin, emax].
A mais importante consequência dessa representação é que, ao contrário
do conjunto R dos números reais, o conjunto F dos números efetivamente
representáveis pela máquina é intrinsecamente �nito, discreto e limitado.
Isto é, nem todo número real pode ser representado na máquina.
A Figura 2.2 mostra os números de ponto �utuante (positivos) repre-
sentáveis com os parâmetros t = 2, emin = −2 e emax = 2.
Observe que apenas vinte valores positivos são representáveis (pois F
é �nito). Observe que existe um �espaço� entre cada dois números (pois
Figura 2.2: Números de ponto �utuante com parâmetros t = 2, emin = −2
e emax = 2.
F é discreto), bem como a existência de um maior número Fmax e de um
menor número Fmin (pois F é limitado).
Nos padrão IEEE 754, os números de ponto �utuante são representados
por um conjunto de k = 64 bits com t = 52 bits para a parte fracionária e
p = 11 para o expoente.
Observemos que o �espaço� entre (1.00...00)2 e (1.00...01)2 tem tamanho
� = 2−t = 2−52 ≈ 2,2204× 10−16. (2.3)
Isso determina a precisão da representação numérica.
Usando o Matlab: Para obter a precisão da máquina usamos o comando
>> eps
ans = 2.2204e-016
Observe-se que
>> 1 + eps > 1
ans = 1 (verdadeiro!)
>> 1 + eps/2 > 1
ans = 0 (falso!)
O algoritmo EpsilonMaq calcula a precisão de qualquer sistema com-
putacional.
Com p = 11 dígitos são possíveis 211 = 2048 combinações que repre-
sentam 2046 expoentes, desde emin = −1022 até emax = 1023. O maior
número representável é
Fmax = (2− �)× 2emax = (1,11...11)2 × 21023 ≈ 1,7977× 10308. (2.4)
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 17
Algoritmo 4 EpsilonMaq
entrada : nenhuma
saída : �
1: t ← 1
2: enquanto 1 + t > 1
3: t ← t/2
4: �m
5: � ← 2t
Usando o Matlab: O maior número representável é dado pelo comando
>> realmax
ans = 1.7977e+308
Observe-se que,
>> realmax + 1 > realmax
ans = 0 (falso!)
>> 2*realmax
ans = Inf (overflow!)
O menor número representável (normalizado) é
Fmin = 1× 2emin = (1,00...00)2 × 2−1022 ≈ 2,2251× 10−308. (2.5)
Usando o Matlab: O menor número representável é dado pelo comando
>> realmin
ans = 2.2251e-308
O menor número representável (não-normalizado) é
(0,00...01)2 × 2−1022 = �× 2−1022 ≈ 4,9407× 10−324.
Usando o Matlab: No Matlab,
>> a = eps * 2^-1022
a = 4.9407e-324
>> b = a/2
b = 0 (underflow!)
As duas combinações não utilizadas para o expoente são reservadas
para os valores especiais NaN (Not a Number) que representa resultados
aritméticos inde�nidos e Inf que representa over�ow.
Usando o Matlab: Alguns resultados de operações aritméticas:
>> 1/0
ans = Inf
>> 0/0
ans = NaN
Exemplo 2.2. Os parâmetros utilizados na representação numérica
mostrada na Figura 2.2 são t = 2,emin = −2 e emax = 2. Determine
os valores de �, Fmin e Fmax.
Solução: Usando as equações (2.3), (2.4) e (2.5) temos
� = 2−t = 2−2 = 0,25
Fmin = 1× 2emin = 1× 2−2 = 0,25
Fmax = (2− �)× 2emax = (2− 0,25)× 22 = 7
2.3 Erros nos processos numéricos
Em decorrência do que foi visto nas seções anteriores, os cálculos aritmé-
ticos efetuados pela máquina estarão impregnados de algum tipo de im-
precisão, de erro. Nesta seção descrememos, de forma sucinta, dois tipos
básicos de erros: o erro de arredondamento e o erro de truncamento.
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 18
2.3.1 Erro de arredondamento
O erro de arredondamento é devido a representação numérica �nita da
máquina. Por exemplo, o número π é irracional e sua representação decimal
tem in�nitos dígitos. No entanto a máquina armazena e apresenta apenas
uma quantidade �nita de dígitos. O Matlab realiza cálculos usando uma
precisão de 52 dígitos binários e apresenta seus resultados arredondados
em, no máximo, 16 dígitos decimais:
Usando o Matlab:
>> format long
>> pi
ans = 3.141592653589793
Também pode ocorrer erro de arredondamento quando um número na
base 10 é convertido para a base 2. Por exemplo, o número 0,6 possui
representação decimal �nita mas representação binária in�nita:
(0,6)10 = (0,1001100110011 . . .)2.
Esse tipo de situação pode acarretar erros de arredondamento nas ope-
rações aritméticas de ponto �utuante. Por exemplo:
Usando o Matlab:
>> a = 0.1 + 0.2 + 0.3 + 0.4, b = 0.4 + 0.3 + 0.2 + 0.1
a =
1
b =
1.0000
>> a == b
ans =
0
>> format hex, a, b
a =
3ff0000000000000
b =
3fefffffffffffff
Cada dígito hexadecimal representa quatro dígitos binários: (0)16 =
(0000)2, (1)16 = (0001)2, (2)16 = (0010)2, ..., (e)16 = (1110)2, (f)16 =
(1111)2.
No formato hexadecimal, os três primeiros dígitos representam os bits do
sinal e do expoente e os demais representam os bits da parte fracionária [33].
Assim, podemos �visualizar� a diferença na representação binária nos dois valo-
res a e b.
2.3.2 Erro de truncamento
O erro de truncamento é devido a interrupção de processos in�nitos. Por
exemplo, o processo de cálculo do valor de d no Exemplo 2.1 foi interrom-
pido no intervalo
11,860 ≤ d ≤ 11,862.
Poderíamos ter levado o processo adiante e ter encontrado o intervalo
11,861501508120412 ≤ d ≤ 11,861501508120413.
No entanto, não poderíamos re�nar (subdividir) mais esse intervalo pois
a precisão da máquina não permite distinguir extremos de intervalos de
tamanho menor que esse.
Por exemplo, a constante de Euler2 (e = 2,7183 . . .) pode ser obtida
pela série in�nita
e =
+∞∑
k=0
1
k!
= 1 + 1 +
1
2!
+
1
3!
+
1
4!
+
1
5!
+ · · · (2.6)
Computacionalmente, não é possível somar os in�nitos termos de (2.6),
logo a série deve ser truncada. A soma dos três primeiros termos é 2,5000
enquanto a soma dos seis primeiros termos é 2,7167. Quanto mais termos,
maior será a quantidade de dígitos �corretos�.
2.4 Notação
No estudo dos erros computacionais, alguns termos e de�nições (bem como
sua notação) são importantes. Seguem alguns:
2Ver nota biográ�ca na p. 86
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 19
1. Valor exato, x̂. O valor verdadeiro, correto, real, de uma variável.
Em geral, a solução procurada de algum problema. Por exemplo,
x̂ = e = 2,718281828459046...
2. Valor aproximado, x. Aproximação para o valor exato, estimativa,
impregnada de algum erro. Em geral, a resposta de algum processo
numérico. Valor estimado, valor computado. Por exemplo,
x =
1264
465
≈ 2,718279569892473.
3. Erro, �. Diferença entre valor aproximado e exato:
� = x− x̂.
Por exemplo,
� =
1264
465
− e
≈ 2,718279569892473− 2,718281828459046
= −2,258566572432841× 10−6.
4. Erro relativo, �rel. É a razão entre o erro e o valor exato:
�rel =
x− x̂
x̂
.
Por exemplo,
�rel =
2,718279569892473− 2,718281828459046
2,718281828459046
= −8,308802085150933× 10−7.
Note que tanto o erro quanto o erro relativo podem ser positivos
ou negativos. No entanto, nos critérios de parada dos algoritmos,
utiliza-se, em geral, o valor absoluto destas quantidades.
5. Dígitos signi�cativos exatos, DSE. Se os números x e x̂ são ar-
redondados para os primeiros k dígitos decimais e esses dígitos são
iguais então esses k dígitos são os dígitos signi�cativos exatos de x
em relação a x̂. Por exemplo,
x =
1264
465
≈ 2,718279569892473 ≈ 2,71828
x̂ = e ≈ 2,718281828459046 ≈ 2,71828⇒ DSE = 6.
Atenção: Existe uma importante relação entre o erro relativo e a
quantidade de dígitos signi�cativos exatos:
|�rel| < 0,5× 10−m ⇒ DSE ≥ m. (2.7)
Por exemplo,
|�rel| ≈ 8× 10−7
= 0,8× 10−6
= 0,08× 10−5 < 0,5× 10−5 ⇒ DSE ≥ 5.
6. Tolerância, tol. Valor máximo admitido para o erro relativo (ou
erro) em um processo numérico. Em geral, usado como critério de
parada em algoritmos iterativos. Para cálculos manuais, usa-se, em
geral, o valor de 0,5 × 10−3. Para cálculos computacionais, os valo-
res típicos são 0,5 × 10−6 (precisão simples) e 0,5 × 10−12 (precisão
estendida).
Exemplo 2.3. Determine o erro, o erro relativo e o número de dígitos
signi�cativos exatos de x = 227 em relação a x̂ = π.
Solução: Como x̂ = π = 3,141592653589793 . . . e x = 227 =
3,142857142857143 . . . o erro é dado por
� = x− x̂
≈ 3,142857142857143− 3,141592653589793
= 0,00126448926735.
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 20
Algoritmo 5 ErroRel
entrada : x1, x2
saída : �rel
1: se x2 = 0 então
2: �rel ←x1
3: senão
4: �rel ←
x1 − x2
x2
5: �m
O erro relativo é
�rel =
x− x̂
x̂
=
3,142857142857143− 3,141592653589793
3,141592653589793
= 4,024994347707008× 10−4.
Os valores de x e x̂ podem ser arredondados para
x ≈ 3,142857142857143 ≈ 3,14
x̂ ≈ 3,141592653589793 ≈ 3,14⇒ DSE = 3.
Observemos que se o valor exato x̂ = 0, então o erro deve ser usado em
vez do erro relativo.
Como o cálculo do erro relativo e da diferença relativa são utilizados
com frequência, é conveniente escrever um algoritmo especí�co. Veja o
algoritmo ErroRel.
Importante: Note que se as entradas do algoritmo, x1 e x2, repre-
sentam duas aproximações para um dado valor exato x̂ então a saída, �rel
representa a diferença relativa entre as aproximações. Caso as entradas do
algoritmo sejam x e x̂ representando uma aproximação e um valor exato
então a saída, �rel representa o erro relativo entre a aproximação e o valor
exato.
2.5 Estimativas para o erro
Como não é possível conhecer o erro exatamente sem conhecer o valor exato
x̂. Em geral assumimos uma aproximação para o erro ou uma tolerância
(cota) para o erro. Em geral essa estimativa ou tolerância depende de
algum fato teórico sobre o problema a ser resolvido. O exemplo a seguir
mostra como se pode estimar usando um argumento engenhoso.
Exemplo 2.4. Encontre, de forma iterativa, uma representação deci-
mal de x̂ =
√
53 usando apenas as quatro operações aritméticas.
Solução: Como a função dada por f(x) =
√
x é estritamente crescente
temos que a < b ⇔ √a <
√
b. Assim, se
√
49 <
√
53 <
√
64 podemos
a�rmar que 7 < x̂ < 8. Fazendo a primeira estimativa
x1 = 7,5
tem-se que o erro |�| = |x− x̂| ≤ 0,5. Isto signi�ca que 0,5 é uma cota para
o erro.
No entanto, o valor x1 = 7,5 não é uma boa estimativa, uma vez que
(7,5)2 = 56,25 está um pouco afastado de 53 (um resíduo de 3,25). Um
raciocínio mais so�sticado pode nos levar a resultados melhores.
Se x̂ =
√
53 e � = x− x̂ então
x̂ = x− �, (2.8)
logo
x̂2 = (x− �)2,
53 = x2 − 2x�+ �2.
Se |�| < 1 então �2 < |�|, logo
53 ≈ x2 − 2x�
e, portanto,
� ≈ x
2 − 53
2x
=
1
2
(
x− 53
x
)
. (2.9)
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 21
Da estimativa inicial x1 = 7,5 e de (2.9) podemos estimar
�1 ≈ 0,2167.
Assim, a partir de (2.8), podemos obter uma segunda estimativa
x2 = x1 − �1
= 7,5− 0,2167
= 7,2833
Agora, o valor x2 é uma estimativa melhor, uma vez que (7,2833)2 =
53,0469 ≈ 53 (um resíduo de 0,0469). Combinando as equações (2.8) e (2.9)
obtemos
x̂ ≈ 1
2
(
x+
53
x
)
.
Substituindo x̂ por xk e x por xk−1 obtemos uma fórmula recursiva:
xk =
1
2
(
xk−1 +
53
xk−1
)
. (2.10)A partir de uma estimativa inicial x1, a fórmula recursiva (2.10) fornece
uma sequência de valores x2, x3, x4, . . . que converge rapidamente para
√
53
como mostra a tabela a seguir.
k xk diferença relativa DSE (estimativa)
1 7,500000000000000 - -
2 7,283333333333333 2,9748× 10−2 1
3 7,280110602593441 4,4268× 10−4 3
4 7,280109889280553 9,7981× 10−8 6
5 7,280109889280518 4,7580× 10−15 14
6 7,280109889280518 0 16
Observações:
1. O valor calculado para x6 coincide com o valor �exato� obtido com o
Matlab:
>> sqrt(53)
ans = 7.280109889280518
Algoritmo 6 RaizQuadrada
entrada : n, x, tol, kmax
saída : x, �rel, k
1: k ← 1
2: �rel ←+∞
3: enquanto k < kmax e |�rel| > tol
4: k ← k + 1
5: u ←x
6: x ← 12
(
x+ nx
)
7: �rel ←ErroRel(u, x)
8: �m
2. Os valores de DSE mostrados na tabela são estimados: Durante o
processo iterativo, o valor exato x̂ é desconhecido mas podemos esti-
mar o erro relativo usando a diferença relativa de valores sucessivos
de x:
�rel ≈ diferença relativa =
xk−1 − xk
xk
.
3. Na última iteração, o DSE é estimado veri�cando que todos os 16
dígitos de x5 e x6 são iguais. No Matlab, usando o padrão IEEE 754,
não é possível obter DSE ≥ 16.
O algoritmo RaizQuadrada generaliza o problema. Note que o al-
goritmo apresenta a estrutura típica de processos iterativos: estimativa
inicial, re�namentos sucessivos, estimativa para erro relativo, número má-
ximo de passos permitido, tolerância para erro relativo, etc.
2.6 Convergência nos processos numéricos
Nos processos iterativos, as soluções são obtidas a partir de uma sucessão
de estimativas x1, x2, . . . que se aproxima do valor exato x̂. Dizemos que
uma sequencia xk converge para x̂ se, e somente se,
lim
k→+∞
xk = x̂.
A �velocidade� com que a sequência converge para o valor exato indica quão
rápida será a aproximação. Quantomaior for a velocidade de convergência,
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 22
menor será a quantidade necessária de passos para se atingir uma dada
tolerância.
Dada uma sequência xk que converge para x̂, se existem constantes
positivas c e r tais que
lim
k→+∞
|xk − x̂|
|xk−1 − x̂|r
= lim
k→+∞
|�k|
|�k−1|r
= c, (2.11)
então c é dito coe�ciente assintótico de convergência e r é dito or-
dem de convergência. Quanto maior o valor de r, mais rápida será a
convergência da sequência:
• Se r = 1 e c < 1, então a convergência é dita de ordem linear;
• Se r > 1, então a convergência é dita de ordem superlinear;
• Se r = 2, então a convergência é dita de ordem quadrática.
Observe que a de�nição dada pela equação (2.11) equivalente a dizer
que a medida que o processo iterativo avança tem-se
|�k| ≈ c |�k−1|r .
De forma intuitiva, a ordem de convergência está associada ao ganho de
DSE a cada passo. Para sequências de ordem linear, a quantidade de DSE
ganhos a cada passo é aproximadamente constante. Já para sequências de
ordem superlinear, a quantidade de DSE ganhos aumenta a cada passo. A
sequência obtida no Exemplo 2.4 tem convergência de ordem quadrática:
observe como a quantidade de DSE aproximadamente dobra a cada passo.
A análise de convergência dos métodos numéricos não é trivial e será
omitida nesse texto. No entanto o estudante interessado pode consultar,
por exemplo, [8], [10] e [30].
2.7 Problemas
Representação de ponto �utuante
Nos problemas 2.1 e 2.2 a seguir, suponha que uma máquina tenha representa-
ção de ponto �utuante com os parâmetros dados. Determine (a) a precisão � da
máquina, (b) o menor número representável Fmin e (c) o maior número repre-
sentável Fmax.
2.1. t = 8, emin = −63, emax = 64.
2.2. t = 45, emin = −255, emax = 256.
2.3. O que é over�ow? Dê um exemplo de comando do Matlab que resultaria
em over�ow.
2.4. O que é under�ow? Dê um exemplo de comando do Matlab que resultaria
em under�ow.
Considere as expressões mostradas nos problemas 2.5 e 2.6 a seguir. Para
cada uma, (a) determine o seu valor exato algebricamente (resolva à mão). (b)
Determine o seu valor aproximado numericamente (use o Matlab). Use o co-
mando format hex e veri�que se o que foi calculado em (a) é igual ao calculado
em (b).
2.5. x = 16 +
1
6 +
1
6 +
1
6 +
1
6 +
1
6 .
2.6. y =
4
11
− 1
3
1
6
− 5
31
+
4
11
.
2.7. Na aritmética, a igualdade n ×
(
1
n
)
= 1 é verdadeira para todo n 6= 0. Na
aritmética computacional isso nem sempre é verdade. Encontre o menor inteiro
positivo para o qual a igualdade seja falsa.
2.8. As vezes, utilizando o Matlab, obtemos um NaN como resultado de uma
operação aritmética. O que isso signi�ca? Dê um exemplo.
2.9. + Implemente, na sua linguagem favorita, o algoritmo EpsilonMaq e
determine a precisão de seu sistema computacional. Compare o resultado com o
comando eps do Matlab.
Erro, Erro relativo, DSE
Nos problemas 2.10 a 2.13 a seguir, determine (a) o erro �, (b) o erro relativo
�rel e (c) o número de dígitos signi�cativos exatos DSE obtidos ao se aproximar
x̂ por x.
2.10. . x̂ = 123 456, x = 123 400;
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 23
2.11. . x̂ = 1,000000, x = 0,999999;
2.12. . x̂ =
√
2, x = 577408 ;
2.13. . x̂ = φ = (1 +
√
5)/2, x = 987610 ;
2.14. . Hoje sabemos que a área de um círculo é dada por  = πr2, onde r é o
raio do círculo. No papiro de Ahmes3 a área do círculo é aproximada pela área de
um octógono (não regular) circunscrito (recorte A, à direita, na �gura a seguir)
e em seguida é utilizada para determinar a área de um campo circular (recorte
B, à esquerda, na �gura a seguir). Em linguagem moderna, essa aproximação é
equivalente a:
A =
(
8
9
d
)2
,
onde d é o diâmetro do círculo. Determine uma expressão algébrica para o erro
relativo �rel associado a essa aproximação.
Nos problemas 2.15 a 2.16 a seguir, o número r é uma aproximação para o
valor exato r̂ com erro relativo �rel dado. Estime a quantidade de DSE que r
possui?
2.15. . �rel = −7,23× 10−8
3 ÿAhmes (1680? a.C. - 1620? a.C.) escriba egípcio que transcreveu uma série de
problemas matemáticos envolvendo multiplicação, divisão, frações unitárias, equações,
progressões, áreas e volumes. O papiro (descoberto em 1858 por Alexander Henry
Rhind) atualmente se encontra no Museu Britânico [38].
2.16. . �rel = 4,92× 10−12
2.17. . O número s é uma aproximação para o valor exato ŝ com, no máximo,
5 dígitos signi�cativos exatos. Qual é o erro relativo?
2.18. + Implemente, na sua linguagem favorita, o algoritmo ErroRel. Veri�-
que seu funcionamento comparando os resultados com os do Exemplo 2.3.
2.19. A tabela a seguir mostra algumas aproximações para π usadas nos primór-
dios da Matemática [4].
valor autor época
p1 = 3
1
8 Babilônios ∼ 2000 a. C.
p2 = (
16
9 )
2 Egípcios ∼ 2000 a. C.
p3 = 3 Chineses ∼ 1200 a. C.
p4 = 3
1
7 Arquimedes ∼ 300 a. C.
p5 =
377
120 Ptolomeu ∼ 200
p6 =
√
10 Chung Hing ∼ 300
p7 =
355
113 Valentius Otho 1573
(a) Qual é o erro relativo de cada aproximação?
(b) Quais erram por excesso? Quais erram por falta?
(c) Qual é a melhor aproximação? Qual é a pior aproximação?
2.20. Considere a função fatorial
f̂(n) = n! = n · (n− 1) · · · 3 · 2 · 1.
Em 1730, Stirling desenvolveu a fórmula de aproximação
f(n) =
√
2πn
(n
e
)n
para a função fatorial.
(a) Obtenha os valores de f̂(n) e f(n) para n = 5, 10, 15, 20.
(b) Determine o erro relativo �rel de cada aproximação. Adaptado de [43, p. 48]
e [26, p. 52].
CAPÍTULO 2. ERROS E ARITMÉTICA COMPUTACIONAL 24
2.21. Considere a seguinte expansão em série para sen(x):
sen(x) = x− x
3
3!
+
x5
5!
− x
7
7!
+ · · ·
(a) Obtenha as aproximações para t̂ =
√
2
2 = sen(
π
4 ) usando os n = 3, 6, 9 pri-
meiros termos da série.
(b) Determine erro relativo �rel de cada aproximação.
Estimativas para o erro
2.22. Implemente o algoritmo RaizQuadrada na sua linguagem preferida e
use-o para calcular os valores
a =
√
2 e b =
√
834.
Veri�que o seu funcionamento comparando os resultados com o comando sqrt
do Matlab. Use tol = 0,5× 10−12.
2.23. Generalize o algoritmo RaizQuadrada para calcular m
√
n. Use-o para
calcular os valores
a =
3
√
23 e b = 5
√
527.
Sugestão: Leia atentamentea seção 2.5 e obtenha uma fórmula recursiva seme-
lhante a 2.10. Compare os resultados �nais com nthroot.
As sequências recursivas mostradas nos problemas 2.24 a 2.25 a seguir são
convergentes para os valores x̂ mostrados. Para cada sequência, monte uma tabela
contendo (a) os valores de xk para k = 1, . . . , 20, (b) as diferenças relativas
xk−1−xk
xk
e (c) os erros relativos xk−x̂x̂ . Veri�que que os valores obtidos em (b)
são aproximações razoáveis para os valores obtidos em (c).
2.24. x1 = 1, xk = 1 +
1
xk−1
, x̂ = 1+
√
5
2
2.25. x1 = 1, xk =
√
2 + xk−1, x̂ = 2
2.26. . Sejam x e y valores aproximados para os valores exatos x̂ (x̂ 6= 0) e ŷ
(ŷ 6= 0), respectivamente. Os erro relativos são dados por
�x =
x− x̂
x̂
e �y =
y − ŷ
ŷ
.
Se ẑ = x̂+ ŷ (ẑ 6= 0), mostre que o erro relativo para z é tal que:
(a) �z =
�x · x̂+ �y · ŷ
x̂+ ŷ
;
(b) min(�x,�y) ≤ �z ≤ max(�x,�y).
O resultado obtido em (a) será usado no algoritmo QuadRec (p. 80).
Capítulo 3
Zeros de funções
3.1 De�nição do problema
Seja f : R→ R. Um número z é dito zero de f se, e somente se,
f(z) = 0.
O problema que estudaremos consiste em encontrar os zeros de uma função,
isto é, determinar os valores de z, se existirem, tais que z seja zero de f .
Exemplo 3.1. Veri�que que z1 = 1, z2 = 1,465571231876768 e z3 =
0,588532743981861 são, respectivamente, zeros de
f(x) = x3 − x2, g(x) = x3 − x2 − 1 e h(x) = e−x − sen(x).
Solução: Inicialmente, veri�quemos que, trivialmente,
f(1) = 13 − 12 = 1− 1 = 0.
Já para g e h a veri�cação requer um pouco mais de trabalho. No
Matlab:
>> z2 = 1.465571231876768; g = z2^3 - z2^2 - 1
g = -4.4409e-16
>> z3 = 0.588532743981861; h = exp(-z3) - sin(z3)
h = 1.1102e-16
Observe que os valores calculados de g(z2) e h(z3) não são exatamente
zero, mas estão muito próximos de zero, isto é, muito próximos da preci-
são � da máquina. Para efeitos computacionais, podem ser considerados
efetivamente zeros.
Embora seja fácil veri�car que os valores de z1, z2 e z3 são os zeros das
respectivas funções, encontrá-los e que é mais trabalhoso. A função f do
exemplo é uma função polinomial de grau 3 e que seus zeros são óbvios:
z = {0, 1}. Sendo z = 0 um zero de multiplicidade 2. Já o zero de g não é
tão fácil de encontrar pois não há uma fatoração imediata de g e a fórmula
exata é um tanto trabalhosa (Veja o Problema 3.27). Ainda, na função h a
determinação algébrica de z3 é impossível, isto é, não se pode encontrá-la
em termos de funções elementares.
Os métodos numéricos para determinar zeros de funções consistem,
basicamente, de duas fases:
1. Isolamento: Veri�cação da existência e unicidade dos zeros (con-
siderações teóricas). Determinação de um intervalo [a, b] contendo
um zero de f ou determinação de uma estimativa inicial x1 ≈ z. Na
maioria dos casos, uma tabela de valores e um grá�co da função são
su�cientes.
2. Re�namento: Processo iterativo em que o intervalo [a, b] é reduzido
ou que novas estimativas x2, x3, . . . são obtidas até que algum critério
de parada seja satisfeito.
25
CAPÍTULO 3. ZEROS DE FUNÇÕES 26
3.2 Método da bisseção
O método da bisseção é semelhante ao procedimento utilizado na resolução
do Exemplo 2.1 e toma por base o seguinte teorema:
Teorema 3.1. (Teorema do Anulamento) Seja f uma função contínua em
um intervalo [a, b] tal que f(a) e f(b) tenham sinais contrários. Então
existe (pelo menos) um z ∈ (a, b) tal que f(z) = 0.
Embora uma prova rigorosa do teorema possa ser encontrada em alguns
livros de Cálculo [23, p. 511], gra�camente o seu entendimento é imediato:
se o grá�co de uma função está (digamos) abaixo do eixo horizontal em
x = a e segue continuamente até que �que acima do eixo horizontal em
x = b então em algum ponto entre a e b ele passou sobre o eixo horizontal!
Considere a função g do Exemplo 3.1. Como toda função polinomial,
g é contínua em toda parte. Além disso, g(−1) = −3 e g(2) = 3, isto é,
a função troca de sinal em [−1, 2]. Pelo teorema 3.1 existe um zero em
(−1, 2). Figura 3.1 que mostra o grá�co da função bem como a localização
de seu zero.
O método da bisseção consiste nos seguintes passos
1. Partir de um intervalo inicial [a, b] tal que f(a) e f(b) tenham sinais
contrários;
2. Dividir o intervalo [a, b] em dois subintervalos [a, x] e [x, b], sendo
x =
a+ b
2
o ponto médio entre a e b;
3. Decidir qual subintervalo contém o zero de f e obter um novo inter-
valo [a, b] tal que f(a) e f(b) tenham sinais contrários;
4. Repetir os passos 2 e 3 até atingir a precisão desejada.
3.2.1 Critérios de parada
Usualmente são utilizados os seguintes critérios de parada:
Figura 3.1: O grá�co da função g(x) = x3 − x2 − 1 e seu zero.
1. |�rel| ≈
∣∣∣∣xk−1 − xkxk
∣∣∣∣ < tol;
2. |�rel| ≈
∣∣∣∣bk − ak2xk
∣∣∣∣ < tol;
3. |δrel| = |f(xk)| < tol;
4. k > kmax.
Os critérios 1 e 2 estabelecem estimativas para o erro relativo �rel entre
z e xk. O critério 3 fornece a magnitude do resíduo δ da função, isto é,
a diferença entre f(z) = 0 e f(xk). O critério 4 estabelece um número
máximo de iterações.
Exemplo 3.2. Usar o método da bisseção para determinar o zero de
g(x) = x3 − x2 − 1 com pelo menos 3 DSE.
Solução: O grá�co de g já está desenhado na Figura 3.1. Usando o
Matlab, obtemos uma tabela de valores:
CAPÍTULO 3. ZEROS DE FUNÇÕES 27
>> x = 1 : 0.2 : 2
x =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
>> y = x.^3 - x.^2 - 1
y =
-1.0000 -0.7120 -0.2160 0.5360 1.5920 3.0000
Veri�camos que g troca de sinal no intervalo[1,4; 1,6], isto é, isolamos o zero
nesse intervalo.
Agora, com tol = 0,5× 10−3, usamos o método da bisseção para obter
os valores mostrados na tabela a seguir
k ak xk bk g(ak) g(xk) g(bk) �rel
1 1,4000 1,5000 1,6000 -0,2160 0,1250 0,5360 -
2 1,4000 1,4500 1,5000 -0,2160 -0,0539 0,1250 0,0345
3 1,4500 1,4750 1,5000 -0,0539 0,0334 0,1250 -0,0169
4 1,4500 1,4625 1,4750 -0,0539 -0,0108 0,0334 0,0085
5 1,4625 1,4688 1,4750 -0,0108 0,0112 0,0334 -0,0043
6 1,4625 1,4656 1,4688 -0,0108 0,0002 0,0112 0,0021
7 1,4625 1,4641 1,4656 -0,0108 -0,0053 0,0002 0,0011
8 1,4641 1,4648 1,4656 -0,0053 -0,0026 0,0002 -0,0005
9 1,4648 1,4652 1,4656 -0,0026 -0,0012 0,0002 -0,0003
Assim podemos estabelecer z ≈ 1,47 com 3 DSE.
Para obter x = 1,465571231876768 com �rel = −3,0301 × 10−16 são
necessárias 49 iterações. Observe, na tabela acima, que o sinal de g(a)
e de g(b) permanecem os mesmos durante todo o processo iterativo. O
algoritmo ZeroBisseção sistematiza o método da bisseção utilizando os
critérios de parada 1 e 4.
Convergência
Quanto a convergência do método da bisseção, observemos o seguinte:
1. As condições necessárias para que o método funcione são mínimas:
f deve ser contínua e trocar de sinal em um intervalo [a, b] inicial.
Algoritmo 7 ZeroBisseção
entrada : f, a, b, tol, kmax
saída : x, �rel, k
Estimativa inicial
1: k ← 1
2: x ← 12(a+ b)
3: fx ← f(x)
4: fa ← f(a)
5: fb ← f(b)
6: �rel ←+∞
Processo iterativo
7: enquanto k < kmax e |�rel| > tol
8: se fa · fx ≤ 0 então
9: b ←x
10: fb ← fx
11: senão
12: a ←x
13: fa ← fx
14: �m
15: k ← k + 1
16: u ←x
17: x ← 12(a+ b)
18: fx ← f(x)
19: �rel ←ErroRel(u, x)
20: �m
CAPÍTULO 3. ZEROS DE FUNÇÕES 28
Assumida essas condições, do Teorema 3.1, o processo é seguramente
convergente.
2. Como |�k| ≈ 12 |�k−1|, o método possui convergência linear. São ne-
cessárias cerca de 3,3 iterações para cada DSE adicional: uma con-
vergência considerada lenta.
3.3 Método de Newton-Raphson
O método de Newton1-Raphson2 consiste em, a partir de uma estimativa
inicial x1 para o zero de f , obter aproximações sucessivas x2, x3, · · · que
convergem para z. O método toma por base a expansão de f em sua série
de Taylor3:
f(x) = f(x0) + f
′(x0)(x− x0) +
f ′′(x0)(x− x0)2
2!
+ · · ·+ f
(k)(ξ)(x− x0)k
k!
.
Truncando a série a partir do terceiro termo, obtém-se a aproximação
f(x) ≈ f(x0) + f ′(x0)(x− x0).
1 ÿ Isaac Newton (1643 - 1727) cientista inglês. Newton desenvolveu as bases do
cálculo diferencial e integral. Por seus trabalhos na óptica e gravitação, é considerado
o maior cientista de todos os tempos.Em seu De metodis �uxionum et serierum in�ni-
tarum Newton descreve o método para encontrar zeros de funções polinomiais, dando
como exemplo a função f(x) = x3 − 2x − 5 que possui um zero entre 2 e 3 (veja o
Problema 3.13). Embora escrito em 1671, somente foi publicado como Method of �uxi-
ons em 1736. O nome de Newton também está relacionado às técnicas de quadratura
numérica (veja o capítulo 7) quando, em 1676, descreveu o método em uma carta a
Leibniz [38].
2 ÿ Joseph Raphson (1648 - 1715) matemático inglês colega de Newton na Royal
Society. Em seu Analysis aequationum universalis de 1690 descreve, de forma indepen-
dente, o mesmo método para encontrar zeros de funções [38]. A fórmula iterativa (3.1)
tal como conhecida atualmente é devida a Thomas Simpson em seu A new method for
the solution of equations in numbers de 1740 [37].
3 ÿBrook Taylor (1685 - 1731) matemático inglês. Contribuiu signi�cativamente
para o estabelecimento do Cálculo. Criou o cálculo de diferenças �nitas, inventou a téc-
nica da integração por partes, e generalizou a expansão em série que leva seu nome em
seu livro Methodus incrementorum directa et inversa de 1715. A importância desse tra-
balho foi reconhecida e enaltecida por Lagrange em 1772 como o Teorema Fundamental
do Cálculo Diferencial [38].
Trocando x0 por x e x por z tem-se
f(z) ≈ f(x) + f ′(x)(z − x) ≈ 0,
pois f(z) = 0. Dessa forma, pode-se resolver a equação para z obtendo
z ≈ x− f(x)
f ′(x)
,
que pode ser transformada em uma fórmula de iteração:
xk = xk−1 −
f(xk−1)
f ′(xk−1)
. (3.1)
Geometricamente, xk é a projeção sobre o eixo horizontal da reta tan-
gente ao grá�co de f em (xk−1, f(xk−1)) como mostra a Figura 3.2.
Figura 3.2: Interpretação geométrica do método de Newton.
CAPÍTULO 3. ZEROS DE FUNÇÕES 29
Exemplo 3.3. Usar o método de Newton para determinar o zero de
g(x) = x3 − x2 − 1 com pelo menos 3 DSE.
Solução: Já sabemos do Exemplo 3.1 que o zero de f encontra-se no
intervalo [1,4 : 1,6] então podemos usar como estimativa inicial o valor x =
1,5. Como g(x) = x3 − x2 − 1, temos
g′(x) = 3x2 − 2x.
Com tol = 0,5 × 10−3, usamos o método de Newton para obter os valores
mostrados na tabela a seguir
k xk g(xk) g
′(xk) �rel
1 1,5000 0,1250 3,7500 -
2 1,4667 0,0039 3,5200 0,0227
3 1,4656 0,0000 3,5126 0,0007
4 1,4656 0,0000 3,5126 0,0000
Assim podemos estabelecer z ≈ 1,47 com 3 DSE.
De fato, na última iteração da tabela acima, �rel = 7,9061 × 10−7 <
0,5 × 10−5, que garante z ≈ 1,4656 com 5 DSE. Para obter x =
1,465571231876768 com |�rel| < 0,5× 10−15 são necessárias apenas 6 itera-
ções!
O algoritmo ZeroNewton sistematiza o método de Newton, usando
os mesmos critérios de parada do algoritmo ZeroBisseção.
Convergência:
Quanto a convergência do método de Newton, observemos o seguinte:
1. Em geral, o método de Newton é mais rápido que o método da bisse-
ção. Quando xk ≈ z, temos |�k| ≈ |�k−1|2, isto é, temos uma taxa de
convergência quadrática: a quantidade de DSE dobra a cada iteração.
Algoritmo 8 ZeroNewton
entrada : f, f ′, x, tol, kmax
saída : x, �rel, k
Estimativa inicial
1: k ← 1
2: F ← f(x)
3: D ← f ′(x)
4: �rel ←+∞
Processo iterativo
5: enquanto k < kmax e |�rel| > tol
6: k ← k + 1
7: u ←x
8: x ←x− F/D
9: F ← f(x)
10: D ← f ′(x)
11: �rel ←ErroRel(u, x)
12: �m
2. Embora a convergência do método de Newton seja, em geral, mais
rápida que a do método da bisseção, ela não é garantida em todos os
casos. A Figura 3.3 mostra o caso de uma função em que a aplica-
ção do método de Newton produz uma sequência de estimativas xk
divergente.
3. Existem vários teoremas descrevendo as condições que garantem a
convergência do método. No entanto, do ponto de vista prático,
pode-se dizer que o método (geralmente) funciona se
(a) em torno de z, f é su�cientemente suave (contínua e diferenciá-
vel);
(b) a estimativa inicial x1 está su�cientemente próxima de z.
Comparativamente, os métodos da bisseção e de Newton são comple-
mentares, sendo a principal característica do primeiro a robustez e do úl-
timo a velocidade.
CAPÍTULO 3. ZEROS DE FUNÇÕES 30
Figura 3.3: Uma sequência de estimativas divergente para o método de
Newton.
Usando o Matlab: Para determinar zeros de funções podemos usar o
comando fzero.
>> format long
>> f = @(x) x^3 - x^2 - 1;
>> z = fzero(f, 1.5)
z = 1.465571231876768
Este recurso utiliza o algoritmo WDB (Wijngaarden-Dekker-Brent) que é uma
combinação dos métodos de bisseção, interpolação linear e interpolação inversa
quadrática [20, p. 161] e [40, p. 454]. Sobre a interpolação linear veja o
Problema 3.37 e sobre a interpolação inversa veja o Problema 5.29.
3.4 Problemas
Método da Bisseção
Nos problemas 3.1 a 3.4 a seguir são dados a expressão de uma função f e um
intervalo [a, b]. Para cada uma das funções faça o seguinte: (a) Desenhe o grá�co
da função no intervalo dado, veri�cando que a função é contínua e que f(a) e
f(b) tem sinais contrários. (b) Use o método da bisseção e, partindo do intervalo
dado, preencha uma tabela contendo os valores de k, ak, xk, bk, f(ak), f(xk),
f(bk) e �rel como no Exemplo 3.2. Preencha a tabela para as 4 primeiras iterações.
3.1. . f(x) = x2 − 53 em [0, 10].
3.2. . f(x) =
√
x2 + 1− x2 em [0, 3].
3.3. . f(x) = x+ cos(x) em [−1, 1].
3.4. . f(x) = e−x + x2 − 10 em [2, 4].
3.5. . No método da bisseção, o tamanho do intervalo em uma dada iteração
k é a metade do tamanho do intervalo na iteração anterior, isto é,
Tk =
Tk−1
2
.
Determine o número k de passos necessários para que um intervalo inicial de
tamanho T0 = b− a seja reduzido a
Tk < 0,5× 10−12 · (b− a).
CAPÍTULO 3. ZEROS DE FUNÇÕES 31
3.6. + Implemente o algoritmo ZeroBisseção na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 3.2.
Nos problemas 3.7 a 3.10 a seguir utilize o algoritmo ZeroBisseção para
encontrar o zero da função. Use tol = 0,5× 10−12.
3.7. Função do Problema 3.1.
3.8. Função do Problema 3.2.
3.9. Função do Problema 3.3.
3.10. Função do Problema 3.4.
3.11. . Mostre que os critérios de parada 1 e 2 (p. 26) do método da bisseção
são equivalentes.
3.12. Modi�que o algoritmo ZeroBisseção de modo a empregar os critérios de
parada 3 e 4 (p. 26). Compare o número de iterações utilizadas pelo algoritmo
original e pelo modi�cado para encontrar os zeros das funções dos problemas 3.1
a 3.4. Use tol = 0,5× 10−12.
Método de Newton
Nos problemas 3.13 a 3.16 a seguir são dadas a expressão de uma função f ,
um intervalo [a, b] e uma aproximação x1 para o zero de f . Para cada uma das
funções faça o seguinte: (a) Desenhe o grá�co da função, veri�cando que a função
é contínua e possui um zero no intervalo dado. (b) Encontre uma expressão para
f ′(x). (c) Use o método de Newton e, partindo da aproximação x1, preencha uma
tabela contendo os valores de k, xk, f(xk), f
′(xk) e �rel como no Exemplo 3.3.
Preencha a tabela para as 4 primeiras iterações.
3.13. . f(x) = x3 − 2x− 5 em [−3, 3], x1 = 2,5.
3.14. . f(x) = x+ ln(x) em (0, 1], x1 = 0,5.
3.15. . f(x) = x− cos(x) em [−π, π], x1 = 1,0.
3.16. . f(x) = x cos(x2) em [1, 2], x1 = 1,2.
3.17. . Veri�que que a sequência recursiva dada pela equação (2.10) pode ser
obtida através da equação (3.1) aplicada a determinação do zero da função
f(x) = x2 − 53
pelo método de Newton.
3.18. + Implemente o algoritmo ZeroNewton na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 3.3.
Nos problemas 3.19 a 3.22 a seguir utilize o algoritmo ZeroNewton para
encontrar o zero da função dada. Use tol = 0,5× 10−12.
3.19. Função do Problema 3.13.
3.20. Função do Problema 3.14.
3.21. Função do Problema 3.15.
3.22. Função do Problema 3.16.
3.23. Modi�que o algoritmo ZeroNewton de modo a empregar os critérios de
parada 3 e 4 (p. 26). Compare o número de iterações utilizadas pelo algoritmo
original e pelo modi�cado para encontrar os zeros das funções dadas nos proble-
mas 3.13 a 3.16. Use tol = 0,5× 10−12.
3.24. Ométodo de Newton tem di�culdade de encontrar zeros com multiplicidade
elevada. A função
fn(x) =(x− 1)n
possui um único zero (z = 1) com multiplicidade n. Determine o número de
iterações necessárias para encontrar o zero de cada função f1, f2, . . . , f10. Use a
estimativa inicial x1 = 2.
O método de Newton pode não ser convergente. Veri�que que, para as funções
e estimativas iniciais mostradas nos problemas 3.25 e 3.26 a seguir, o método não
funciona.
3.25. f(x) = 110 + xe
−x com x1 = 2.
3.26. f(x) = x3 − x− 3 com x1 = −3.
Sortidos
3.27. . Devido a sua praticidade, os métodos numéricos (aproximados) são
frequentemente usados em vez dos métodos analíticos (exatos). A determinação
de zeros de funções polinomiais de grau 3 (cúbicas) é um bom exemplo. Pes-
quise a fórmula Fórmula de Cardano4 (em [47, 1], por exemplo) para determinar
exatamente o zero real da função g(x) = x3 − x2 − 1 dos Exemplos 3.2 e 3.3.
4 ÿGirolamo Cardano (1501 - 1576) médico, astrônomo e matemático italiano. Seu
mais famoso trabalho é Ars magna, de 1545, considerado o primeiro livro latino dedicado
apenas a álgebra. Neste tratado, descreve a solução de equações polinomiais cúbicas e
quárticas [38].
CAPÍTULO 3. ZEROS DE FUNÇÕES 32
3.28. Determine os zeros das funções dos Problemas 3.25 e 3.26.
3.29. Reconsidere o Exemplo 2.1 e encontre o zero da equação (2.2).
3.30. Considere a função dada por f(x) = ex − lnx com x > 0.
(a) Faça um esboço do grá�co de f no intervalo (0, 2] e veri�que que a função
possui um ponto de mínimo nesse intervalo.
(b) Determine a abscissa xmin desse mínimo sabendo que f ′(xmin) = 0.
3.31. Um estudante comprou um notebook no valor de R$ 2499,00 e vai pagar
12 parcelas de R$ 249,00. A matemática �nanceira estabelece que
P =
F · i
1− (1 + i)−n
,
onde F é o valor �nanciado, P é o valor da parcela, n é o número de parcelas e i
é a taxa de juros. Qual é a taxa de juros do �nanciamento?
3.32. A �gura a seguir mostra uma seção circular de área S.
r
θ S
Da geometria, sabemos que a área da seção é dada por
S =
r2
2
(θ − sen(θ)),
onde r é o raio do círculo e θ é o ângulo que subtende a seção circular. Determine
o ângulo θ̂ tal que a área S seção seja um terço da área do círculo. Uma solução
geométrica do problema pode ser encontrada em [11].
3.33. A Lei da Radiação,
S(λ) =
2πc2h
λ5
1
ehc/λkT − 1 ,
descreve a quantidade de energia luminosa S (em watt por metro cúbico) emitida
por um corpo de prova na temperatura T (em kelvin) em função do comprimento
de onda λ (em metros). Nessa expressão, c = 2,9979×108m/s, h = 6,6261×10−34Js
e k = 1,3807× 10−23J/K [25].
(a) Obtenha o grá�co de S(λ) para a temperatura T = 3500 K. Sugestão: Use λ
no intervalo [0,5; 4,0]× 10−6m.
(b) Pode-se mostrar [55, p. 390] que o maior valor de S ocorre em λmax dado por
λmax =
hc
zkT
,
onde z é o zero positivo de
f(x) =
x
5
+ e−x − 1.
Encontre z, o zero de f , e em seguida determine o valor de λmax.
3.34. Em Termodinâmica, sob determinadas condições, a relação entre a calor
Q fornecido a um gás e sua variação de temperatura Tf − Ti é dada por
Q = nR
[
A(Tf − Ti) +
B
2
(T 2f − T 2i ) +
C
3
(T 3f − T 3i )
]
.
Para o gás metano, R = 8,314 J/mol.K, A = 1,702, B = 9,081 × 10−3K−1, C =
−2,164× 10−6K−2 [46, p. 131]. Em uma câmara, tem-se n = 2 mol de metano a
temperatura Ti = 300 K. Qual será a temperatura �nal Tf se 20 kJ de energia é
absorvido pelo gás?
3.35. A tensão elétrica sobre o capacitor de um circuito RLC-paralelo é dada por
u(t) = u0e
−αt cos(ωdt), t ≥ 0,
onde
u0 é a tensão inicial sobre o capacitor,
α =
1
2RC
é a constante de amortecimento,
ω0 =
1√
LC
é a frequência angular de oscilação (natural),
ωd =
√
ω20 − α2 é a frequência angular de oscilação (amortecida).
A tensão u é dada em volts e o tempo t em segundos [36, p. 177]. Considere
um circuito em que R = 200 Ω, L = 0,3 H, C = 40 µF e u0 = 50 V. Substitua
os valores na equação, desenhe o grá�co de u(t) e determine os instantes t1, t2 e
t3 onde a tensão atinge o valor 10 V.
CAPÍTULO 3. ZEROS DE FUNÇÕES 33
3.36. Na Álgebra Linear, os autovalores λ de uma matriz A são de�nidos como
os zeros do polinômio característico
pA(x) = det(A− Ix).
Considere a matriz
A =
−3 0 −30 −1 2
−3 2 3
.
(a) Encontre a expressão algébrica de pA(x).
(b) Encontre os autovalores λ1, λ2 e λ3 de A.
3.37. Uma variação para o método da bisseção consiste em dividir o intervalo
[a, b] no ponto c sobre o eixo horizontal que intercepta o reta que passa por
(a, f(a)) e (b, f(b)) como mostra a �gura a seguir. Essa técnica é denominada
interpolação linear e, em geral, apresenta velocidade de convergência maior que
a o método da bisseção.
(a) Mostre que
c = a− f(a)
f(b)− f(a) (b− a).
(b) Modi�que o algoritmo ZeroBisseção de modo a empregar a técnica da in-
terpolação linear. Compare o número de iterações necessárias para encontrar
os zeros das funções dadas nos problemas 3.1 a 3.4 com o algoritmo Zero-
Bisseção original.
3.38. Uma variação para o método de Newton, conhecida como método de
Halley5, consiste em truncar a série de Taylor a partir do seu quarto termo e
usar a informação da segunda derivada de f [51]. A fórmula de iteração é dada
por
xk = xk−1 −
2f(xk−1)f ′(xk−1)
2[f ′(xk−1)]2 − f(xk−1)f ′′(xk−1)
.
Modi�que o algoritmo ZeroNewton de modo a empregar o método de Halley.
Compare o número de iterações necessárias para encontrar os zeros das funções
dadas nos problemas 3.13 a 3.16 utilizando o algoritmo original e o modi�cado.
5 ÿEdmond Halley (1656 - 1742) astrônomo inglês. Entre seus feitos está o cálculo da
órbita do cometa que leva seu nome. Halley propôs que os cometas que apareceram em
1531 e 1607 eram, de fato, um mesmo cometa e deveria reaparecer em 1758. O método
para a determinação de raízes de equações polinomiais foi desenvolvido em 1694. A
fórmula tal como conhecida atualmente é devida a Schröder [42].
Capítulo 4
Sistemas Lineares
4.1 De�nição do problema
Um sistema de equações lineares ou, simplesmente, sistema linear com m
equações e n incógnitas
a11 x1 + a12 x2 + · · · + a1n xn = b1
a21 x1 + a22 x2 + · · · + a2n xn = b2
...
...
...
...
am1 x1 + am2 x2 + · · · + amn xn = bm
pode ser representado pela equação matricial Ax = b, sendo
A =
a11 a12 · · · a1n
a21 a22 · · · a2n
...
...
...
am1 am2 · · · amn
,x =
x1
x2
...
xn
,b =
b1
b2
...
bm
.
Quanto a quantidade de equações (m) e incógnitas (n), um sistema
linear pode ser classi�cado em
• sub-determinado: Se m < n;
• determinado: Se m = n;
• sobre-determinado: Se m > n.
Quanto a existência e unicidade de soluções, um sistema linear pode
ser classi�cado em
• consistente: se existe solução, sendo que pode haver
� uma única solução ou;
� uma in�nidade de soluções.
• inconsistente: se não existe solução;
O problema em questão é resolver um sistema linear dado. Os métodos
de resolução de sistema linear, podem ser classi�cados em:
• diretos: Escalonamento (Gauss), inversão, determinantes (Cramer),
fatoração LU, etc.
• iterativos: Gauss-Jacobi, Gauss-Seidel, gradiente conjugado, etc.
Neste capítulo estudaremos alguns métodos para a resolução de siste-
mas lineares determinados (m = n) com solução única. A resolução de
sistemas sobre-determinados ou sub-determinados ou com in�nitas solu-
ções pode ser encontrado em [22].
4.2 Método de Gauss
O método de Gauss1 (também conhecido como eliminação gaussiana) é
um método direto de resolução de sistemas lineares. O procedimento,
1 ÿCarl Friedrich Gauss (1777 - 1855), matemático alemão, fez importantes contri-
buições à matemática, física e astronomia. Em 1799 provou o Teorema Fundamental
da Álgebra: o número de raízes (reais, complexas ou múltiplas) de um polinômio é
34
CAPÍTULO 4. SISTEMAS LINEARES 35
estudado na disciplina de Álgebra Linear, consiste basicamente em duas
etapas: escalonamento e retro-substituição.
A etapa do escalonamento consiste em, através de operações-linha ele-
mentares, obter um sistema linear Cx = d equivalente ao sistema linear
Ax = b original, isto é uma sistema com a mesma solução. A matriz C é
a forma escalonada da matriz completa(triangular-superior).
[A|b] ∼ [C|d]
a1,1 a1,2 · · · a1,n−1 a1,n b1
a2,1 a2,2 · · · a2,n−1 a2,n b2
...
...
...
...
...
an−1,1 an−1,2 · · · an−1,n−1 an−1,n bn−1
an,1 an,2 · · · an,n−1 an,n bn
∼
c1,1 c1,2 · · · c1,n−1 c1,n d1
0 c2,2 · · · c2,n−1 c2,n d2
...
...
...
...
...
0 0 · · · cn−1,n−1 cn−1,n dn−1
0 0 · · · 0 cn,n dn
.
As operações-linha elementares utilizadas são:
• Permutar duas linhas entre si: ci: � cj:.
• Redimensionar uma linha: ci: ← mci:, m 6= 0.
• Adicionar a uma linha, um múltiplo de outra: ci: ← ci: +mcj:.
igual ao seu grau. Em 1809, no seu Theoria motus corporum coelestium in sectionibus
conicis solem ambientium, estudou as observações astronômicas da órbita do asteroide
Pallas obtidas entre 1803 e 1809 e obteve um sistema de seis equações lineares e seis
incógnitas. Nesse texto, Gauss descreve uma forma sistemática de resolução de sistemas
lineares que consiste exatamente no que conhecemos hoje como o método da eliminação
gaussiana. Além disso, apresenta uma prova formal do método dos quadrados mínimos
(ver Capítulo 6) [28] [45, p. 44].
Usando o Matlab: Nas operações acima, usamos uma notação derivada
da sintaxe do Matlab. O símbolo ck: refere-se a todos os elementos da linha
k da matriz C, isto é, �linha k, todas as colunas�. No Matlab, a operação
ci: ← ci: +mcj: pode ser escrita como C(i,:) = C(i,:) + m * C(j,:).
Na etapa da retro-substituição os elementos de x são obtidos (em ordem
inversa) por
xi =
di −
∑
j>i
cijxj
cii
, i = n, n− 1, . . . , 2, 1.
Exemplo 4.1. Usar o método do escalonamento para resolver o sis-
tema linear
3x1 + x2 − x3 + 2x4 = 5
3x1 + 3x2 − x3 + 4x4 = 5
9x1 + 4x2 + 8x4 = 17
x2 + 3x3 + 7x4 = 12
.
Solução: Escalonamento: O sistema linear é representado pela matriz
completa
[C|d] = [A|b] =
3 1 −1 2 5
3 3 −1 4 5
9 4 0 8 17
0 1 3 7 12
.
O primeiro elemento não-nulo da primeira linha (c11 = 3) é denominado
pivô. Os elementos abaixo dele serão �zerados�. Os valores mij a seguir são
ditos multiplicadores e são usados nas operações-linha elementares.
m21 = −
c21
c11
= −3
3
= −1, c2: = c2: +m21c1:, d2 = d2 +m21d1,
m31 = −
c31
c11
= −9
3
= −3, c3: = c3: +m31c1:, d3 = d3 +m31d1,
m41 = −
c41
c11
= −0
3
= 0, c4: = c4: +m41c1:, d4 = d4 +m41d1.
CAPÍTULO 4. SISTEMAS LINEARES 36
Assim, obtemos
3 1 −1 2 5
0 2 0 2 0
0 1 3 2 2
0 1 3 7 12
.
Prosseguindo com o pivô c22 = 2:
m32 = −
c32
c22
= −1
2
c3: = c3: +m32c2:, d3 = d3 +m32d2,
m42 = −
c42
c22
= −1
2
c4: = c4: +m42c2:, d4 = d4 +m42d2,
obtemos
3 1 −1 2 5
0 2 0 2 0
0 0 3 1 2
0 0 3 6 12
.
Finalmente, com o pivô c33 = 3, obtemos
m43 = −
c43
c33
= −3
3
= −1 c4: = c4: +m43c3:, d4 = d4 +m43d3,
obtemos a forma escalonada
3 1 −1 2 5
0 2 0 2 0
0 0 3 1 2
0 0 0 5 10
.
Retro-substituição. Os elementos de x são obtidos:
x4 =
d4
c44
=
10
5
= 2
x3 =
d3 − (c34x4)
c33
=
2− (1 · 2)
3
= 0
x2 =
d2 − (c23x3 + c24x4)
c22
=
0− (0 · 0 + 2 · 2)
2
= −2
x1 =
d1 − (c12x2 + c13x3 + c14x4)
c11
=
5− (1 · (−2)− 1 · 0 + 2 · 2)
3
= 1
Algoritmo 9 SLGaussProv
entrada : A,b
saída : x
Inicialização
1: n ← número de linhas de A
2: C ← [A|b]
Escalonamento
3: para j ← 1 : n− 1
4: para i ← j + 1 : n
5: m ←−Ci,j/Cj,j
6: Ci,: ←Ci,: +mCj,:
7: �m
8: �m
Retro-substituição
9: x ←Zeros(n, 1)
10: para i ←n : −1 : 1
11: xi ← (Ci,n+1 −Ci,1:n · x) /Ci,i
12: �m
Logo, a solução do sistema é x1 = 1, x2 = −2, x3 = 0 e x4 = 2 ou, de
forma vetorial,
x =
1
−2
0
2
.
O algoritmo SLGaussProv (provisório) sistematiza o método do es-
calonamento de Gauss.
4.2.1 Pivotamento Parcial
O algoritmo SLGaussProv tem um problema: ele não toma cuidado com
possíveis divisões por zero, que ocorrem quando o elemento-pivô não está
na diagonal.
Uma estratégia para evitar divisões por zero, consiste em permutar as
linhas da matriz de modo que o elemento-pivô seja (em valor absoluto)
CAPÍTULO 4. SISTEMAS LINEARES 37
Algoritmo 10 SLGauss
entrada : A,b
saída : x
Inicialização
1: n ← número de linhas de A
2: C ← [A|b]
Escalonamento
3: para j ← 1 : n− 1
4: C ←PivotamentoParcial(C, n, j)
5: para i ← j + 1 : n
6: m ←−Ci,j/Cj,j
7: Ci,: ←Ci,: +mCj,:
8: �m
9: �m
Retro-substituição
10: x ←Zeros(n, 1)
11: para i ←n : −1 : 1
12: xi ← (Ci,n+1 −Ci,1:n · x) /Ci,i
13: �m
maior ou igual aos os elementos abaixo de si em sua coluna, isto é,
|cjj | ≥ |cij | , i > j.
Esse procedimento, denominado pivotamento parcial, além de evi-
tar a divisão por zero, garante ainda que os multiplicadores serão pequenos
(|mij | ≤ 1), o que tende a minimizar os erros de arredondamento. O algo-
ritmo PivotamentoParcial (p. 13) já implementado, realiza as permu-
tações necessárias. A técnica do pivotamento total (que busca o elemento
de maior valor absoluto nas linhas abaixo e nas colunas à direita da posição
de pivô) gera maior precisão, porém tem custo mais elevado [8, p. 352] e é
pouco utilizada.
O algoritmo SLGauss (de�nitivo) utiliza o pivotamento parcial. Note
que, o sistema linear que não tiver solução única ou não tiver solução, será
detectado pela algoritmo de pivotamento.
Usando o Matlab: Após escrever a matriz A e o vetor-coluna b, é possível
resolver o sistema linear Ax = b com o comando �\�.
>> A = [3 1 -1 2; 3 3 -1 4; 9 4 0 8; 0 1 3 7];
>> b = [5; 5; 17; 12];
>> x = A\b
x =
1.0000
-2.0000
-0.0000
2.0000
O comando �\� chama uma série de subrotinas do Matlab para a resolução
de sistemas lineares. Cada subrotina possui alguma especi�cidade com relação
ao tipo de sistema linear: determinado, sub-determinado, sobre-determinado,
real, complexo, etc. No entanto, o método de resolução usado é basicamente
o mesmo: método de Gauss com pivotamento parcial.
Deve-se ter o cuidado de veri�car que esse procedimento sempre produz
uma resposta:
1. a solução, se o sistema linear for possível e determinado;
2. uma solução, se o sistema linear for possível e indeterminado;
3. uma pseudo-solução (a solução de quadrados mínimos, ver Capítulo 6),
se o sistema linear for impossível.
Uma maneira de veri�car que tipo de solução está sendo obtida é veri�car a
forma escalonada reduzida da matriz completa do sistema linear com o comando
>> rref(A)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Se a matriz resultante for a identidade In, então a solução obtida é a solução
(única) do sistema linear.
CAPÍTULO 4. SISTEMAS LINEARES 38
4.3 Métodos iterativos
Nos métodos iterativos para resolução de sistemas lineares, inicialmente
uma matriz C e um vetor d são obtidos de A e b. Em seguida, a partir de
uma estimativa inicial de solução x(1), uma sequência de novas estimativas
x(2),x(3),x(4), . . . é calculada através da fórmula de iteração
x(k) = Cx(k−1) + d.
Se C e d forem escolhidos adequadamente, a sequência converge para x̂, a
solução do sistema linear. As diferentes escolhas de C e d levam a métodos
diferentes.
Nos métodos iterativos, é necessário de�nir alguns critérios de parada.
Os mais usados são os seguintes:
1. �rel ≈
∥∥x(k−1) − x(k)∥∥∥∥x(k)∥∥ < tol.
2. δrel =
∥∥Ax(k) − b∥∥
‖b‖ < tol.
3. k > kmax.
O critério 1 estabelece uma estimativa para o erro relativo �rel entre
x(k) e x̂ a partir de duas aproximações sucessivas. O critério 2 determina o
valor do resíduo relativo δ entre Ax(k) e b). Note que em ambos os casos,
�rel ≥ 0, uma vez que a norma-2 de um vetor é não-negativa. O critério 3
estabelece um número máximo de iterações. Note como esses critérios de
parada são semelhantes aos usados nos métodos da bisseção e de Newton
(p. 26). Nos algoritmos e exemplos deste capítulo, usaremos o critério de
parada 1 e 3.
O símbolo ‖·‖ representa a norma (ou norma euclideana) de um vetor
que é de�nida por
‖v‖ =
√
v21 + v
2
2 + · · ·+ v2n. (4.1)
Exemplo 4.2. Considere os vetores
x(1) =
1,00022,0086
−2,9978
, x(2) =
0,99942,0015
−3,0007
.
Determine �rel usando o critério 1 e a quantidade de DSE dos vetores.
Solução: O erro relativo para vetores é dado por
�rel =
∥∥x(1) − x(2)∥∥∥∥x(2)∥∥
=
√
(1,0002− 0,9994)2 + (2,0086− 2,0015)2 + (−2,9978 +3,0007)2√
0,99942 + 2,00152 + (−3,0007)2
=
√
5,9460× 10−5√
14,0090
= 0,0021
Como �rel = 0,0021 < 0,5 × 10−2 deduzimos que os valores numéricos
dos vetores possuem 2 DSE, isto é,
x(1) ≈ x(2) ≈ [1,0 2,0 − 3,0]T.
O algoritmo ErroRelVet sistematiza o cálculo do erro relativo na
aproximação vetorial. Note a semelhança com o algoritmo ErroRel
(p. 20)
CAPÍTULO 4. SISTEMAS LINEARES 39
Algoritmo 11 ErroRelVet
entrada : u,v
saída : �rel
1: se ‖v‖ = 0 então
2: �rel ←‖u‖
3: senão
4: �rel ←
‖u− v‖
‖v‖
5: �m
4.4 Método de Gauss-Jacobi
No método de Gauss-Jacobi2, a determinação de C e d é feita da seguinte
maneira.
Consideremos o sistema linear Ax = b na forma
a11 x1 + a12 x2 + · · · + a1n xn = b1
a21 x1 + a22 x2 + · · · + a2n xn = b2
...
...
...
...
an1 x1 + an2 x2 + · · · + ann xn = bn
.
Isolando x1 da primeira equação, x2 da segunda equação, ..., xn da n-ésima
equação obtemos
x1 = −
a12
a11
x2 · · · −
a1n
a11
xn +
b1
a11
x2 = −
a21
a22
x1 · · · −
a2n
a22
xn +
b2
a22
...
...
...
...
xn = −
an1
ann
x1 · · · −
an,n−1
ann
xn−1 +
bn
ann
,
2 ÿCarl Gustav Jacob Jacobi (1804 - 1851), matemático alemão. Fez contribuições
fundamentais na teoria das funções elípticas e das equações diferenciais parciais. Em
1845, no artigo Über eine neue au�ösungsart der bei der methode der kleinsten qua-
drate vorkommenden linearen gleichungen introduz o método iterativo para resolução
de sistemas lineares. No mesmo artigo faz uso de rotações planares para aumentar a
dominância diagonal da matriz. Uma abordagem pioneira do que se chama atualmente
de pré-condicionamento [38, 5].
que pode ser expresso na forma x = Cx + d, sendo
C =
0 −a12
a11
· · · −a1n
a11
−a21
a22
0 · · · −a2n
a22
...
...
...
−an1
ann
−an2
ann
· · · 0
, d =
b1
a11
b2
a22
...
bn
ann
. (4.2)
Exemplo 4.3. Resolva o sistema linear mostrado a seguir usando o
método de Gauss-Jacobi. Use a estimativa inicial de solução o vetor
x(1) = 1 = [1 1 1]T e o critério de parada 1 para obter 3 DSE.
− 20x1 + 9x3 = 78
− x1 − 5x2 + x3 = −5
2x1 + 2x2 + 5x3 = 8
,
Solução: Inicialmente veri�camos que para obter 3 DSE devemos usar
tol = 0,5× 10−3.
Em seguida, a partir de
A =
−20 0 9−1 −5 1
2 2 5
, b =
78−5
8
,
e de (4.2) temos
C =
0,00 0,00 0,45−0,20 0,00 0,20
−0,40 −0,40 0,00
, d =
−3,901,00
1,60
.
A Tabela a seguir mostra a sequência das primeiras aproximações
CAPÍTULO 4. SISTEMAS LINEARES 40
k x
(k)
1 x
(k)
2 x
(k)
3 �rel
1 1,0000 1,0000 1,0000 -
2 -3,4500 1,0000 0,8000 1,2105
3 -3,5400 1,8500 2,5800 0,4153
4 -2,7390 2,2240 2,2760 0,2226
5 -2,8758 2,0030 1,8060 0,1362
6 -3,0873 1,9364 1,9491 0,0639
7 -3,0229 2,0073 2,0604 0,0352
8 -2,9728 2,0167 2,0062 0,0181
9 -2,9972 1,9958 1,9825 0,0097
10 -3,0079 1,9959 2,0005 0,0051
11 -2,9998 2,0017 2,0048 0,0026
12 -2,9978 2,0009 1,9992 0,0014
13 -3,0003 1,9994 1,9988 0,0007
14 -3,0006 1,9998 2,0004 0,0004
A solução do sistema, com 3 DSE, é x1 = −3,00, x2 = 2,00 e x3 = 2,00.
O algoritmo SLGaussJacobi sistematiza o método de Gauss-Jacobi.
Vimos que o método funcionou para o problema do Exemplo. A per-
gunta natural é: funciona sempre? A resposta é não. Vejamos por quê na
seção seguinte.
4.4.1 Convergência
Sendo x̂ a solução do sistema linear, a estimativa inicial x(1) é tal que
x(1) = x̂ + �,
onde o vetor � é o erro de aproximação. Dessa forma, a próxima estimativa
é
x(2) = Cx(1) + d
= C(x̂ + �) + d
= Cx̂ + C� + d
= (Cx̂ + d) + C�
= x̂ + C�.
Algoritmo 12 SLGaussJacobi
entrada : A,b, tol, kmax
saída : x, �rel, k
Matriz e vetor de iteração
1: n ← número de linhas de A
2: C ←Zeros(n, n)
3: d ←Zeros(n, 1)
4: para i ← 1 : n
5: para j ← 1 : n
6: se i 6= j então
7: Ci,j ←−Ai,j/Ai,i
8: �m
9: �m
10: di ← bi/Ai,i
11: �m
Processo iterativo
12: k ← 1
13: x ←Uns(n, 1)
14: �rel ←+∞
15: enquanto k < kmax e �rel > tol
16: k ← k + 1
17: u ←x
18: x ←Cx + d
19: �rel ←ErroRelVet(u,x)
20: �m
CAPÍTULO 4. SISTEMAS LINEARES 41
E assim
x(3) = x̂ + C2�
x(4) = x̂ + C3�
...
x(k) = x̂ + Ck−1�.
Para que a sequência x(1),x(2), . . . tenha convergência para x̂ é neces-
sário que
lim
k→+∞
Ck = 0. (4.3)
Pode-se mostrar [8, p. 415] que a condição (4.3) é verdadeira se a matriz
C tem raio espectral ρ menor que a unidade, isto é,
ρ = max {|λ1| , |λ2| , . . .} < 1,
onde λ1, λ2 . . . são os autovalores de C; ou a matriz A é diagonal-
dominante, isto é,
|aii| >
∑
j 6=i
|aij | , 1 ≤ i ≤ n.
O primeiro critério é necessário e su�ciente, porém é computacionalmente
trabalhoso de ser veri�cado. O segundo critério é su�ciente mas não ne-
cessário, porém é mais facilmente veri�cado.
Usando o Matlab: Os autovalores e o raio espectral da matriz C do
Exemplo 4.3, podem ser obtidos com os seguintes comandos
>> lambda = eig(C)
lambda =
-0.0650 + 0.5222i (autovalor complexo)
-0.0650 - 0.5222i (autovalor complexo)
0.1300 (autovalor real)
>> ro = max(abs(lambda)) (raio espectral)
ro = 0.5262
Se convergir, a sequência de estimativas obtidas pelo método de Gauss-
Jacobi tem convergência de ordem linear, isto é, ‖�k+1‖ ≈ c ‖�k‖. A ve-
locidade de convergência será maior quanto menor for o raio espectral da
matriz de iteração C ou, de forma semelhante, maior for a dominância di-
agonal da matriz A do sistema linear. O método a seguir permite acelerar
a convergência do método de Gauss-Jacobi.
4.5 Método de Gauss-Seidel
O método de Gauss-Seidel3 é uma modi�cação do método de Gauss-Jacobi
para fazer com que o processo iterativo seja mais rápido. A ideia básica
é calcular a componente x(k)i , a partir das componentes x
(k−1)
j , j > i da
iteração anterior e das componentes x(k)j , j < i, já calculadas da iteração
corrente.
Exemplo 4.4. Resolva o sistema linear do Exemplo 4.3 usando o
método de Gauss-Seidel com os mesmos parâmetros de tolerância e
estimativa inicial de solução.
Solução: Na segunda iteração (k = 2), a primeira componente de x (i = 1)
é calculada por
x
(2)
1 = C1,: · x + d1,
= [0,00 0,00 0,45] · [1,0000 1,0000 1,0000]T − 3,90,
= −3,4500.
A segunda (i = 2) componente de x é calculada a partir de x∗ (vetor
3 ÿPhilipp Ludwig von Seidel (1821 - 1896), matemático alemão. Trabalhou com
óptica (desenvolveu a teoria da aberração óptica em telescópios astronômicos) e aná-
lise matemática (desenvolveu o importante conceito de convergência não-uniforme). A
denominação método de Gauss-Seidel é, segundo alguns autores, um abuso pois Gauss
aparentemente não o conhecia e Seidel não o recomendava! [38, 5].
CAPÍTULO 4. SISTEMAS LINEARES 42
com a primeira componente atualizada).
x
(2)
2 = C2,: · x∗ + d2,
= [−0,20 0,00 0,20] · [−3,4500∗ 1,0000 1,0000]T + 1,00,
= 1,8900.
A terceira (i = 3) componente de x é calculada a partir de x∗∗ (vetor
com a primeira e segunda componentes atualizadas).
x
(2)
3 = C3,: · x∗∗ + d3,
= [−0,40 − 0,40 0,00] · [−3,4500∗ 1,8900∗ 1,0000]T + 1,60,
= 2,2240.
Prosseguindo com esse esquema, os demais valores são calculados, como
mostrado na tabela a seguir.
k x
(k)
1 x
(k)
2 x
(k)
3 �rel
1 1,0000 1,0000 1,0000 -
2 -3,4500 1,8900 2,2240 1,0401
3 -2,8992 2,0246 1,9498 0,1560
4 -3,0226 1,9945 2,0112 0,0341
5 -2,9949 2,0012 1,9975 0,0077
6 -3,0011 1,9997 2,0006 0,0017
7 -2,9997 2,0001 1,9999 0,0004
A solução do sistema, com 3 DSE, é x1 = −3,00, x2 = 2,00 e x3 = 2,00.
Pode-se mostrar [40, p. 1062] que o método de Gauss-Seidel executa,
em média, a metade do número de passos do método de Gauss-Jacobi
para uma dada tolerância. Nos Exemplos 4.3 e 4.4 observamos que, com
o método de Jacobi, uma solução (com a tolerância tol = 0,5 × 10−3) é
obtida na iteração 14, enquanto que no método de Seidel, ela é obtida já
na iteração 7. Para uma tolerância tol = 0,5 × 10−15, com o método de
Jacobi uma solução é obtida na iteração k = 57 e com o método de Seidel
uma solução é obtida na iteração k = 26.
O algoritmo SLGaussSeidel sistematiza o método de Gauss-Seidel.
Algoritmo 13 SLGaussSeidel
entrada : A,b, tol, kmax
saída : x, �rel, k
Matriz e vetor de iteração
1: n ← número de linhasde A
2: C ←Zeros(n, n)
3: d ←Zeros(n, 1)
4: para i ← 1 : n
5: para j ← 1 : n
6: se i 6= j então
7: Ci,j ←−Ai,j/Ai,i
8: �m
9: �m
10: di ← bi/Ai,i
11: �m
Processo iterativo
12: k ← 1
13: x ←Uns(n, 1)
14: �rel ←+∞
15: enquanto k < kmax e �rel > tol
16: k ← k + 1
17: u ←x
18: para i ← 1 : n
19: xi ←Ci,: · x + di
20: �m
21: �rel ←ErroRelVet(u,x)
22: �m
CAPÍTULO 4. SISTEMAS LINEARES 43
Usando o Matlab: Ao implementar os algoritmos, tome cuidado para
assegurar que os vetores sejam sempre vetores-coluna. Caso contrário, as ope-
rações de produto matriz-vetor resultarão em erros:
>> A = [2 1; -1 3]
A =
2 1
-1 3
>> x = [1 2], y = A*x
x =
1 2
Error using *
Inner matrix dimensions must agree.
>> x = [1; 2], y = A*x
x =
1
2
y =
4
5
4.6 Problemas
Método de Gauss
Nos problemas 4.1 a 4.4 a seguir são dados a matriz A e o vetor b de um sistema
linear Ax = b. Resolva os sistemas lineares usando o método do escalonamento.
Não é necessário usar pivotamento.
4.1. .
A =
[
4 −2
2 1
]
, b =
[
8
0
]
.
4.2. .
A =
3 −1 20 2 4
−6 1 −2
, b =
40
−4
.
4.3. .
A =
0,2 0,3 0,10,0 −0,5 −0,3
−0,8 −2,2 −0,6
, b =
0,60,0
−4,4
.
4.4. .
A =
1 2 2 0
0 1 −1 0
−1 −5 2 1
2 6 7 8
, b =
−3
2
−2
12
.
4.5. Implemente o algoritmo SLGaussProv na sua linguagem preferida. Para
veri�car a correção da implementação, refaça o Exemplo 4.1.
4.6. Alguns sistemas lineares não podem ser resolvidos sem pivotamento (troca
de linhas). Veri�que que o algoritmo SLGaussProv não resolve o sistema linear
Ax = b com
A =
2 3 52 3 −4
1 4 −1
, b =
1−8
−8
.
4.7. + Implemente o algoritmo SLGauss na sua linguagem preferida. Para
veri�car a correção da implementação, refaça o Exemplo 4.1.
4.8. Uma boa maneira de testar a correção dos algoritmos é gerar e resolver
sistemas lineares aleatórios.
(a) Crie uma matriz A10×10 e um vetor b10×1 aleatórios.
(b) Resolva o sistema Ax = b com o algoritmo SLGauss.
(c) Con�ra o resultado calculando o resíduo relativo entre os vetores Ax e b.
4.9. Mesmo sistemas lineares pequenos podem ser mal-condicionados. Considere
o sistema linear Ax = b dado por
A =
43 −86 −1623 −46 72
−32 30 58
, b =
−5949
56
,
cuja solução é x = [1 1 1]T. Resolva-o mediante os algoritmos SLGaussProv
e SLGauss e veri�que que os resultados são bem distintos.
4.10. Modi�que o algoritmo SLGauss para incluir um contador de operações
aritméticas (+, -, *, /). Gere sistemas lineares aleatórios de tamanho n de 2 a 50
e determine o número N(n) de operações efetuadas para resolver cada sistema.
Veri�que que N(n) ∼ n3, calculando N(n)n3 e veri�cando que essa razão tende para
uma constante a medida que n aumenta.
CAPÍTULO 4. SISTEMAS LINEARES 44
Erro Relativo
Nos problemas 4.11 e 4.12 a seguir são dados duas estimativas sucessivas x(1) e
x(2) para a solução de um sistema linear. Determine a diferença relativa �rel das
estimativas.
4.11. .
x(1) =
[
1,75
−2,01
]
, x(2) =
[
1,77
−1,99
]
.
4.12. .
x(1) =
1,9974−0,1996
3,2897
, x(2) =
1,9997−0,2003
3,2975
.
4.13. + Implemente o algoritmo ErroRelVet na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 4.2.
4.14. Considere o sistema linear Ax = b dado por
A =
[
1 + t −1
1 −1
]
, b =
[
t
0
]
,
onde 0 < t ≤ 1 é uma constante.
(a) Encontre (algebricamente) a solução x̂ do sistema.
(b) Resolva o sistema Ax = b com seu algoritmo SLGaussProv para t =
1, 10−1, 10−2, . . . , 10−15 e determine o erro relativo entre a solução exata e a
solução numérica. O que ocorre com o erro relativo à medida que t diminui?
Método de Gauss-Jacobi
Nos problemas 4.15 a 4.18 a seguir são dados a matriz A e o vetor b de um
sistema linear Ax = b. Considere o método de Gauss-Jacobi e (a) determine a
matriz C e o vetor d de iteração; (b) determine as primeiras 4 estimativas de
solução: x(k), k = 1, . . . , 4; (c) Estime o erro relativo da última iteração.
4.15. .
A =
[
2 −1
1 2
]
, b =
[
2
6
]
.
4.16. .
A =
5 2 12 5 2
1 2 5
,b =
51
9
.
4.17. .
A =
20 5 1−2 10 2
1 4 10
,b =
32−20
14
.
4.18. .
A =
4 2 0 0
−1 4 2 0
0 −1 4 2
0 0 −1 4
,b =
0
9
0
4
.
4.19. Implemente o algoritmo SLGaussJacobi na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 4.3.
Método de Gauss-Seidel
Nos Problemas 4.20 a 4.23 a seguir, utilize o método de Gauss-Seidel e determine:
(a) a matriz C e o vetor d de iteração; (b) as primeiras 4 estimativas de solução:
x(k), k = 1, . . . , 4. (c) Estime o erro relativo da última iteração.
4.20. . Sistema linear do Problema 4.15
4.21. . Sistema linear do Problema 4.16
4.22. . Sistema linear do Problema 4.17
4.23. . Sistema linear do Problema 4.18
4.24. + Implemente o algoritmo SLGaussSeidel na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 4.4.
4.25. Compare o número de iterações utilizadas pelos algoritmos SLGauss-
Jacobi e SLGaussSeidel para resolver ao problemas 4.15 a 4.18 acima com
tol = 0,5× 10−12.
4.26. Modi�que o algoritmo SLGaussSeidel de modo a empregar o critério de
parada 2 em vez do critério 1 (p. 38). Compare número de iterações utilizadas
entre esse algoritmo e o original refazendo os problemas 4.15 a 4.18 acima com
tol = 0,5× 10−12.
CAPÍTULO 4. SISTEMAS LINEARES 45
Sortidos
4.27. Veri�que que o sistema linear
2x2 + 5x3 + 2x4 = 1
2x1 + 3x4 = 2
6x2 + 3x3 + 2x4 = 3
3x1 + 2x3 = 4
não é diagonal dominante. No entanto, o sistema pode ser reescrito na forma
diagonal dominante preservando a solução.
(a) Como isso pode ser feito?
(b) Qual é a solução do sistema linear?
4.28. Se um sistema linear satisfaz as condições de convergência, então o pro-
cesso iterativo x(k) = Cx(k−1) +d converge para qualquer estimativa inicial x(1).
Para veri�car esse fato, altere o algoritmo SLGaussJacobi para que ele inicie o
processo iterativo a partir de
(a) x(1) = [0 0 · · · 0]T.
(b) x(1) = [1 2 · · · n]T.
(c) x(1) = [100 100 · · · 100]T.
Aplique o algoritmo para resolver o sistema linear do Exemplo 4.3 e compare o
número de passos necessários para se obter a solução com tol = 0,5× 10−12.
4.29. A condição de que a matriz dos coe�cientes se um sistema linear deve ser
diagonal dominante é su�ciente, mas não é necessária para os métodos iterativos
que vimos.
(a) Veri�que que no sistema abaixo os métodos GJ e GS geram estimativas con-
vergentes. {
10x1 − x2 = 17
− 11x1 + 10x2 = 8
(b) Veri�que que no sistema abaixo os métodos GJ e GS geram estimativas os-
cilantes (não convergentes). x1 x3 = 6x1 − x2 = 3
x1 + 2x2 − 3x3 = 9
4.30. Um artista plástico deseja fazer uma escultura composta de 10 postes
verticais colocados lado a lado em um gramado. A altura do primeiro poste é
h1 = 2 m e a do último é h10 = 8 m. A altura de cada poste intermediário hk
(2 ≤ k ≤ 9) é a média aritmética ponderada das alturas de seus vizinhos
hk =
2hk−1 + hk+1
3
.
Encontre o sistema linear que modela este problema, resolva-o com tol = 0,5 ×
10−12 e determine a altura de cada poste.
4.31. Um modo de encontrar a matriz inversa B de uma dada matriz A (de
ordem n) é observar que se AB = In então A [b1 b2 · · · bn] = [i1 i2 · · · in], que
é equivalente a [Ab1 Ab2 · · · Abn] = [i1 i2 · · · in]. Isso é equivalente a resolução
de n sistemas lineares da forma Ab1 = i1, Ab2 = i2, . . ., Abn = in, onde bk é a
k-ésima coluna de B e ik é a k-ésima coluna de I. Use esse fato para determinar
a 2a coluna da matriz inversa de
A =
1,3 −4,5 6,8 −0,1 7,1 1,5
−2,0 0,4 0,9 −1,9 6,9 6,7
−6,0 −0,2 −0,3 5,8 0,8 −6,9
6,2 3,1 −6,1 0,5 4,5 −7,2
−3,7 0,1 6,0 3,6 4,4 4,7
5,7 3,8 −0,1 −6,3 −3,5 5,5
.
4.32. Considere o quadro:
100 100 100 100 500
100 T1 T2 T3 500
100 T4 T5 T6 500
100 T7 T8 T9 500
100 100 100 100 500
Determine os valores de Tk, (k = 1, . . . , 9), sabendo que cada valor Tk é obtido
pela média aritmética dos seus quatro vizinhos: de cima, de baixo, da esquerda
e da direita. Por exemplo,
T6 =
T3 + T9 + T5+ 500
4
.
(Esse modelo é usado para determinar a distribuição de temperaturas em uma
placa homogênea, para mais detalhes ver [2, p. 254] ou [29, p. 11]).
4.33. Em química, as quantidades molares dos componentes de uma reação po-
dem ser determinados via resolução de sistemas lineares. Considere a reação
x1K2Cr2O7 + x2Na2C2O4 + x3H2SO4 →
x4K2SO4 + x5Cr2(SO4)3 + x6Na2SO4 + x7H2O + x8CO2.
CAPÍTULO 4. SISTEMAS LINEARES 46
Como a quantidade de oxigênio nos reagentes deve ser igual à quantidade de
oxigênio nos produtos, temos
7x1 + 4x2 + 4x3 = 4x4 + 12x5 + 4x6 + x7 + 2x8.
Assim temos uma equação linear para x1, x2, . . . , x8. Como a reação envolve 7
elementos (K,Cr,O,Na,C,H, S) podemos obter um sistema linear com 7 equa-
ções e 8 incógnitas. Para a resolução do sistema linear devemos prescrever o valor
de uma das incógnitas, por exemplo, fazendo x8 = 1.
(a) Obtenha as demais equações do sistema linear correspondente a reação.
(b) Resolva o sistema e encontre as quantidades molares dos componentes da
reação.
4.34. No cálculo do erro relativo �rel para vetores, além da norma-2 de�nida
em (4.1), outras normas podem ser utilizadas como, por exemplo, a norma-∞,
de�nida por
‖v‖∞ = max {|v1| , |v2| , . . . , |vn|} .
Altere o algoritmo ErroRelVet para considerar essa norma. Em seguida re-
faça o Exemplo 4.3 comparando as diferenças relativas e o número de iterações
utilizadas. Os métodos são equivalentes?
4.35. O método das diferenças �nitas transforma a equação diferencial ordinária{
y′′ + x2y′ − 4xy = 0, x ∈ [0, 1]
y(0) = 0, y(1) = 5
em um sistema de equações lineares da forma(
2− k2h3
)
yk−1 − 4
(
1 + 2kh3
)
yk +
(
2 + k2h3
)
yk+1 = 0
com k = 1, 2, . . . , (n− 1), h = 1/n, y0 = 0 e yn = 5.
(a) Faça n = 5, e monte o sistema linear associado;
(b) Resolva numericamente o sistema linear;
(c) Compare a solução numérica com a solução analítica exata ŷ(x) = x4 + 4x.
4.36. O método denominado successive overrelaxation (SOR) é uma generaliza-
ção do método de Gauss-Seidel [6] [8, p. 426]. Nessa generalização, cada nova
componente xi é calculada a partir da média ponderada entre a estimativa ante-
rior ui e a estimativa calculada pelo método de Gauss-Seidel. A implementação
pode ser feita reescrevendo a linha 19 do algoritmo SLGaussSeidel:
xi←ω(Ci,: · x + di) + (1− ω)ui,
onde ω é o parâmetro de relaxação. Sob certas condições, a escolha do valor de
ω (entre 0 e 2) garante que o método converge mais rapidamente. Observe que
se ω = 1, temos o método Gauss-Seidel usual.
(a) Modi�que o algoritmo SLGaussSeidel para utilizar o método SOR;
(b) Resolva o sistema linear dado no Exemplo 4.4 usando tol = 0,5 × 10−15 e
usando ω entre 0,5 e 1,5;
(c) Determine o valor de ωmin para o qual a solução é obtida com menor número
de iterações. Observação: O ponto fraco do método é que, com exceção de
casos especiais, o valor ótimo ωmin não pode ser conhecido antecipadamente.
Capítulo 5
Interpolação
5.1 De�nição do problema
Seja f : R→ R uma função conhecida �apenas� por um conjunto �nito de
valores, isto é,
y1 = f(x1), y2 = f(x2), . . . , yn = f(xn),
onde x1 < x2 < . . . < xn. O problema da interpolação consiste em de-
terminar a expressão algébrica de uma função de interpolação g tal
que
g(x1) = f(x1), g(x2) = f(x2), . . . , g(xn) = f(xn).
Em geral, a função de interpolação é usada para estimar o valor de v =
f(u) ≈ g(u) quando u /∈ {x1, x2, . . . , xn} e x1 < u < xn. A Figura 5.1
mostra os pontos (x1, y1), (x2, y2), . . . , (xn,yn) ditos nodos de interpolação,
uma curva (polinomial) de interpolação e um ponto interpolado.
Basicamente, as funções de interpolação podem ser divididas em dois
grupos:
• Funções de�nidas por uma única expressão algébrica de�nida para
todo o intervalo [x1, xn]. Por exemplo, funções polinomiais ou racio-
nais.
• Funções de�nidas pormais de uma expressão algébrica de�nidas para
cada subintervalo [x1, x2], [x2, x3], . . ., [xn−1, xn]. Também chamadas
de funções de�nidas por partes. Por exemplo, spline linear (funções
polinomiais de grau 1) ou spline cúbico (funções polinomiais de grau
3).
Figura 5.1: A curva de interpolação passa sobre os nodos de interpolação.
47
CAPÍTULO 5. INTERPOLAÇÃO 48
Às vezes, há o interesse na interpolação, mesmo quando a função é
conhecida em todo o intervalo [x1, xn]. É o caso da integração numérica
que veremos no Capítulo 7.
Neste capítulo veremos métodos de interpolação por função polinomial
(Vandermonde e Lagrange) e por spline cúbico.
5.2 Método de Vandermonde
O método de Vandermonde1 consiste em determinar um polinômio in-
terpolador p que passe por todos os n nodos de interpolação, isto é,
p(x1) = y1, p(x2) = y2, . . . , p(xn) = yn. (5.1)
Pode-se mostrar [10, p. 196] que existe um polinômio que satisfaz as con-
dições dadas em (5.1) com grau m ≤ n − 1. O valor n − 1 é dito or-
dem de interpolação. Desse modo, deve-se determinar os coe�cientes
c0, c1, . . . , cn−1 do polinômio
pn−1(x) = cn−1x
n−1 + cn−2x
n−2 + · · ·+ c2x2 + c1x+ c0. (5.2)
De (5.1) e (5.2) obtemos o sistema de n equações lineares
p(x1) = cn−1 x
n−1
1 + · · · + c2 x21 + c1 x1 + c0 = y1
p(x2) = cn−1 x
n−1
2 + · · · + c2 x22 + c1 x2 + c0 = y2
...
...
...
...
...
...
p(xn) = cn−1 x
n−1
n + · · · + c2 x2n + c1 xn + c0 = yn
(5.3)
nas n incógnitas cn−1, . . . , c2, c1, c0.
O sistema linear (5.3) pode ser escrito na forma matricial Xc = y com
X =
xn−11 · · · x21 x1 1
xn−12 · · · x22 x2 1
...
...
...
...
xn−1n · · · x2n xn 1
, c =
cn−1
...
c2
c1
c0
,y =
y1
y2
...
yn
.
1Ver nota biográ�ca na p. 12
A matriz X descrita acima é denominada matriz de Vandermonde.
A solução do sistema linear (5.3) fornece os coe�cientes do polinômio in-
terpolador (5.2).
Exemplo 5.1. Considere a função f conhecida nos nodos (x, y) dados
na tabela a seguir.
x y
0,0 1,0
1,0 2,3
4,0 2,2
6,0 3,7
1. Encontre o polinômio p interpolador aos nodos dados.
2. Use o polinômio para estimar o valor de v = f(5).
Solução: Como n = 4, o polinômio interpolador é da forma
p(x) = c3x
3 + c2x
2 + c1x+ c0
e o sistema linear Xc = y correspondente é
0 0 0 1
1 1 1 1
64 16 4 1
216 36 6 1
c3
c2
c1
c0
=
1,0
2,3
2,2
3,7
,
cuja solução (obtida pelo método do escalonamento, ver Capítulo 4) é
c =
0,0817
−0,7417
1,9600
1,0000
.
Assim, o polinômio interpolador é
p(x) = 0,0817x3 − 0,7417x2 + 1,9600x+ 1,0000. (5.4)
CAPÍTULO 5. INTERPOLAÇÃO 49
O valor de v = f(5) é estimado por p(5) = 2,4667. A Figura 5.1 mostra
os nodos de interpolação, o grá�co do polinômio interpolador p e o ponto
interpolado (u,v).
Usando o Matlab: Se os algoritmos MVander (p. 12), VPol (p. 12)
e SLGauss (p. 37) já foram implementados, o Exemplo 5.1 pode ser resolvido
do seguinte modo:
>> x = [0; 1; 4; 6];
>> y = [1.0; 2.3; 2.2; 3.7];
>> X = MVander(x,3)
X =
0 0 0 1
1 1 1 1
64 16 4 1
216 36 6 1
>> c = SLGauss(X, y)
c =
0.0817
-0.7417
1.9600
1.0000
>> v = VPol(c,5)
v =
2.4667
O método de Vandermonde é bastante simples. A implementação do
algoritmo é deixada como exercício (veja o Problema 5.3).
Apesar de conceitualmente simples, o método pode se tornar impreciso
na interpolação de polinômios de grau elevado: a matriz X pode torna-se
mal-condicionada o que ocasiona erros na determinação dos coe�cientes
do polinômio interpolador (veja o Problema 5.28). Uma maneira de con-
tornar esse problema é calcular os valores do polinômio sem calcular seus
coe�cientes como no método de Lagrange, discutido a seguir.
Observemos que para um conjunto de n nodos, o polinômio interpolador
terá grau máximo (ordem) n−1. É raro, mas pode ocorrer que o polinômio
interpolador tenha grau menor que n− 1 como mostra o Problema 5.5.
5.3 Método de Lagrange
O objetivo do método de Lagrange2 é determinar v, o valor do polinômio
interpolador p na abcissa u, sem necessidade de determinar previamente
os coe�cientes de p.
Dados as abscissas dos nodos x1 < x2 < . . . < xn construímos um
conjunto de n polinômios auxiliares Li dados porL1(x) =
(x− x2)(x− x3)(x− x4) · · · (x− xn)
(x1 − x2)(x1 − x3)(x1 − x4) · · · (x1 − xn)
L2(x) =
(x− x1)(x− x3)(x− x4) · · · (x− xn)
(x2 − x1)(x2 − x3)(x2 − x4) · · · (x2 − xn)
L3(x) =
(x− x1)(x− x2)(x− x4) · · · (x− xn)
(x3 − x1)(x3 − x2)(x3 − x4) · · · (x3 − xn)
...
Ln(x) =
(x− x1)(x− x2)(x− x3) · · · (x− xn−1)
(xn − x1)(xn − x2)(xn − x3) · · · (xn − xn−1)
,
ou seja,
Li(x) =
n∏
j=1,j 6=i
x− xj
xi − xj
, i = 1, . . . , n.
A Figura 5.2 ilustra a propriedade básica dos polinômios auxiliares:
Li(xj) =
{
1, i = j
0, i 6= j .
Pode-se mostrar que os polinômios auxiliares formam uma base no es-
paço vetorial dos polinômios de grau n−1. Assim o polinômio interpolador
p pode ser obtido pela combinação linear
p(x) = y1L1(x) + y2L2(x) + · · ·+ ynLn(x)
=
n∑
i=1
yiLi(x),
2 ÿ Joseph-Louis Lagrange (1736 - 1813), matemático francês, nascido italiano. De-
senvolveu consideravelmente o campo da análise, da teoria dos números e da mecânica
celeste. O método de interpolação que leva seu nome foi descrito em Leçons élémentai-
res sur les mathématiques données a l'école normale em 1795. Aparentemente Lagrange
desconhecia que o mesmo método tenha sido antecipado por Edward Waring em 1779 e
por Leonhard Euler em 1783 [38, 31].
CAPÍTULO 5. INTERPOLAÇÃO 50
Figura 5.2: Polinômios auxiliares.
onde as ordenadas yi dos nodos são os coe�cientes da combinação.
Finalmente, o polinômio interpolador é obtido por
p(x) =
n∑
i=1
yi
n∏
j=1,j 6=i
x− xj
xi − xj
(5.5)
O valor v = f(u) ≈ p(u) é estimado substituindo-se x por u em (5.5).
O algoritmo ILagrange sistematiza a interpolação pelo método de La-
grange.
5.3.1 Fórmulas para 2 e 4 nodos
Existem dois casos particulares de (5.5) que são muito úteis e merecem
destaque. Para n = 2 nodos temos
v2 = y1
u− x2
x1 − x2
+ y2
u− x1
x2 − x1
, (5.6)
Algoritmo 14 ILagrange
entrada : x,y,u
saída : v
Inicialização
1: n ← tamanho de x
2: m ← tamanho de u
3: v ←Zeros(m, 1)
Interpolação
4: para k ← 1 : m
5: s ← 0
6: para i ← 1 : n
7: p ← yi
8: para j ← 1 : n
9: se j 6= i então
10: p ← p · (uk − xj)/(xi − xj)
11: �m
12: �m
13: s ← s+ p
14: �m
15: vk ← s
16: �m
CAPÍTULO 5. INTERPOLAÇÃO 51
conhecida como fórmula de interpolação linear (pois p tem grau 1).
Para n = 4 temos
v4 =y1
(u− x2)(u− x3)(u− x4)
(x1 − x2)(x1 − x3)(x1 − x4)
+ y2
(u− x1)(u− x3)(u− x4)
(x2 − x1)(x2 − x3)(x2 − x4)
+
y3
(u− x1)(u− x2)(u− x4)
(x3 − x1)(x3 − x2)(x3 − x4)
+ y4
(u− x1)(u− x2)(u− x3)
(x4 − x1)(x4 − x2)(x4 − x3)
,
(5.7)
conhecida como fórmula de interpolação cúbica (pois p tem grau 3).
Importante: Ao usar as fórmulas (5.6) e (5.7) deve-se escolher os
nodos mais próximos de u. Em geral, isso signi�ca escolher nodos conse-
cutivos x1 e x2 tais que
x1 < u < x2
ou nodos consecutivos x1, x2, x3 e x4 tais que
x1 < x2 < u < x3 < x4.
Exemplo 5.2. Reconsidere a função f do Exemplo 5.1. Use o método
de Lagrange com 2 e 4 nodos para estimar o valor de v = f(5).
Solução: Para n = 2, usamos (5.6) com x1 = 4,0 e x2 = 6,0. Assim,
substituindo os valores tabelados obtemos
v2 = 2,2
5,0− 6,0
4,0− 6,0 + 3,7
5,0− 4,0
6,0− 4,0 ,
que resulta em
v2 = 1,10 + 1,85
= 2,95.
Para n = 4, usamos (5.7) com x1 = 0,0, x2 = 1,0, x3 = 4,0 e x4 = 6,0.
Assim, substituindo os valores tabelados obtemos
p(5) =1,0
(5,0− 1,0)(5,0− 4,0)(5,0− 6,0)
(0,0− 1,0)(0,0− 4,0)(0,0− 6,0)+
2,3
(5,0− 0,0)(5,0− 4,0)(5,0− 6,0)
(1,0− 0,0)(1,0− 4,0)(1,0− 6,0)+
2,2
(5,0− 0,0)(5,0− 1,0)(5,0− 6,0)
(4,0− 0,0)(4,0− 1,0)(4,0− 6,0)+
3,7
(5,0− 0,0)(5,0− 1,0)(5,0− 4,0)
(6,0− 0,0)(6,0− 1,0)(6,0− 4,0) ,
que resulta em
p(5) = 0,1667− 0,7667 + 1,8333 + 1,2333
= 2,4667,
que, como era de se esperar, corresponde ao mesmo valor obtido no Exem-
plo 5.1.
5.3.2 Erro na interpolação polinomial
Qual é o erro cometido ao se aproximar v̂ = f(u) por v = p(u) na interpola-
ção polinomial? Por de�nição, o erro � = v− v̂ = p(u)−f(u) somente pode
ser obtido se conhecemos o valor exato de v̂ = f(u) o que, usualmente, é
desconhecido.
Existem fórmulas para estimar o valor máximo do erro � [8, p. 106 e
p. 148], mas essas fórmulas necessitam de estimativas para as cotas (limi-
tantes) das derivadas de f . Uma alternativa utilizada usualmente é veri�-
car a diferença relativa dos valores interpolados com quantidades crescentes
de nodos de interpolação. Veja o Problema 5.13.
Se os nodos de interpolação são igualmente espaçados, o erro na in-
terpolação polinomial é menor se u está na região central do conjunto de
nodos. No entanto, se u se afasta da região central o polinômio tente a
oscilar violentamente e erro tende a aumentar com o grau do polinômio
interpolador . Esse problema, ilustrado na Figura 5.3, é conhecido como
fenômeno de Runge3.
3Ver nota biográ�ca na p. 89
CAPÍTULO 5. INTERPOLAÇÃO 52
Figura 5.3: Erro na interpolação polinomial.
Para diminuir a oscilação nas regiões não centrais pode-se diminuir o
espaçamento dos nodos nessas regiões, o que leva ao método de Chebyshev
[30, p. 237].
Outro modo de evitar essa oscilação, é usar um polinômio de grau
baixo (1 ou 3, usualmente) para cada intervalo entre nodos (denominado
spline) que veremos na seção seguinte. De um modo geral, a interpolação
por spline é mais con�ável que a interpolação polinomial, a menos que o
valor a ser interpolado �que na região central dos nodos de interpolação
(como mostra o Problema 5.20). Na interpolação pelo método de Lagrange,
mesmo com um tabela de muitos valores, é costume utilizar 2, 4 ou 6 nodos
simétricos ao ponto de interpolação.
5.4 Método do spline cúbico
A ideia fundamental da interpolação por spline4 é �ligar� os nodos de in-
terpolação por segmentos de retas (no caso do spline linear) ou segmentos
curvos (no caso do spline cúbico). A Figura 5.4 mostra a interpolação por
spline linear e cúbico aos nodos do Exemplo 5.1.
Figura 5.4: Interpolação por spline linear e cúbico.
4O termo spline pode ser rastreado até o século 18, mas pelo �nal do século 19 foi
utilizado para se referir a �uma régua �exível de madeira ou borracha dura usada por
desenhistas para projetar curvas interpoladoras grandes�. Tais splines mecânicas foram
usadas, por exemplo, para desenhar as curvas necessárias na fabricação de seções de
cascos de navios. Pregos ou pesos eram colocados sobre a régua para forçá-la a passar
por nodos determinados. A parte livre assume uma geometria tal que minimiza a energia
potencial de �exão [31].
CAPÍTULO 5. INTERPOLAÇÃO 53
5.4.1 De�nição e propriedades
Um spline cúbico é uma função de�nida por partes,
S(x) =
s1(x), x1 ≤ x < x2
s2(x), x2 ≤ x < x3
...
sk(x), xk ≤ x < xk+1
...
sn−1(x), xn−1 ≤ x < xn
, (5.8)
De modo que, em cada intervalo xk ≤ x < xk+1, é de�nido um polinômio
cúbico
sk(x) = ak(x− xk)3 + bk(x− xk)2 + ck(x− xk) + dk. (5.9)
As duas propriedades fundamentais da curva interpoladora S são sua
continuidade e sua suavidade. A condição de continuidade é estabelecida
por
sk(xk) = yk, k = 1, . . . , n− 1, (5.10)
sk(xk+1) = yk+1, k = 1, . . . , n− 1. (5.11)
Enquanto a condição de suavidade é estabelecida por
s′k(xk+1) = s
′
k+1(xk+1), k = 1, . . . , n− 2, (5.12)
s′′k(xk+1) = s
′′
k+1(xk+1), k = 1, . . . , n− 2. (5.13)
Devemos encontrar, então, um conjunto de coe�cientes ak, bk, ck, dk tais
que a função (5.9) satisfaça as condições (5.10 a 5.13).
5.4.2 Dedução dos coe�cientes
Inicialmente, algumas de�nições úteis:
hk = xk+1 − xk , (5.14)
pk =
yk+1 − yk
hk
, (5.15)
e
mk = s
′′
k(xk) . (5.16)
O termo hk é a distância entre duas abscissas consecutivas, pk é a incli-
nação da reta que passa por dois nodos consecutivos e mk é a concavidade
do spline interpolador em cada nodo.
A dedução dos coe�cientes ak, bk, ck e dk, inicia aplicando (5.10) em
(5.9) obtendo
dk = yk , k = 1, . . . , n− 1, (5.17)
Diferenciando (5.9) obtemos
s′k(x) = 3ak(x− xk)2 + 2bk(x− xk) + ck, (5.18)
s′′k(x) = 6ak(x− xk) + 2bk. (5.19)
Usando (5.16) e fazendo x = xk em (5.19) obtemos mk = 2bk. Assim
bk =
mk
2
, k = 1, . . . , n− 1, (5.20)
Aplicando a condição (5.13) em (5.19) obtemos
6ak(xk+1 − xk) + 2bk = 6ak+1(xk+1− xk+1) + 2bk+1
6ak(xk+1 − xk) + 2bk = 2bk+1
e usando (5.14) e (5.20) obtemos
6akhk +mk = mk+1,
portanto
ak =
mk+1 −mk
6hk
, k = 1, . . . , n− 1, (5.21)
Agora, aplicando a condição (5.13) em (5.9) obtemos
ak(xk+1 − xk)3 + bk(xk+1 − xk)2 + ck(xk+1 − xk) + dk = yk+1
akh
3
k + bkh
2
k + ckhk + dk = yk+1
CAPÍTULO 5. INTERPOLAÇÃO 54
Substituindo-se ak, bk e dk pelas expressões já determinadas obtemos
mk+1 −mk
6hk
h3k +
mk
2
h2k + ckhk + yk = yk+1
mk+1 −mk
6
hk +
mk
2
hk + ck =
yk+1 − yk
hk
ck =
yk+1 − yk
hk
− (2mk +mk+1)hk
6
.
Usando (5.15) obtemos
ck = pk −
(2mk +mk+1)hk
6
, k = 1, . . . , n− 1, (5.22)
Observe que os coe�cientes ak, bk, ck e dk são dados em termos de yk,
hk, pk (conhecidos) e mk (desconhecido). Para determinar os valores de
mk aplicamos a condição (5.12) em (5.18) e obtemos
s′k(xk+1) = s
′
k+1(xk+1)
3ak(xk+1 − xk)2 + 2bk(xk+1 − xk) + ck =
= 3ak+1(xk+1 − xk+1)2 + 2bk+1(xk+1 − xk+1) + ck+1
3akh
2
k + 2bkhk + ck = ck+1
Substituindo-se as expressões para ak, bk, ck e ck+1 obtemos
3
mk+1 −mk
6hk
h2k + 2
mk
2
hk + pk −
(2mk +mk+1)hk
6
= pk+1 −
(2mk+1 +mk+2)hk+1
6
,
que após as devidas simpli�cações resulta em
hkmk + 2(hk + hk+1)mk+1 + hk+1mk+2 = 6(pk+1− pk), k = 1, . . . , n− 2,
(5.23)
A equação (5.23) representa um sistema linear subdeterminado pois
temos n− 2 equações e n incógnitas (m1, . . . ,mn). Para tornar o sistema
linear determinado devemos �xar duas condições extras, ditas condições
de contorno. Há muitas maneiras de �xar as condições de contorno, cada
uma delas levando a um spline distinto (ver Problema 5.23). Usando as
condições de contorno
m1 = 0 e mn = 0,
do denominado spline natural, obtemos o sistema linear
Hm = P, (5.24)
com H =
1 0 0 · · · · · · · · · 0
h1 2(h1 + h2) h2 0 · · · · · · 0
0 h2 2(h2 + h3) h3 0 · · · 0
· · · · · · · · · · · · · · · · · · · · ·
0 · · · 0 hn−3 2(hn−3 + hn−2) hn−2 0
0 · · · · · · 0 hn−2 2(hn−2 + hn−1) hn−1
0 · · · · · · · · · 0 0 1
,
m =
m1
m2
m3
...
mn−2
mn−1
mn
, P =
0
6(p2 − p1)
6(p3 − p2)
...
6(pn−2 − pn−3)
6(pn−1 − pn−2)
0
.
5.4.3 Determinação do spline
O procedimento para a obtenção dos coe�cientes do spline é o seguinte
• Usar (5.14) e (5.15) para encontrar hk e pk.
• Construir a matriz H e o vetor P e resolver o sistema linear (5.24)
para encontrar os valores de mk. Observe que a matriz H é diagonal
dominante e pode ser resolvida e�cientemente pelo método de Gauss-
Seidel.
• Usar (5.21), (5.20), (5.22) e (5.17) para encontrar ak, bk, ck e dk.
Exemplo 5.3. Encontre o spline cúbico que interpola os nodos dados
no Exemplo 5.1. Em seguida, use o spline obtido para estimar o valor
de v = f(5).
CAPÍTULO 5. INTERPOLAÇÃO 55
Solução: Usando (5.14) e (5.15) encontramos os valores de hk e pk:
k hk pk
1 1,0 1,3000
2 3,0 -0,0333
3 2,0 0,7500
Em seguida, determinamos a matriz H e o vetor P:
H =
1 0 0 0
1 8 3 0
0 3 10 2
0 0 0 1
, P =
0,00
−8,00
4,70
0,00
Resolvendo o sistema linear Hm = P, obtemos:
m =
0,0000
−1,3254
0,8676
0,0000
,
isto é,
m1 = 0,0000; m2 = −1,3254; m3 = 0,8676 e m4 = 0,0000.
Determinamos, em seguida, os valores de ak, bk, ck e dk:
k ak bk ck dk
1 -0,2209 0,0000 1,5209 1,0000
2 0,1218 -0,6627 0,8582 2,3000
3 -0,0723 0,4338 0,1716 2,2000
Portanto, o spline interpolador é dado por S(x) =
−0,2209(x− 0)3 + 0,0000(x− 0)2 + 1,5209(x− 0) + 1,0000, 0 ≤ x ≤ 1
0,1218(x− 1)3 − 0,6627(x− 1)2 + 0,8582(x− 1) + 2,3000, 1 ≤ x ≤ 4
−0,0723(x− 4)3 + 0,4338(x− 4)2 + 0,1716(x− 4) + 2,2000, 4 ≤ x ≤ 6
,
(5.25)
e seu grá�co é mostrado na Figura 5.4.
Para estimar o valor de v = f(5), notamos que u = 5 pertence ao
terceiro intervalo, portanto
v ≈ −0,0723(5− 4)3 + 0,4338(5− 4)2 + 0,1716(5− 4) + 2,2000
≈ 2,7331
O algoritmo CoefSpline3 determina os coe�cientes do spline cúbico
(natural) interpolador a partir do conjunto de nodos x e y.
O algoritmo ISpline3 determina as ordenadas v para um conjunto de
valores u usando a interpolação por spline cúbico natural a um conjunto
de nodos x e y.
Usando o Matlab: A interpolação por spline pode ser feita com o comando
spline:
>> x = [0; 1; 4; 6];
>> y = [1.0; 2.3; 2.2; 3.7];
>> u = 5;
>> v = spline(x, y, u)
v =
2.4667
Esse comando retorna os valores vi = S(ui) para o conjunto de nodos x e y. Os
valores calculados pelo Matlab diferem dos calculados pelo algoritmo ISpline3
pois as condições de contorno são diferentes. O comando spline usa, por
padrão, as condições de contorno denominadas not-a-knot (nenhum-nó) que
impõe restrições de continuidade também a S′′′(x) em x2 e xn−1 [8, p. 148].
Para conjuntos de 3 ou 4 nodos, os valores do spline interpolador coincidem com
o do polinômio interpolador. Outros tipos de interpolação estão disponíveis no
Spline Toolbox.
5.5 Problemas
Método de Vandermonde
Use o método de Vandermonde e determine o polinômio interpolador aos nodos
dados nos problemas 5.1 e 5.2.
CAPÍTULO 5. INTERPOLAÇÃO 56
Algoritmo 15 CoefSpline3
entrada : x,y
saída : C
Determinação de h e p
1: n ← tamanho de x
2: h ←Zeros(n− 1, 1)
3: p ←Zeros(n− 1, 1)
4: para k ← 1 : n− 1
5: hk ←xk+1 − xk
6: pk ← (yk+1 − yk)/hk
7: �m
Determinação de H, P e m
8: H ←Zeros(n, n)
9: P ←Zeros(n, 1)
10: H1,1 ← 1
11: P1 ← 0
12: para k ← 2 : n− 1
13: Hk,k−1 ←hk−1
14: Hk,k ← 2(hk−1 + hk)
15: Hk,k+1 ←hk
16: Pk ← 6(pk − pk−1)
17: �m
18: Hn,n ← 1
19: Pn ← 0
20: m ←SLGaussSeidel(H;P; 0,5× 10−12; 100)
Determinação dos coe�cientes
21: C ←Zeros(n− 1, 4)
22: para k ← 1 : n− 1
23: Ck,1 ← (mk+1 −mk)/(6hk)
24: Ck,2 ←mk/2
25: Ck,3 ← pk − ((2mk +mk+1)hk)/6
26: Ck,4 ← yk
27: �m
Algoritmo 16 ISpline3
entrada : x,y,u
saída : v
Determina coe�cientes
1: C ←CoefSpline3(x,y)
Interpolação
2: n ← tamanho de x
3: r ← tamanho de u
4: v ←Zeros(r, 1)
5: para i ← 1 : r
Determina intervalo
6: k ← 1
7: enquanto ui > xk+1 e k < n− 1
8: k ← k + 1
9: �m
Determina ordenada
10: t ←ui − xk
11: vi ← ((Ck,1t+ Ck,2)t+ Ck,3)t+ Ck,4
12: �m
CAPÍTULO 5. INTERPOLAÇÃO 57
5.1. .
x 0 2 3
y 2 4 2
5.2. .
x -1 1 2
y 7 -1 1
5.3. + Implemente os algoritmos MVander (p. 12), SLGauss (p. 37) e VPol
(p. 12) na sua linguagem preferida. Em seguida, una todos em um só algoritmo
[c, v] = IVander(x,y,u). Para veri�car a correção da implementação, refaça
o Exemplo 5.1.
5.4. A tabela a seguir fornece alguns valores da função Erro Complementar
Erfc(x). (a) Determine o polinômio interpolador ao conjunto de nodos dados.
(b) Estime o valor de Erfc(0,5). (c) Compare o valor estimado com o valor exato
(use o comando erfc do Matlab).
x Erfc(x)
0,0 1,0000
0,2 0,7773
0,4 0,5716
0,6 0,3961
0,8 0,2579
1,0 0,1573
5.5. Use o método de Vandermonde e determine o polinômio interpolador aos
nodos dados a seguir.
x -1 0 2 4 7
y 0 3 3 -5 -32
O polinômio deveria ter grau 5 − 1 = 4, não? O que houve? Desenhe em uma
mesma �gura os nodos e o polinômio interpolador.
Método de Lagrange
5.6. . Use o método de Lagrange com 2 e 4 nodos para interpolar o valor
v = f(12) aos nodos dados a seguir. Use as equações (5.6) e (5.7).
x 0 5 35 41 81 89
y 13 15 19 20 27 60
5.7. . A tabela a seguir mostra a população brasileira p, em milhões de habi-
tantes, levantada em censos demográ�cos [12]. Use o método de Lagrange com 2
e 4 nodos para estimar a população do Brasil no ano se seu nascimento.
t (anos) 1950 1960 1970 1980 1991 2000 2010
p (106 hab.) 51,9 71,0 94,5 121,1 146,9 169,6 190,8
5.8. . Reconsidere a equação (5.6). Mostre que se u = 12 (x1 + x2) então
v2 =
y1 + y2
2
.
5.9. . Reconsidere a equação (5.7). Mostre que se x1, x2, x3 e x4 são igualmente
espaçados e u = 12 (x2 + x3) então
v4 =
− y1 + 9 y2 + 9 y3 − y4
16
.
5.10. . Use as fórmulas dos Problemas 5.8 e 5.9 para estimar Erfc(0,5) usando
os nodos dados no Problema 5.4.
5.11. + Implemente o algoritmo ILagrange na sua linguagem preferida. Para
veri�car a correção da implementação, refaça o Exemplo 5.2.
5.12. A tabela a seguir fornece alguns valores da função f(x) =
√
x.
x 1 4 9 16 25 36 49 64 81 100
f(x) 1 2 3 4 5 6 7 8 9 10
Use o métodode Lagrange com 2, 4 e 6 nodos simétricos para estimar o valor de√
53. Compare os resultados com o valor exato dado pelo comando sqrt(53) do
Matlab.
CAPÍTULO 5. INTERPOLAÇÃO 58
5.13. A tabela a seguir fornece alguns valores da função de Bessel de primeira
ordem, J0(x).
k xk J0(xk)
1 0,0 1,0000
2 0,5 0,9385
3 1,0 0,7652
4 1,5 0,5118
5 2,0 0,2239
6 2,5 -0,0484
7 3,0 -0,2601
8 3,5 -0,3801
9 4,0 -0,3971
(a) Calcule v2, v4 e v6, os valores do polinômio interpolador com 2, 4 e 6 nodos de
interpolação simétricos a 1,75, isto é, calculados em {x4, x5}, {x3, x4, x5, x6}
e {x2, x3, x4, x5, x6, x7}. Determine os erros relativos entre esses valores apro-
ximados e o valor exato de J0(1,75).
(b) Calcule w2, w4 e w6, os valores do polinômio interpolador com 2, 4 e 6
nodos de interpolação não-simétricos a 1,75, isto é, calculados em {x4, x5},
{x4, x5, x6, x7} e {x4, x5, x6, x7, x8, x9}. Determine os erros relativos entre
esses valores aproximados e o valor exato de J0(1,75).
(c) O que se pode concluir a respeito do efeito da simetria dos nodos de interpo-
lação?
Método do Spline Cúbico
5.14. . Aplicando a técnica de interpolação por spline aos valores da tabela
x 2 3 5 7
y 2 5 6 8
obtemos os seguintes coe�cientes (aproximados)
a1 = −0,48 b1 = 0,00 c1 = 3,48 d1 = 2,00
a2 = 0,33 b2 = −1,43 c2 = 2,05 d2 = 5,00
a3 = −0,09 b3 = 0,55 c3 = 0,27 d3 = 6,00.
(a) Escreva a expressão algébrica do spline.
(b) Determine os valores de S(2,5) e S(6,0).
5.15. . Um spline cúbico natural interpolador aos nodos x = {1, 2, 3} é dado
por
S(x) =
{
−(x− 1)3 + 2(x− 1) + 1, 1 ≤ x ≤ 2
a(x− 2)3 + b(x− 2)2 + c(x− 2) + 2, 2 ≤ x ≤ 3
Utilize as propriedades de continuidade, suavidade e condições de contorno do
spline e encontre os valores de a, b e c.
5.16. . Considere a tabela de valores a seguir:
x 1 2 4 6
y 2 3 7 5
A partir dos dados, determine a matriz H e o vetor P do método do spline cúbico.
Não é necessário resolver o sistema.
5.17. . Reconsidere o Problema 5.16. A solução do sistema Hm = P é
m =
0,00
1,91
−2,73
0,00
.
Encontre a expressão algébrica do spline interpolador.
5.18. + Implemente os algoritmos CoefSpline3 e ISpline3 na sua linguagem
preferida. Para veri�car a correção da implementação, refaça o Exemplo 5.3.
5.19. A tabela de valores a seguir mostra a emissão de luz E (em lúmens) em
função da potência P (em watts) fornecida a uma lâmpada incandescente comum
[14]:
P (W ) 51 55 58 60
E(lm) 607 704 795 864
(a) Encontre o spline interpolador ao conjunto de dados.
(b) Determine a emissão de luz esperada para a potência de 57 W.
5.20. Os valores tabelados no Exemplo 5.1 referem-se a função
f(x) = 1 +
1
2
x+ sen(x).
As expressões para o polinômio interpolador p(x) e para o spline interpolador S(x)
foram dadas nas equações (5.4) e (5.25), respectivamente. Desenhe, na mesma
�gura, os grá�cos das funções erro Ep(x) = p(x)− f(x) e ES(x) = S(x)− f(x).
CAPÍTULO 5. INTERPOLAÇÃO 59
Sortidos
5.21. A tabela a seguir, adaptada de [8, p. 115], mostra o peso w (em mg) de uma
colônia de larvas da mariposa Operophtera Bromata L. Geometridae cultivadas
em uma estufa em função do tempo t (em dias).
t (dias) w (mg)
0 6,67
6 17,33
10 42,67
13 37,33
17 30,10
20 29,31
28 28,74
(a) Desenhe o grá�co dos nodos de interpolação juntamente com o polinômio
interpolador e o spline interpolador. Qual curva apresenta comportamento
mais plausível?
(b) Encontre o peso máximo da colônia determinando o ponto de máximo do
spline interpolador.
5.22. Uma das justi�cativas da preferência do método de Lagrange sobre o de
Vandermonde é a quantidade menor de operações aritméticas. Veri�que isso,
modi�cando os algoritmos envolvidos para incluir contadores de operações arit-
méticas elementares (+, −, ×, ÷). Gere conjuntos de nodos aleatórios de ta-
manho 3 a 20 e determine o número de operações efetuadas para resolver cada
problema com cada método. Faça um grá�co do número de operações em função
do tamanho dos conjuntos de dados. Sugestão: Use os resultados obtidos nos
problemas 1.35 e 4.10.
5.23. . Além das condições de contorno do spline cúbico natural, outras con-
dições muito utilizadas são as do spline cúbico restrito que �xa as inclinações do
spline no primeiro e no último nodo:{
s′1(x1) = E
s′n−1(xn) = D
Mostre que as condições acima levam a{
2h1m1 + h1m2 = 6(p1 − E)
hn−1mn−1 + 2hn−1mn = 6(D − pn−1)
5.24. Modi�que o algoritmo CoefSpline3 para utilizar as condições de con-
torno do spline cúbico restrito mostradas no problema anterior. Desenhe o spline
interpolador aos nodos dados no Problema 5.21 com E = 0,5 e D = 0,0.
5.25. . Outras condições de contorno possíveis são as do spline cúbico periódico
em que, além da igualdade y1 = yn, �xa também:{
s′1(x1) = s
′
n−1(xn)
s′′1(x1) = s
′′
n−1(xn)
Mostre que as condições acima levam a{
2h1m1 + h1m2 + hn−1mn−1 + 2hn−1mn = 6(p1 − pn−1)
m1 −mn = 0
5.26. Modi�que o algoritmo CoefSpline3 para utilizar as condições de con-
torno do spline cúbico periódico mostradas no problema anterior. Atenção: Use
SLGauss para resolver o sistema linear Hm = P pois, agora, a matriz H não é
mais diagonal-dominante. Determine o spline interpolador aos nodos:
x 0 π2 π
3π
2 2π
y 0 1 0 -1 0
Desenhe, no mesmo sistema de coordenadas, os nodos de interpolação, o spline
periódico e a função g(x) = sen(x).
5.27. A tabela seguinte é usada para determinar a expectativa de vida de ho-
mens e mulheres brasileiros a partir da sua idade no ano-base de 2010 [13]. Por
exemplo, uma mulher que tinha 20 anos de idade em 2010, tinha esperança de
viver mais 59,29 anos, isto é, sua expectativa de vida é de 79,29 anos. Para idades
intermediárias, deve-se interpolar os valores.
CAPÍTULO 5. INTERPOLAÇÃO 60
Idade Homem Mulher
0 69,73 77,32
5 66,88 74,01
10 62,00 69,09
15 57,12 64,16
20 52,55 59,29
25 48,19 54,46
30 43,81 49,66
35 39,45 44,90
40 35,15 40,22
45 30,97 35,66
50 26,97 31,25
55 23,16 27,00
60 19,63 22,97
65 16,37 19,19
70 13,43 15,71
75 10,96 12,63
80 9,01 10,06
(a) Determine a expectativa de vida de um homem, que em 2010 tinha 22 anos.
(b) Determine a expectativa de vida de uma mulher, que em 2010 tinha 48 anos.
(c) Determine a sua expectativa de vida.
5.28. O método de Vandermonde pode tornar-se instável quando o tamanho
do sistema linear envolvido torna-se elevado ou quando a matriz de coe�cientes
possui valores muito discrepantes entre si. Nesses casos, o método de Lagrange é
recomendado. Para veri�car isso faça o seguinte:
(a) Reconsidere os dados mostrados no Problema 5.7. Use todos os nodos e o
método de Vandermonde para encontrar pV a população brasileira na sua
data de nascimento. [Se você nasceu em um ano correspondente a um nodo,
use um valor intermediário.]
(b) Repita o procedimento usando o método de Lagrange e encontre pL.
(c) Determine a diferença relativa entre pV e pL. Quantos são os DSE?
(d) Uma maneira de evitar essa diferença de valores consiste em redimensionar os
valores das abscissas dos nodos. Repita os itens anteriores usando t′ = t−195010 .
Os valores de pV e pL �cam mais próximos? Quanto?
5.29. A interpolação inversa consiste em determinar um valor de u no eixo da
abscissas a partir de um valor de v no eixo das ordenadas. Se a função é inversível
(monotônica, por exemplo), o processo é o mesmo da interpolação de Lagrange
convencional apenas trocando os nodos de interpolação x por y. Use essa técnica
com 2, 4 e 6 nodos simétricos e determine estimativas para o zero da função dada
no Problema 5.13.
Capítulo 6
Ajuste de funções
6.1 De�nição do problema
Considere um conjunto de n nodos (x1, y1), (x2, y2), . . . , (xn, yn) e uma
função de ajuste fβ : R→ R determinada por um conjunto de parâme-
tros β = {β0, β1, . . . , βm}. O problema do ajuste de funções consiste em
determinar os valores dos parâmetros β que fazem com que a curva de�-
nida pela função de ajuste f passe �o mais perto possível� dos nodos. Por
exemplo, desejamos determinar os valores β0, β1 e β2 que fazem com que
a curva dada pela função f(x) = β2x2 + β1x+ β0 (uma parábola) passe�o
mais perto possível� de um conjunto de 20 nodos como ilustra a Figura 6.1.
O problema do ajuste de funções também é denominado ajuste de curvas
ou simplesmente ajuste.
A motivação para esse problema geralmente provém da análise de ob-
servações experimentais onde desejamos ajustar uma curva teórica a dados
experimentais (observados) que, devido a erros de medida e a perturbações
externas, oscilam em torno de valores previstos (esperados). O método de
ajuste mais popular, denominado método dos quadrados mínimos, foi pio-
neiramente desenvolvido por Legendre1 e Gauss2.
A função de ajuste obtida pode ser usada para estimar valores fora
1 ÿAdrien-Marie Legendre (1752 - 1833) matemático francês. Uma de suas maiores
contribuições à Matemática foi o desenvolvimento da teoria das integrais elípticas. em
1794 forneceu um prova da irracionalidade do número π2. O método dos mínimos
quadrados foi publicado em seu Nouvelles methodes pour la determination des orbites
des cometes de 1805, porém sem uma prova formal. As primeiras provas formais do
método são devidas a Adrain (1808) e Gauss (1809) [32, 38].
2Ver nota biográ�ca na p. 34
Figura 6.1: Uma curva de ajuste a um conjunto de nodos.
do intervalo de dados, isto é, pode ser usada para extrapolação de dados.
Observe que, em geral, a função de interpolação estudada no Capítulo 5
não pode ser usada desta maneira.
Em princípio, qualquer função pode ser ajustada a um conjunto de
dados. No entanto, neste capítulo, trataremos apenas de dois tipos de
ajuste:
• polinomial : fβ(x) = βmxm + βm−1xm−1 + · · ·+ β2x2 + β1x+ β0;
• exponencial : fa,b(x) = aebx;
61
CAPÍTULO 6. AJUSTE DE FUNÇÕES 62
No ajuste polinomial, a função de ajuste é um polinômio de ordem (grau
máximo) m. No ajuste exponencial, a função de ajuste não é polinomial
mas pode ser transformada em uma função polinomial, de ordem 1. Por
exemplo, a Figura 6.5 mostra uma função polinomial (de grau 2) e uma
função exponencial ajustadas a um conjunto de dados.
6.2 Resíduo quadrático
Como determinar se uma curva passa �o mais perto possível� de um con-
junto de nodos? Ou, em outras palavras, como medir a qualidade de um
ajuste? A maneira mais comum de medir a �distância� entre a função de
ajuste f e os nodos (xi, yi) é denominada resíduo quadrático e é de�nida
por
SQE =
n∑
i=1
[yi − f(xi)]2 .
O resíduo quadrático é uma medida que leva em consideração as dife-
renças entre as ordenadas dos nodos yi e as ordenadas da função de ajuste
f(xi). Quanto mais próximo de zero for o valor de SQE , melhor o ajuste.
Por essa de�nição, uma função interpoladora (como vista no Capítulo 5)
tem resíduo quadrático zero. A notação SQE , proveniente de soma qua-
drática de erros, é de uso comum na Estatística onde o ajuste de funções
é denominado regressão.
Exemplo 6.1. Considere os nodos dados pela tabela a seguir:
i xi yi
1 0,5 4,4
2 2,8 1,8
3 4,2 1,0
4 6,7 0,4
5 8,3 0,2
Determine o resíduo quadrático da função de ajuste (provisória) dada
por
f(x) = −0,25x+ 2,5 (6.1)
aos nodos.
Solução: Para i = 1, . . . , 5 calculamos as ordenadas f(xi) dos pontos
ajustados, as diferenças yi− f(xi) e as diferenças quadráticas [yi − f(xi)]2.
Esses valores são mostrados na tabela a seguir.
i xi yi f(xi) yi − f(xi) [yi − f(xi)]2
1 0,5 4,4 2,375 2,025 4,1006
2 2,8 1,8 1,800 0,000 0,0000
3 4,2 1,0 1,450 -0.450 0,2025
4 6,7 0,4 0,825 -0.425 0,1806
5 8,3 0,2 0,425 -0.225 0,0506
Em seguida determinamos o resíduo quadrático
SQE = 4,1006 + 0,0000 + 0,2025 + 0,1806 + 0,0506
= 4,5344.
A Figura 6.2 mostra os nodos e a reta determinada por f .
Naturalmente, in�nitas retas distintas podem ser traçadas passando por
entre os nodos. A função dada por (6.1), obtida �à olho�, é apenas uma
entre todas (daí o título de provisória). O problema do ajuste é determinar
qual é a função que melhor se ajusta aos nodos, isto é, possui resíduo
quadrático mínimo.
6.3 Ajuste polinomial
O ajuste polinomial consiste em determinar um polinômio de ajuste
f(x) = βmx
m + βm−1x
m−1 + · · ·+ β2x2 + β1x+ β0, (6.2)
(de ordem m, com m+ 1 coe�cientes) cujo resíduo quadrático é mínimo.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 63
Figura 6.2: Uma função de ajuste linear (provisória).
Inicialmente, supomos ser possível que f passe por sobre todos os nodos,
isto é,
f(x1) = y1, f(x2) = y2, . . . , f(xn) = yn. (6.3)
De (6.2) e (6.3) obtemos o sistema linear
f(x1) = βmx
m
1 + · · · + β2x21 + β1x1 + β0 = y1
f(x2) = βmx
m
2 + · · · + β2x22 + β1x2 + β0 = y2
...
...
...
...
...
...
f(xn) = βmx
m
n + · · · + β2x2n + β1xn + β0 = yn
(6.4)
de n equações e m+ 1 incógnitas βm, . . . , β2, β1, β0.
O sistema linear (6.4) pode ser escrito na forma matricial
Xβ = y, (6.5)
fazendo
X =
xm1 · · · x21 x1 1
xm2 · · · x22 x2 1
...
...
...
...
xmn · · · x2n xn 1
,β =
βm
...
β2
β1
β0
,y =
y1
y2
...
yn
,
onde X é denominada matriz de planejamento. Observe que, neste caso,
ela toma a forma de uma matriz de Vandermonde de ordem n× (m+ 1).
Porém, ao contrário do sistema linear (5.3) (visto no Capítulo 5) que
sempre tem solução, o sistema linear (6.5) pode não ter solução uma vez
que, em geral, m << n e os n nodos não estão alinhados sobre uma curva
polinomial de m.
Como obter, então, o polinômio de ajuste de resíduo quadrático mí-
nimo?
6.3.1 Um pouco de Álgebra Linear
Da Álgebra Linear, sabemos que um sistema linear
Ax = b (6.6)
com A ∈ Rm×n, tem solução se e somente se b ∈ Rm é uma combinação
linear dos n vetores-coluna a1, . . . ,an da matriz A,
x1a1 + x2a2 + · · ·+ xnan = b,
sendo as n componentes de x os pesos dessa combinação. Isso é equivalente
a dizer que o sistema linear tem solução se o vetor b pertence ao espaço-
coluna de A, Col(A).
Se b /∈ Col(A), o sistema linear (6.6) não tem solução (clássica). Po-
demos, no entanto, determinar uma pseudo-solução x∗ tal que Ax∗ = b∗,
sendo b∗ o vetor no espaço-coluna de A que está mais próximo de b.
Pode-se mostrar [29, p. 361] que a distância entre b∗ e b será mínima
quando b∗ for a projeção ortogonal de b sobre Col(A) (como mostra a
Figura 6.3). Para isso, é necessário que o vetor (b∗ − b) seja ortogonal a
CAPÍTULO 6. AJUSTE DE FUNÇÕES 64
a1
a2
b
b∗
b∗ − b
Col(A)
Figura 6.3: O vetor b∗ é a projeção ortogonal de b sobre Col(A).
cada ak (os vetores-coluna de A). Lembrando que dois vetores-coluna u e
v são ortogonais quando uTv = 0, então
aT1 (b
∗ − b) = 0, aT2 (b∗ − b) = 0, . . . , aTn(b∗ − b) = 0,
que é equivalente a
AT(b∗ − b) = 0,
e, como b∗ = Ax∗, temos
AT(Ax∗ − b) = 0,
e �nalmente
ATAx∗ = ATb. (6.7)
O sistema linear (6.7) sempre tem solução. Sua solução x∗ é dita solu-
ção dos quadrados mínimos do sistema linear (6.6). Essa denominação
provém do fato de que a distância entre os vetores b∗ e b, determinada
pela norma (tamanho) do vetor diferença b∗ − b,
‖b∗ − b‖ =
√√√√ n∑
i=1
(b∗i − bi)2, (6.8)
é mínima e é uma soma de quadrados.
6.3.2 Obtendo o polinômio de ajuste
Os coe�cientes do polinômio de ajuste (6.2) serão obtidos, pela resolução
do sistema linear (6.5) no sentido dos quadrados mínimos. Isto é, pela
resolução do sistema linear
XTXβ∗ = XTy. (6.9)
De acordo com (6.8), a solução β∗ do sistema linear (6.9) garante que
será mínimo o valor do resíduo quadrático
‖y∗ − y‖2 =
n∑
i=1
(y∗i − yi)2 =
n∑
i=1
[f(xi)− yi]2 = SQE .
Exemplo 6.2. Reconsidere os nodos dados pela tabela do Exemplo 6.1.
Encontre a função polinomial de ordem 1 (uma função a�m) de ajuste
(de resíduo quadrático mínimo) aos nodos.
Solução: De acordo com a tabela, temos
x =
0,5
2,8
4,2
6,7
8,3
, y =
4,4
1,8
1,0
0,4
0,2
.
Assim, temos X, a matriz de Vandermonde (de ordem 1), e sua transposta
XT:
X =
0,5 1
2,8 1
4,2 1
6,7 1
8,3 1
, XT =
[
0,5 2,8 4,2 6,7 8,3
1 1 1 1 1
]
.
A matriz XTX e o vetor XTy do sistema linear (6.9) são
XTX =
[
139,51 22,5
22,5 5
]
, XTy =
[
15,78
7,80
]
.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 65
Resolvendo o sistema linear (pelo método do escalonamento de Gauss) ob-
temos
β∗ =
[
−0,50503,8323
]
,
que corresponde a função
f(x) = −0,5050x+ 3,8323. (6.10)
Os valores ajustados f(xi) são
f(0,5) = 3,5799; f(2,8) = 2,4184; f(4,2) = 1,7115;
f(6,7) = 0,4491; f(8,3) = −0,3589;
e o resíduo quadrático é SQE = 1,8761.
Observe que o resíduo quadrático obtido nesse último exemplo menor
que o obtido no exemplo anterior. De fato, esse último é o menor de todos
os possíveis resíduos quadráticos. A função obtida em (6.10) é denominada
função de ajuste de resíduo quadrático mínimo. A Figura 6.4 mostra
os grá�cos das duas funções de ajuste (a provisória e a de resíduo quadrático
mínimo) aos dados do Exemplo 6.1.
Exemplo 6.3. Reconsidere os nodos dados pela tabela do Exemplo 6.1.
Encontre a função polinomial de ordem 2 (uma função quadrática) de
ajuste (de resíduo quadrático mínimo) aos nodos.
Solução: De acordo com os dados, a matriz de Vandermonde (de ordem
2) X e sua transposta XT são
X =
0,25 0,5 1
7,84 2,8 1
17,64 4,2 1
44,89 6,7 1
68,89 8,3 1
, XT =
0,25 7,84 17,64 44,89 68,890,5 2,8 4,2 6,7 8,3
1 1 1 1 1
.
A matriz XTX e o vetor XTy do sistema linear (6.9) são
XTX =
7133,6419 968,7150 139,5100968,7150 139,5100 22,5000
139,5100 22,5000 5,0000
, XTy =
64,586015,7800
7,8000
.
Figura 6.4: A função de ajuste (provisória) e a função de ajuste dos qua-
drados mínimos.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 66
Resolvendo o sistema linear (pelo método do escalonamento de Gauss) ob-
temos
β∗ =
0,0940−1,3426
4,9787
,
que corresponde a função
f(x) = 0,0940x2 − 1,3426x+ 4,9787;
cujo grá�co é mostrado na Figura 6.5.
Os valores ajustados f(xi) são
f(0,5) = 4,3310; f(2,8) = 1,9565; f(4,2) = 0,9981;
f(6,7) = 0,2032; f(8,3) = 0,3111;
e o resíduo quadrático é SQE = 0,0803.
Figura 6.5: Uma função de ajuste polinomial e uma função de ajuste ex-
ponencial.
Observe que, ao aumentar a ordem do polinômio de ajuste o resíduo
quadrático diminui, isto é, se obtém um ajuste melhor.
Algoritmo 17 AjustePol
entrada : x,y,m
saída : β,v, SQE
Matriz de Vandermonde e resolução do sistema linear
1: X ←MVander(x,m)
2: A ←XTX
3: b ←XTy
4: β ←SLGauss(A,b)
Determinação do resíduo quadrático
5: v ←Xβ
6: SQE ←‖y − v‖2
O algoritmo AjustePol sistematiza o procedimento para o ajuste po-
linomial de ordem m qualquer.
Usando o Matlab: Os coe�cientes do polinômio de ajuste podem ser
obtidos com o comando polyfit, cujo procedimento é basicamente o mesmo
do algoritmo AjustePol.
>> x = [0.5; 2.8; 4.2; 6.7; 8.3];
>> y = [4.4; 1.8; 1.0; 0.4; 0.2];
>> beta = polyfit(x,y,2)
beta =
0.0940 -1.3426 4.9787
Observação: Se os valores da variável independente ou o grau do
polinômio interpolador forem moderadamente elevados, a matriz de Van-
dermonde associada ao sistema linear pode se tornar mal-condicionada e
promover erros de arredondamento. Por exemplo, no Problema 6.9 se usar-
mos os valores 1960, ..., 2010 ou 6, ..., 11 teremos previsões ligeiramente
diferentes. Nesses casos recomenda-se fazer uma mudança de escala na
variável independente e diminuir seus valores.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 67
6.4 Ajuste exponencial
O método dos mínimos quadrados, como visto na seção anterior, somente
é aplicável se a função de ajuste é linear nos coe�cientes. Em alguns casos
de interesse, a função de ajuste não é linear mas pode ser transformada em
outra função, equivalente e linear. Nesta seção trataremos do caso da fun-
ção exponencial, no entanto outras funções também podem ser trabalhadas
(veja, por exemplo, o Problema 6.25).
O ajuste exponencial consiste em determinar os coe�cientes a e b da
função exponencial
f(x) = aebx (6.11)
a um conjunto de dados.
Existem diversos métodos para determinar a função de ajuste exponen-
cial. Uma maneira de proceder consiste em, inicialmente, observar que
y = aebx ⇔ ln y = bx+ ln a (6.12)
se y > 0. Como os coe�cientes b e ln a são constantes, a função da parte
direita de (6.12) é linear. Fazendo z = ln y, β1 = b e β0 = ln a veri�camos
que o ajuste da função (6.11) aos nodos (x, y) é possível a partir do ajuste
da função polinomial
z = β1x+ β0
aos nodos (x, ln y)
O exemplo a seguir ilustra o procedimento
Exemplo 6.4. Considere os nodos dados pela tabela do Exemplo 6.1.
Obtenha a função de ajuste exponencial aos dados.
Solução: Inicialmente obtemos os valores de zi = ln yi para i = 1 : n:
i xi yi zi = ln yi
1 0,5 4,4 1,4816
2 2,8 1,8 0,5878
3 4,2 1,0 0,0000
4 6,7 0,4 -0,9163
5 8,3 0,2 -1,6094
Em seguida, encontramos os coe�cientes do ajuste linear z = β1x+ β0 com
o algoritmo AjustePol
β1 = −0,3936 β0 = 1,6797
e, em seguida, os coe�cientes do ajuste exponencial
a = eβ0 = 5,3641 b = β1 = −0,3936.
Assim, a função de ajuste é dada por
f(x) = 5,3641e−0,3936x.
O resíduo quadrático do ajuste é obtido com
SQE =
n∑
i=1
[f(xi)− yi]2 = 0,0014.
O grá�co da função de ajuste exponencial é mostrado na Figura 6.5.
O ajuste exponencial é muito utilizado em vários problemas de enge-
nharia. Um algoritmo para obter os coe�cientes do ajuste exponencial é
facilmente obtido modi�cando o algoritmo AjustePol e é deixado como
exercício (ver Problema 6.11).
O problema do ajuste é muito importante no contexto das Engenharias
e Ciências Exatas. Diversas técnicas da análise de dados experimentais
tomam por base o ajuste de modelos lineares. Além dos casos vistos aqui,
existem diversas so�sticações e generalizações possíveis (ver Problemas 6.24
e 6.25). Para maiores detalhes, livros de Estatística [49] ou Álgebra Linear
[29] são recomendados.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 68
6.5 Problemas
Ajuste polinomial
6.1. . Considere a tabela de valores a seguir:
x 4 6 7 9
y 1 4 7 9
(a) Determine o polinômio de ordem 1, p1(x) = β1 x + β0, que se ajusta aos
dados.
(b) Determine o resíduo quadrático do ajuste.
(c) Desenhe um grá�co mostrando os nodos e o polinômio de ajuste.
6.2. . Considere a tabela de valores a seguir:
x -1 0 1 3 4
y 2 1 2 4 6
(a) Determine o polinômio de ordem 2, p2(x) = β2 x2 + β1 x+ β0, que se ajusta
aos dados.
(b) Determine o resíduo quadrático do ajuste.
(c) Desenhe um grá�co mostrando os nodos e o polinômio de ajuste.
6.3. . A tabela a seguir fornece a produção P (em peças por hora) de uma
certa máquina em função de seu tempo de serviço T (em anos).
T (anos) 0 1 2 3 4
P (peças/h) 28 28 26 22 19
São dadas três funções:
F (T ) = −0,5T 2 − 0,1T + 28,
G(T ) = −0,5T 2 − 0,3T + 28 e
H(T ) = −0,6T 2 − 0,2T + 29.
Determine o resíduo quadrático de cada uma das funções. Qual delas se ajusta
melhor aos dados?
6.4. . A tabela a seguir fornece a quantidade de vínculos de trabalho formal
em Caxias do Sul em anos recentes [18, p. 5].
t (ano) N (× 1000 vínculos)
2006 135
2007 147
2008 157
2009 157
2010 171
(a) Encontre o polinômio N(t) de ajuste de ordem 1. Sugestão: para facilitar as
contas, use 6, 7, ..., 10 em vez de 2006, 2007, ..., 2010.
(b) Determine o resíduo quadrático do ajuste.
(c) Use o polinômio de ajuste para prever o número de vínculos em 2011.
6.5. + Implemente o algoritmo AjustePol na sua linguagem preferida. Para
veri�car a correção da implementação, refaça o Exemplo 6.2.
6.6. A tabela a seguir, adaptada de [49, p. 235], mostra a alturaH (em polegadas)
e o peso P (em libras) de ursos selvagens anestesiados.
H (pol) P (lb)
53,0 80
67,5 344
72,0 416
72,0 348
73,5 262
68,5 360
73,0 332
37,0 34
(a) Encontre o polinômio ajuste P (H) de ordem 1 (reta).
(b) Determine o resíduo quadrático SQE .
(c) Desenhe no mesmo grá�co: os nodos e a função de ajuste.
(d) Um biólogo observa um urso na selva e estima que tenha 65 polegadas de
altura. Qual deve ser o seu peso?
CAPÍTULO 6. AJUSTE DE FUNÇÕES 69
6.7. A tabela a seguir, adaptada de [44, p. 305], mostra a fração percentual F
de luz polarizada re�etida por uma superfície em função do ângulo de incidência
θ (em graus).
θ (◦) F (%)
50 2,75
52 1,45
54 0,50
56 0,15
58 0,20
60 0,85
(a) Encontre a função de ajuste polinomial F (θ) de ordem 2.
(b) Usando o modelo obtido, faça uma estimativa para o ângulo θB no qual a
fração de luz polarizada é mínima. Na Óptica,esse ângulo é conhecido como
ângulo de Brewster3 [25, p. 31].
(c) Desenhe no mesmo grá�co: os nodos, o polinômio de ajuste e o ponto
(θB , FB).
6.8. A tabela a seguir fornece a energia elétrica E, em kilowatt-hora, consumida
no período de 12 meses em uma certa residência.
t (mês) E (kWh)
jan 159
fev 148
mar 176
abr 203
mai 250
jun 230
jul 289
ago 291
set 314
out 256
nov 220
dez 192
3 ÿDavid Brewster (1781 � 1868), físico escocês. Estudioso dos fenômenos ópticos,
descobriu o efeito da bi-refringência causada pela compressão de alguns sólidos isotró-
picos. Estudou também aspectos da polarização da luz, especialmente quando re�etida
em superfícies de materiais dielétricos e metálicos[53].
(a) Faça t = 1 para janeiro, t = 2 para fevereiro, etc. e encontre o polinômio
f(t) de ajuste de ordem 3.
(b) Desenhe um grá�co mostrando os nodos e o polinômio de ajuste.
(c) Determine o mês tmin no qual a diferença entre f(t) e E(t) é mínima.
(d) Determine, o mês tmax no qual a diferença entre f(t) e E(t) é máxima.
6.9. A tabela a seguir mostra os valores da concentração C de Dióxido de Carbono
medidos no observatório deMauna Loa (Hawaii, EUA) entre os anos de entre 1960
e 2010 [48].
t1 t2 C (ppm)
1960 1 316,91
1970 2 325,68
1980 3 338,68
1990 4 354,35
2000 5 369,52
2010 6 389,85
Deseja-se estimar a concentração de CO2 para o ano de 2020. Para tanto, uma
função de ajuste polinomial de ordem 3 para a concentração de CO2 na atmosfera
em função do tempo t deve ser encontrada.
(a) A partir dos dados da tabela, determine uma função de ajuste polinomial
p1(t) de ordem 3 usando os valores da coluna t1 para variável independente.
Estime o valor de p1(2020).
(b) Determine uma função de ajuste polinomial p2(t) de ordem 3 usando os va-
lores da coluna t2 para variável independente. Estime o valor de p2(7).
(c) Observe que os valores estimados em (a) e (b) são ligeiramente diferentes.
Determine a diferença relativa entre os valores.
(d) Desenhe um grá�co mostrando os nodos e os valores estimados.
Ajuste Exponencial
6.10. . Ajuste uma função exponencial aos dados do Problema 6.2.
6.11. + Estude cuidadosamente o método da na seção 6.4 e implemente uma
function [a, b] = AjusteExp(x, y) para encontrar a função de ajuste exponen-
cial a um conjunto de nodos dados. Para veri�car a correção da implementação
refaça o Exemplo 6.4
CAPÍTULO 6. AJUSTE DE FUNÇÕES 70
6.12. Considere os dados do Problema 6.9.
(a) Encontre a função de ajuste exponencial aos dados.
(b) Faça uma estimativa para a concentração de CO2 para o ano de 2020.
(c) Faça um desenho mostrando os dados originais, a função de ajuste exponen-
cial e o valor previsto para 2020.
6.13. As tabelas a seguir, adaptadas de [50, p. 144], mostram medidas de po-
tência P (em horse power) de alguns automóveis. A tabela mostra também o
tempo de aceleração T (em segundos) que cada automóvel necessita para atingir
60 milhas/hora.
P (HP) T (s)
85 17,6
76 14,7
67 19,9
105 14,5
88 16,0
88 16,5
65 21,0
88 18,0
71 24,8
155 14,9
60 22,1
85 17,0
85 16,7
P (HP) T (s)
110 13,5
75 15,5
72 19,5
180 12,5
200 15,0
140 13,2
52 19,4
71 14,9
75 18,2
98 19,0
61 19,0
140 10,5
60 22,0
(a) Encontre a função de ajuste exponencial T (P ) aos dados.
(b) Determine o tempo de aceleração T esperado de um automóvel com potência
de 80HP.
(c) Determine a potência esperada de um automóvel com tempo de aceleração
de 14 s.
6.14. A capacidade de processamento dos computadores pessoais (PC) tem au-
mentado continuamente desde o início da era da Microeletrônica. Essa capacidade
está intimamente relacionada com a quantidade transistores colocados dentro de
cada microprocessador. Este crescimento é conhecido como Lei de Moore4. A
tabela a seguir mostra a quantidade de transistores montados dentro de cada
modelo de microprocessador fabricado pela empresa Intel [39].
4 ÿGordon Earle Moore (1929 � ) cientista norte-americano. Nasceu em San Fran-
cisco onde obteve o bacharelado em Química (1950, Universidade da Califórnia) e dou-
(a) Ajuste uma função exponencial aos dados.
(b) Desenhe um grá�co mostrando os dados e a função de ajuste. Sugestão: Use
o comando semilogy.
(c) Usando o modelo obtido, faça uma estimativa do número de transistores em
um microprocessador para 2020.
(d) Usando o modelo obtido, faça uma estimativa do ano em que o número de
transistores em um microprocessador atinja a marca de 1× 1012.
Sortidos
6.15. Considere os dados a seguir.
torado em Química e Física (1954, California Institute of Technology - Caltech). Foi
um dos pioneiros no desenvolvimento do circuito integrado. Em 1957, é co-fundador
da Fairchild Semiconductor. Em 1965, publica artigo Cramming more components onto
integrated circuits [35] onde prevê a forma de crescimento da capacidade computacional
dos microprocessadores. Em 1968, é co-fundador da Intel Corporation onde permaneceu
ativo até 1987. Dono de uma das grandes fortunas do mundo, em 2001 doa 600 milhões
de dólares ao Caltech para investimentos em pesquisa e tecnologia. (Adaptado de [52])
CAPÍTULO 6. AJUSTE DE FUNÇÕES 71
x y
0,1 3,81
2,0 4,00
4,1 12,61
4,4 14,56
4,6 15,96
5,2 20,64
6,7 35,49
7,4 43,96
8,4 57,76
9,3 71,89
(a) Use o programa AjustePol para ajustar um polinômio de ordem 5 ao con-
junto de dados.
(b) Observe que (a menos de erros de arredondamento) o grau do polinômio
obtido é efetivamente menor que 5. Por que isso ocorre?
6.16. . Um estudante de Cálculo Numérico usou o programa AjustePol para
ajustar um polinômio de ordem 4 a um conjunto de 15 nodos. Ao terminar de
fazer as contas obteve os seguintes coe�cientes para o polinômio de ajuste:
c =
0.0000
-0.0012
0.0925
-1.1288
6.2356
O estudante escreveu a seguinte conclusão em seu relatório:
�O programa deve ter feito alguma conta errada pois o primeiro coe�-
ciente do polinômio é zero e correspondem a um polinômio de ajuste
de grau 3, o que é impossível�.
A conclusão do estudante está correta? Justi�que.
6.17. Aos dados do Problema 6.8, é possível ajustar uma função trigonométrica
E(t) = C +A sen
(π
6
t+ φ
)
,
onde C = 227,3333, A = −70,1327 e φ = 0,5545.
(a) Desenhe um grá�co mostrando os nodos e a função de ajuste trigonométrica.
(b) Calcule o resíduo quadrático do ajuste.
O problema do ajuste não-linear geral está além do nível proposto neste texto.
Ver, por exemplo, [10, p. 240].
6.18. Em alguns livros, como [19, p. 149] ou [10, p. 234], os coe�cientes do
polinômio de ajuste de ordem 1 são dados por
β0 =
∑
yi
∑
x2i −
∑
xi
∑
xiyi
n
∑
x2i − (
∑
xi)
2 ,
β1 =
n
∑
xiyi −
∑
xi
∑
yi
n
∑
x2i − (
∑
xi)
2 .
Veri�que que as fórmulas acima resultam nos mesmos coe�cientes calculados no
Exemplo 6.2.
6.19. Como medida da qualidade do ajuste, o resíduo quadrático SQE tem alguns
defeitos. Entre eles podemos citar o fato de que SQE se altera se as unidades de
medida são alteradas. Veri�que esse fato calculando o resíduo quadrático de
um ajuste polinomial (grau 1) aos dados do Problema 6.6 para dois sistemas de
unidades: lb - pol e kg - cm (Use 1 pol = 2,54 cm, 1 lb = 0,4536 kg).
6.20. Uma medida de qualidade de ajuste que não possui o defeito discutido no
problema anterior é denominado coe�ciente de determinação r2 obtido por
r2 = 1− SQE
SQT
,
onde
SQT =
n∑
i=1
(yi − ȳ)2 e ȳ =
1
n
n∑
i=1
yi.
Esse coe�ciente varia de 0 (ajuste nulo) a 1 (ajuste perfeito).
(a) Altere a implementação do algoritmo AjustePol para que ele calcule tam-
bém o coe�ciente de determinação.
(b) Reconsidere os dados do Problema 6.19 com os dois sistemas de medidas:
lb - pol e kg - cm. Veri�que que os coe�cientes de determinação (r2) obtidos
são iguais.
(c) Qual é a unidade de medida do coe�ciente de ajuste r2?
6.21. Reconsidere a tabela populacional mostrada no Problema 5.7.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 72
(a) Encontre uma função de ajuste polinomial (ordem 2) e uma função de ajuste
exponencial ao conjunto de dados.
(b) Use o coe�ciente de determinação de�nido no problema anterior para veri�car
qual dos ajustes é melhor.
(c) Estime a população do Brasil parao ano de 2020 usando os dois modelos.
6.22. Um caso interessante do problema de ajuste de funções denominado ajuste
condicionado [16] consiste em determinar a reta de ajuste de grau 1 que é con-
dicionada (forçada) a passar pelo ponto (0, 0), isto é, f(x) = β1x (com β0 = 0).
Nesse caso, o coe�ciente β1 é dado por
β1 =
∑
xiyi∑
x2i
.
Na tabela (adaptada de [3]) a seguir são dados o volume deslocado V (em mi-
lilitros) na imersão de um cilindro de alumínio em um recipiente com glicerina
líquida e respectiva força de empuxo E (em gramas-força) recebida.
V (mL) E (gf)
10 13,3
20 25,5
30 37,9
40 50,3
50 62,9
60 75,3
70 87,4
80 100,3
90 111,8
100 124,5
(a) Use o algoritmo AjustePol e encontre a função de ajuste (sem condiciona-
mento) fsc(V ) = β1V + β0. Veri�que que β0 6= 0.
(b) Use a fórmula acima e encontre a função de ajuste (com condicionamento)
fcc(V ) = c
′
1V . Observe se os valores de β1 e c
′
1 nos ajustes sem e com
condicionamento são iguais.
(c) Faça um desenho mostrando os nodos e as duas retas de ajuste.
O método dos quadrados mínimos pode ser aplicado a qualquer função linear
em seus coe�cientes, como βmfm(x,y)+ · · ·+β1f1(x,y)+β0f0(x,y) = y, mudando
apenas a estrutura da matriz de planejamento X. Os problemas 6.23 e 6.24 a
seguir (adaptados de [29, p. 374]) podem ser resolvidos especi�cando corretamente
a matriz de planejamento.
6.23. A pressão sanguínea p de uma criança sadia é dada por
p = β0 + β1 lnm,
onde m é o peso da criança. Os coe�cientes β0 e β1 são constantes a serem
determinadas. A tabela mostra os dados obtidos por observações de um pediatra.
m (lb) p (mmHg)
44 91
61 98
81 103
113 110
131 112
(a) Determine a matriz de planejamento associada ao problema;
(b) Determine os valores dos coe�cientes β0 e β1;
(c) Estime a pressão p para uma criança de 100 lb.
6.24. De acordo com a primeira lei de Kepler, a órbita de um corpo celeste
(cometa, asteroide, planeta, etc.) é descrita por
r = β0 + β1(r cos θ),
usando as coordenadas polares r e θ, tendo o Sol como origem. Os coe�cientes
β0 e β1 são constantes a serem determinadas. A tabela mostra os dados obtidos
por observações astronômicas de um cometa.
θ (rad) r (u.a.)
0,88 3,00
1,10 2,30
1,42 1,65
1,77 1,25
2,14 1,01
(a) Determine a matriz de planejamento associada ao problema;
(b) Determine o valor dos coe�cientes β0 e β1;
(c) Desenhe o grá�co de r(θ) em coordenadas polares.
CAPÍTULO 6. AJUSTE DE FUNÇÕES 73
6.25. Use o método do ajuste da função exponencial (dada pela equação 6.11)
para ajustar a função logística
p(x) =
1
1 + eβ0+β1x
,
ao conjunto de dados a seguir.
x 6,2 8,5 9,4 10,1 12,7 13,9 15,8 19,3
p(x) 0,02 0,05 0,25 0,33 0,69 0,88 0,93 0,99
(a) Determine o valor dos coe�cientes β0 e β1;
(b) Desenhe o grá�co dos nodos e da função logística de ajuste.
Capítulo 7
Integração Numérica
7.1 De�nição do problema
Considere a integral de�nida dada por
Q =
∫ b
a
f(x) dx. (7.1)
O problema da integração numérica consiste na avaliação de (7.1) por
métodos numéricos. Note que, sendo a integral de�nida, Q é um resultado
numérico. O problema da integração algébrica é mais complicado e está
além do escopo destas notas de aula.
A integração numérica é especialmente indicada quando:
1. É conhecida uma expressão algébrica para f mas sua primitiva F é
de difícil obtenção, isto é, não é conhecida uma expressão para F em
termos de funções elementares.
2. A função f é conhecida em apenas um conjunto discreto de valores.
Estudaremos dois métodos de integração numérica: os métodos de
Newton-Cotes que são indicados para problemas do tipo 1 e o método
dos splines que é indicado para problemas do tipo 2.
7.2 Método de Newton-Cotes simples
O método de Newton1-Cotes2 de ordem n consiste em estimar o valor da
integral (7.1) através da média ponderada∫ b
a
f(x) dx ≈ (b− a) [w0f(x0) + w1f(x1) + · · ·+ wnf(xn)] , (7.2)
onde
x0 = a, x1 = a+ h, x2 = a+ 2h, . . . , xn = a+ nh = b (7.3)
são n+ 1 nodos no intervalo de integração [a, b] igualmente espaçados com
h =
b− a
n
e w0, w1, . . . , wn são os pesos da ponderação.
A quantidade de nodos e os respectivos pesos são de�nidos de acordo
com a ordem do método. A ideia central é aproximar a função de integração
f por um polinômio interpolador p de grau n. Os pesos w de ordem n são
1Ver nota biográ�ca na p. 28
2 ÿRoger Cotes (1682 - 1716), matemático inglês. Foi o editor da segunda edição
do Philosophiae naturalis principia mathematica de Newton. Trabalhou na teoria dos
logaritmos e nos métodos de aproximação racional por frações continuadas. Sua obra
póstuma, Harmonia mensurarum de 1722, desenvolve métodos de interpolação parti-
cularmente úteis no estudo da órbita de cometas e métodos de integração numérica.
[38].
74
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 75
determinados de modo que a soma ponderada seja igual a integral exata
do polinômio. A Figura 7.1 mostra os polinômios utilizados nas primeiras
4 ordens do método de Newton-Cotes.
Figura 7.1: Diferentes ordens da quadratura de Newton-Cotes.
A Tabela 7.1 mostra os pesos utilizados nas primeiras ordens do método
de Newton-Cotes que, por razões históricas, recebem nomes próprios.
Tabela 7.1: Pesos das fórmulas de Newton-Cotes
Ordem w0 w1 w2 w3 w4 Regra
0 1 retângulo
1 1/2 1/2 trapézio
2 1/6 4/6 1/6 1a de Simpson3
3 1/8 3/8 3/8 1/8 2a de Simpson
4 7/90 32/90 12/90 32/90 7/90 Boole4
Exemplo 7.1. Determine estimativas para a integral
∫ 4
1
√
x dx usando
as ordens 2 e 4 do método de Newton-Cotes.
Solução: Para a estimativa de ordem 2, tem-se
a = 1, b = 4, h =
b− a
n
=
4− 1
2
= 1,5000.
Os nodos, os valores da função e os respectivos pesos são:
i xi f(xi) wi
0 1,0000 1,0000 0,1667
1 2,5000 1,5811 0,6667
2 4,0000 2,0000 0,1667
2 ÿThomas Simpson (1710 - 1761) matemático inglês. Em 1737 publica seu A New
Treatise of Fluxions, um livro didático de alta qualidade dedicado ao cálculo de �uxões, a
versão newtoniana do cálculo in�nitesimal. O método de integração numérica conhecido
hoje como �regra de Simpson�, embora apareça em seu livro, é devido Newton como o
próprio Simpson reconheceu [38].
3 ÿGeorge Boole (1815 - 1864) matemático inglês. Sua contribuição mais famosa (a
álgebra booleana) é a incorporação da lógica pela matemática através da álgebra. Boole
também trabalhou em equações diferenciais e cálculo das diferenças �nitas. A regra de
integração que leva seu nome aparece em 1860 em seu Treatise on the Calculus of Finite
Di�erences [38].
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 76
Assim temos
Q2 = (b− a)
∑
wif(xi)
= (4− 1)(0,1667 · 1,0000 + 0,6667 · 1,5811 + 0,1667 · 2,0000)
= 4,6623.
Para a estimativa de ordem 4, tem-se
a = 1, b = 4, h =
b− a
n
=
4− 1
4
= 0,7500.
Os nodos, os valores da função e os respectivos pesos são:
i xi f(xi) wi
0 1,0000 1,0000 0,0778
1 1,7500 1,3229 0,3556
2 2,5000 1,5811 0,1333
3 3,2500 1,8028 0,3556
4 4,0000 2,0000 0,0778
Assim temos
Q4 = (b− a)
∑
wif(xi)
= (4− 1)(0,0778 · 1,0000 + 0,3556 · 1,3229 + 0,1333 · 1,5811+
0,3556 · 1,8028 + 0,0778 · 2,0000)
= 4,6665.
Como o valor exato da integral é dado por
Q̂ =
∫ 4
1
√
x dx =
[
x3/2
3/2
]4
1
=
14
3
= 4,6667,
o erro relativo em Q2 é �rel = −9,4050 × 10−4 (2 DSE) e erro relativo em
Q4 é �rel = −3,9233× 10−5 (4 DSE).
O método que estudaremos, com nodos de�nidos pelas equações (7.3),
é denominado método de Newton-Cotes fechado por incluir os extremos a
e b do intervalo de integração. Existem também, variações que não incluem
os extremos a e b e são ditos abertos. Ainda, existem métodos em que
os nodos não são igualmente espaçados, como o método de Gauss [1,
p. 887] [40, p. 160].
7.2.1 Dedução dos pesos de integração
De modo geral, a dedução dos pesos das ponderações é feita através dos
seguintes passos:
Passo 1: Inicialmente realizamos a mudança na variável de integração
x = a+ (b− a)t, (7.4)
com dx = (b− a)dt. Assim (7.1) pode ser reescrita como
Q =
∫ b
a
f(x) dx =
∫ 1
0
f [a+ (b− a)t](b− a) dt.
Rede�nindo
φ(t) = f [a+ (b− a)t],
obtemos
Q = (b− a)
∫ 1
0
φ(t) dt. (7.5)
Assim a integral original(7.1) no intervalo [a, b] e transformada na
integral (7.5) no intervalo [0, 1].
Passo 2: A integral em (7.5) é aproximada pela média ponderada∫ 1
0
φ(t) dt ≈ w0φ(t0) + w1φ(t1) + · · ·+ wnφ(tn), (7.6)
com
tk =
k
n
, k = 0, . . . , n. (7.7)
Em seguida, aproximando-se a função φ por um polinômio interpolador
de grau n
φ(t) ≈ cn tn + · · ·+ c1 t+ c0,
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 77
obtém-se, no lado esquerdo de (7.6),∫ 1
0
φ(t) dt =
∫ 1
0
(cn t
n + · · ·+ c1 t+ c0) dt
= cn
∫ 1
0
tn dt+ · · ·+ c1
∫ 1
0
t dt+ c0
∫ 1
0
1 dt
= cn
1
n+ 1
+ · · ·+ c1
1
2
+ c01, (7.8)
e, no lado direito de (7.6),
w0φ(t0) + w1φ(t1) + · · ·+ wnφ(tn) =
= w0 (cnt
n
0 + · · ·+ c1t0 + c0) + · · ·+ wn (cntnn + · · ·+ c1tn + c0)
= cn (w0t
n
0 + w1t
n
1 + · · ·+ wntnn) + · · ·+ c0 (w0 + w1 + · · ·+ wn) . (7.9)
Comparando os fatores de c0, c1, . . . , cn em (7.8) e (7.9) obtém-se
w0 + w1 + w2 + · · · + wn = 1
w0t0 + w1t1 + w2t2 + · · · + wntn = 1/2
w0t
2
0 + w1t
2
1 + w2t
2
2 + · · · + wnt2n = 1/3
...
...
... +
... =
...
w0t
n
0 + w1t
n
1 + w2t
n
2 + · · · + wntnn = 1/(n+1)
(7.10)
Agora, substituindo (7.7) em (7.10) obtém-se o sistema linear
w0 + w1 + w2 + · · · + wn = 1
+ w1
1
n + w2
2
n + · · · + wn = 1/2
+ w1
(
1
n
)2
+ w2
(
2
n
)2
+ · · · + wn = 1/3
...
... +
... =
...
+ w1
(
1
n
)n
+ w2
(
2
n
)n
+ · · · + wn = 1/(n+1)
,
que, por sua vez, pode ser escrito na forma matricial
Cw = d, (7.11)
com
C =
1 1 1 · · · 1
0 1/n 2/n · · · 1
0 (1/n)2 (2/n)2 · · · 1
...
...
...
...
0 (1/n)n (2/n)n · · · 1
,w =
w0
w1
w2
...
wn
,d =
1
1/2
1/3
...
1/(n+1)
.
A resolução do sistema (7.11) para cada ordem n = 0, 1, 2, 3, 4, resulta
no conjunto de pesos mostrados na Tabela 7.1.
Passo 3: Substituindo (7.7) em (7.4) obtemos os nodos de integração
(7.3). Os pesos permanecem inalterados.
Observação: Uma dedução ligeiramente diferente da que �zemos acima
pode ser encontrada em [15].
Exemplo 7.2. A partir do sistema linear dado por (7.11), obtenha os
pesos da quadratura de Newton-Cotes de ordem 2.
Solução: Para n = 2 o sistema linear (7.11) torna-se 1 1 10 1/2 1
0 1/4 1
w0w1
w2
=
11/2
1/3
.
que pode ser resolvido com a ajuda do algoritmo SLGauss (p. 37):
>> C = [1 1 1; 0 1/2 1; 0 1/4 1]; d = [1; 1/2; 1/3];
>> format rat
>> w = SLGauss(C,d)
w =
1/6
2/3
1/6
Para se obter uma estimativa de erro relativo para Q utiliza-se, em
geral, a diferença relativa entre duas estimativas Qi e Qj calculadas por
ordens distintas
�rel ≈
Qi −Qj
Qj
,
com j > i (em geral, usa-se j = 2i).
Exemplo 7.3. Determine uma estimativa de erro relativo para a in-
tegral do Exemplo 7.1.
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 78
Solução: Como Q2 = 4,6623 e Q4 = 4,6665 tem-se
�rel ≈
Q2 −Q4
Q4
≈ 4,6623− 4,6665
4,6665
≈ −9,0130× 10−4
As duas estimativas compartilham 2 DSE.
7.3 Método de Newton-Cotes composto
O método de Newton-Cotes tal como visto na seção anterior é su�ciente-
mente simples para o cálculo manual mas não é muito utilizado nas imple-
mentações computacionais. Isso ocorre por que, para ordens elevadas, o
polinômio interpolador pode sofrer grandes oscilações (fenômeno de Runge,
como visto no Capítulo 5) que interferem negativamente na precisão das
estimativas.
Para corrigir esse problema, no método de Newton-Cotes com-
posto, inicialmente divide-se o intervalo original [a, b] em m subintervalos
(composições) de tamanho
H =
b− a
m
.
Em seguida, aplica-se o método de Newton-Cotes simples com uma regra
de ordem n baixa em cada subintervalo obtendo-se m resultados parciais
Sj . O resultado �nal é obtido, somando-se os resultados parciais:
Qm,n =
m∑
j=1
Sj , com Sj = H
n∑
i=0
wif(xi).
A Figura 7.2 mostra o esquema para 3 composições de ordem 2.
Figura 7.2: Quadratura NC composta: 3 composições, ordem 2.
Exemplo 7.4. Determine uma estimativa Q3,2 para a integral do
Exemplo 7.1 usando m = 3 composições do método de Newton-Cotes
de ordem n = 2.
Solução: O intervalo original de a = 1 até b = 4 deve ser dividido
em m = 3 intervalos de tamanho H = b−am =
4−1
3 = 1,0000. Por sua
vez, esses intervalos são subdivididos em n = 2 subintervalos de tamanho
h = H/n = 1/2 = 0,5000.
Em cada composição j obtemos uma estimativa parcial Sj da integral:
S1 = H
∑
i
wif(xi)
= 1,0000 · (0,1667 · 1,0000 + 0,6667 · 1,2247 + 0,1667 · 1,4142)
= 1,2189
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 79
S2 = H
∑
i
wif(xi)
= 1,0000 · (0,1667 · 1,4142 + 0,6667 · 1,5851 + 0,1667 · 1,7321)
= 1,5785
S3 = H
∑
i
wif(xi)
= 1,0000 · (0,1667 · 1,7321 + 0,6667 · 1,8708 + 0,1667 · 2,0000)
= 1,8692
A tabela a seguir sistematiza os valores calculados:
j i xi f(xi) wi Sj
1 0 1,0000 1,0000 0,1667
1 1,5000 1,2247 0,6667
2 2,0000 1,4142 0,1667 1,2189
2 0 2,0000 1,4142 0,1667
1 2,5000 1,5851 0,6667
2 3,0000 1,7321 0,1667 1,5785
3 0 3,0000 1,7321 0,1667
1 3,5000 1,8708 0,6667
2 4,0000 2,0000 0,1667 1,8692
A estimativa �nal é dada pela soma das estimativas parciais:
Q3,2 =
∑
j
Sj = 1,2189 + 1,5785 + 1,8692 = 4,6666
NoMatlab obtemos Q32 = 4.666563053222490 com erro relativo �rel =
−2,2203 × 10−5 (4 DSE). O método NC composto produz, em geral, me-
lhores estimativas que o método NC simples com a mesma quantidade de
nodos. A implementação do método de Newton-Cotes composto não é
muito complicada e é deixada como exercício (Veja o Problema 7.12).
7.4 Método de Newton-Cotes adaptável
O método de Newton-Cotes composto, visto na seção anterior, é bastante
preciso mas não é muito e�ciente (do ponto de vista computacional) pois
realiza a mesma quantidade de avaliações da função tanto em partes mais
�suaves� (sujeitas a menor erro) quanto em partes menos suaves (sujeitas
a maior erro).
Uma alternativa mais e�ciente, denominada de método de Newton-
Cotes adaptável, consiste em:
(a) Fazer uma estimativa Q1,2 para a integral no intervalo [a, b] usando
uma fórmula de baixa ordem (usaremos n = 2);
(b) Subdividir o intervalo original em dois: [a, c] e [c, b] e fazer uma es-
timativa composta Q2,2 usando a fórmula de ordem baixa em cada
subintervalo. Veja a Figura 7.3.
Figura 7.3: Determinação de Q1,2 e Q2,2 no método de Newton-Cotes
adaptável (ordem 2).
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 80
Algoritmo 18 QuadNCAdapt
entrada : f, a, b, tol, kmax
saída : Q, �rel, k
Inicialização
1: k ← 0
2: c ← (a+ b)/2
3: fa ← f(a)
4: fc ← f(c)
5: fb ← f(b)
Chamada inicial da função recursiva
6: [Q, �rel, k] ←QuadRec(f, a, c, b, fa, fc, fb, k, tol, kmax)
7: �m
(c) Se a diferença relativa entre Q1,2 e Q2,2 é su�cientemente pequena, o
método termina. Caso contrário, o método é reaplicado recursivamente
aos subintervalos [a, c] e [c, b].
Os algoritmos QuadNCAdapt e QuadRec sistematizam o método.
A Figura 7.4 mostra como se distribuem os pontos de avaliação de uma
função no método de Newton-Cotes adaptável. Observe que nas regiões
menos suaves da função o algoritmo utiliza mais pontos de avaliação da
função.
No passo 10 do algoritmo QuadRec é feita uma estimativa para Q̂
a partir de Q1,2 e Q2,2, denominada extrapolação de Romberg5. Pode-se
mostrar [30, p. 362] que se Q1,2 e Q2,2 são estimativas para Q̂ usando,
respectivamente, 1 e 2 composições de ordem 2 (regra de Simpson) então
Q̂−Q2,2 ≈
Q̂−Q1,2
16
. (7.12)
5 ÿWerner Romberg (1909 - 2003) físico e matemático alemão. Por conta do regime
nazista e da guerra na europa, teve que migrar por países da europa diversas vezes:
Ucrânia (1934), Checoslováquia (1937), Noruega (1938), Suécia (1940), novamente No-
ruega (1947) e �nalmente retorna a Alemanha (1968). Em 1955 publica seu Vereinfachte
Numerische Integration contendo o método de integração numérica que leva seu nome.
Embora tenha se graduado em física, é reconhecido por suas contribuições à matemática
aplicada, aos métodos numéricos e à computação digital. [38].
Algoritmo 19 QuadRec
entrada : f, a, c, b, fa, fc, fb, k, tol, kmax
saída : Q, �rel, k
Inicialização
1: k ← k + 1
2: d ← (a+ c)/2
3: e ← (c+ b)/2
4: fd ← f(d)
5: fe ← f(e)
Estimativas
6: Q1,2←
b− a
6
(fa + 4fc + fb)
7: Q2,2 ←
b− a
12
(fa + 4fd + 2fc + 4fe + fb)
8: �rel ←ErroRel(Q1,2, Q2,2)
9: se (|�rel| ≤ tol e k ≥ 3) ou k ≥ kmax
Retorno
10: Q ←Q2,2 + (Q2,2 −Q1,2)/15
11: senão
Recursão
12: [QE , �relE , kE ] ←QuadRec(f, a, d, c, fa, fd, fc, k, tol, kmax)
13: [QD, �relD, kD] ←QuadRec(f, c, e, b, fc, fe, fb, k, tol, kmax)
14: Q ←QE +QD
15: �rel ←
�relE ·QE + �relD ·QD
QE +QD
16: k ←max(kE , kD)
17: �m
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 81
Figura 7.4: Pontos de avaliação de f no método de Newton-Cotes adaptá-
vel.
Isolando Q̂ na expressão acima, obtemos Q̂ ≈ Q2,2 + (Q2,2−Q1,2)/15 (Ver
Problema 7.13).
No passo 14, a estimativa de integral Q sobre todo o intervalo é feita
pela soma da parcela da esquerda QE e da direita QD. No passo 15, estima-
se o erro relativo total pela média ponderada dos erros relativos em cada
parcela (Ver Problema 2.26).
Usando o Matlab: Para determinar o valor de uma integral de�nida usar
o comando quad.
>> format long
>> f = @(x) sqrt(x);
>> a = 1;
>> b = 4;
>> Q = quad(f, a, b)
Q = 4.666666648763247
Este recurso utiliza, basicamente, o método de Newton Cotes adaptável que
descrevemos com uma tolerância na ordem de 10−6. A implementação toma
algumas salva-guardas contra singularidades [21].
7.5 Método do Spline Cúbico
Nos métodos de Newton-Cotes vistos até agora, a integral de�nida (7.1) é
estimada a partir da integração de uma função interpoladora polinomial ou
polinomial por partes da função integranda f . A ideia básica do método
do spline cúbico, é interpolar f , a partir dos nodos dados, por um spline
cúbico (como visto na seção 5.4) e estimar o valor de sua integral de�nida.
Se o intervalo [a, b] é particionado por n nodos tais que
a = x1 < x2 < . . . < xn = b
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 82
e o spline S(x) dado por (5.8) e (5.9) então temos
Q =
∫ b
a
f(x) dx
≈
∫ b
a
S(x) dx
≈
n−1∑
k=1
∫ xk+1
xk
sk(x) dx
≈
n−1∑
k=1
∫ xk+1
xk
[
ak(x− xk)3 + bk(x− xk)2 + ck(x− xk) + dk
]
dx (7.13)
A resolução da integral (7.13) não é complicada (veja Problema 7.21).
Fazendo hk = xk+1 − xk o tamanho do k-ésimo subintervalo obtemos a
fórmula da quadratura pelo método dos splines:
Q =
n−1∑
k=1
(
ak
4
h4k +
bk
3
h3k +
ck
2
h2k + dkhk
)
(7.14)
Exemplo 7.5. Reconsidere o Exemplo 5.1. Determine a integral de-
�nida de f no intervalo de 0 a 6 a partir dos nodos dados aplicando o
método dos splines cúbicos.
Solução: Os coe�cientes do spline cúbico interpolador já foram determi-
nados no Exemplo 5.3, portanto necessitamos apenas calcular a integral a
Algoritmo 20 QuadSpline3
entrada : x,y
saída : Q
Matriz de coe�cientes do spline
1: C ←CoefSpline3(x,y)
Estimativa para Q
2: n ← tamanho de x
3: Q ← 0
4: para k ← 1 : n− 1
5: h ←xk+1 − xk
6: Q ←Q+
(((
Ck,1
4 h+
Ck,2
3
)
h+
Ck,3
2
)
h+ Ck,4
)
h
7: �m
partir de (7.14):
Q =
n−1∑
k=1
(
ak
4
h4k +
bk
3
h3k +
ck
2
h2k + dkhk
)
=
−0,2209
4
· 14 + 0,0000
3
· 13 + 1,5209
2
· 12 + 1,0000 · 1 +
0,1218
4
· 34 + −0,6627
3
· 33 + 0,8582
2
· 32 + 2,3000 · 3 +
−0,0723
4
· 24 + 0,4338
3
· 23 + 0,1716
2
· 22 + 2,2000 · 2
= 1,7052 + 7,2650 + 5,6108
= 14,5810
Para efeito de comparação, integrando o polinômio interpolador em
(5.4), obtém-se Qp = 14.3400. A diferença relativa desses valores é uma
estimativa para o erro relativo: �rel ≈ −0,0165 (1 DSE).
O algoritmo QuadSpline3 implementa a quadratura pelo método dos
splines cúbicos. Observe que na linha 6 a fórmula está com o termo h
fatorado como na forma de Horner, o que diminui o número de operações
aritméticas.
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 83
7.6 Problemas
Newton-Cotes simples
Para as integrais dadas nos Problemas 7.1 a 7.4 a seguir (a) Aplique as fórmulas
de Newton-Cotes de ordem 1, 2, 3 e 4 para estimar as integrais, (b) Determine
o valor exato de cada integral (resolva analiticamente) e (c) Determine o erro
relativo de cada estimativa feita no item (a).
7.1. .
∫ 1
−1 e
x dx.
7.2. .
∫ e
1
1
x dx.
7.3. .
∫ π
0
sen(x) dx.
7.4. .
∫ 1
−1(x+ 1)
2(x− 1)2 dx.
7.5. . Resolva o sistema linear (7.11) para encontrar os pesos da quadratura
de Newton-Cotes de ordem n = 4.
7.6. Resolva o sistema linear (7.11) para encontrar os pesos da quadratura de
Newton-Cotes de ordem n = 10. Use format long para visualizar os resultados.
7.7. + Estude cuidadosamente o método de Newton-Cotes simples e implemente
uma function [Q] = QuadNC(f, a, b, n) que recebe uma função f , os extremos
a e b do intervalo de integração e a ordem n (= 1, 2, 3, ou 4) e retorna uma
estimativa Q para a integral. Para veri�car a correção da implementação, refaça
o Exemplo 7.1.
Newton-Cotes composto
Para as integrais dadas nos Problemas 7.8 a 7.11 a seguir: (a) Determine Q6,1,
uma estimativa para a integral usando m = 6 composições do método de Newton-
Cotes de ordem n = 1; (b) Determine Q3,2, uma estimativa para a integral usando
m = 3 composições do método de Newton-Cotes de ordem n = 2 [Repare que os
nodos são os mesmos, os pesos é que mudam]; (c) Determine a diferença relativa
entre Q6,1 e Q3,2.
7.8. . Integral do Problema 7.1.
7.9. . Integral do Problema 7.2.
7.10. . Integral do Problema 7.3.
7.11. . Integral do Problema 7.4.
7.12. + Estude cuidadosamente o método de Newton-Cotes composto e imple-
mente uma function Q = QuadNCComp(f, a, b, m, n) que recebe uma função
f , os extremos a e b do intervalo de integração, o número m de composições
para as fórmulas de ordem n (= 1, 2, 3, ou 4) e retorna uma estimativa Q para
a integral. Para veri�car a correção da implementação, refaça o Exemplo 7.4.
Sugestão: utilize o programa implementado no Problema 7.7.
7.13. Considere a integral dada no Problema 7.1.
(a) Determine o valor exato Q̂ da integral.
(b) Determine Q1,2, Q2,2, Q4,2 e Q8,2, estimativas para a integral usando
m = 1, 2, 4, 8 composições do método de Newton-Cotes de ordem 2 (regra
de Simpson).
(c) Veri�que se a relação (7.12) é satisfeita, isto é, veri�que se
tm =
Q̂−Qm,2
Q̂−Q2m,2
≈ 16,
para m = 1, 2, 4.
7.14. Devido a sua estrutura simétrica, pode-se obter fórmulas �fechadas� para
o método de Newton-Cotes composto. Mostre que a fórmula
Qm,1 = h
[
1
2
(f0 + fm) +
m−1∑
i=1
fi
]
com
fi = f(xi), xi = a+ ih, (i = 0, . . . ,m), e h =
b− a
m
é equivalente a m composições de ordem 1.
Newton-Cotes adaptável
7.15. + Implemente os algoritmo QuadNCAdapt e QuadRec na sua lingua-
gem preferida. Para veri�car a correção da implementação, compare as aproxi-
mações obtidas com os valores exatos das integrais dos Problemas 7.1 a 7.4.
As integrais dadas nos Problemas 7.16 a 7.19 a seguir não podem ser resol-
vidas analiticamente. Use o método de Newton-Cotes adaptável para estimar o
valor das integrais com tol = 0,5× 10−12 e kmax = 15.
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 84
7.16. Comprimento da curva y = sen(t) no intervalo de 0 a π:
L =
∫ π
0
√
1 + cos2(t) dt.
7.17. Função Erro. Use x = 1:
Erf(x) =
2√
π
∫ x
0
e−t
2
dt.
7.18. Integral elíptica completa de 1a espécie. Use k = 0,5:
K(k) =
∫ π/2
0
1√
1− k2 sen2(t)
dt.
7.19. Integral de Fresnel6. Use x = 1:
C(x) =
∫ x
0
cos
(π
2
t2
)
dt.
Splines
7.20. . Reconsidere Problema 5.14. Com os splines obtidos, estime a integral
de f no intervalo dado.
7.21. . Faça a integração indicada na equação (7.13) e obtenha a equação
(7.14).
7.22. + Implemente o algoritmo QuadSpline3 na sua linguagem preferida.
Para veri�car a correção da implementação, refaça o Exemplo 7.5.
7.23. A �gura a seguir mostra o �uxo de veículos na rodovia BR-101 na véspera
de ano novo de 2009 [41]. O �uxo, medido de hora em hora, é dado em veículos
por minuto. Use a quadratura por splines para estimar a quantidade total de
veículos que trafegaram no período de 24 horas do dia 30 de dezembro. Atenção:
informação que não consta na �gura: 26 veículos/min às 24 h. Cuidado com as
unidades de medida.
6 ÿAugustin-Jean Fresnel (1788 - 1827), engenheiro e físico francês. Suas mais
importantes contribuições estão no estudo do comportamento ondulatório da luz, tanto
de forma experimental quanto teórica. As integrais deFresnel surgem da descrição do
campo distante em fenômenos de difração óptica [54].
Sortidos
7.24. Os métodos de Newton-Cotes simples e splines não são equivalentes. Para
veri�car isso, considere a integral do Problema 7.1:
(a) Encontre estimativas para a integral usando o método de Newton-Cotes sim-
ples com ordens 1, 2, 3, e 4;
(b) Usando os mesmos conjuntos de nodos, encontre estimativas usando o método
dos splines;
(c) Determine a diferença relativa entre cada par de estimativas.
7.25. A cobertura parabólica do hangar de dirigíveis de Orly, França, foi um
audacioso projeto de engenharia em concreto pré-tensionado para a sua época
(1923). Destruído na 2a guerra mundial, possuía cerca 90 m de largura, 60 m de
altura e 175 m de comprimento.
(a) Mostre que o arco parabólico pode ser descrito por
f(x) = H
(
1− 4x
2
L2
)
.
(b) Determine o comprimento S do arco parabólico resolvendo
S =
∫ L/2
−L/2
√
1 + [f ′(x)]2 dx.
CAPÍTULO 7. INTEGRAÇÃO NUMÉRICA 85
x
y
H
−L2 L2
7.26. Omaior dos tanques cilíndricos, mostrados na �gura a seguir, tem diâmetro
D = 1,5 m, comprimento C = 4 m com líquido até a altura h = 1,2 m.
D
C
h
O volume de líquido é dado pela integral
V (h) = 2C
∫ h
0
√
x(D − x) dx.
(a) Determine uma estimativa numérica para o volume de líquido no tanque.
(b) Determine o erro relativo entre o resultado numérico obtido acima e o resul-
tado exato obtido por
V (h) = C
{
πD2
8
+
(
h− D
2
)√
h(D − h)− D
2
4
arcsin
(
1− 2h
D
)}
.
Capítulo 8
Equações Diferenciais Ordinárias
8.1 De�nição do problema
Equações diferenciais combinam uma função incógnita u e suas derivadas:
u′, u′′, . . . , u(k). Se a função incógnita é dependente de apenas uma variável,
a equação é dita ordinária. A ordem de uma equação diferencial é dada
por sua derivada de mais alta ordem. As equações diferenciais podem ser
de�nidas em um intervalo I ⊆ Rn e restritas a condições de contorno (ou
iniciais) nas bordas do intervalo. Resolver uma equação diferencial, implica
determinar a função incógnita u que satisfaz a equação e suas condições de
contorno. Existem inúmeras maneiras de construir equações diferenciais e
as técnicas de resolução dependem da classi�cação da equação [7].
Um Problema de Valor Inicial (PVI), se constitui em uma equação
diferencial ordinária cuja solução u(t) está de�nida em um intervalo fechado
[a, b] e restrita a assumir um valor especi�cado no início do intervalo:
u′ = F (t, u) (equação diferencial)
a ≤ t ≤ b (intervalo)
u(a) = ua, (valor inicial)
onde a função F determina a derivada u′ em termos de t e de da própria
função incógnita a u.
A resolução numérica de um PVI consiste em determinar os valores de
u(ti) para um conjunto de nodos ti em [a, b]:
a = t1 < t2 < . . . < tn = b.
Se o método de resolução utiliza nodos igualmente espaçados (ti+1 = ti+h),
dizemos que ele é de passo �xo. Caso contrário é de passo variável. Nesse
capítulo, nos ocuparemos de alguns métodos de passo �xo.
8.2 Método de Euler
O método de Euler1 toma por base a expansão de u em sua série de Taylor:
u(t+ h) = u(t) + u′(t)h+
u′′(t)h2
2!
+ · · ·+ u
(k)(ξ)hk
k!
. (8.1)
Truncando a série a partir do segundo termo, obtém-se a aproximação
u(t+ h) ≈ u(t) + u′(t)h.
Trocando t por ti e u′(t) por F (ti, ui) temos
u(ti + h) ≈ u(ti) + F (ti, ui)h.
1 ÿLeonhard Euler (1707 - 1783), matemático suíço, fez inúmeras contribuições para
a matemática e física, incluindo geometria analítica, trigonometria, geometria, cálculo
e teoria dos números. A produção cientí�ca de Euler é surpreendente: por 50 anos após
a sua morte, a Academia de Ciências de São Petersburgo ainda publicava seus artigos
inéditos. Devemos a Euler algumas notações como f(x) para funções, e para a base dos
logaritmos naturais, i para a unidade imaginária, π para a razão entre a circunferência
e o diâmetro de um círculo,
∑
para o somatório, ∆y,∆2y, . . . para diferenças �nitas e
muitas outras [38].
86
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 87
Assim obtemos as fórmulas recursivas:{
ti+1 = ti + h
ui+1 = ui + F (ti, ui)h.
Exemplo 8.1. Use o método de Euler para resolver o PVI
u′ = 1 + t− 2u
0 ≤ t ≤ 1
u(0) = 1
,
com passo h = 0,2.
Solução: Das condições iniciais temos
t1 = 0; u1 = 1.
Das fórmulas recursivas, temos F (ti, ui) = 1 + ti − 2ui. E, assim:
t2 = t1 + h = 0 + 0,2 = 0,2
u2 = u1 + F (t1, u1)h
= 1 + F (0, 1) · 0,2
= 1− 1 · 0,2
= 0,8
A tabela a seguir mostra os valores obtidos para os pontos seguintes.
i ti ui F (ti, ui)
1 0,0000 1,0000 -1,0000
2 0,2000 0,8000 -0,4000
3 0,4000 0,7200 -0,0400
4 0,6000 0,7120 0,1760
5 0,8000 0,7472 0,3056
6 1,0000 0,8083 -
A Figura 8.1 mostra os valores calculados.
O algoritmo EDOEuler sistematiza o método de Euler.
Figura 8.1: Solução do PVI com o método de Euler (h = 0,2).
Algoritmo 21 EDOEuler
entrada : F, a, b, ua, h
saída : t,u
Inicialização
1: n ←b1 + (b− a)/hc
2: t ←Zeros(n, 1)
3: u ←Zeros(n, 1)
4: i ← 1
5: ti ← a
6: ui ←ua
Determinação de u(t)
7: enquanto ti < b
8: k ←F (ti, ui)
9: ti+1 ← ti + h
10: ui+1 ←ui + kh
11: i ← i+ 1
12: �m
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 88
Análise de erro
A solução exata (analítica) do PVI dado no Exemplo 8.1 é
û(t) =
1
4
(
3e−2t + 2t+ 1
)
, (8.2)
(veja o Problema 8.1). A tabela a seguir mostra os valores ui calculados
pelo método de Euler com passo h = 0,2, os valores exatos ûi e os erros
� = u− û.
i ui ûi �
1 1,0000 1,0000 0,0000
2 0,8000 0,8527 -0,0527
3 0,7200 0,7870 -0,0670
4 0,7120 0,7759 -0,0639
5 0,7472 0,8014 -0,0542
6 0,8083 0,8515 -0,0432
O erro máximo cometido é �max = 0,0670. Pode-se mostrar [8] que
�max = O(h), isto é, o erro é proporcional ao tamanho do passo. Para
h = 0,1 obtemos �max = 0,0301 e para h = 0,05 temos �max = 0,0144.
A Figura 8.2 mostra as estimativas de solução para o PVI do Exem-
plo 8.1 com h = 0,2, h = 0,1 e h = 0,01. Mostra também a solução exata
dada por (8.1).
Métodos com base na série de Taylor
O método de Euler toma por base a expansão de u em sua série de Taylor
truncada a partir do segundo termo. Pode-se obter extensões do método,
truncando a série em termos de ordem superior. Por exemplo, truncando
(8.1) a partir do quarto termo obtemos:
ui+1 = ui + F (ti,ui)h+ F
′(ti,ui)
h2
2!
+ F ′′(ti,ui)
h3
3!
. (8.3)
Figura 8.2: No método de Euler, o erro � é proporcional ao passo h.
Observe que as derivadas F ′ e F ′′ são dadas por
F ′(t,u) =
∂
∂t
F (t,u) +
∂
∂u
F (t,u) · u′,
F ′′(t,u) =
∂
∂t
F ′(t,u) +
∂
∂u
F ′(t,u) · u′.
Com esse método se obtém boas aproximações (veja Problema 8.17).
No entanto, exige a determinação das derivadas de ordem superior de F ,
o que nem sempre é viável.
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 89
8.3 Método de Runge-Kutta
O método de Runge2-Kutta3 pode ser visto como um desenvolvimento do
método de Euler. Se a função u(t) for contínua e diferenciável no intervalo
(a, b) então a equação diferencial
u′(t) = F (t, u)
que pode ser integrada no intervalo [ti, ti+1] com∫ ti+1
ti
u′(s) ds =
∫ ti+1
ti
F (s, u(s)) ds.
obtendo
ui+1 = ui +
∫ ti+1
ti
F (τ, u(τ)) dτ
= ui +Qi. (8.4)
Para encontrar ui+1 devemos estimar o valor da integral Qi, já que não se
conhece u(s) nem F (s, u(s)). Veja a Figura 8.3.
Uma forma de estimar a integral em (8.4), ométodo de Euler, é fazer
Qi ≈ F (ti,ui)h,
que nada mais é do que aplicar a regra do retângulo do método de Newton-
Cotes (como visto no Capítulo 7) com o nodo no início do intervalo [ti, ti+1].
2 ÿCarle David Tolmé Runge (1856 � 1927) físico-matemático alemão. Desenvolveu
o seu método numérico para a resolução das equações diferenciais que surgem do es-
tudo de espectros atômicos. Seu trabalho seminal Über die numerisehe Au�tising yon
Di�erentialgleichungen foi escrito em 1895. O problema da oscilação do polinômio in-
terpolador nos extremos de um intervalo (Cap. 5) foi descrito em seu Über emperische
functionen und die interpolation zwischen äquidistanten ordinaten de 1901. Runge sem-
pre foi atlético e ativo, na festa de aniversário de 70 anos divertiu seu netose amigos
�plantando bananeira� [38, 31, 20].
3 ÿMartin Wilhelm Kutta (1867 - 1944) engenheiro alemão. Sua tese de douto-
ramento, Beiträge zur näherungsweisen Integration totaler Di�erentialgleichungen de
1900, contém o desenvolvimento até a ordem 5a do hoje denominados métodos de Runge-
Kutta [38, 9].
Figura 8.3: O valor da integral Qi pode ser estimado por uma adaptação
do método de Newton-Cotes.
Um modo engenhoso de melhorar essa estimativa é usar a regra do
trapézio calculada no início e no �m do intervalo [ti, ti+1]:
k1 = F (ti, ui)
k2 = F (ti + h, ui + k1h)
ui+1 = ui +
1
2(k1 + k2)h
que dá origem ao método de Runge-Kutta de ordem 2, pois �max =
O(h2). Observe que k1 é o valor exato de F no em ti mas k2 é uma
estimativa para F em ti+1.
Outra forma de estimar a integral em (8.4) é dada por uma adaptação
da 1a regra de Simpson:
k1 = F (ti, ui)
k2 = F (ti +
h
2 , ui + k1
h
2 )
k3 = F (ti +
h
2 , ui + k2
h
2 )
k4 = F (ti + h, ui + k3h)
ui+1 = ui +
1
6 (k1 + 2k2 + 2k3 + k4)h
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 90
que dá origem ao método de Runge-Kutta de ordem 4, pois �max =
O(h4). Observe que k1 é o valor exato de F no início do intervalo [ti, ti+h],
k2 e k3 são estimativas para F no meio do intervalo e k4 para F no �m do
intervalo.
A Figura 8.4 mostra, esquematicamente, os pontos de avaliação de
k = F (t,u) nos métodos de Runge-Kutta de ordem 2 e 4.
Figura 8.4: Pontos de avaliação de F (t,u) nos métodos de Runge-Kutta de
ordem 2 e 4.
Exemplo 8.2. Use o método de Runge-Kutta de 4a ordem para resol-
ver o PVI dado no Exemplo 8.1 com passo h = 0,2.
Solução: Das condições iniciais temos
t1 = 0; u1 = 1.
Das fórmulas recursivas, temos F (ti, ui) = 1 + ti − 2ui. E, assim:
t2 = t1 + h = 0 + 0,2 = 0,2
k1 = F (ti, ui) = F (0, 1) = −1,0000
k2 = F (ti +
h
2 , ui + k1
h
2 ) = F (0,1; 0,9) = −0.7000
k3 = F (ti +
h
2 , ui + k2
h
2 ) = F (0,1; 0,93) = −0,7600
k4 = F (ti + h, ui + k3h) = F (0,2; 0,8480) = −0,4960
k = 16 (k1 + 2k2 + 2k3 + k4) = −0,7360
ui+1 = ui + kh = 1− 0,7360 · 0,2 = 0,8528
A tabela a seguir mostra os valores obtidos para os pontos seguintes.
i ti ui k1 k2 k3 k4 k
1 0,0 1,0000 -1,0000 -0,7000 -0,7600 -0,4960 -0,7360
2 0,2 0,8528 -0,5056 -0,3045 -0,3447 -0,1677 -0,3286
3 0.4 0.7871 -0.1742 -0.0393 -0.0663 0.0524 -0.0555
4 0.6 0.7760 0.0480 0.1384 0.1204 0.1999 0.1276
5 0.8 0.8015 0.1970 0.2576 0.2455 0.2988 0.2503
6 1,0 0.8516 - - - - -
A Figura 8.5 mostra os valores calculados usando o método de Euler e
o método de Runge-Kutta de ordem 4.
O algoritmo EDORK4 sistematiza o método de Runge-Kutta 4.
Análise de erro
O erro máximo cometido pelo método de Runge-Kutta de 4a ordem no
Exemplo 8.2 é �max = 8,0842 × 10−5. Pode-se mostrar que �max = O(h4),
isto é, o erro é proporcional a 4a potência do tamanho do passo, o que
garante um DSE a mais cada vez que se divide o passo por 2: Para h = 0,1
temos �max = 4,3477×10−6 e para h = 0,05 temos �max = 2,4993×10−7. Na
ausência da resposta exata, uma maneira usual de avaliar o erro cometido
é comparar os valores obtidos para dois tamanhos de passo (h e h/2).
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 91
Figura 8.5: Soluções do PVI com o método de Euler e Runge-Kutta 4
(h = 0,2).
Algoritmo 22 EDORK4
entrada : F, a, b, ua, h
saída : t,u
Inicialização
1: n ← 1 + (b− a)/h
2: t ←Zeros(n, 1)
3: u ←Zeros(n, 1)
4: i ← 1
5: ti ← a
6: ui ←ua
Determinação de u(t)
7: enquanto ti < b
8: k1 ←F (ti, ui)
9: k2 ←F (ti + h2 , ui + k1 h2 )
10: k3 ←F (ti + h2 , ui + k2 h2 )
11: k4 ←F (ti + h, ui + k3h)
12: k ← 16(k1 + 2(k2 + k3) + k4)
13: ti+1 ← ti + h
14: ui+1 ←ui + kh
15: i ← i+ 1
16: �m
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 92
Usando o Matlab: Para determinar a solução de um PVI podemos usar
o comando ode45.
>> F = @(t,u) 1 + t - 2*u
F =
@(t,u)1+t-2*u
>> a = 0; b = 1; ua = 1;
>> [t, u] = ode45(F, [a b], ua)
t = 0 0.0250 0.0500 ... 0.9500 0.9750 1.0000
u = 1.0000 0.9759 0.9536 ... 0.8372 0.8442 0.8515
Este recurso utiliza o método de Runge-Kutta de ordem 4. Com a ajuda de
um método de Runge-Kutta de ordem 5, o algoritmo consegue, a cada passo,
estimar o erro cometido. O tamanho do passo pode ser reduzido ou aumentado
comparando o erro estimado com uma tolerância dada. Esse tipo de método é
dito de passo variável
PVI acoplados e de segunda ordem
Um conjunto de funções u1(t), u2(t), . . . , um(t) que devem satisfazer
u′1 = F1(t, u1, u2, . . . , um)
u′2 = F2(t, u1, u2, . . . , um)
· · ·
u′m = Fn(t, u1, u2, . . . , um)
todas no intervalo a ≤ t ≤ b com as condições iniciais
u1(a) = u1a, u2(a) = u2a, . . . , um(a) = uma,
é dito um PVI acoplado com m equações diferencias e condições iniciais.
O sistema pode ser descrito vetorialmente como
u′ = F(t,u)
a ≤ t ≤ b
u(a) = ua,
onde u, u′ e ua são vetores de m componentes.
Do ponto de vista computacional, os métodos de Euler e Runge-Kutta
continuam válidos e os algoritmos são facilmente adaptados para receber
entradas vetoriais.
Usando o Matlab: Sendo u um vetor de duas componentes, pode-se
de�nir uma função vetorial com
>> F = @(t, u) [2*u(1) - u(2), t - (u(2))^2]
Exemplo 8.3. Use o método de Runge-Kutta de 4a ordem para resol-
ver o PVI acoplado dado a seguir com h = 0,2.
u′1 = 2u1 − u2
u′2 = t− u22
no intervalo 0 ≤ t ≤ 1 com as condições iniciais
u1(0) = 1, u2(0) = 2.
Solução: A tabela a seguir mostra os valores obtidos para os pontos
seguintes.
i ti u
(i) k
1 0.0 [1.0000 2.0000] [0.3630 -2.7744]
2 0.2 [1.0726 1.4451] [1.0376 -1.3761]
3 0.4 [1.2801 1.1699] [1.7993 -0.6941]
4 0.6 [1.6400 1.0311] [2.8048 -0.2932]
5 0.8 [2.2009 0.9724] [4.2240 -0.0324]
6 1.0 [3.0457 0.9660]
A Figura 8.6 mostra os valores calculados usando o método de Euler e
o método de Runge-Kutta de ordem 4.
Um PVI de segunda ordem é descrito por
u′′ = F (t, u, u′)
a ≤ t ≤ b
u(a) = ua
u′(a) = va
.
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 93
Figura 8.6: Soluções do PVI acoplado Runge-Kutta 4 (h = 0,2).
Uma técnica de resolução consiste em reescrevê-los como PVI acoplados
de primeira ordem, mediante a transformação v = u′:
u′ = v
v′ = F (t, u, v)
a ≤ t ≤ b
u(a) = ua
v(a) = u′(a) = va
,
Exemplo 8.4. Reescreva o PVI de segunda ordem
u′′ = −u
0 ≤ t ≤ 2π
u(0) = 0
u′(0) = 1
como um PVI acoplado.
Solução: Fazendo a transformação v = u′ obtemos:
u′ = v
v′ = −u
0 ≤ t ≤ 2π
u(0) = 0
v(0) = 1
.
A resolução numérica do problema �ca como exercício (Veja o Pro-
blema 8.25).
8.4 Problemas
Método de Euler
Nos Problemas 8.1 a 8.4 a seguir são dados um PVI e sua solução exata (analí-
tica). (a) Use o método de Euler para estimar u(t) com o passo sugerido. Faça
uma tabela contendo os valores de i, ti, ui e k. (b) Desenhe os pontos (ti, ui) cal-
culados juntamente com a solução exata. (c) Determine o maior erro cometido.
8.1. . u
′ = −u
0 ≤ t ≤ 1
u(0) = 1
,
Solução exata: û(t) = e−t. Use passo h = 0,2
8.2. . u
′ = 1− u/t
1 ≤ t ≤ 3
u(0) = 5/2
,
Solução exata: û(t) = t/2 + 2/t. Use passo h = 0,5
8.3. . u
′ = −3u+ 6t+ 5
0 ≤ t ≤ 1
u(0) = 3
,
Solução exata: û(t) = 2e−3t + 2t+ 1. Use passo h = 0,2
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 94
8.4. . u
′ = t2(5− u)
0 ≤ t ≤ 2
u(0) = 0
,
Solução exata: û(t) = 5− 5e−t3/3. Use passo h = 0,25
8.5. + Implemente o algoritmo EDOEuler na sua linguagem preferida. Para
veri�car a correção da implementação, compare os resultados obtidos com o
Exemplo 8.1.
Considere os PVI dados nos Problemas 8.6 a 8.9 a seguir. (a) Use o método
de Euler para estimar u(t). Desenhe os pontos (ti, ui) calculados juntamente com
a solução exata. (b) Determine o maior erro cometido.
8.6. PVI dado no Problema 8.1. Use passo h = 0,01.
8.7. PVI dado no Problema 8.2. Use passo h = 0,02.
8.8. PVI dado no Problema 8.3. Use passo h = 0,05.
8.9. PVI dado no Problema 8.4. Use passo h = 0,10.
8.10. O método de Euler pode ser bastante instável, especialmente para pro-
blemas envolvendo equações com efeito de amortecimento abrupto. Veri�que o
efeito dos passos h = 0.1, . . . , 0.5 na soluçãodo PVI u
′ = −5u
0 ≤ t ≤ 5
u(0) = 5
,
cuja solução exata é û(t) = 5e−5t.
Método de Runge-Kutta
8.11. + Implemente o algoritmo EDORK4 na sua linguagem preferida. Para ve-
ri�car a correção da implementação, compare os resultados obtidos com o Exem-
plo 8.2.
Considere os PVI dados nos Problemas 8.12 a 8.15 a seguir. (a) Use o
método de Runge-Kutta para estimar u(t). Desenhe os pontos (ti, ui) calculados
juntamente com a solução exata. (c) Determine o maior erro cometido.
8.12. PVI dado no Problema 8.1. Use passo h = 0,01.
8.13. PVI dado no Problema 8.2. Use passo h = 0,02.
8.14. PVI dado no Problema 8.3. Use passo h = 0,05.
8.15. PVI dado no Problema 8.4. Use passo h = 0,10.
Sortidos
8.16. Veri�que que a solução do PVI dado no Exemplo 8.1 é, de fato, a função
mostrada na equação (8.2).
8.17. Reconsidere o PVI dado no Exemplo 8.1.
(a) (a) Mostre que
F ′(t,u) = −1− 2t+ 4u,
F ′′(t,u) = 2 + 4t− 8u.
(b) Modi�que o algoritmo EDOEuler para obter um método com base na série
de Taylor dada por (8.3), isto é, reescreva o algoritmo de modo que ele receba
como entradas tanto F (t, u) quanto F ′(t,u) e F ′′(t,u). Resolva o PVI dado
no Exemplo 8.1 e compare os resultados com a solução exata dada por (8.2).
8.18. Em uma população n su�cientemente grande, seja u a quantidade de pes-
soas que conhecem um �boato�. A velocidade de �espalhamento do boato� (difusão
social) pode ser modelada por
du
dt
= k · u(n− u),
isto é, a velocidade é proporcional ao número de pessoas que conhecem o boato
multiplicado pelo número de pessoas que não o conhecem. Suponha que t seja
medido em dias, k = 1/1000 e 2 pessoas dão início a um boato no momento t = 0
em uma população de n = 1000 pessoas. Determine em quantos dias o boato
atinge 800 pessoas.
8.19. Pirólise é um processo químico no qual um composto (sólido ou líquido)
é volatilizado sob altas temperaturas e ausência de oxigênio. Se α é a fração de
material volatilizado, a taxa de transformação em função da temperatura T do
reator pode ser modelada por
dα
dT
=
A
β
exp
(
− E
RT
)
(1− α),
onde A é o fator pré-exponencial, β é a taxa de aquecimento do reator, E é a
energia de ativação do processo, R é a constante universal dos gases [27]. Em
um experimento, determinou-se que A = 0,005 min−1, E = 0,530 J/mol, R =
8,314 J/mol·K, β = 0,300 K/min. Resolva o PVI com 300 ≤ T ≤ 500 K. Desenhe o
grá�co de α× T e determine a que temperatura α ≈ 0,90.
CAPÍTULO 8. EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 95
8.20. A função erro Erf(x) é geralmente de�nida a partir da sua forma integral
(como no Problema 7.17). No entanto, pode ser de�nida a partir da equação
diferencial
d
dx
Erf(x) =
2√
π
e−x
2
, Erf(0) = 0.
Resolva o PVI acima para desenhar o grá�co de Erf(x) no intervalo 0 ≤ x ≤ 2.
Compare o resultado com a função erf do Matlab. (adaptado de [34])
8.21. Reconsidere o PVI dado no Problema 8.4. Desenhe em uma mesma �gura,
os grá�cos de u(t) para os seguintes valores iniciais: ua = 0, 1, 2, 3, 4, 5, 6. O que
essa familia de soluções tem em comum?
8.22. Reconsidere o PVI dado no Problema 8.3.
(a) Determine o erro máximo �max cometido pelo método de Euler usando
h = 0,08; 0,04; 0,02; 0,01. Veri�que que o erro é proporcional a h: aproxi-
madamente, quando o passo é dividido por 2 o erro também é dividido por
2.
(b) Faça o mesmo procedimento usando o método de Runge-Kutta. Veri�que
que o erro é proporcional a h4: aproximadamente, quando o passo é dividido
por 2 o erro é dividido por 24 = 16.
8.23. + Modi�que a implementação do algoritmo EDORK4 para que F, u e
ua sejam vetores, assim será possível resolver PVI acoplados. Para veri�car a
correção da implementação, compare os resultados obtidos com o Exemplo 8.3.
8.24. O modelo de Lotka-Volterra é um clássico em ecologia matemática. Seja
um ecossistema constituído de c(t) coelhos (presas) e r(t) raposas (predadores).
As taxas de crescimento das populações são dadas por
dc
dt
= αc− βcr
dr
dt
= γcr − δr
Supondo as populações iniciais de coelhos e raposas como sendo c(0) = 300 e
r(0) = 150, desenhe o grá�co de c(t) e r(t) no intervalo 0 ≤ t ≤ 10. Use os
seguintes parâmetros: α = 2, β = γ = 0,01 e δ = 1. Observe que o padrão
populacional é periódico: Qual é o período?.
8.25. A solução exata do PVI de segunda ordem dado no Exemplo 8.4 é u(t) =
sen(t). Resolva numericamente o PVI (Use h = 0,1) e desenhe em um mesmo
grá�co as soluções numérica e exata.
8.26. A amplitude θ (em radianos) de um pêndulo (ideal) pode ser modelada
pelo PVI de segunda ordem
θ̈ = − g
L
sen(θ)
0 ≤ t
θ(0) = θ0
θ̇(0) = v0
,
onde L é o comprimento do pêndulo e g é a aceleração gravitacional. Se a ampli-
tude de oscilação é pequena, o período é dado por T = 2π
√
L/g.
(a) Fixe g = 10 m/s2 e L = 1 m e determine o período de oscilação teórico do
pêndulo;
(b) Modele o PVI de segunda ordem como um PVI acoplado, resolva-o numeri-
camente usando θ0 = 0 e v0 = 1, desenhe um grá�co e veri�que se o período
encontrado é similar ao previsto;
(c) Aumente gradativamente a velocidade inicial e veri�que o que ocorre com o
período de oscilação.
Apêndice A
Respostas para problemas selecionados
Capítulo 1
1.1. a = 2^5, b = sqrt(7)
1.3. a = cosd(60), b = tan(pi/4)
1.5. a = abs(-5), b = factorial(9)
1.7. x = [6 2 0 5], y = [6 2 0 5]'
1.9. z = zeros(1,20)
1.11. A = [1 7; -4 3]
1.13. a = -18.3333. Veri�que a ordem de precedência dos operadores: \, *, +, -.
1.15. c = 5.3948. O comando log(y) determina o logaritmo natural de y.
1.17. w = 1.5708, e = 1. Observe que ecos(π/2) = e0 = 1.
1.19. O comando ln não existe. O correto é usar a = log(5).
1.21. A vírgula é separador de elementos. O correto é t = cos(3.1416).
1.23. O polinômio é 3,3x2 + 174,2x − 6627,7. Observe o fator 103 multiplicando os
elementos do vetor.
1.25. Um script pode ser escrito assim:
clear all
clc
clf
x = -3 : 0.01 : 3;
y = exp(-x) - 1;
plot(x,y)
grid on
legend('g(x) = exp(-x) - 1')
xlabel('x')
ylabel('g(x)')
title('Problema 1.25')
1.27. Um script pode ser escrito assim:
clear all
clc
clf
x = -1 : 0.01 : 3;
y = (x + 1)./(x - 1);
plot(x,y)
grid on
legend('i(x) = (x + 1)/(x - 1)')
xlabel('x')
ylabel('i(x)')
title('Problema 1.27')
1.29. Um script pode ser escrito assim:
clear all
clc
n = 5
x = rand(1,n)
s = 0
for i = 1:n
s = s + x(i)
end
m = s/n
A função pode ser escrita assim:
function [m] = Media(x)
n = length(x);
s = 0;
for i = 1:n
s = s + x(i);
end
m = s/n;
96
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 97
O comando m = mean(x) calcula a mesma média
1.31. Uma função pode ser escrita assim:
function s = SomaMatriz(A)
[m, n] = size(A);
s = 0;
for i = 1 : m
for j = 1 : n
s = s + A(i,j);
end
end
O comando m = sum(sum(A)) calcula a mesma soma.
1.33. Uma função pode ser escrita assim:
function d = Divisores(n)
k = 0;
for t = 1 : n
if rem(n,t) == 0
k = k + 1;
d(k) = t;
end
end
1.35. (a) Para grau 4, F usa 10 multiplicações e 4 adições, H usa 4 multiplicações e 4
adições. (b) Para grau m, F usa m(m+ 1)/2 multiplicações e m adições. H usa
m multiplicações e m adições.
1.37. Uma função pode ser escrita assim:
function [p] = Pi_Leibniz(n)
soma = 0;
num = -1;
for i = 1 : n
num = -num;
den = 2*i - 1;
soma = soma + num / den;
end
p = 4 * soma;
São necessários 2000 termos.
1.39. Uma função pode ser escrita assim:
function R = FibonacciRazaoAurea(k)
if k < 2
error('k deve ser igual ou maior que 2!')
end
F = zeros(k, 1);
R = zeros(k, 1);
F(1) = 1;
F(2) = 1;
for i = 3 : k
F(i) = F(i-1) + F(i-2);
R(i) = F(i)/F(i-1);
end
A sequência Rk aproxima-se de φ = (
√
5 + 1)/2 = 1,618033988749895 . . . deno-
minada razão áurea.
Capítulo 2
2.1. (a) � = 0,0039 (b) Fmin = 1,0842× 10−19 (c) Fmax = 3,6821× 10+19
2.3. Over�ow é um truncamento para in�nito. Por exemplo: a = 10^10^10^10.
2.5. exato = 3ff0000000000000, aprox = 3fefffffffffffff.
2.7. A primeira desigualdade ocorre para n = 49.
2.9. Para a maioria dos sistemas computacionais � = 2,2204× 10−16.
2.11. (a) � = −1,0000× 10−6 (b) �rel = −1,0000×10−6 (c) DSE = 6
2.13. (a) � = −1,2019× 10−6 (b) �rel = −7,4279× 10−7 (c) DSE = 6
2.15. DSE ≥ 6.
2.17. �rel < 0,5× 10−5.
2.19. �rel(1) = −5,2816 × 10−3, �rel(2) = 6,0164 × 10−3, �rel(3) = −4,5070 × 10−2,
�rel(4) = 4,0250 × 10−4, �rel(5) = 2,3559 × 10−5, �rel(6) = 6,5842 × 10−3, �rel(7) =
8,4914× 10−8.
2.21. t3 = 0,707143045779360, �rel(3) = 5,1286 × 10−5, t6 = 0,707106781179619,
�rel(6) = −9,7977× 10−12, t9 = 0,707106781186547, �rel(9) = 0.
2.23. Dica: Faça a expansão de x̂m = (x− �)m e elimine os termos com �2, �3, . . . , �m.
2.25. Observe a sequência:
k x(k) dif_rel(k) err_rel(k)
1 1.000000000000 +Inf -5.00e-01
2 1.732050807569 -4.23e-01 -1.34e-01
3 1.931851652578 -1.03e-01 -3.41e-02
4 1.982889722748 -2.57e-02 -8.56e-03
5 1.995717846477 -6.43e-03 -2.14e-03
... ... ... ...
15 1.999999995915 -6.13e-09 -2.04e-09
16 1.999999998979 -1.53e-09 -5.11e-10
17 1.999999999745 -3.83e-10 -1.28e-10
18 1.999999999936 -9.57e-11 -3.19e-11
19 1.999999999984 -2.39e-11 -7.98e-12
20 1.999999999996 -5.98e-12 -1.99e-12
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 98
Capítulo 3
3.1. (a) Veja o grá�co:
(b) Veja a tabela:
k a x b fa fx fb erel
1 0 5 10 -53 -28 47 Inf
2 5.0000 7.5000 10.0000 -28.0000 3.2500 47.0000 -0.3333
3 5.0000 6.2500 7.5000 -28.0000 -13.9375 3.2500 0.2000
4 6.2500 6.8750 7.5000 -13.9375 -5.7344 3.2500 -0.0909
3.3. (a) Veja o grá�co:
(b) Veja a tabela:
k a x b fa fx fb erel
1 -1.0000 0 1.0000 -0.4597 1.0000 1.5403 Inf
2 -1.0000 -0.5000 0 -0.4597 0.3776 1.0000 -1.0000
3 -1.0000 -0.7500 -0.5000 -0.4597 -0.0183 0.3776 -0.3333
4 -0.7500 -0.6250 -0.5000 -0.0183 0.1860 0.3776 0.2000
3.5. k > 1 + 12 log2(10) = 40,8631, logo k = 41.
3.7. z = 7,280109889281903, �rel = 3,1232× 10−13, k = 42.
3.9. z = −0,739085133214985, �rel = 3,0764× 10−13, k = 43.
3.11. Dica: Faça um desenho mostrando a posição de ak−1, xk−1, bk−1, ak, xk e bk.
Suponha que bk−1 − ak−1 = 4h.
3.13. (a) Veja o grá�co:
(b) f ′(x) = 3x2 − 2 (c) Veja a tabela:
k x f(x) f'(x) erel
1 2.5000 5.6250 16.7500 Inf
2 2.1642 0.8079 12.0510 0.1552
3 2.0971 0.0289 11.1939 0.0320
4 2.0946 0.0000 11.1615 0.0012
3.15. (a) Veja o grá�co:
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 99
(b) f ′(x) = 1 + sen(x) (c) Veja a tabela:
k x f(x) f'(x) erel
1 1.0000 0.4597 1.8415 Inf
2 0.7504 0.0189 1.6819 0.3327
3 0.7391 0.0000 1.6736 0.0152
4 0.7391 0.0000 1.6736 0.0000
3.17. Dica: Substitua f(xk−1) = x2k−1 − 53 e f ′(xk−1) = 2xk−1 em (3.1) e faça as
simpli�cações necessárias.
3.19. z = 2.094551481542327, �rel = 0, k = 7.
3.21. z = 0.739085133215161, �rel = 0, k = 6.
3.23. Veja a tabela:
f(x) x_ini z k(orig.) k(mod.)
x.^3 - 2*x - 5 1.0 2.094551481542327 11 10
x + log(x) 0.5 0.567143290409784 6 5
x - cos(x) 1.0 0.739085133215161 6 5
x * cos(x^2) 1.2 1.253314137315500 6 5
3.25. A partir de x1 = 2,0000 tem-se x2 = 4,0000; x3 = 5,3333; x4 = 6,5641 com
xk → +∞.
3.27. z = 3
√
29
54
+
√
31
108
+ 3
√
29
54
−
√
31
108
+ 1
3
3.29. z = 11,861501508119545, �rel = 3,0670× 10−13, k = 39.
3.31. f(i) = 249 ∗
(
1− (1 + i)−12
)
− 2499 · i, i = 0,0286.
3.33. (a) Veja o grá�co:
(b) z = 4,965114231744277, λmax = 8,293892607811290× 10−7.
3.35. (a) Veja o grá�co:
(b) t1 = 0,004615059332323, t2 = 0,019321607610775, t3 = 0,023947605178773.
3.37. Usando tol = 0,5× 10−12 obtemos os zeros com a quantidade de passos dada na
tabela:
f(x) z k(Bis.) k(I. Lin.)
x^2 - 53 7.28010988928 38 10
sqrt(x^2 + 1) - x^2 1.27201964951 43 40
x + cos(x) -0.739085133215 43 12
exp(-x) + x^2 - 10 3.15553233080 41 14
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 100
Capítulo 4
4.1. x = [1 − 2]T.
4.3. x = [1 3 − 5]T.
4.9. Usando SLGaussProv obtemos x1 = [3 2 1]T (errado!). Usando SLGauss
obtemos x2 = [1 1 1]T (correto!).
4.11. �rel = 0,0106.
4.13. Dica: Use o comando norm para calcular a norma euclidiana.
4.15. Obtemos, a partir de C =
[
0,0 0,5
−0,5 0,0
]
e d =
[
1
3
]
, obtemos os valores:
k x(1) x(2) Erel
1 1 1 Inf
2 1.5000 2.5000 0.5423
3 2.2500 2.2500 0.2485
4 2.1250 1.8750 0.1395
4.17. Obtemos, a partir deC =
0,00 −0,25 −0,050,20 0,00 −0,20
−0,10 −0,40 0,00
e d =
1,6−2,0
1,4
, obtemos
os valores:
k x(1) x(2) x(3) Erel
1 1 1 1 Inf
2 1.3000 -2.0000 0.9000 1.1832
3 2.0550 -1.9200 2.0700 0.3994
4 1.9765 -2.0030 1.9625 0.0457
4.21. Obtemos, a partir de C =
0,0 −0,4 −0,2−0,4 0,0 −0,4
−0,2 −0,4 0,0
e d =
1,00,2
1,8
, obtemos os
valores:
k x(1) x(2) x(3) Erel
1 1 1 1 Inf
2 0.4000 -0.3600 1.8640 0.8862
3 0.7712 -0.8541 1.9874 0.2744
4 0.9442 -0.9726 2.0002 0.0869
4.23. Obtemos, a partir de C =
0,00 −0,50 0,00 0,00
0,25 0,00 −0,50 0,00
0,00 0,25 0,00 −0,50
0,00 0,00 0,25 0,00
e d =
0,00
2.25
0,00
1,00
,
obtemos os valores:
k x(1) x(2) x(3) x(4) Erel
1 1 1 1 1 Inf
2 -0.5000 1.6250 -0.0938 0.9766 0.9980
3 -0.8125 2.0938 0.0352 1.0088 0.2351
4 -1.0469 1.9707 -0.0117 0.9971 0.1101
4.25. A tabela a seguir mostra o número de passos utilizados em cada método:
Prob. kGJ kGS
4.15 43 23
4.16 73 19
4.17 20 14
4.18 52 28
4.27. Permutando as linhas obtém-se o sistema linear a seguir:
A =
3 0 2 0
0 6 3 2
0 2 5 2
2 0 0 3
b =
4
3
1
2
x =
1.290322580645370
0.532258064516400
0.064516129032287
-0.193548387096914
4.29. Para o primeiro sistema linear obtemos:
Método Gauss-Jacobi
k x(1) x(2) Erel
1 1 1 Inf
2 1.8000 1.9000 0.4601
3 1.8900 2.7800 0.2631
4 1.9780 2.8790 0.0379
...
9 1.9999 2.9997 0.0003
10 2.0000 2.9998 0.0000
11 2.0000 3.0000 0.0000
...
Método Gauss-Seidel
k x(1) x(2) Erel
1 1 1 Inf
2 1.8000 2.7800 0.5893
3 1.9780 2.9758 0.0741
4 1.9976 2.9973 0.0081
5 1.9997 2.9997 0.0009
6 2.0000 3.0000 0.0001
7 2.0000 3.0000 0.0000
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 101
...
Para o segundo sistema linear obtemos:
Método Gauss-Jacobi
k x(1) x(2) x(3) Erel
1 1 1 1 Inf
2 5.0000 -2.0000 -2.0000 1.0150
3 8.0000 2.0000 -2.6667 0.5820
4 8.6667 5.0000 1.0000 0.4758
5 5.0000 5.6667 3.2222 0.5282
6 2.7778 2.0000 2.4444 1.0360
7 3.5556 -0.2222 -0.7407 1.0885
...
Método Gauss-Seidel
k x(1) x(2) x(3) Erel
1 1 1 1 Inf
2 5.0000 2.0000 0 0.7878
3 6.0000 3.0000 1.0000 0.2554
4 5.0000 2.0000 0 0.3216
5 6.0000 3.0000 1.0000 0.2554
6 5.0000 2.0000 0 0.3216
7 6.0000 3.0000 1.0000 0.2554
...
4.31. A segunda coluna da matriz inversa:
b2 =
-0.1138
0.0272
-0.0479
-0.1347
0.0828
-0.0034
4.33. A = [2 0 0 -2 0 0 0 0;
2 0 0 0 -2 0 0 0;
7 4 4 -4 -12 -4 -1 -2;
0 2 0 0 0 -2 0 0;
0 2 0 0 0 0 0 -1;
0 0 2 0 0 0 -2 0;
0 0 1 -1 -3 -1 0 0;
0 0 0 0 0 0 0 1]
b = [0; 0; 0; 0; 0; 0; 0; 1]
x =[1/6; 1/2; 7/6; 1/6; 1/6; 1/2; 7/6; 1]
4.35. A =
-4.0640 2.0080 0 0
1.9680 -4.1280 2.0320 0
0 1.9280 -4.1920 2.0720
0 0 1.8720 -4.2560
b =
0
0
0
-10.6400
y =
0.8082
1.6358
2.5403
3.6173
y_hat =
0.8016
1.6256
2.5296
3.6096
Capítulo 5
5.1. p(x) = −x2 + 3x+ 2.
5.3. Uma possível implementação:
function [v, c] = IVander(x, y, u)
n = length(x);
X = MVander(x, n-1);
c = SLGauss(X, y);
v = VPol(c, u);
5.5. p(x) = −x2 + 2x + 3. Como os nodos se posicionam sobre uma parábola, um
polinômio de grau 2 é su�ciente para interpolá-los. Veja o grá�co:
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 102
5.7. Para quem nasceu em u = 1987 tem-se v2 = 136,5778 e v4 = 136,3369.
5.9. Dica: Faça x2 = x1 + h, x3 = x1 + 2h, x4 = x1 + 3h.
5.11. Dica: Cuide para que todos os vetores envolvidos sejam vetores-coluna.
5.13. Valor exato:
v_exato = 0.369032530185151
Nodos simétricos:
v2 = 0.367850000000000
v4 = 0.369031250000000
v6 = 0.369024218750000
e_rel_2 = -3.2044e-03
e_rel_4 = -3.4690e-06
e_rel_6 = -2.2522e-05
Nodos assimétricos:
w2 = 0.367850000000000
w4 = 0.368712500000000
w6 = 0.369094140625000
e_rel_2 = -3.2044e-03
e_rel_4 = -8.6721e-04
e_rel_6 = 1.6695e-04
Para os nodos assimétricos o erro é maior.
5.15. Fazendo s′1(2) = s
′
2(2) tem-se c = −1. Fazendo s′′1 (2) = s′′2 (2) tem-se b = −3.
Fazendo s′′2 (3) = 0 tem-se a = 1.
5.17.
S(x) =
0,3183(x− 1)
3 + 0,0000(x− 1)2 + 0,6817(x− 1) + 2,0000,1 ≤ x ≤ 2
−0,3867(x− 2)3 + 0,9550(x− 2)2 + 1,6367(x− 2) + 3,0000, 2 ≤ x ≤ 4
0,2275(x− 4)3 − 1,3650(x− 4)2 + 0,8200(x− 4) + 7,0000, 4 ≤ x ≤ 6
5.19. Coe�cientes do spline: C =
0,0922 0 22,7742 607−0,0210 1,1069 27,2017 704
−0,1530 0,9179 33,2761 795
Valor inter-
polado: E(57) = 762,6628.
5.21. O grá�co a seguir mostra as curvas de interpolação. O spline parece mais plau-
sível.
No spline interpolador, o valor máximo é aproximadamente wmax = 43,22 g.
5.23. Dica: Substitua as expressões envolvendo s′1(x1) e s
′
n−1(xn) por (5.18) e faça
as simpli�cações necessárias. Em seguida substitua as expressões envolvendo os
coe�cientes ak, bk, ck e dk por (5.21), (5.20), (5.22) e (5.17) para determinar as
expressões envolvendo hk, mk e pk.
5.25. Siga as mesmas dicas dadas para o Problema 5.23.
5.27. Expectativa para o homem: 72,7937 anos; Expectativa para a mulher: 80,9960
anos.
5.29. u2 = 2,4111; u4 = 2,4027; u6 = 2,4094; z = 2,4048.
Capítulo 6
6.1. O polinômio de ajuste é p(x) = 1,6538x− 5,5000 com resíduo quadrático SQE =
1,1923. Grá�co a seguir:
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 103
6.3. SQE−F = 2,20, SQE−G = 1,40, SQE−H = 2,24. A função G tem melhor ajuste.
6.7. F (θ) = 0,0614θ2 − 6,9465θ + 196,6393; θB = 56,5825◦; Veja o grá�co:
6.9. C(t) = 0,0119t2 − 45,6670t+ 44219; C(2013) = 395,9609; Grá�co a seguir:
6.11. Dica: Use a mesma estrutura do algoritmo AjustePol, mas faça as adaptações
necessárias.
6.13. T (P ) = 23,4857e−0,0035P , Te = 17,7102 s; Pe = 146,6305 HP.
6.15. Em vez de ajuste, temos efetivamente uma interpolação, pois os pontos estão
sobre polinômio p(x) = x2 − 2x+ 4. Observe os coe�cientes:
c =
-0.000000000000166
0.000000000003986
-0.000000000033734
1.000000000117891
-2.000000000144785
4.000000000016654
SQE =
1.4011e-21
6.17. SQE = 2691,1. Veja o grá�co a seguir:
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 104
6.19. SQEpol-lb = 2,6613× 104; SQEcm-kg = 5,4758× 103.
6.21. Ppol(t) = 2,9720×10−3t2−9,3863t+7,0520×103, Pexp(t) = 1,8491×10−17e0,0218t.
Ppol(2020) = 218,7330, Pexp(2020) = 261,9514. r2pol = 0,9984, r
2
exp = 0,9627.
6.23. A matriz de planejamento é dada por:
X =
1.0000 3.7842
1.0000 4.1109
1.0000 4.3944
1.0000 4.7274
1.0000 4.8752
Os coe�cientes são β0 = 17,9243 e β1 = 19,3850. p(100) = 107,1956 mmHg.
6.25. Dica: A função logística pode ser reescrita como β0 + β1x = ln (1/p− 1). Após
o ajuste, os coe�cientes são β0 = 7,7713 e β1 = −0,6622. Figura a seguir
Capítulo 7
7.1. (a) Q1 = 3.0862, Q2 = 2,3621, Q3 = 2,3556, Q4 = 2,3505 (b) Q̂ = 2,3504
(c) �rel(1) = 3,1304 × 10−1, �rel(2) = 4,9572 × 10−3, �rel(3) = 2,2318 × 10−3,
�rel(4) = 2,9151× 10−5.
7.3. (a) Q1 = 1,9237× 10−16, Q2 = 2,0944, Q3 = 2,0405, Q4 = 1,9986 (b) Q̂ = 2 (c)
�rel(1) = −1,0000, �rel(2) = 0,0472, �rel(3) = 0,0203, �rel(4) = −7,1463× 10−4.
7.5. Usando format rat:
A =
1 1 1 1 1
0 1/4 1/2 3/4 1
0 1/16 1/4 9/16 1
0 1/64 1/8 27/64 1
0 1/256 1/16 81/256 1
b =
1
1/2
1/3
1/4
1/5
W =
7/90
16/45
2/15
6/45
7/90
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 105
7.7. Dica: note que os pesos w da integração já estão pré-determinados.
7.9. Q6,1 = 1,0059, Q3,2 = 1,0002, �rel = 0,0057.
7.11. Q6,1 = 1,0658, Q3,2 = 1,0700, �rel = −3,8462× 10−3.
7.13. Q̂ = 2,3504; Q1,2 = 2,3621; Q2,2 = 2,3512; Q4,2 = 2,3505; Q8,2 = 2,3504;
t1 = 14,7031; t2 = 15,6517; t4 = 15,9113.
7.17. Q = 0,746824132812427, �rel = 2,8884 × 10−14, k = 10, Erf(1) = 2√πQ =
0,842700792949715.
7.19. Q = 0,779893400376823, �rel = −2,4536× 10−14, k = 14.
7.21. Dica:
∫
a(x− b)n dx = a
n+1
(x− b)n+1.
7.23. Q19 = 0,129723899884824; �rel = 1,6668× 10−13; k = 15.
Capítulo 8
8.1. (a) Veja a tabela:
i t(i) u(i) k
1 0.0 1.0000 -1.0000
2 0.2 0.8000 -0.8000
3 0.4 0.6400 -0.6400
4 0.6 0.5120 -0.5120
5 0.8 0.4096 -0.4096
6 1.0 0.3277
(b) Veja o grá�co:
(c) |�max| = 0,0402.
8.3. (a) Veja a tabela:
i t(i) u(i) k
1 0.0 3.0000 -4.0000
2 0.2 2.2000 -0.4000
3 0.4 2.1200 1.0400
4 0.6 2.3280 1.6160
5 0.8 2.6512 1.8464
6 1.0 3.0205
(b) Veja o grá�co:
(c) |�max| = 0,2976.
8.7. (a) Veja o grá�co:
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 106
(b) |�max| = 0,0101.
8.9. (a) Veja o grá�co:
(b) |�max| = 0,0363.
8.13. (a) Veja o grá�co:
(b) |�max| = 2,2204× 10−15.
8.15. (a) Veja o grá�co:
(b) |�max| = 6,7775× 10−5.
8.17. O maior erro cometido é |�max| = 9,9609× 10−4. Veja o grá�co a seguir:
8.19. T = 432 K. Veja o grá�co a seguir
APÊNDICE A. RESPOSTAS PARA PROBLEMAS SELECIONADOS 107
8.21. Todas as curvas convergem assintoticamente para u∞ = 5. Veja o grá�co a seguir
8.25. Veja o grá�co a seguir
Referências Bibliográ�cas
[1] Milton Abramowitz and Irene A. Stegun. Handbook of Mathematical
Functions. Dover, New York, 9th edition, 1972. ISBN 048661272-4.
Fonte: www.nrbook.com/abramowitz_and_stegun/.
[2] Howard Anton and Robert C. Busby. Álgebra Linear Contemporânea.
Bookmark, Porto Alegre, 2006. ISBN 853630615-7.
[3] Valmar Carneiro Barbosa and Ana Maria Senra Breitschaft. Um apa-
rato experimental para o estudo do princípio de arquimedes. Re-
vista Brasileira de Ensino de Física, 28(1):115 � 122, 2006. Fonte:
www.sbfisica.br.
[4] Petr Beckmann. A History of Pi. St. Martin Press, New York, USA,
3rd edition, 1974. ISBN 031238185-9.
[5] Michele Benzi. Key moments in the history of numerical analysis, Au-
gust 2009. siam.lsu.edu/wp-content/uploads/2009/09/nahist.
pdf.
[6] Noel Black and Shirley Moore. Successive overrelaxation method.
MathWorld�A Wolfram Web Resource, 2015. mathworld.wolfram.
com/SuccessiveOverrelaxationMethod.html.
[7] William E. Boyce and Richard C. DiPrima. Equações Diferenciais
Elementares e Problemas de Valores de Contorno. LTC Editora, Rio
de Janeiro, 2002. ISBN 852161312-1.
[8] Richard L. Burden and J. Douglas Faires. Análise Numérica. Cengage
Learning, São Paulo, 2008. ISBN 852210601-0.
[9] J. C. Butcher. A history of Runge-Kutta methods. Applied Nu-
merical Mathematics, 20(3):247�260, March 1996. doi:10.1016/0168-
9274(95)00108-5.
[10] Dalcídio M. Cláudio and Jussara M. Marins. Cálculo Numérico Com-
putacional. Atlas, São Paulo, 1989.
[11] Amadeu Carneiro de Almeida and Eduardo Wagner. Trissecção do
círculo. Revista do Professor de Matemática, (71):35 � 36, 2010.
[12] Instituto Brasileiro de Geogra�a e Estatística IBGE. Censo demográ-
�co, 2010. Fonte: www.ibge.gov.br.
[13] Instituto Brasileiro de Geogra�a e Estatística IBGE. Tábua completa
de mortalidade, 2010. Fonte: www.ibge.gov.br/home/estatistica/
populacao/tabuadevida/2010.
[14] General Eletric do Brasil Ltda. Desempenho em diferentes tensões
de utilização de lâmpada incandescente 127 V, 60 W. Fonte: www.
geiluminacao.com.br, 2012.
[15] Oclide J. Dotto. A useful note on newton-cotes quadratures. Revista
do CCET - UCS, 1(1):61�66, dez. 1998.
[16] Oclide J. Dotto and Adalberto A. Dornelles Filho. Polinômio dos
quadrados mínimos condicionado. Revista Brasileira de Ensino de
Física, 28(3):397 � 401, 2006. Fonte: www.sbfisica.org.br.
[17] Hans Magnus Enzensberger. O diabo dos números. Companhia das
Letras, São Paulo, 1998. ISBN 857164718-6.
[18] Adalberto A. Dornelles Filho, Lodonha M. P. C. Soares, Moisés Wais-
mann, and Natalia P. Méndez. Boletim anual mercado formal de tra-
balho de Caxias do Sul. Observatório do Trabalho/UCS, Caxias do
Sul, RS, 2011. ISSN 2179-4170.
108
www.nrbook.com/abramowitz_and_stegun/
www.sbfisica.br
siam.lsu.edu/wp-content/uploads/2009/09/nahist.pdf
siam.lsu.edu/wp-content/uploads/2009/09/nahist.pdf
mathworld.wolfram.com/SuccessiveOverrelaxationMethod.html
mathworld.wolfram.com/SuccessiveOverrelaxationMethod.html
www.ibge.gov.br
www.ibge.gov.br/home/estatistica/populacao/tabuadevida/2010
www.ibge.gov.br/home/estatistica/populacao/tabuadevida/2010
www.geiluminacao.com.br
www.geiluminacao.com.br
www.sbfisica.org.br
REFERÊNCIAS BIBLIOGRÁFICAS 109
[19] Frederico Ferreira Campos Filho. Algoritmos Numéricos. LTC - Livros
Técnicos e Cientí�cos, Rio de Janeiro, 2001. ISBN 852161265-6.
[20] George E. Forsythe, Michael A. Malcolm, and Cleve B.Moler. Com-
puter Methods for Mathematical Computations. Prentice-Hall, En-
glewood Cli�s, 1977.
[21] W. Gander and W. Gautschi. Adaptive quadrature - revisited.
BIT, 40(1):84�101, March 2000. Disponível em www.inf.ethz.ch/
personal/gander.
[22] Gene H. Golub and Charles F. Van Loan. Matrix Computations. The
Johns Hopkins University Press, 3rd edition, 1996. ISBN 080185414-8.
[23] Hamilton Luiz Guidorizzi. Um curso de Cálculo, volume 1. LTC -
Livros Técnicos e Cientí�cos, Rio de Janeiro, 5a edition, 2001. ISBN
852161259-1.
[24] Brian D. Hahn and Daniel T. Valentine. Essential MATLAB for Engi-
neers and Scientists. Butterworth-Heinemann (Elsevier), 3rd edition,
2007.
[25] David Halliday, Robert Resnick, and John Merrill. Fundamentos de
Física, volume 4. Livros Técnicos e Cientí�cos - LTC, Rio de Janeiro,
2a edition, 1991. ISBN 852160949-3.
[26] David R. Hill and Cleve B. Moler. Experiments in Computational
Matrix Algebra. Random House, New York, 1988.
[27] Haiyun Jiang, Jigang Wang, Shenqing Wu, Baosheng Wang, and
Zhangzhong Wang. Pyrolysis kinetics of phenol�formaldehyde resin
by non-isothermal thermogravimetry. Carbon, 48(2):352 �� 358, 2010.
doi:10.1016/j.carbon.2009.09.036.
[28] Dukwon Kim. Encyclopedia of optimization, volume 1, chapter Carl
Friedrich Gauss, pages 191 � 193. Kluwer Academic Publisher, Dor-
drescht, Netherlands, 2001. ISBN 079237026-0.
[29] David C. Lay. Linear Algebra and Its Applications. Addison-Wesley,
Boston, USA, 4th edition, 2012. ISBN 032138517-9.
[30] John H. Mathews. Numerical Methods for Mathematics, Science and
Engineering. Ed. Prentice Hall Inc., Englewood Cli�s, NJ, USA, 2nd
edition, 1992. ISBN 013624990-6.
[31] E. Meijering. A chronology of interpolation: from ancient astronomy
to modern signal and image processing. Proceedings of the IEEE,
90(3):319�342, 2002. doi:10.1109/5.993400.
[32] Mans�eld Merriman. On the history of the method of least squares.
The Analyst, 4(2):33�36, Mar. 1877. Disponível em www.jstor.org/
stable/2635472.
[33] Cleve Moler. Floating points. Cleve's corner, 1996. Disponível em
www.mathworks.com/tagteam/77489_Fall96Cleve.pdf.
[34] Cleve Moler. Numerical Computing with MATLAB. 2nd edition, 2008.
Disponível em www.mathworks.com/moler.
[35] Gordon E. Moore. Cramming more components onto integrated cir-
cuits. Electronics, 38(8), 1965. Disponível em ftp://download.
intel.com/museum/Moores_Law/Articles-Press_Releases.
[36] Mahmood Nahvi and Joseph A. Edminister. Circuitos Elétricos. Art-
med, São Paulo, 4a edition, 2003.
[37] Martin Andrew Nordgaard. A historical survey of algebraic methods
of approximating the roots of numerical higher equations up to the year
1819. PhD thesis, Teachers college, Columbia university, New York,
1922.
[38] J. J. O'Connor and E. F. Robertson. MacTutor History of Mathema-
tics. www-history.mcs.st-andrews.ac.uk/Mathematicians.
[39] Neide Oliveira. A corrida continua. Veja, 38(46):69�71, julho 2005.
Edição especial: Tecnologia.
[40] William H. Press, Saul A. Teukolsky, William T. Vetterling, and
Brian P. Flannery. Numerical Recipes: The Art os Scienti�c Com-
puting. Cambridge University Press, New York, 3rd edition, 2007.
ISBN 051133555-5. Fonte: www.nrbook.com/nr3/.
[41] s.a. Rota de uma boa viagem. Zero Hora, 30/11/2009 2009. p. 40.
www.inf.ethz.ch/personal/gander
www.inf.ethz.ch/personal/gander
www.jstor.org/stable/2635472
www.jstor.org/stable/2635472
www.mathworks.com/tagteam/77489_Fall96Cleve.pdf
www.mathworks.com/moler
ftp://download.intel.com/museum/Moores_Law/Articles-Press_Releases
ftp://download.intel.com/museum/Moores_Law/Articles-Press_Releases
www-history.mcs.st-andrews.ac.uk/Mathematicians
www.nrbook.com/nr3/
REFERÊNCIAS BIBLIOGRÁFICAS 110
[42] T. R. Scavo and J. B. Thoo. On the geometry of Halley's method.
The American Mathematical Monthly, 102(5):417 � 426, may 1995.
[43] Edward R. Scheinerman. Matemática Discreta. Thomson Pioneira,
2003.
[44] PASCO Scienti�c. PASCO physics catalog and experiment guide.
PASCO Scienti�c Co., Roseville (USA), 2005.
[45] Endre Süli and David Mayers. An Introduction to Numerical Analysis.
Cambridge University Press, Cambridge, United Kingdom, 2003.
[46] J. M. Smith, H. C. van Ness, and M. M. Abbott. Introduction to
Chemical Engineering Thermodynamics. McGraw-Hill, 7th edition,
2000.
[47] Murray R. Spiegel. Manual de fórmulas, métodos e tabelas de mate-
mática. Ed. Makron Books do Brasil, 1992.
[48] Pieter Tans and Ralph Keeling. NOAA/ESRL Trends in atmospheric
carbon dioxide (Mauna Loa, Hawaii, USA). www.esrl.noaa.gov/
gmd/ccgg/trends/, 2013.
[49] Mario F. Triola. Introdução à Estatística. LTC Editora, 7a edition,
1998. ISBN 852161154-4.
[50] George C. Tseng. Classi�cation and regression tree. In Neil J. Sal-
kind, editor, Encyclopedia os measurement and statistics, volume 1,
pages 143�145. SAGE Publications, Thousand Oaks, California,USA,
2007. ISBN 141291611-9. Os dados completos podem ser obtidos em
archive.ics.uci.edu/ml/datasets/Auto+MPG.
[51] Eric W. Weisstein. Halley's method. Fonte: mathworld.wolfram.
com/HalleysMethod.html, 2010.
[52] Wikipédia. Gordon Earl Moore. Fonte: en.wikipedia.org/wiki/
Gordon_Moore, 2007.
[53] Wikipédia. David Brewster. Fonte: en.wikipedia.org/wiki/David_
Brewster, 2014.
[54] Wikipédia. Augustin-Jean Fresnel. Fonte: en.wikipedia.org/wiki/
Augustin-Jean_Fresnel, 2015.
[55] Mark W. Zemansky. Calor e termodinâmica. Guanabara Dois, Rio de
Janeiro, 5a edition, 1978.
www.esrl.noaa.gov/gmd/ccgg/trends/
www.esrl.noaa.gov/gmd/ccgg/trends/
archive.ics.uci.edu/ml/datasets/Auto+MPG
mathworld.wolfram.com/HalleysMethod.html
mathworld.wolfram.com/HalleysMethod.html
en.wikipedia.org/wiki/Gordon_Moore
en.wikipedia.org/wiki/Gordon_Moore
en.wikipedia.org/wiki/David_Brewster
en.wikipedia.org/wiki/David_Brewster
en.wikipedia.org/wiki/Augustin-Jean_Fresnel
en.wikipedia.org/wiki/Augustin-Jean_Fresnel
Apresentação
Introdução ao Matlab
Obtendo ajuda
Calculando com o Matlab
Programando com o Matlab
Estruturas lógicas de um algoritmo
Estrutura de sequência
Estruturas de decisão
Estruturas de repetição
Problemas
Erros e Aritmética Computacional
Resolução de problemas numéricos
Representação numérica de ponto flutuante
Erros nos processos numéricos
Erro de arredondamento
Erro de truncamento
Notação
Estimativas para o erro
Convergência nos processos numéricos
Problemas
Zeros de funções
Definição do problema
Método da bisseção
Critérios de parada
Método de Newton-Raphson
Problemas
Sistemas Lineares
Definição do problema
Método de Gauss
Pivotamento Parcial
Métodos iterativos
Método de Gauss-Jacobi
Convergência
Método de Gauss-Seidel
Problemas
Interpolação
Definição do problema
Método de Vandermonde
Método de Lagrange
Fórmulas para 2 e 4 nodos
Erro na interpolação polinomial
Método do spline cúbico
Definição e propriedades
Dedução dos coeficientes
Determinação do spline
Problemas
Ajuste de funções
Definição do problema
Resíduo quadrático
Ajuste polinomial
Um pouco de Álgebra Linear
Obtendo o polinômio de ajuste
Ajuste exponencial
Problemas
Integração Numérica
Definição do problema
Método de Newton-Cotes simples
Dedução dos pesos de integração
Método de Newton-Cotes composto
Método de Newton-Cotes adaptável
Método do Spline Cúbico
Problemas
Equações Diferenciais Ordinárias
Definição do problema
Método de Euler
Método de Runge-Kutta
Problemas
Respostas para problemas selecionados