Você está na página 1de 133

Cálculo Numérico - MATi08

UNIFEI - Campus Itabira

Prof. Gustavo Marra - marra@unifei.edu.br


ii
Sumário

1 Zeros de Funções Reais 1

1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Noções sobre erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2 Exercı́cios da Seção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 O Método da Bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.1 Critério de Parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Arredondamento e truncamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.4 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4.1 Critério de Parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4.2 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Sistemas Lineares e Matrizes 21

2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3 Fatoração LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.4 Fatoração de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.5 Métodos iterativos para sistemas lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.6 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.6.1 Forma Matricial do Processo Iterativo . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.6.2 Critérios de Parada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.6.3 Condição de convergência do método de Jacobi . . . . . . . . . . . . . . . . . . . . 38

2.7 Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.7.1 Forma Matricial do Processo Iterativo . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.8 Condição de Convergência do Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . 42

iii
iv SUMÁRIO

3 Interpolação Polinomial 45

3.1 Interpolação Polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.1.1 Forma de Lagrange para Interpolação . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.2 Forma de Newton para o Polinômio Interpolador . . . . . . . . . . . . . . . . . . . . . . . 51

3.3 Estimando valores de funções via interpolação . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.3.1 Exercı́cios da Seção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.4 Splines interpoladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.5 Aproximação linear por partes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

3.6 Spline Cúbica Interpolante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

3.6.1 Spline cúbica com fronteira livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.6.2 Spline cúbica com fronteira fixa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

3.7 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

4 Ajuste de Curvas 73

4.1 Ajuste de Curvas pelo Método dos Mı́nimos Quadrados . . . . . . . . . . . . . . . . . . . 73

4.2 Ajuste Polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.3 Ajustes Não Polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.4 Ajustes Não-Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.4.1 Outros Ajustes Não-lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.5 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

5 Integração por métodos numéricos 89

5.1 Integração Numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5.2 Fórmulas de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

5.2.1 Regra do Trapézio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

5.2.2 Erro na Regra do Trapézio Repetida . . . . . . . . . . . . . . . . . . . . . . . . . . 94

5.3 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
1
5.4 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3
5.4.1 Erro na Regra 13 de Simpson Repetida . . . . . . . . . . . . . . . . . . . . . . . . . 100
3
5.4.2 Regra 8 de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.5 Integração Numérica via iterações das Regras do Trapézio e Simpson . . . . . . . . . . . . 101

5.6 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.7 Quadratura Gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103


SUMÁRIO v

5.7.1 Polinômios de Legendre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.8 Quadratura de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

5.8.1 Quadratura sobre intervalos arbitrários . . . . . . . . . . . . . . . . . . . . . . . . 109

5.9 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

6 Métodos Numéricos para Equações Diferenciais Ordinárias 115

6.1 Métodos Numéricos para Equações Diferenciais Ordinárias . . . . . . . . . . . . . . . . . . 115

6.2 Método de Taylor de Ordem q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.3 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6.4 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6.5 Métodos Numéricos para Sistemas de Equações Diferenciais Ordinárias . . . . . . . . . . . 122

6.6 Equações de Ordem Superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

6.7 Exercı́cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

Referências Bibliográficas 127


vi SUMÁRIO
Capı́tulo 1

Zeros de Funções Reais

1.1 Introdução

Considere uma equação

f (x) = 0, (1.1)

onde x ∈ [a, b] ⊂ R e f : R → R é contı́nua. Nosso interesse é investigar a existência de soluções reais

x∗ (chamadas raı́zes) para esta equação, e como obter aproximações numéricas para estas soluções, caso

elas existam.

No caso particular em que f (x) = ax2 + bx + c é um polinômio de grau 2, sabemos que f possui raı́zes

reais se b2 − 4ac ≥ 0, e que podemos expressá-las analiticamente por:

√ √
−b + b2 − 4ac −b − b2 − 4ac
x∗1 = ∗
e x2 = .
2a 2a

No entanto, é muito comum nos depararmos com equações reais em uma variável para as quais a

solução exista, mas sua solução pode ter uma expressão analı́tica difı́cil de se obter ou impossı́vel de ser

obtida. Por exemplo:



f (x) = 3 x − esen(x) = 0, x ∈ [0, 2]. (1.2)

Esta equação admite solução? Se sim, qual? Como obter uma expressão analı́tica desta solução (se é que

isto é possı́vel)?

O gráfico na Figura 1.1 nos permite ver que f (x) = 0 possui uma solução neste intervalo (entre 0 e

0.5), mas não podemos afirmar mais do que isso. Além disso, não podemos manipular algebricamente a

equação (1.2) para calcular esta raiz explicitamente. O leitor interessado deve-se sentir convidado - ou

1
2 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

y
x∗
0

−1

0 0.5 1 1.5 2
x

Figura 1.1: Gráfico da função f (x) = 3 x − esen(x) , com x ∈ [0, 2].

desafiado - a tentar.

Tentaremos, então, encontrar um valor numérico aproximado para esta raiz. Para resolver este

problema, estudaremos métodos iterativos, isto é, métodos que, pela repetição de um procedimento,

produz uma sequência

{x(i) }∞
i=0 = {x
(0)
, x(1) , x(2) , ...}

de números sucessivamente mais próximos da solução exata x∗ . O processo iterativo é interrompido

quando pudermos garantir que a aproximação mais recente está satisfazendo a certos critérios de precisão.

Observação 1.1 A notação x(n) não se refere a uma potência ou a uma derivada, mas a um ı́ndice.

O seguinte teorema nos dá um critério para a existência de raı́zes para a equação f (x) = 0 num

intervalo (a, b).

Teorema 1.1 (Teorema de Bolzano) Se f : [a, b] → R, é uma função contı́nua tal que f (a) e f (b)

tem sinais diferentes, então existe x∗ ∈ (a, b) tal que f (x∗ ) = 0.

A prova deste teorema é consequência do Teorema do Valor Intermediário (ver [8]).

Observação 1.2 A condição “f (a) e f (b) tem sinais diferentes” é equivalente a f (a) · f (b) < 0.


Exemplo 1.1 Se f (x) = 3 x − esen(x) , x ∈ [0, 2], então


f (0) = −1 < 0 e f (2) = 3 2 − esen(2) > 0.
1.1. INTRODUÇÃO 3

Pelo Teorema de Bolzano, existe (pelo menos uma!) solução da equação f (x) = 0 no intervalo

x ∈ [0, 2].

Note que o Teorema não garante que exista apenas uma raı́z neste intervalo: é possı́vel existir mais do

que uma. Além disso, se f (a) e f (b) possuı́rem sinais iguais, é possı́vel existir ou não raı́zes no intervalo.

Exemplo 1.2 Se f (x) = −x2 + 5x − 6, x ∈ [1, 5], então f (1) = −2, f (5) = −6. Não podemos aplicar o

teorema de Bolzano, mas a função f (x) possui duas raı́zes no intervalo: x∗1 = 2 e x∗2 = 3.

Exemplo 1.3 Se g(x) = −x2 + 5x − 10, x ∈ [1, 5] então g(1) = −6, g(5) = −10. Não podemos aplicar

o teorema de Bolzano, e a função g(x) não possui raı́zes no intervalo.

Exemplo 1.4 Vamos verificar que existe pelo menos uma solução da equação ex = 2x + 2 no intervalo

(−2, 0).

Primeiramente, observamos que resolver a equação ex = 2x + 2 é equivalente a resolver f (x) = 0 com

f (x) = ex − 2x − 2. Agora, como f (−2) = e−2 + 2 > 0 e f (0) = −1 < 0, temos do teorema de Bolzano

que existe pelo menos um zero de f (x) no intervalo (−2, 0). E, portanto, existe pelo menos uma solução

da equação dada no intervalo (−2, 0).

Quando procuramos aproximações para zeros de funções, é aconselhável isolar cada raiz em um

intervalo. Desta forma, gostarı́amos de poder garantir a existência e a unicidade da raiz dentro de um

dado intervalo. A seguinte proposição nos fornece condições suficientes para tanto.

Proposição 1.1 Se f : [a, b] → R é uma função diferenciável, f (a) · f (b) < 0 e f 0 (x) > 0 (ou f 0 (x) < 0)

para todo x ∈ (a, b), então existe um único x∗ ∈ (a, b) tal que f (x∗ ) = 0.

Em outras palavras, para garantirmos que exista um único zero de uma dada função diferenciável

em um intervalo, é suficiente que ela troque de sinal e seja monótona (apenas crescente, ou apenas

decrescente) neste intervalo.

Exemplo 1.5 No Exemplo 1.4, mostramos que existe pelo menos um zero de f (x) = ex − 2x − 2 no

intervalo (−2, 0), pois f (x) é contı́nua e f (−2) e f (0) tem sinais diferentes. Agora, observamos que,

além disso, f 0 (x) = ex − 2 e, portanto, f 0 (x) < 0 para todo x ∈ (−2, 0). Logo, da Proposição 1.1, temos

garantida a existência de um único zero no intervalo dado.

Para se identificar os intervalos onde existam raı́zes de uma função f (x), a análise gráfica é fundamen-

tal. Para isso é recomendado usar alguma ferramenta computacional capaz de traçar gráficos de funções,

ou das técnicas de esboço de gráfico padrão (ver [8]).


4 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

Exemplo 1.6 Uma estratégia possı́vel para detectar a existência possı́vel de zeros é montando uma tabela

de valores. Considere f (x) = x3 − 10x + 4. Podemos montar uma tabela de valores para f para tentar

isolar suas raı́zes em intervalos:

x −10 −5 −4 −3 −2 −1 0 1 2 3 4 5 10

f (x) −896 −71 −20 7 16 13 4 −5 −8 1 28 79 904

Pela mudança de sinais, vemos que existe uma raiz em (−4, −3), uma raiz em (0, 1) e uma raiz em

(2, 3). Como f é um polinômio de grau 3, ela possui no máximo 3 raı́zes reais, e portanto, não pode

haver mais raı́zes, tanto para valores fora desta tabela, quanto nos três intervalos detectados.

1.1.1 Noções sobre erros

Como trataremos de aproximações para números, convém ter em mente a seguinte discussão sobre erros.

Vamos convencionar que x é uma aproximação para um número real x no sentido óbvio.

Definição 1.1 (Erro absoluto e relativo) Seja x um número real e x, sua aproximação. O erro

absoluto da aproximação x é definido como

|x − x|.

O erro relativo da aproximação x é definido como

|x − x|
, x 6= 0.
|x|

Observação 1.3 Observe que o erro relativo é adimensional e, muitas vezes, é expresso em porcentagens.

Mais precisamente, o erro relativo em porcentagem da aproximação x é dado por

|x − x̄|
× 100%.
|x|

Exemplo 1.7 Sejam x = 123456.789 e sua aproximação x̄ = 123000. O erro absoluto é

|x − x̄| = |123456.789 − 123000| = 456.789

e o erro relativo é
|x − x̄| 456.789
= ≈ 0.00369999 ou 0.36%
|x| 123456.789
1.1. INTRODUÇÃO 5

Exemplo 1.8 Sejam y = 1.23456789 e ȳ = 1.13. O erro absoluto é

|y − ȳ| = |1.23456789 − 1.13| = 0.10456789

que parece pequeno se compararmos com o exemplo anterior. Entretanto o erro relativo é

|y − ȳ| 0.10456789
= ≈ 0.08469999 ou 8.4%
|y| 1.23456789

Note que o erro relativo leva em consideração a escala do problema.

Exemplo 1.9 Observe os erros absolutos e relativos em cada caso a seguir:

x x̄ Erro absoluto Erro relativo

0.3 × 10−2 0.3 × 10−2 0.3 × 10−3 10%

0.3 0.3 3 × 10−2 10%

0.3 × 102 0.3 × 102 0.3 × 101 10%

Outra forma de medir a exatidão de uma aproximação numérica é contar o número de dı́gitos signi-

ficativos corretos em relação ao valor exato.

Definição 1.2 (Número de dı́gitos significativos corretos) A aproximação x de um número x tem

s dı́gitos significativos corretos quando

|x − x|
< 5 × 10−s .
|x|

Exemplo 1.10 Vejamos os seguintes casos:

a) A aproximação de x = 0, 333333 por x = 0, 333 tem 3 dı́gitos significativos corretos, pois

|x − x| 0, 000333
= ≈ 0, 000999 ≤ 5 × 10−3 .
|x| 0, 333333

b) Considere as aproximações x̄1 = 0, 666 e x̄2 = 0, 667 de x = 0, 666888. Os erros relativos são

|x − x̄1 | |0, 666888 − 0, 666|


= ≈ 0, 00133... < 5 × 10−3 .
|x| 0, 666888

|x − x̄2 | |0, 666888 − 0, 667|


= ≈ 0, 000167... < 5 × 10−4 .
|x| 0, 666888
6 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

Note que x̄1 possui 3 dı́gitos significativos corretos e x̄2 possui 4 dı́gitos significativos (o quarto

dı́gito é o dı́gito 0 que não aparece a direita, i.e, x̄2 = 0.6670. Isto também leva a conclusão que x2

aproxima melhor o valor de x do que x1 pois está mais próximo de x.

c) x = 9, 999 aproxima x = 10 com 4 dı́gitos significativos corretos, pois

|x − x| |10 − 9, 999|
= ≈ 0, 0000999... < 5 × 10−4 .
|x| 10

d) Considere as aproximações x1 = 1, 49 e x2 = 1, 5 de x = 1. Da definição, temos que 1, 49 aproxima

1 com um dı́gito significativo correto (verifique), enquanto 1, 5 tem zero dı́gito significativo correto,

pois:
|1 − 1, 5|
= 5 × 10−1 < 5 × 100 .
|1|

1.1.2 Exercı́cios da Seção

Exercı́cio 1.1 Usando a ferramenta geradora de gráficos da sua preferência (Recomendação: Desmos

App ou pelo website https://www.desmos.com/), estime um intervalo onde f (x) = x · `n(x) − 1 possua

uma raiz.

Exercı́cio 1.2 Monte uma tabela de valores e identifique onde existam raı́zes para as funções abaixo,
1
com intervalos de comprimento 10 :

(a) x5 − x + 15 = 0

(b) x · e−2x + 3 = 0
2
(c) `n(x) − =0
x
Sugestão: Use o Excel.

Exercı́cio 1.3 Mostre que cos x = x tem solução no intervalo [0, π/2]. Mostre também que esta solução

é única.

Exercı́cio 1.4 Interprete a equação cos(x) = kx como o problema de encontrar a intersecção da curva

y = cos(x) com y = kx. Encontre o valor positivo k para o qual essa equação admite exatamente duas

raı́zes positivas distintas.

Exercı́cio 1.5 Mostre que a equação:

1
ln(x) + x3 − = 10
x
1.2. O MÉTODO DA BISSECÇÃO 7

possui uma única solução positiva.

Exercı́cio 1.6 Mostre que a equação


1
ln(x) + x − =v
x

possui uma solução para cada v real e que esta solução é única.

1.2 O Método da Bissecção

O método da bissecção (ou bisseção) explora o fato de que uma função contı́nua f : [a, b] → R com

f (a) · f (b) < 0 tem um único zero no intervalo (a, b) (veja o teorema de Bolzano [1.1]). Assim, a ideia

para aproximar o zero de uma tal função f (x) é tomar, como aproximação inicial, o ponto médio do

intervalo [a, b], isto é:


(a + b)
x(0) = .
2

O nome bissecção refere-se a seccionar em duas partes o intervalo (a, b).

Pode ocorrer de f (x(0) ) = 0 e, neste caso, o zero de f (x) é x∗ = x(0) . Caso contrário, pode ocorrer

uma das seguintes possibilidades:

1. Se f (a) · f (x(0) ) < 0: então x∗ ∈ (a, x(0) ). Neste caso, tomamos como nova aproximação do zero de

f (x) o ponto médio do intervalo [a, x(0) ], isto é, x(1) = (a + x(0) )/2.

2. Se f (x(0) ) · f (b) < 0: então, x∗ ∈ (x(0) , b). Neste caso, tomamos como nova aproximação do zero

de f (x) o ponto médio do intervalo [x(0) , b], isto é, x(1) = (x(0) + b)/2.

Repetimos este procedimento até obtermos a aproximação desejada (veja Figura 1.2).

Exemplo 1.11 Vamos aplicar o método da bissecção à função f (x) = ex − 2x − 2, com x ∈ (−2, 0). Já

sabemos, do exemplo 1.4 que a raiz x∗ existe e é única neste intervalo.


a(0) + b(0)
Começamos com n = 0. Definindo a(0) = −2, b(0) = 0, então x(0) = = −1.
2
Organizando as informações numa tabela:

x a(0) = −2 x(0) = −1 b(0) = 0

f (x) e−2 + 2 > 0 e−1 > 0 −1 < 0

donde vê-se que a raiz está entre x(0) e b(0) , pelo teorema de Bolzano aplicado ao intervalo x(0) , b(0) (é


nos extremos deste subintervalo que ocorre troca de sinal). Ou, conforme vimos, f (x(0) ) · f (b(0) ) < 0 ⇒

raiz entre x(0) e b(0) .


8 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

f (b)

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

f (a)

Figura 1.2: Método da bissecção.

Repetindo o procedimento (ou realizando a primeira iteração), fazemos n = 1 e trabalhamos com o

intervalo (a(1) , b(1) ) = x(0) , b(0) onde a raiz existe. Definimos:




a(1) = x(0) = −1, b(1) = b(0) = 0,

e o ponto médio do intervalo é


a(1) + b(1) 1
x(1) = =− .
2 2

Temos:
x a(1) = −1 x(1) = − 21 b(1) = 0
1
f (x) e−1 > 0 e− 2 − 1 < 0 −1 < 0

donde vê-se que a raiz está entre a(1) = −1 e x(1) = − 21 .

Repetindo o procedimento (segunda iteração): n = 2, a(2) = a(1) = −1, b(2) = x(1) = − 21 e

a(1) + b(1) 3
x(2) = =− .
2 4

Temos:
x a(2) = −1 x(2) = − 43 b(2) = − 21
3 1 1
f (x) e−1 > 0 e− 4 − 2 <0 e− 2 − 1 < 0

donde vê-se que a raiz está entre a(2) = −1 e x(2) = − 43 .

O que construı́mos foram:


1 3
x(0) = −1, x(1) = − , x(2) = − ,
2 4
1.2. O MÉTODO DA BISSECÇÃO 9

que são os três primeiros elementos da sequência {x(n) }∞ ∗


n=0 que se aproxima da raiz x (veja Figura 1.3).

y 1

0
x(0) x(2) x(1)

−1

−2 −1.5 −1 −0.5 0
x

Figura 1.3: Pontos gerados pelo método da bissecção aplicados à função f (x) = ex − 2x − 2.

1.2.1 Critério de Parada

Vimos que o método de bissecção gera uma sequência {x(n) }. Suponha que queiramos obter uma apro-

ximação x(n) para a raiz x∗ de uma equação f (x) = 0 com x no intervalo (a, b), de forma que x(n)

satisfaça a uma tolerância ε > 0 informada de antemão.

Como sabemos que o intervalo (a(n+1) , b(n+1) ) tem a metade do intervalo (a(n) , b(n) ), para todo n,

então necessariamente após algum n, x(n) estará num intervalo suficientemente pequeno contendo x∗ .

Podemos então enunciar o critério de parada do método da bissecção: Dada uma tolerância ε > 0,

x(n) é a aproximação desejada se:

(a) f (x(n) ) = 0, ou:

|b(n) − a(n) |
(b) < ε.
2

Se, na n−ésima iteração, nenhuma das duas situações acima ocorre, então iteramos mais uma véz o

método, obtendo a(n+1) , b(n+1) , x(n+1) e verificamos os itens (a) e (b) do critério novamente.

Observação 1.4 É incomum que aconteça a situação (a), sendo o critério (b) o mais usado.

Observação 1.5 Em geral, ε é um número positivo e relativamente próximo de zero, por exemplo,

ε = 10−3 . Não faz sentido escolher valores grandes (maiores que 1, por exemplo) para ε pois a margem

de erro seria grande, nesse caso.


10 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

Exemplo 1.12 Vamos usar o método da bissecção para calcular uma aproximação para 3 2 que verifique

a tolerância ε = 5 · 10−2 = 0.05. Precisamos de uma função f (x) tal que f ( 3 2) = 0. Como

√ √
( 2)3 = 2 ⇒ ( 2)3 − 2 = 0,
3 3


basta escolher f (x) = x3 − 2. Como − 3 2 também é solução desta equação, escolheremos o intervalo

(1, 2) onde sabemos que esta raiz é única.

Assim, a(0) = 1, b(0) = 2 e iteramos até obter a aproximação desejada, conforme a tabela 1.1. Atente-

se para o detalhe que, se f (a(n) )f (x(n) ) < 0, então x∗ está entre a(n) e x(n) ; caso contrário, está entre

x(n) e b(n) .

Conclui-se que a aproximação desejada é x(4) = 1.28125.

|b(n) − a(n) |
n a(n) x(n) b(n) f (a(n) )f (x(n) )
2
0 1 1.5 2 <0 0.5 > ε
1 1 1.25 1.5 >0 0.25 > ε
2 1.25 1.375 1.5 <0 0.125 > ε
3 1.25 1.3125 1.375 <0 0.0625 > ε
4 1.25 1.28125 1.3125 <0 0.03125 < ε

Tabela 1.1: Iteração do método da bissecção para f (x) = x3 − 2, x ∈ (1, 2)

Por fim, note que, como x(4) é o ponto médio do intervalo (a(4) , b(4) ), então a distância de x(4) até x∗

(ou seja, o erro absoluto da aproximação) é menor que a metade do comprimento do intervalo (a(4) , b(4) ).

Ou seja:
|b(4) − a(4) |
|x∗ − x(4) | < = 0.03125 < ε.
2

Vamos agora discutir sobre a convergência do método da bissecção, que é garantida pelo Teorema 1.2.

Teorema 1.2 (Convergência do método da bissecção) Sejam f : [a, b] → R uma função contı́nua

tal que f (a) · f (b) < 0 e x∗ o único zero de f (x) no intervalo (a, b). Então, a sequência {x(n) }n≥0 do

método da bissecção satisfaz:


b−a
|x(n) − x∗ | < , ∀n ≥ 0.
2n+1

Em particular, x(n) → x∗ quando n → ∞.


1.2. O MÉTODO DA BISSECÇÃO 11

Prova: Conforme já discutido, a cada iteração a distância entre a aproximação x(n) e o zero x∗ da

função é menor ou igual que a metade do tamanho do intervalo [a(n) , b(n) ] (veja Figura 1.2), isto é:

b(n) − a(n)
|x(n) − x∗ | ≤ .
2

Por construção do método, temos [a(n) , b(n) ] ⊂ [a(n−1) , b(n−1) ] quando n ≥ 1 e:

b(n−1) − a(n−1)
b(n) − a(n) = .
2

Desta forma:

b(n) − a(n) b(n−1) − a(n−1) b(0) − a(0)


|x(n) − x∗ | ≤ = 2
= ··· = , ∀n ≥ 1.
2 2 2n+1

Logo, vemos que:


b−a
|x(n) − x∗ | ≤ , ∀n ≥ 0.
2n+1

b−a
Se n → ∞, 2n+1 → 0. Pelo Teorema do Confronto (vulgo “Teorema do Sanduı́che”),

lim |x(n) − x∗ | = 0.
n→∞

Exemplo 1.13 A partir do exemplo 1.11, depois de calculada a aproximação inicial x(0) = −1 ∈ [a, b] =

[−2, 0], podemos estimar o número de iterações suficientes do método da bissecção para computar uma

aproximação com precisão de 10−3 do zero de f (x) = ex − 2x − 2. Como vimos acima:

b−a
|x(n) − x∗ | ≤ , n ≥ 0.
2n+1

Logo, temos:
b−a 2
|x(n) − x∗ | < = n+1 = 2−n ,
2n+1 2
12 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

e esta última deve ser inferior a ε. Assim:

2−n < 10−3

⇒ `n(2−n ) < `n(10−3 )

⇒ −n · `n(2) < −3`n(10)

3`n(10)
⇒ n> ≈ 9.96.
`n(2)

Como n precisa ser inteiro, n = 10 iterações são suficientes. É possı́vel que a precisão seja atingida

antes, mas após 10 iterações ela será sempre satisfeita.

O método da bissecção tem a boa propriedade de garantia de convergência, bem como de fornecer

uma simples estimativa do erro na aproximação calculada. Entretanto, a velocidade de convergência é

superada por outros métodos.

Exercı́cios da Seção

Exercı́cio 1.7 Considere a equação x = cos(x). Use o método da bissecção com intervalo inicial

[a, b] = [0, 1] e x(0) = (a + b)/2 para calcular a aproximação x(4) da solução desta equação.

Exercı́cio 1.8 Trace o gráfico e isole as três primeiras raı́zes positivas da função:

x
f (x) = 5 sen(x2 ) − e 10

em intervalos de comprimento 0.1. Então, use o método da bissecção para obter aproximações dos zeros

desta função com precisão de 10−5 .

Exercı́cio 1.9 O polinômio p(x) = −4 + 8x − 5x2 + x3 tem raı́zes x1 = 1 e x2 = x3 = 2 no intervalo


1 
2, 3 .
1 
a) Se o método da bissecção for usado com o intervalo inicial 2, 3 , para qual raiz as iterações

convergem?

b) É possı́vel usar o método da bissecção para a raiz x = 2? Justifique sua resposta.

Exercı́cio 1.10 Para cada uma das equações abaixo, estime o número de iterações necessárias para se

obter aproximações para as raı́zes, pelo método da bissecção, com duas casas decimais corretas. Use o

método da bissecção para obter aproximações dessas raı́zes. Se a equação possuir mais o que uma solução,

aproxime a menor raiz positiva. A quais soluções analı́ticas estas aproximações correspondem?
1.3. ARREDONDAMENTO E TRUNCAMENTO 13

(a) sen(x) − 0.75 = 0

(b) x3 − 7 = 0

(c) tan(x) − 2 = 0

Exercı́cio 1.11 Obtenha uma aproximação para π com cinco casas decimais corretas pelo método da

Bissecção.

1.3 Arredondamento e truncamento

Vamos nos familiarizar com duas maneiras distintas de se limitar a quantidade de dı́gitos de um número.

Considere o exemplo: seja x o número

x = 12.3456789

e suponha que desejamos (ou estejamos limitados a!) trabalhar com apenas três dı́gitos após a vı́rgula

separadora. Assim, podemos efetuar um arredondamento para o número mais próximo com três casas

decimais (conforme as regras usuais de arredondamento):

xarr = 12.346

ou um truncamento na terceira casa decimal, que consiste em descartar tudo após a terceira casa

decimal:

xtru = 12.345

Neste caso, observe que a distância entre xarr e x é:

|xarr − x| = 3.211 × 10−4

e que a distância entre xtru e x é:

|xtru − x| = 6.789 × 10−4 .

Observa-se que o arredondamento diminui o erro (pois está mais próximo!) cometido ao se limitar

o número de casas decimais. No entanto, em termos computacionais, arredondar um número envolve

uma operação a mais (a de se decidir para qual número se deve realizar a alteração). Nos métodos que

estamos estudando, é usual efetuar o truncamento dos números, e não o arredondamento, pelo seguinte

motivo: havendo garantia de convergência da sequência gerada por um método iterativo (como o método
14 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

da bissecção, ou o método de Newton, a seguir), a cada nova iteração o próximo elemento está mais

próximo da solução exata, independente do arredondamento ou não.

Finalmente, caso queiramos uma aproximação x̄ para a solução exata x∗ de uma equação f (x) = 0

com n casas decimais corretas, ou para atender a uma tolerância ε = 10−n , é preciso trabalhar com um

número de casas decimais maior que n (este que vos escreve prefere n + 2 ou mais). Garantindo n casas

corretas, o arredondamento não fará diferença; mais um motivo pelo qual truncamento é mais vantajoso.

1.4 Método de Newton

Estudemos o método de Newton-Raphson (chamaremos apenas de método de Newton) para calcular zeros

de funções reais de uma variável real.

Consideramos que x∗ seja um zero de uma dada função y = f (x), derivável e que cuja derivada seja

contı́nua. Vamos introduzir o método de Newton, cujas iterações são dada por:

f x(n)

(n+1) (n)
x =x − 0 (n)  , n ≥ 0, (1.3)
f x

sendo x(0) uma aproximação inicial dada ou escolhida (veremos mais adiante como a escolha de x(0) deve

ser feita).

Vejamos uma justificativa geométrica para a equação (1.3). Seja uma dada função f (x) conforme

Figura 1.4. Para tanto, escolhemos uma aproximação inicial x(0) . Como a função é derivável, existe

uma reta tangente ao seu gráfico pelo ponto (x(0) , f (x(0) )).

Geometricamente, o ponto x(1) (próximo elemento da sequência) é a interseção desta reta tangente

com o eixo das abscissas. Com efeito, a equação desta reta é:

y = f 0 (x(0) )(x − x(0) ) + f (x(0) ).

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

f (x(0) )
f 0 (x(0) )(x − x(0) ) + f (x(0) ) = 0 ⇒ x = x(0) − .
f 0 (x(0) )

Como esta interseção é o próximo elemento da sequência, então:

f (x(0) )
x(1) = x(0) − .
f 0 (x(0) )
1.4. MÉTODO DE NEWTON 15

Repete-se o processo acima para calcular x(2) , x(3) e assim sucessivamente.

y
f (x(0) )

f (x(1) )

f (x(2) ) x
∗ (2) (1) (0)
x x x x

Figura 1.4: Interpretação geométrica do método de Newton.

Ou seja, dada a aproximação x(n) , a próxima aproximação x(n+1) é o ponto de interseção entre o eixo

das abscissas e a reta tangente ao gráfico da função em x = x(n) . Observe a Figura 1.4.

Exemplo 1.14 Considere a função f (x) = ex − 2x − 2, que possui um único zero no intervalo (−2, 0).

Vamos escolher x(0) = −1 como nosso palpite inicial.

Como f 0 (x) = ex − 2, o processo iterativo do método de Newton torna-se:

(n)
ex − 2x(n) − 2
x(n+1) = x(n) − .
ex(n) − 2

As iterações são:

n = 0 ⇒ x(1) = −0.7746003264394359,

n = 1 ⇒ x(2) = −0.7680455068651546,

n = 2 ⇒ x(3) = −0.7680390470197671,

n = 3 ⇒ x(4) = −0.7680390470134656.

Podemos checar que, de fato, estes números estão sucessivamente mais próximos de um número x∗
16 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

onde f (x∗ ) = 0:
f (x(0) ) = 0.3678794411714423,

f (x(1) ) = 0.01008860179942772,

f (x(2) ) = 9.922846349819104 · 10−6 ,

f (x(3) ) = 9.679645973648121 · 10−12 ,

f (x(4) ) = 5.551115123125783 · 10−17 .

No exemplo anterior, evidenciamos que o método de Newton consegue produzir uma sequência que

converge para uma raiz de maneira muito mais rápida que o método da bissecção, fazendo deste método

muito mais eficiente caso a função envolvida seja derivável. Vejamos algumas condições para a con-

vergência do método de Newton.

Teorema 1.3 Seja f função com derivadas de primeira e segunda ordem contı́nuas num intervalo (a, b).

Assuma que exista x∗ ∈ (a, b) tal que f (x∗ ) = 0, f 0 (x∗ ) 6= 0. Então existe um número δ > 0, tal que a

sequência gerada pelo método de Newton converge para x∗ se a aproximação inicial x(0) ∈ (p − δ, p + δ).

Prova: Ver [2]. 

O teorema acima nos diz que a aproximação inicial x(0) deve ser escolhida suficientemente próxima de

x∗ : existe um número δ, positivo e possivelmente pequeno, onde qualquer escolha de x(0) em (p − δ, p + δ)

gerará uma sequência convergente para x∗ pelo método de Newton. Se a aproximação inicial for escolhida

afastada demais da raiz, não há garantia de convergência (veja a Figura 1.5). Este valor δ pode ser

calculado (ver [4]), mas na prática, se não for clara qual escolha inicial fazer, convém aplicar uma

combinação do método da bissecção (para obter um intervalo pequeno onde temos certeza da existência

de uma raiz) e do método de Newton (para satisfazer a tolerâncias muito pequenas).

1.4.1 Critério de Parada

Recorde que, no método de Bissecção, sempre havia a certeza de que a raiz está num intervalo de

determinado comprimento, de forma que podemos estimar a distância entre a aproximação e a raiz

mesmo sem conhecê-la. No método de Newton, esta estimativa não é tão simples, pois depende da

expressão de f (x) e das suas derivadas.

Podemos adotar então dois critérios distintos, que podem ser checados de maneira independente ou

conjunta, para determinar se uma aproximação é satisfatória ou não.


1.4. MÉTODO DE NEWTON 17

x(1) mais
perto de x∗ x
Boa escolha Má escolha x(1) mais
para x(0) para x(0) longe de x∗

- ,

Figura 1.5: Diferentes aproximações iniciais para o Método de Newton

Critério 1: Sobre as iterações

Suponha que o método de Newton tenha gerado aproximações x(0) , x(1) , x(2) , ... de uma sequência que

converge para x∗ . Como estes números tornam-se sucessivamente mais próximos de x∗ , eles também

ficam cada vez mais próximos um do outro, isto é, para qualquer  > 0, existe n grande o suficiente para

que

|x(n) − x(n−1) | < . (1.4)

Assim, por este critério, x(n) é a aproximação desejada se a equação (1.4) for satisfeita para uma

tolerância  dada.

Critério 2: Sobre o valor de f (x(n) )

Como queremos uma aproximação para x∗ tal que f (x∗ ) = 0, então podemos avaliar se |f (x(n) )| < ,

para uma tolerância  dada. Em outras palavras, por este critério, x(n) é a aproximação desejada se

f (x(n) ) está suficientemente próximo de 0.

Exemplo 1.15 Calculemos uma aproximação para uma solução da equação


x = ex − 1

com x ∈ (0.5, 1), satisfazendo a uma tolerância  = 10−10 sobre os dois critérios acima. A solução da

equação é uma raiz da função



f (x) = ex − x − 1,
18 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

Critério 1 Critério 2
(n)
n x |x − x(n−1) |
(n)
|f (x(n) )|
0 0.6 - 0.0475...> 
1 0.5596113719844684 0.0017...>  0.0019...> 
2 0.5578357709891212 3.4339... · 10−6 >  3.6999 · 10−6 > 
3 0.5578323370066668 3.4058... · 10−12 <  1.3838 · 10−11 < 


Tabela 1.2: Iterações do método de Newton para f (x) = ex − x − 1, x(0) = 0.6 até verificar a tolerância
 = 10−10 .

cujo gráfico encontra-se na Figura 1.6. O processo iterativo do método de Newton aplicado a esta função

é: √
(n)
(n+1) (n) ex − x(n) − 1
x =x − .
ex(n) − √1 (n)
2 x

0.8

0.6

0.4
y

0.2

0
x∗

0.5 0.6 0.7 0.8 0.9 1


x

Figura 1.6: Gráfico da função f (x) = ex − x − 1, x ∈ (0.5, 1).

Escolhamos então a aproximação inicial x(0) = 0.6. Fazendo as iterações e checando os dois critérios

a cada passo, temos a tabela 1.2.

Assim, x(4) = 0.5578323370066668 é a aproximação desejada.

Observação 1.6 Em geral o critério 1 é mais adequado; é possı́vel construir uma função f (x) tal que,

para uma dada raiz x∗ e uma tolerância , o critério 2 seja satisfeito mas o critério 1 não. Além disso,

o número de iterações pode ser diferente para se satisfazer a ambos os critérios.

Vamos continuar a partir do Exemplo 1.15, realizando iterações do método de Newton, trabalhando
1.4. MÉTODO DE NEWTON 19

sempre com 16 dı́gitos após a vı́rgula; obteremos então os números da Tabela 1.3. Note que, após 4

iterações, o processo começa a repetir o resultado.

n x(n)
0 0.6
1 0.5596113719844684
2 0.5578357709891212
3 0.5578323370066668
4 0.5578323369938233
5 0.5578323369938233
6 0.5578323369938233


Tabela 1.3: Cinco iterações do método de Newton para f (x) = ex − x − 1, x(0) = 0.6.

Se prosseguirmos com o processo, sempre com 16 casas decimais, o método produzirá sempre a mesma

aproximação. Isso significa que esta aproximação coincide com a solução x∗ nestas primeiras 16 casas

decimais; em outras palavras, estes dı́gitos se tornaram estáveis. Para calcular mais dı́gitos corretos para

esta aproximação, precisarı́amos de uma ferramente computacional capaz de representar mais dı́gitos;

a maioria das calculadoras cientı́ficas possui 10 dı́gitos e portanto não podem ser usadas para calcular

aproximações com grandes precisões.

Observação 1.7 Para os cálculos acima, foi usado o software WxMaxima.

Assim, se quisermos obter, via método de Newton, uma aproximação para uma raiz x∗ com n casas

decimais corretas, basta fazer iterações até que se obtenha estabilidade em n dı́gitos significativos.

1.4.2 Exercı́cios

Exercı́cio 1.12 Encontre a raiz positiva da função f (x) = cos(x) − x2 pelo método de Newton iniciando

com x(0) = 1. Realize a iteração até obter estabilidade no quinto dı́gito significativo.

Exercı́cio 1.13 Considere o problema de calcular as soluções positivas da equação:

tan(x) = 2x2 .

a) Use o método gráfico para isolar as duas primeiras raı́zes positivas em pequenos intervalos. Use a

teoria para argumentar quanto à existência e unicidade das raı́zes dentro dos intervalos escolhidos.

b) Calcule cada uma das raı́zes pelo método de Newton com oito dı́gitos significativos.
20 CAPÍTULO 1. ZEROS DE FUNÇÕES REAIS

Exercı́cio 1.14 Isole e encontre as cinco primeiras raı́zes positivas da equação com 6 dı́gitos corretos

através análise de gráfico e do método de Newton.

cos(10x) = e−x .

Exercı́cio 1.15 Encontre as raı́zes do polinômio f (x) = x4 − 4x2 + 4 através do método de Newton. O

que você observa em relação ao erro obtido?

x5
Exercı́cio 1.16 Encontre as raı́zes reais do polinômio f (x) = 100 + x4 + 3x + 1 isolando-as analisando

o gráfico e depois usando o método de Newton. Expresse a solução com 7 dı́gitos significativos.

Exercı́cio 1.17 Considere o método de Newton aplicado para encontrar a raiz de f (x) = x3 − 2x + 2.

O que acontece quando x(0) = 0? Escolha um valor adequado para inicializar o método e obter a única

raiz real desta equação.


Capı́tulo 2

Sistemas Lineares e Matrizes

2.1 Introdução

ESCREVER

2.2 Sistemas triangulares

Para minimizar o esforço computacional na resolução de um sistema linear AX = B (veja [6] para

recordar sistemas lineares e matrizes) uma estratégia possı́vel de ser adotada é escrever a matriz A numa

forma que diminua a quantidade de operações para se resolver o sistema. Se optarmos por usar matrizes

triangulares, lançamos mão da fatoração LU da matriz A.

Primeiro, vejamos como obter a solução de um sistema linear cuja matriz é triangular. Considere um

sistema linear onde a matriz é triangular superior, ou seja,

   
a a12 ··· a1n x1 b
 11     1
    
 0 a22 ··· a2n 
  x2   b2 
   
= 

 . .. ..  
..  .  .

 .
 . . . .   ..   .. 
    
0 ... 0 ann xn bn

(todos elementos abaixo da diagonal da matriz do sistema são iguais a zero).

Vamos supor que o sistema admita uma única solução. Podemos resolver esse sistema iniciando pela

última equação e isolando xn , obtendo

xn = bn /ann

21
22 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

Substituindo xn na penúltima equação

an−1,n−1 xn−1 + an−1,n xn = bn−1

e isolando xn−1 obtemos

xn−1 = (bn−1 − an−1,n xn )/an−1,n−1 .

Continuando desta forma até a primeira equação, obteremos

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

De forma geral, temos que

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

Exemplo 2.1 Considere o sistema linear AX = B cuja matriz é triangular superior:

     
2 1 3 x  0  2x + y + 3z =0




     
−1  y  =  1  que equivale a  −y + 4z
0 4     =1

     

0 0 3 z −3 3z = −3

É imediato ver que o determinante da matriz A é −6,logo o sistema possui uma única solução. Da

última linha concluı́mos que z = −1.

Substituindo este z na segunda linha, obtemos y = −5.

Substituindo os valores encontrados para y e z na primeira linha, obtemos x = 4.

A solução, portanto, é:    


x  4 
   
y  = −5 .
   
   
z −1

2.3 Fatoração LU

Considere um sistema linear AX = B. A fim de resolver o sistema, podemos fatorar a matriz A como o

produto de uma matriz L triangular inferior (“Lower”) e uma matriz U triangular superior (“U pper”),

ou seja, A = LU .
2.3. FATORAÇÃO LU 23

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

AX = B (2.1)

(LU )X = B (2.2)

L(U X) = B (2.3)

LY = B e UX = Y (2.4)

Isto significa que, ao invés de resolvermos o sistema original, podemos resolver o sistema triangular

inferior LY = B e, então, o sistema triangular superior U X = Y , o qual nos fornece a solução X de

AX = B.

A vantagem de se usar a fatoração LU para se resolver AX = B é que, diferente do escalonamento

normal, as operações são feitas sobre a matriz A e não sobre a matriz aumentada do sistema (veja [6]).

Assim, por exemplo, em situações onde se precise resolver o sistema AX = B várias vezes por segundo,

para vários B distintos, a fatoração LU reduz a quantidade de operações necessárias.

Obteremos a fatoração LU de uma matriz A por via da eliminação de Gauss. Vamos considerar um

exemplo genérico no caso em que A é 3 × 3, det(A) 6= 0; então AX = B é da forma:





 a11 x1 + a12 x2 + a13 x3 = b1

 a21 x1 + a22 x2 + a23 x3 = b2


 a31 x1 + a32 x2 + a33 x3 = b3

onde:      
a11 a12 a13  x1  b1 
     
A=
a21 a22  , X = x2  e B = b2  .
a23     
     
a31 a32 a33 x3 b3

Trabalharemos apenas com a matriz dos coeficientes, A. Chamemos:

 
(0) (0) (0)
a11 a12 a13 
A(0)
 (0) (0) (0)

=
a21 a22 a23 
 
(0) (0) (0)
a31 a32 a33

Procederemos com o escalonamento de A de forma a transformá-la em uma matriz triangular superior.

Significa que devemos realizar operações elementares de forma a transformar os elementos abaixo da

diagonal principal em zeros.


24 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

Para que os dois últimos elementos da primeira coluna de A(0) tornem-se zero, é preciso realizar as
(0)
operações elementares (supondo a11 6= 0):

(0)
a21
L2 − (0)
· L1 → L2 ,
a11

e
(0)
a31
L3 − (0)
· L1 → L3 ,
a11

donde obtemos os seguintes multiplicadores:

(0) (0)
a21 a
m21 = (0)
, m31 = 31
(0)
.
a11 a11

Realizando estas operações sobre a matriz A(0) , obtemos uma nova matriz (que chamaremos de A(1) ):

   
(0) (0) (0) (1) (1) (1)
 a11 a12 a13  a11 a12 a13 
(1)
 (0)
a − m a(0) (0) (0) (0) (0) (1) (1)
  
a22 − m21 a12 a23 − m21 a13 = 0 a22 a23 =A .

 21 21 11
   
(0) (0) (0) (0) (0) (0) (1) (1)
a31 − m31 a11 a32 − m31 a12 a33 − m31 a13 0 a32 a33

(1)
Supondo que a22 6= 0, continuamos o procedimento: para que o elemento na terceira linha, segunda

coluna torne-se zero, fazemos sobre A(1) a operação

(1)
a32
L3 − (1)
· L2 → L3 ,
a22

donde obtemos o multiplicador:


(1)
a32
m32 = (1)
.
a22

Realizando estas operações sobre a matriz A(1) , obtemos uma nova matriz (que chamaremos de A(2) ):

   
(1) (1) (1) (2) (2) (2)
a11 a12 a13  a11 a12 a13 
(1) (1) (2) (2) (2)
   
= 0
=A .
 0 a22 a23 a22 a23 
  
   
(1) (1) (1) (2)
0 a32 − m32 a2 2(1) a33 − m32 a23 0 0 a33

Note que A(2) é triangular superior, portanto não precisamos mais realizar operações elementares.
2.3. FATORAÇÃO LU 25

Então chamaremos A(2) de U . Com os multiplicadores m21 , m31 e m32 , obtemos a seguinte matriz:

 
 1 0 0
 
L=
m21 1 0

 
m31 m32 1

É imediato verificar que

A = L · U,

e portanto as matrizes L e U são as procuradas.

Exemplo 2.2 Vamos encontrar a fatoração LU da matriz

 
1 1 1
 
2
 1 −1
 
2 −1 1

Procedendo com o escalonamento para obter uma matriz triangular superior:

     
1 1 1 1 1 1 1 1 1
     
2
 1 −1 L2 − 2L1 → L2 0
 −1 −3

0
 −1 −3
     
2 −1 1 L3 − 2L1 → L3 0 −3 −1 L3 − 3L2 → L3 0 0 8

Os multiplicadores são m21 = 2, m31 = 2, m32 = 3, e portanto

  
1 0 0 1 1 1
  
A=
2 1 0
 0
 −1 −3.
  
2 3 1 0 0 8

Exemplo 2.3 Vamos usar a fatoração do exemplo anterior para resolver o sistema

    
1 1 1  x1  −2
    
−1 x2  =  1  .
2 1    

    
2 −1 1 x3 3
26 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

Usando a fatoração LU :

     
1 0 0 1 1 1  x1  −2
     
−1 −3 x2  =  1 
2 1 0 0
    

     
2 3 1 0 0 8 x3 3

Chamando     
1 1 1  x1  y1 
    
−1 −3 x2  = y2  (2.5)
0    

    
0 0 8 x3 y3

então     
1 0 0 y1  −2
    
 y2  =  1 
2 1 0    

    
2 3 1 y3 3

Em forma de sistema, esta equação escreve-se como






 y1 = −2

 2y1 + y2 = 1


 2y1 + 3y2 + y3

= 3

cuja solução pode facilmente ser calculada por substituição:

y1 = −2

⇒ y2 = 1 − 2y1 = 5 .

⇒ y3 = 3 − 2y1 − 3y2 = 3 + 4 − 15 = −8.

Substituindo estes valores na equação (2.5):

    
1 1 1  x1  −2
    
−1 −3 x2  =  5 
0    

    
0 0 8 x3 −8
2.3. FATORAÇÃO LU 27

cuja solução pode ser calculada facilmente por substituição (começando por baixo):

−8
x3 = 8 = −1
5+3x3 5−3 .
⇒ x2 = −1 = −1 = −2

⇒ x1 = −2 − x2 − x1 = −2 + 2 + 1 = 1

e portanto a solução do sistema é    


x1   1 
   
x  = −2
 2  
   
x3 −1

Exercı́cios

Exercı́cio 2.1 Obtenha a fatoração LU das matrizes A abaixo e use-as para resolver o sistema AX = B,

se possı́vel, onde B é o vetor informado em cada caso. Você pode permutar linhas da matriz A, se

necessário.
   
 3 1 4   1 
   
(a) A = 
 0 2 3 , B =  −3 
 

   
1 2 1 4
   
 0 1
2   2 
   
(b) A = 
 3 , B =  0
−1 2   

   
1 1 0 3
   
 1 2 1   −1 
   
(c) A = 
 2 4 2 , B = 

 1 

   
1 3 −1 2

Exercı́cio 2.2 Use a fatoração LU das matrizes abaixo para calcular seu determinante e sua inversa.
 
 1 2 1 
 
(a) A = 
 2 4 2 

 
1 3 −1
 
 0.6326 0.5931 0.6546 
 
(b) A = 
 0.4707 0.05192 0.002327 

 
0.3156 0.8602 0.04206
28 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
 
 0.9031 0.6470.8513 
 
(c) A = 
 0.5442 0.04307 0.664 

 
0.4092 −0.1464 −0.1411

2.4 Fatoração de Cholesky

Nesta seção, obteremos a fatoração de Cholesky de uma matriz A a partir de sua fatoração LU. Esta

fatoração permite escrever A na forma A = G · Gt , onde G é uma matriz triangular inferior. No entanto,

a matriz A precisa ser simétrica e definida positiva.

Definição 2.1 Uma matriz simétrica An×n é definida positiva se, para todo vetor

 
 x1 
 .  n
. 
 . ∈R ,
X=
 
xn

tivermos

X t AX > 0.

Teorema 2.1 [Critério de Sylvester] Seja An×n matriz simétrica e Ak a submatriz k × k de A obtida

no canto superior esquerdo de A. A matriz A é definida positiva se e somente se todos os determinantes

das submatrizes A1 , A2 ,..., An−1 e An = A forem positivos.

Prova: Ver [7]. 


 
2 −1 0 0
 
 
−1 2 −1 0
Exemplo 2.4 A matriz simétrica A =   é positiva definida. De fato, basta checar o
 
0 −1 2 0
 
 
 
0 0 0 5
critério de Sylvester (2.1): calculando os determinantes das submatrizes:

 
A1 = 2 ⇒ det(A1 ) = 2 > 0.

 
2 −1
A2 =   ⇒ det(A2 ) = 3 > 0.
−1 2
2.4. FATORAÇÃO DE CHOLESKY 29

 
2 −1 0
 
A3 = 
−1 2 −1 ⇒ det(A3 ) = 4 > 0.
 
0 −1 2

A4 = A ⇒ det(A4 ) = det(A) = 20 > 0.

Como cada um destes determinantes é positivo, A é definida positiva.

Teorema 2.2 Uma matriz A é definida positiva se e somente se ela pode ser escrita como um produto

A = LDLt ,

onde L é triangular inferior cujos elementos da diagonal principal são todos iguais a 1, e D é uma matriz

diagonal cujos elementos da diagonal principal são positivos.

Prova: Ver [2]. 

Note que, se D é uma matriz diagonal cujos elementos da diagonal principal são todos positivos,

digamos:  
a 0 ··· 0
 11 
 
 0 a22 ··· 0 
 , aii > 0, ∀i = 1, ..., n,
 
 . .. .. ..
 . .
 . . .


 
0 0 ··· ann

então D pode ser escrita como

D =D·D

onde

 
a 0 ··· 0
 11 
 √ 
 0 a22 ··· 0 
D= . .
 
 . .. .. .. 
 . . . . 


 
0 0 ··· ann
30 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

Como esta D é simétrica (pois é diagonal), então usando o Teorema 2.2, temos:

A = L · D · Lt

= L · D · D · Lt
t
= (L · D) · (D · Lt )

= (L · D) · (L · D)t

Chamando G = L · D, concluiremos que a matriz A, simétrica e definida positiva, pode ser escrita

como:

A = G · Gt (2.6)

A fatoração (2.6) é a fatoração de Cholesky da matriz A. A matriz G é o fator de Cholesky de A.

A fatoração de Cholesky pode ser obtida a partir da fatoração LU de A, da seguinte maneira: seja A

positiva definida, det(A) 6= 0 e A = LU sua fatoração LU (duh!); então det(L) 6= 0 e det(U ) 6= 0.

A matriz L possui em sua diagonal principal apenas o número 1. Como a matriz U é triangular

superior, então U t é triangular inferior, seja U t = M · D a fatoração LU de U t ; M é triangular inferior e

D é triangular superior.

Como U t é triangular inferior, todos os elementos acima da diagonal são zero; por escalonamento, a

matriz D também será triangular inferior (verifique!). Como ela já é triangular superior, D é diagonal.

Como U t = M D, U = Dt M t = DM t , e temos

A = LDM t .

Usando um resultado presente em [2], é possı́vel provar que M = L (segue da simetria de A) e que todos

os elementos da diagonal principal de D são positivos (segue de A ser definida positiva). O fator de

Cholesky é, portanto, G = LD, onde D é obtida como anteriormente.

Exemplo 2.5 Seja  


16 −4 12 −4
 
 
−4 2 −1 1
A=
 

 12 −1 14 −2
 
 
−4 1 −2 83
2.4. FATORAÇÃO DE CHOLESKY 31

Sua fatoração LU é (verifique!):

  
1 0 0 0 16 −4 12 −4
  
  
− 1 1 0 0
 0 1 2 0

 4
A = LU = 

 
 3
2 1 0  0 0 1 1
 
 4
  
− 14 0 1 1 0 0 0 81

A matriz D é diagonal e os elementos da diagonal principal de D coincidem com a de U , ou seja:

 
16 0 0 0
 
 
0 1 0 0
D=
 

0 0 1 0
 
 
0 0 0 81

donde  
4 0 0 0
 
 
0 1 0 0
D=
 

0 0 1 0
 
 
0 0 0 9

e o fator de Cholesky de A é  
40 0 0
 
 
−1 1 0 0
G = LD = 
 

 3 2 1 0
 
 
−1 0 1 9

Exercı́cios

Exercı́cio 2.3 Verifique se as matrizes simétricas abaixo são positivas definidas. Se forem, encontre a

fatoração de Cholesky delas.

   
 16 −8 −4  16 −12 −12 −16
   
 
(a) A =  −8 29 12 
  −12 25 1 −4 
(b) A = 
  
  
−4 12 41  −12 1 17 14 
 
 
−16 −4 14 57
32 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

 
4 1 2 0.5 2
 
 
 1 0.5 0 0 0 
 
 
(c) A = 
 2 0 3 0 0 

 
 0.5 0 0 0.625 0 
 
 
2 0 0 0 16

Exercı́cio 2.4 Aplicando-se a fatoração de Cholesky a uma matriz

 
... 2 ... ...
 
 
... 8 10 −8
A=  = GGt ,
 
 3 10 14 −5
 
 
... −8 ... 29

obteve-se  
1 0 0 0
 
 
 2 ... 0 0
G=
 

... 2 1 0
 
 
0 −4 ... 2

Preencha os espaços pontilhados com valores adequados.

2.5 Métodos iterativos para sistemas lineares

Nas seções anteriores, tratamos de métodos diretos para a resolução de sistemas lineares. Em um método

direto (por exemplo, solução via fatoração LU) obtemos a solução (ou uma aproximação, devido a trun-

camento) após realizarmos um número finito de operações (só teremos a solução ao final do processo).

Veremos dois métodos iterativos básicos para obter uma aproximação para a solução de um sistema

linear. Geralmente em um método iterativo, iniciamos com uma aproximação para a solução (que pode

representar um erro grande em comparação com a solução exata) e vamos melhorando essa aproximação

através de sucessivas iterações.

Embora os exemplos feitos sejam para matrizes pequenas, deve-se considerar a dificuldade compu-

tacional de se resolver sistemas lineares AX = B para matrizes muito grandes. Nessa situação em

que a solução existe mas pode ser de obtenção inacessı́vel é que estes métodos iterativos para se obter

aproximações tornam-se mais adequados.


2.6. MÉTODO DE JACOBI 33

2.6 Método de Jacobi

O método de Jacobi (também conhecido como Gauss-Jacobi, Jacobi-Richardson ou Método dos Deslo-

camentos Simultâneos) pode ser obtido a partir de um sistema linear




 a11 x1 + a12 x2 + · · · + a1n xn = b1



 a21 x1 + a22 x2 + · · · + a2n xn

= b2
.. ..
. .







 a x + a x + ··· + a x
n1 1 n2 2 nn n = bn

(assumiremos que os elementos da diagonal principal da matriz deste sistema são todos não-nulos; mais

sobre isso adiante; assumiremos também que o sistema possui uma única solução) isolando-se o elemento

xi da equação i. Como é um processo iterativo, a iteração k + 1 depende da iteração k, o que justifica os


(k+1)
ı́ndices xi abaixo:

 
(k) (k)

 b1 − a12 x2 + · · · + a1n xn
 (k+1)

 x1 =
a11









  
(k) (k) (k)

b2 − a21 x1 + a23 x3 + · · · + a2n xn



 (k+1)
 x2 =


a22

(2.7)


..



.











  
(k) (k) (k)
bn − an1 x1 + · · · + an,n−2 xn−2 + an,n−1 xn−1



 x(k+1)

= .

n
ann

Este é o processo iterativo do Método de Jacobi. O valor inicial

 
(0)
x1
 
 (0) 
x 
 2 
X (0) = . 
 . 
 . 
 
(0)
xn

pode ser escolhido como um vetor arbitrário qualquer (veja a seção “Critério de Convergência” abaixo).
34 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

Uma escolha padrão é tomá-lo como o vetor coluna

 
b
 1
 
 b2 
 
.
.
.
 
bn

Exemplo 2.6 Resolver o sistema 


 10x + y

= 23
 x + 8y

= 26

usando o método de Jacobi iniciando com x(0) = y (0) = 0. Como o sistema só tem duas equações e duas

variáveis, e fácil ver que a solução do sistema é

   
x 2
  =  .
y 3

Veremos que a sequência gerada pelo Método de Jacobi aproxima-se desta solução conforme k cresce.

Isolando x na primeira linha, y na segunda linha e colocando os ı́ndices das iterações, temos o processo

iterativo:


 x(k+1) 23−y (k)
=

10

 y (k+1) 26−x(k)
=

8

Na primeira iteração, fazemos k = 0 e usando a aproximação inicial no enunciado, obtemos:


 x(1) 23−y (0) 23−0
= = = 2.3

10 10
(0)
.
 y (1) 26−x 26−0
= = = 3.25

8 8

Fazendo k = 1, obtemos a segunda iteração:


 x(2) 23−y (1) 23−3.25
= = = 1.975

10 10
(1)
.
 y (2) 26−x 26−2.3
= = = 2.9625

8 8

Fazendo k = 2, obtemos a terceira iteração:


2.6. MÉTODO DE JACOBI 35


 x(3) 23−y (2)
= = 2.00375

10
(2)
.
 y (3) 26−x
= = 3.003125

8

E assim sucessivamente.

Exercı́cio 2.5 Realize três iterações do Método de Jacobi aplicado ao sistema linear do Exemplo 2.6

usando a aproximação inicial x(0) = 10, y (0) = −15. Verifique que a sequência gerada aproxima-se da

solução exata.

2.6.1 Forma Matricial do Processo Iterativo

O processo iterativo (2.7) pode ser escrito em forma matricial da seguinte maneira: a partir da matriz A

do sistema AX = B, escreva-a como

A = L + D + U,

onde L é triangular inferior (formada pela parte de A abaixo da diagonal principal), D é diagonal (formada

pela diagonal de A) e U é triangular superior.

Exemplo 2.7
       
1 2 3 0 0 0 1 0 0 0 2 3
       
A = 4 5 =
6 4 0 +
0 0 5 +
0 0 0 6 = L + D + U, respectivamente.
       
       
7 8 9 7 8 0 0 0 9 0 0 0

Suponha det(D) 6= 0 (se for zero, podemos realizar operações elementares sobre o sistema para obter

um novo sistema cuja diagonal principal da matriz seja formada apenas por elementos não nulos; recorde

que operações elementares não alteram a solução do sistema). Podemos reescrever o sistema:

AX = B

⇒ (L + D + U )X = B

⇒ DX = −(L + U )X + B

⇒ X = −D−1 (L + U )X + D−1 B.

donde obtemos o processo iterativo em forma matricial (equivalente à equação (2.7) ):

X (k+1) = −D−1 (L + U )X (k) + D−1 B. (2.8)

Esta forma é mais adequada para aplicar-se este método computacionalmente.


36 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

2.6.2 Critérios de Parada

Considere o sistema AX = B e uma tolerância  > 0; assumiremos que o solução admite uma única

solução X ∗ (A é n × n e det(A) 6= 0). Sejam X (k+1) , X (k) duas aproximações consecutivas do método

de Jacobi.

Medimos a distância entre X (k+1) e X (k) por

(k+1) (k)
d(k+1) = máx 1≤i≤n |xi − xi |.

Em outras palavras, d(k+1) é maior módulo entre as coordenadas do vetor X (k+1) − X (k) , para

k = 0, 1, ....

Exemplo 2.8 Do Exemplo 2.6, como

   
 1.975   2.00375 
X (2) =  (3)
,X =  ,
2.9625 3.003125

então      
 2.00375 − 1.975   2.00375 − 1.975   0.02875 
X (3) − X (2) =  = = 
3.003125 − 2.9625 3.003125 − 2.9625 0.040625

Como as duas coordenadas são positivas, elas coincidem com os seus respectivos módulos e portanto

d(3) = 0.040625.

Exemplo 2.9 Considere o seguinte sistema






 −4x1 + x2 + x3 =2

 2x1 + 5x2 + x3 =5


 2x1 + 3x2 + 7x3 = −17

Usemos o método de Jacobi com a aproximação inicial escolhida arbitrariamente

 
1
X (0) = 
 
 1 .

−1
2.6. MÉTODO DE JACOBI 37

O processo iterativo do método de Jacobi aplicado a este sistema linear é:



(k) (k)
 (k+1) x2 + x3 − 2

 x 1 =
4






 (k) (k)
(k+1) −2x1 − x3 + 5 ,
x 2 =


 5


 (k) (k)
 x(k+1) = −2x1 − 3x2 − 17



3
7

com o qual obtemos os seguintes resultados (trabalhando com apenas duas casas decimais e trunca-

mento):
 
1
 
• A aproximação inicial: X (0) = 
1

−1
   
−0.50 −1.5
   
• Para k = 0: X (1) =  (1) (0) (1)
 0.80 , X − X =  −0.2  e d = 2.14.
  
−3.14 −2.14
   
−1.08 −0.58
   
• Para k = 1: X (2) =  (2) (1) (2)
 1.82 , X − X =  1.02  e d = 1.02.
  
−2.62 0.51
   
−0.70 0.38
   
• Para k = 2: X (3) =  (3) (2) (3)
 1.96 , X − X =  0.13  e d = 0.38.
  
−2.90 −0.27
   
−0.73 −0.03
   
• Para k = 3: X (4) = 
 1.86 , X (4) − X (3) = −0.09 e d(4) = 0.16.
  
−3.06 −0.16

Compare as aproximações com a solução exata

  
 − 79
 −0.77
   
 12  ≈  1.91  .
X= 23   
   
− 109
36 −3.02

Se quisermos satisfazer a uma certa tolerância  > 0 informada, devemos realizar iterações do método

até que tenhamos d(k+1) < . (Compare com o Critério 1 do Método de Newton, do primeiro capı́tulo).

Alguns autores usam, ao invés de d(k+1) , a seguinte:

d(k+1)
d(k+1)
r = (k+1)
,
máx 1≤i≤n |xi |
38 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

(k+1)
(ver [5]), obtendo uma espécie de avaliação sobre o erro relativo; dr nada mais é do que d(k+1)

dividido pelo maior módulo entre as coordenadas de X (k+1) .

Exemplo 2.10 Usando os resultados do Exemplo 2.9, calcula-se:

(k+1)
k dr
2.14
0 3.14 = 0.68
1.02
1 2.62 = 0.39
0.38
2 2.90 = 0.13
0.16
3 3.06 = 0.05

2.6.3 Condição de convergência do método de Jacobi

Seja AX = B um sistema linear, A uma matriz n × n com det(A) 6= 0. Considere os seguintes números:

 
n
X 

 |akj |

j=1
j6=k
αk = .
|akk |

Se αk ≤ 1 para todo k = 1, ..., n, então o método de Jacobi produz uma sequência {X (n) } que converge

para a solução X ∗ do sistema AX = B, independente da escolha da aproximação inicial X (0) (veja uma

demonstração deste fato em [5] e [3]).

Exemplo 2.11 A matrix do Exemplo 2.9 é

 
−4 1 1
 
A=
2 5 1

 
2 3 7

para a qual temos:


|1| + |1|
α1 = = 0.5 < 1,
| − 4|
|2| + |1|
α2 = = 0.6 < 1,
|5|
|2| + |3|
α3 = = 0.71 < 1,
|7|

donde podemos garantir que as iterações do método de Jacobi convergem para a solução exata.
2.7. MÉTODO DE GAUSS-SEIDEL 39

Em outras palavras, os números αk comparam, na linha k de A, a soma dos módulos dos termos fora

da diagonal principal com o módulo do termo na diagonal principal.

Exercı́cios

Exercı́cio 2.6 Verifique as condições para aplicar o método de Gauss-Jacobi e resolva os sistemas por

este método, com a precisão dada.


 16x1 + 5x2

= 21
(a) ,  = 0.001 sobre erro relativo.
 3x1 + 2.5x2

= 5.5





 0.252x1 + 0.26x2 + 0.12x3 = 7

(b)
 0.112x1 + 0.16x2 + 0.24x3 = 8 ,  = 0.05.


 0.147x1 + 0.21x2 + 0.25x3 = 9

2.7 Método de Gauss-Seidel

O Método de Gauss-Seidel é similar ao Método de Jacobi: dado um sistema linear AX = B, onde A é

uma matriz n × n com det(A) 6= 0, escreve-se um processo iterativo de forma a obter-se uma aproximação

para a solução exata X ∗ . Usaremos a mesma notação e nomenclatura do método de Jacobi. A diferença
(k+1) (k+1)
no Método de Gauss-Seidel é que, em cada iteração k, ao se calcular x2 , o valor x1 já foi calculado;
(k) (k+1) (k+1) (k+1) (k) (k)
então ele é usado (ao invés de x1 ); ao se calcular x3 , usa-se x1 e x2 (ao invés de x1 e x2 ),

e assim sucessivamente.

Assim, se o sistema é 


 a11 x1 + a12 x2 + · · · + a1n xn = b1



 a21 x1 + a22 x2 + · · · + a2n xn

= b2
.. .. ,
. .







 a x + a x + ··· + a x
n1 1 n2 2 nn n = bn
40 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

o processo iterativo por Gauss-Seidel é:

 
(k) (k)

 b1 − a12 x2 + · · · + a1n xn
 (k+1)

 x1 =
a11









  
(k+1) (k) (k)

b2 − a21 x1 + a23 x3 + · · · + a2n xn



 (k+1)
 x2 =


a22

(2.9)


..



.











  
(k+1) (k+1) (k+1)
bn − an1 x1 + · · · + an,n−2 xn−2 + an,n−1 xn−1



 x(k+1)

= .

n
ann

Por ser muito similar ao Método de Jacobi, os mesmos critérios de parada são utilizados.

Exemplo 2.12 Para podermos comparar com o método de Jacobi, vamos refazer um exemplo 2.9 da

última seção, dessa vez via Gauss-Seidel: considere o sistema linear





 −4x1 + x2 + x3 =2

2x1 + 5x2 + x3 =5 .



 2x1 + 3x2 + 7x3 = −17

Usaremos a mesma aproximação inicial, escolhida arbitrariamente

 
1
X (0) = 
 
 1 .

−1

O processo iterativo do método de Gauss-Seidel aplicado a este sistema linear é:



(k) (k)
 (k+1) x2 + x3 − 2

 x 1 =
4






 (k+1) (k)
(k+1) −2x1 − x3 + 5 ,
x 2 =


 5


 (k+1) (k+1)
 x(k+1) = −2x1 − 3x2 − 17



3
7

(compare com o processo iterativo obtido no Exemplo 2.9) com o qual obtemos os seguintes resultados

(trabalhando com apenas duas casas decimais e truncamento):


2.7. MÉTODO DE GAUSS-SEIDEL 41
 
1
 
• A aproximação inicial: X (0) = 
 1 .

−1

   
−0.50 −1.5
    (1) 1.88
• Para k = 0: X (1) =   (1) (0)   (1)
 1.4 , X − X =  0.4  e d = 1.88, dr = 2.88 = 0.6527....
−2.88 −1.88

   
−0.87 −0.37
    (2) 0.52
• Para k = 1: X (2) =   (2) (1)   (2)
 1.92 , X − X =  0.52  e d = 0.52, dr = 3.00 = 0.1733....
−3.00 −0.12

   
−0.77 0.1
    (3) 0.02
• Para k = 2: X (3) =   (3) (2)   (3)
 1.90 , X − X = −0.02 e d = 0.02, dr = 3.02 = 0.00662....
−3.02 −0.02

   
−0.78 −0.01
    (4) 0.01
• Para k = 3: X (4) =   (4) (3)   (4)
 1.91 , X − X =  0.01  e d ≈ 0.01, dr = 3.02 = 0.00331....
−3.02 0.00

Compare as aproximações com a solução exata

   
7

 9   −0.77 
   
X =  12  ≈  1.91 
 23  
.
   
− 109
36 −3.02

e com as iterações por Jacobi do Exemplo 2.9.

2.7.1 Forma Matricial do Processo Iterativo

Escreva A = L + D + U conforme feito no Método de Jacobi.

Podemos reescrever o sistema:

(L + D + U )X = B

⇒ (L + D)X = −U X + B

⇒ X = −(L + D)−1 U X + (L + D)−1 B

donde obtemos o processo iterativo em forma matricial

X (k+1) = −(L + D)−1 U X (k) + (L + D)−1 B. (2.10)


42 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES

No entanto, como a matriz L é triangular inferior e D diagonal e invertı́vel, temos D−1 L triangular

inferior e podemos escrever:

(L + D)X (k+1) = −U X (k) + B

⇒ (D−1 L + I)X (k+1) = −D−1 U X (k) + D−1 B

⇒ X (k+1) = −D−1 LX (k+1) − D−1 U X (k) + D−1 B

onde esta última igualdade é equivalente à equação (2.9).

2.8 Condição de Convergência do Método de Gauss-Seidel


 
x
 1
 . 
Considere um sistema AX = B que admita uma solução exata X =  ∗ . 
 . . O seguinte critério permite
 
xn
verificar que o método de Gauss-Seidel produzirá uma sequência convergente: é conhecido como critério

de Sassenfeld.

Dado o sistema AX = B, considere os seguntes números:

|a12 | + |a13 | + ... + |a1n |


β1 =
|a11 |
|aj1 |β1 + |aj2 |β2 + ... + |aj,j−1 |βj−1 + |aj,j+1 | + ... + |ajn |
βj = , para j = 2, ..., n.
|aj,j |

Se |βj | < 1, para todo j = 1, ..., n, então o método de Gauss-Seidel produz uma sequência {X (k) } que

converge para X ∗ (no sentido que d(k) → 0 quando n → ∞), independente da escolha da aproximação

inicial X (0) .

Você pode encontrar uma demonstração para este fato em [2] e [4].

Exemplo 2.13 A matriz do Exemplo 2.12 é:

 
−4 1 1
 
A=
2 .
5 1
 
2 3 7
2.8. CONDIÇÃO DE CONVERGÊNCIA DO MÉTODO DE GAUSS-SEIDEL 43

Temos:
|1| + |1|
β1 = = 0.5,
| − 4|
|2| · 0.5 + |1|
β2 = = 0.4,
|5|
|2| · 0.5 + |3| · 0.4
β3 = = 0.31428...
7
e como são todos menores que 1, pelo critério de Sassenfeld, segue que a sequência gerada por Gauss-

Seidel convirgirá para a solução exata.

Exercı́cios

Exercı́cio 2.7 Verifique as condições para aplicar o método de Gauss-Seidel e resolva os sistemas por

este método, com a precisão dada.



 16x1 + 5x2 = 21

(a) ,  = 0.0005 sobre erro relativo.
 3x1 + 2.5x2 = 5.5





 0.252x1 + 0.26x2 + 0.12x3 = 7

(b)
 0.112x1 + 0.16x2 + 0.24x3 = 8 ,  = 0.01.


 0.147x1 + 0.21x2 + 0.25x3 = 9

44 CAPÍTULO 2. SISTEMAS LINEARES E MATRIZES
Capı́tulo 3

Interpolação Polinomial

3.1 Interpolação Polinomial

Interpolar uma função f (x) consiste em aproximá-la por uma outra função g(x) escolhida de maneira

adequada, de acordo com o contexto. A função aproximante g(x) pode ser do tipo polinomial, trigo-

nométrica, exponencial, ou uma combinação destas. Veremos como obter interpolações polinomiais,

isto é, construiremos uma função g(x) polinomial que coincida com uma função f (x) em um conjunto

finito de pontos. Isto pode ser usado como estratégia para extrapolar valores de f (x) para pontos x não

tabelados, ou caso a função f (x) seja dada por uma expressão de difı́cil manipulação, para obter seus

valores aproximados.

Exemplo 3.1 [5] Suponha que V seja a velocidade de propagação do som, sob a água, e T seja a

temperatura da água. Como a primeira varia conforme a segunda, podemos obter os seguintes dados

experimentais da Tabela 3.1.

Temperatura (◦ C) Velocidade (m/s)


86.0◦ C 1.552 m/s
93.3◦ C 1.548 m/s
98.9◦ C 1.544 m/s
104.4◦ C 1.538 m/s
110.0◦ C 1.532 m/s

Tabela 3.1: Velocidade de propagação do som e temperatura da água

Como obter aproximações para valores não tabelados, como, por exemplo, a velocidade aproximada do

som quando a água está a exatamente 100◦ C? Ou a que temperatura a velocidade do som vale 1.540m/s?

Uma maneira de se obter essas aproximações é usando interpolação.

45
46 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

Exemplo 3.2 Um dos problemas de interpolação mais simples é o de encontrar a equação da reta que

passa por dois pontos dados, ou seja, um polinômio de grau 1. Assim, podemos usar a relação:

y2 − y1
m= ,
x2 − x1

onde m é a inclinação da reta. No caso particular em que o conjunto de pontos é {(2, 3), (5, 6)}, obtemos

m = 1 e obtemos o polinômio f (x) = x + 1 que interpola estes pontos. Os pontos e a reta interpolada

estão esboçados na Figura 3.1.

y
(5, 6)
y2

1
x+
y=
(2, 3)
y1

x
x1 x2

Figura 3.1: Exemplo de interpolação de dois pontos por uma reta.

O Exemplo 3.2 discute um dos casos mais simples de interpolação polinomial, o qual consiste em

interpolar uma reta por dois pontos. Se buscarmos interpolar uma parábola (polinômio de grau 2) pelos

dois pontos dados, o problema fica subdeterminado, pois existem infinitas parábolas que passam por dois

pontos dados. Além disso, se buscarmos interpolar uma reta por três pontos dados, o problema estaria

sobredeterminado e poderia não ter solução se os pontos não fossem colineares.

Suponha que tenhamos n + 1 pontos distintos: {(x0 , f (x0 )), (x1 , f (x1 )), ..., (xn , f (xn ))}, com todos

os xi distintos (são n + 1 pontos pois começamos a contagem do zero). Estes pontos são chamados de

nós da interpolação. O objetivo da interpolação é construir uma função polinomial g(x), de grau n,

que coincida com a função f (x) nos valores xi , para i = 0, 1, ..., n, ou seja,

g(xi ) = f (xi ), para i = 0, 1, ..., n. (3.1)

O polinômio g(x) é de grau n, logo, é da forma

g(x) = a0 + a1 x + a2 x2 + ... + an xn ,
3.1. INTERPOLAÇÃO POLINOMIAL 47

onde os coeficientes a0 , ..., an precisam ser determinados.

Como devemos satisfazer (3.1), obtemos o seguinte sistema:




 a0 + a1 x0 + a2 x20 + ... + an xn0 = f (x0 )



 a0 + a1 x1 + a2 x21 + ... + an xn1 = f (x1 )

.. . (3.2)
.






 a + a x + a x2 + ... + a xn = f (x )

0 1 n 2 n n n n

Note que no sistema (3.2), as variáveis são os números a0 , a1 , ..., an . O sistema (3.2) pode ser escrito

matricialmente como

    
 1 x0 x20 ··· xn0  a0   f (x0 ) 
    

 1 x1 x21 ··· n 
x1   a1  
 f (x1 ) 

    
1 x2 x22 ··· xn2   a2  =  f (x2 )  . (3.3)
    

    
 .. .. .. .. ..   ..   .. 

 . . . . .  
 . 
 
 . 

    
1 xn x2n ··· xnn an f (xn )

A matriz deste sistema é uma matriz de Vandermonde de ordem n cujo determinante é dado pelo

produtório duplo
Y
(xj − xi ) . (3.4)
1≤i<j≤n

É fácil ver, usando a equação (3.4), que se as abscissas xi dos nós da interpolação são diferentes dois

a dois, então o determinante é não nulo. Disto decorre que a matriz envolvida é inversı́vel e, portanto,

o sistema possui uma solução que é única. Isto significa que, para n + 1 nós com abcissas distintas, o

polinômio g(x) que os interpola existe e é único. Este fato esclarece quando um problema de interpolação

está bem determinado.

Observação 3.1 Em algumas situações atı́picas, o polinômio g(x) que interpola n + 1 nós com abcissas

distintas pode possuir grau inferior a n. Veja o Exercı́cio 3.2.

Graficamente, o que um polinômio interpolador faz é “passar” pelos pontos (xi , f (xi )), conforme

ilustrado abaixo:

Exemplo 3.3 Dado o conjunto de pontos

x -2 -1 0 2

f (x) 3 2 4 1
48 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

o polinômio que interpola estes pontos tem grau 3 é obtido resolvendo-se o sistema (3.2). Obtém-se:

2x3 x2 13x
g(x) = − − + + 4. (Verifique!)
3 2 6

Na figura 3.2 temos o polinômio interpolador e os nós marcados no plano coordenado.

(0, 4)

(−2, 3)

(−1, 2)

(2, 1)

Figura 3.2: Interpolação por 4 pontos por um polinômio de grau 3.

Obter o polinômio interpolador através do sistema (3.2) é ineficiente devido ao grande número de

cálculos; além disso, caso existam truncamentos ou arredondamentos, os erros podem acumular-se signi-

ficativamente. Veremos duas formas de se obter um polinômio que interpola um conjunto dado de nós

sem precisar resolvê-lo. Ambos possuem suas vantagens e desvantagens que justificam suas aplicações

em diferentes contextos.

3.1.1 Forma de Lagrange para Interpolação

Suponha que tenhamos n + 1 nós, como anteriormente: (x0 , f (x0 )), ..., (xn , f (xn )). A forma de Lagrange

para o polinômio interpolador consiste em escrever o polinômio interpolador g(x) na seguinte forma:

n
X
g(x) = f (xi ) · Li (x), (3.5)
i=0

onde cada Li (x) é da forma:

n
Y x − xj
Li (x) = (3.6)
xi − xj
j=0

j 6= i
3.1. INTERPOLAÇÃO POLINOMIAL 49

Observe que cada Li (x) é o produto

(x − x0 )(x − x1 ) . . . (x − xi−1 )(x − xi+1 ) . . . (x − xn )

(note que o fator (x − xi ), que acompanharia o padrão, foi omitido) dividido pelo produto

(xi − x0 )(xi − x1 ) . . . (xi − xi−1 )(xi − xi+1 ) . . . (xi − xn )

(note que o fator (xi − xi ), que acompanharia o padrão, é omitido). Veja os Exercı́cios 3.3 e 3.4.

Exemplo 3.4 Considere a seguinte tabela de valores de (xi , f (xi )):

x -1 0 2

f (x) 4 1 -1

Temos n+1 = 3 nós. Para obter o polinômio interpolador g(x), cujo grau máximo é n = 2, calculamos

cada Li (x), para i = 0, 1, 2:

(x − x1 )(x − x2 ) (x − 0)(x − 2) x2 − 2x
L0 (x) = = = ,
(x0 − x1 )(x0 − x2 ) (−1 − 0)(−1 − 2) 3

(x − x0 )(x − x2 ) (x + 1)(x − 2) x2 − x − 2
L1 (x) = = =− ,
(x1 − x0 )(x1 − x2 ) (0 + 1)(0 − 2) 2

(x − x0 )(x − x1 ) (x + 1)(x − 0) x2 + x
L2 (x) = = = .
(x2 − x0 )(x2 − x1 ) (2 + 1)(2 − 0) 6

A partir de (3.5), temos:

g(x) = f (x0 ) · L0 (x) + f (x1 ) · L1 (x) + f (x2 ) · L2 (x)

x2 − 2x
 2
x −x−2 x2 + x

=4· +1· − + (−1) ·
3 2 6

2 2 7
= x − x + 1.
3 3

Graficamente, temos a figura 3.3.

Usando esta interpolação, podemos usá-la como aproximação para a função f (x) e afirmar, por

exemplo, que o valor de f (1) (que não podemos calcular, dado que só conhecemos a f nos pontos
50 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

y
(−1, 4)

(0, 1)

(2, −1)

Figura 3.3: Interpolação do Exemplo 3.4.

2
tabelados) é razoavelmente aproximado pelo valor de g(1) = − . Veremos mais sobre esta aplicações e
3
outras mais adiante.

Leitura Recomendada

Sobre a aplicação de interpolação para completar uma série de dados temporais com informações faltando

(tempo de leitura média: 6 min):

https://bit.ly/33I9Q0h

Exercı́cios da Seção

Exercı́cio 3.1 Obtenha o polinômio g(x) do Exemplo 3.3 resolvendo o sistema.

Exercı́cio 3.2 Para cada conjunto de n + 1 pontos abaixo, obtenha o polinômio que o interpola. Observe

que o grau dos polinômios é inferior a n. Você consegue dar uma explicação do por quê este grau é

inferior a n?

x -2 0 2
(i)
f (x) 10 0 -10

x -1.5 -0.75 0 0.75 1.5


(ii)
f (x) -0.92625 -0.02015625 0 0.02015625 0.92625

Exercı́cio 3.3 Verifique que, para cada Li (x) definido na equação (3.6), vale:

Li (xk ) = 0, se k 6= i, e Li (xk ) = 1 se i = k.
3.2. FORMA DE NEWTON PARA O POLINÔMIO INTERPOLADOR 51

Exercı́cio 3.4 Mostre que o polinômio g(x) definido na equação (3.5) de fato interpola os nós dados,

isto é,

g(xi ) = f (xi ),

para todo i = 0, 1, ..., n (Sugestão: faça uso do Exercı́cio 3.3).

Exercı́cio 3.5 Verifique que o polinômio interpolador feito com apenas dois nós coincide com a função

de grau 1 (cujo gráfico é uma reta) que conecta os pontos (x0 , f (x0 )) e (x1 , f (x1 )).

Exercı́cio 3.6 Encontre o polinômio interpolador para o conjunto de pontos {(−2, −47), (0, −3), (1, 4),

(2, 41)}. Então, faça um gráfico com os pontos e o polinômio interpolador encontrado.

Exercı́cio 3.7 Use a forma de Lagrange do polinômio interpolador para obter o polinômio g(x) do Exem-

plo 3.3.

Exercı́cio 3.8 Encontre o polinômio interpolador para o conjunto de pontos {(−1, 1.25), (0.5, 0.5), (1, 1.25),

(1.25, 1.8125)} pelo método de Lagrange.

3.2 Forma de Newton para o Polinômio Interpolador

Novamente, queremos g(x) interpolando os n + 1 nós (x0 , f (x0 )), ..., (xn , f (xn )). O objetivo é escrever

g(x) usando os chamados operadores de diferenças divididas. Estes operadores são construı́dos de

maneira iterativa, e cada um possui uma ordem. Estes são definidos da seguinte forma (não confundir

colchetes com parênteses!):

Ordem 0 f [xi ] = f (xi ) para i = 1, ..., n

f [xi+1 ] − f [xi ] f (xi+1 ) − f (xi )


Ordem 1 f [xi , xi+1 ] = = . para i = 1, ..., n − 1
xi+1 − xi xi+1 − xi

f [xi+1 , xi+2 ] − f [xi , xi+1 ]


Ordem 2 f [xi , xi+1 , xi+2 ] = para i = 1, ..., n − 2
xi+2 − xi

f [xi+1 , xi+2 , xi+3 ] − f [xi , xi+1 , xi+2 ]


Ordem 3 f [xi , xi+1 , xi+2 , xi+3 ] = para i = 1, ..., n − 3
xi+3 − xi

.. ..
. .

f [x1 , ..., xn ] − f [x0 , ..., xn−1 ]


Ordem n f [x0 , ..., xn ] =
xn − x0
52 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

Observe que, para calcular os operadores de ordem 1, é preciso usar dois operadores de ordem zero;

para calcular os operadores de ordem 2, é preciso usar dois operadores de ordem 1 (que, por sua vez,

exigiram 2 operadores de ordem zero)... Podemos obter estes valores mais facilmente usando o esquema

abaixo. Nele, deve-se computar os elementos uma coluna por vez, de cima para baixo.

x Ordem 0 Ordem 1 Ordem 2 Ordem 3 ... Ordem n

x0 f [x0 ]

f [x0 , x1 ]

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

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

x2 f [x2 ] f [x1 , x2 , x3 ] ... f [x0 , ..., xn ]

f [x2 , x3 ] f [x1 , x2 , x3 , x4 ]

x3 f [x3 ] f [x2 , x3 , x4 ]
..
f [x3 , x4 ] .
..
x4 f [x4 ] . f [xn−3 , xn−2 , xn−1 , xn ]
..
. f [xn−2 , xn−1 , xn ]
.. ..
. . f [xn−1 , xn ]

xn f [xn ]

Exemplo 3.5 Vejamos como obter os operadores de diferenças divididas a partir da seguinte tabela de

nós:

x -1 0 2

f (x) 4 1 -1

Como temos n + 1 = 3 pontos, devemos computar os operadores de ordem dividida até Ordem n = 2.

A primeira coluna contém os operadores de Ordem 0; estes são apenas os valores de f (x) em cada

xi , i = 0, 1, 2, ou seja, f [x0 ] = f (x0 ), f [x1 ] = f (x1 ) e f [x2 ] = f (x2 ).


3.2. FORMA DE NEWTON PARA O POLINÔMIO INTERPOLADOR 53

x Ordem 0 Ordem 1 Ordem 2

-1 4

f [x0 , x1 ]

0 1 f [x0 , x1 , x2 ]

f [x1 , x2 ]

2 -1

Para calcular os operadores de Ordem 1, usamos os números da coluna imediatamente à esquerda:

f [x1 ] − f [x0 ] 1−4


f [x0 , x1 ] = = = −3,
x1 − x0 0 − (−1)

f [x2 ] − f [x1 ] −1 − 1
f [x1 , x2 ] = = = −1.
x2 − x1 2−0

Nossa tabela fica:

x Ordem 0 Ordem 1 Ordem 2

-1 4

-3

0 1 f [x0 , x1 , x2 ]

-1

2 -1

Por fim, calculamos f [x0 , x1 , x2 ]. Para este, usamos os elementos da coluna imediatamente à esquerda

(inferior menos superior), dividida pela diferença dos números xi correspondentes na coluna mais à

esquerda (o maior menos o menor), isto é, x2 − x0 . Teremos:

f [x1 , x2 ] − f [x0 , x1 ] −1 − (−3) 2


f [x0 , x1 , x2 ] = = =
x2 − x0 2 − (−1) 3

e portanto

x Ordem 0 Ordem 1 Ordem 2

−1 4

−3
2
0 1
3
−1

2 −1
54 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

Exemplo 3.6 Dados os seguintes nós:

x −1 0 1 2 3
,
f (x) 1 1 0 −1 −2

a tabela de diferenças divididas obtida a partir desses nós é (verifique!):

x Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4

-1 1

0 1 − 21
1
-1 6
1
1 0 0 − 24

-1 0

2 -1 0

-1

3 -2

De posse dos operadores de diferenças divididas, podemos computar o polinômio interpolador

pela forma de Newton. Se temos n + 1 nós: (x0 , f (x0 )), ..., (xn , f (xn )), o polinômio que interpola

estes pontos é

g(x) = f [x0 ] + (x − x0 )f [x0 , x1 ] + (x − x0 )(x − x1 )f [x0 , x1 , x2 ]

+(x − x0 )(x − x1 )(x − x2 )f [x0 , x1 , x2 , x3 ] + ... + (x − x0 )(x − x1 )...(x − xn−1 )f [x0 , x1 , ..., xn ].

Exemplo 3.7 Usando a tabela do Exemplo 3.5, o polinômio que interpola estes três pontos é

g(x) = f [x0 ] + (x − x0 )f [x0 , x1 ] + (x − x0 )(x − x1 )f [x0 , x1 , x2 ]

2
= 4 + (x − (−1)) · (−3) + (x − (−1))(x − 0) · 3

= 23 x2 − 73 x + 1.

Uma sugestão de vı́deo: https://youtu.be/pnf8UCJ2Gwg.


3.3. ESTIMANDO VALORES DE FUNÇÕES VIA INTERPOLAÇÃO 55

3.3 Estimando valores de funções via interpolação

Vamos aplicar a técnica de interpolação vista para obter estimativas (ou extrapolar para valores de funções

quando não conhecemos a expressão que define f (x); neste caso, conhecemos o valor de f (x) apenas sobre

alguns valores de x, isto é, sobre x0 , x1 , ..., xn , e desejamos obter um valor para f (x) para algum número

x diferente destes, respeitando o comportamento local dos nós.

Exemplo 3.8 Considere a tabela abaixo, onde conhecemos alguns valores de f (x) em alguns valores de

x.

x 0 0.1 0.2 0.3 0.4 0.5

f (x) 1 1.3499 1.8221 2.4596 3.3201 4.4817

Vamos calcular uma aproximação para f (0.25) usando interpolação. Naturalmente, poderı́amos obter

o polinômio que interpola a função f (x) usando todos os seis pontos da tabela e assim obtendo uma

aproximação para f (0.25).

Seguindo esta rota, obterı́amos o polinômio interpolador de grau 5:

g(x) = 4.75x5 + 1.375x4 + 5.15417x3 + 4.40125x2 + 3.00548x + 1,

donde f (0.25) ≈ g(0.25) = 2.11699.

Não é necessário utilizar todos os pontos como nós para realizar a interpolação. Uma maneira

alternativa é utilizar uma interpolação de menor grau. Esta abordagem reduz a quantidade cálculos

necessários para obter o polinômio interpolador.

Por exemplo, trabalhemos com polinômios interpoladores de grau n = 2. Precisamos de n + 1 = 3

pontos consecutivos da tabela, de forma que 0.25 esteja no intervalo determinado pelas suas abcissas.

Podemos fazer isso de duas formas, escolhendo uma das “subtabelas”:

xi 0.2 0.25 0.3 0.4

f (xi ) 1.8221 ? 2.4596 3.3201

ou

xi 0.1 0.2 0.25 0.3


.
f (xi ) 1.3499 1.8221 ? 2.4596

Trabalhemos com a primeira tabela. Usando-a, obteremos o polinômio interpolador

g(x) = 11.15x2 + 0.8x + 1.2161


56 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

donde f (0.25) ≈ g(0.25) = 2.112975 um cálculo mais simples.

Observação 3.2 Em situações como a do exemplo anterior em que não se conhece uma expressão para

f (x), não há como determinar uma quantidade de pontos ótima para realizar a interpolação; o leitor

interessado pode ler as Seções 3.2 e 3.3 de [2] para estratégias para lidar com este problema.

No exemplo a seguir vamos obter e analisar diversas interpolações distintas objetivando obter uma

mesma aproximação.

Exemplo 3.9 Vamos supor que um certo experimento fı́sico nos retorne os seguintes dados, que coloca-

mos numa tabela:


xi 1 2 3 4 5

f (xi ) 32.44 380.47 610.35 98.12 619.79

Suponha que queiramos obter uma estimativa para f (2.5). Para isso, podemos usar a interpolação mais

simples, que é a que usa apenas os pontos (x2 , f (x2 )) = (2, 380.47) e (x3 , f (x3 )) = (3, 610.35) (que estão

em torno de x = 2.5), ou seja, por um polinômio de grau n = 1 (uma reta). Obteremos o polinômio

P1 (x):

P1 (x) = 229.88x − 79.29,

e a aproximação

P1 (2.5) = 495.41.

Será esta uma boa estimativa?

Se escolhermos os pontos (x1 , f (x1 )) = (1, 32.44), (x2 , f (x2 )) = (2, 380.47) e (x3 , f (x3 )) = (3, 610.35)

para realizar a interpolação, obteremos o polinômio de 2o grau P2 (x):

P2 (x) = −59.075x2 + 525.255x − 433.74

e a estimativa

P2 (2.5) = 510.17875.

Se escolhermos (x2 , f (x2 )) = (2, 380.47), (x3 , f (x3 )) = (3, 610.35) e (x4 , f (x4 )) = (4, 98.12), obtere-

mos outro polinômio de 2o grau, Q2 (x):

Q2 (x) = −371.055x2 + 2085.155x − 2305.62


3.3. ESTIMANDO VALORES DE FUNÇÕES VIA INTERPOLAÇÃO 57

e a aproximação

Q2 (2.5) = 588.17375.

Os nós da interpolação, bem como os polinômios interpoladores P1 (x), P2 (x) e Q2 (x) estão represen-

tados graficamente na Figura 3.4.

588.17375

510.17875
495.41
Nós da Interpolação
P1 (x)
P2 (x)
Q2 (x)
Estimativas
x = 2.5

x
1 2 2.5 3 4

Figura 3.4: Comparação entre diferentes interpolações.

Considerando que não conhecemos uma expressão que descreva o fenômeno fı́sico f (x) subjacente aos

dados, é razoável escolher a aproximação que melhor respeita a concavidade dos dados.

Se focarmos nossa análise na interpolação obtida via P2 observa-se que, para valores maiores que

x = 3, a tendência da curva e dos dados são distintos. Situação similar acontece olhando-se para a reta

P1 (x) (que talvez fosse mais adequada se o comportamento dos nós fosse crescente em todo o pedaço

observado). Já observando a interpolação obtida via Q2 , há uma concordância maior entre os dados e a

curva. Usando este princı́pio, concluı́mos que a estimativa Q2 (2.5) = 588.17375 é mais razoável.

Exemplo 3.10 Interpolação sobre vários pontos dispersos Quando geramos um polinômio inter-

polador g(x) usando n + 1 nós, ele necessariamente passa por todos esses nós. Se os nós forem em grande

quantidade e “dispersos”, isto é, possuı́rem uma alta variância, a interpolação pode resultar em uma

curva que gera más estimativas. Por exemplo, considere a seguinte tabela de dados:
58 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

xi 0.1 0.2 0.3 0.4 0.5 0.6

f (xi ) 3.711 -3.482 1.361 1.585 0.9062 -0.3155

O polinômio que interpola esses seis pontos é:

g(x) = 13108.7x5 − 22374.9x4 + 14217.1x3 − 4140.8x2 + 539.386x − 23.5582.

Graficamente, temos o representado na Figura 3.5.

y
2

x
0.1 0.2 0.3 0.4 0.5 0.7

−1

−2

Figura 3.5: Interpolação dos nós do Exemplo 3.10.

Neste caso, o polinômio interpolador cumpre seu papel de passar pelos nós, mas não é um bom

artifı́cio para extrapolar valores de f (x): o comportamento geral dos pontos aparenta ser decrescente, mas

o polinômio interpolador cresce após o último nó. Neste tipo de situação, outras estratégias são mais

viáveis para se estimar dados (como um ajuste de curvas, conforme veremos mais adiante no curso).

3.3.1 Exercı́cios da Seção

Exercı́cio 3.9 Obtenha a tabela de operadores de diferenças divididas do Exemplo 3.6. Verifique, usando

a forma de Newton, que o polinômio interpolador dos nós dados no Exemplo 3.6 é:

x4 x3 11x2 3x
g(x) = − + − − +1
24 4 24 4

Exercı́cio 3.10 Suponha que, na tabela do Exemplo 3.5, acrescentemos mais um ponto:

x -1 0 2 3

f (x) 4 1 -1 0

Usando a forma de Newton:


3.4. SPLINES INTERPOLADORES 59

(a) Calcule o polinômio interpolador usando os três últimos nós da nova tabela.

(b) Calcule o polinômio interpolador usando todos os quatro pontos.

Note que, na resolução deste exercı́cio, não é necessário recalcular todos os operadores de diferenças

divididas, mas apenas completar a tabela com os operadores faltantes.

Exercı́cio 3.11 Com relação ao Exemplo 3.8:

(i) Use interpolação linear (de grau 1) para aproximar f (0.25).

(ii) Calcule o polinômio interpolador de grau 2, g(x), usando a segunda tabela.

(iii) Use o polinômio obtido no item anterior para aproximar f (0.25).

(iv) Sabendo que a função f (x) é f (x) = e3x , use esta informação para avaliar a precisão das apro-

ximações obtidas.

Exercı́cio 3.12 Considere os nós abaixo.

x 0.22 0.34 0.4 0.52 0.6 0.72

f (x) 0.26 0.22 0.27 0.29 0.32 0.37

(a) Calcule duas aproximações distintas para o valor de f (0.47) usando um polinômio interpolador de

grau 2.

(b) Monte um gráfico dos nós e do polinômios interpoladores obtidos no item (a) (use o Excel, Desmos

ou outra ferramenta). Qual dos dois polinômios aparenta possuir a melhor aproximação?

3.4 Splines interpoladores

Considere um conjunto de n + 1 pontos {(x0 , f (x0 )), ..., (xn , f (xn ))}. Já vimos que usar o polinômio

que interpola a todos estes pontos pode resultar em uma função polinômial p(x) de grau muito grande

que não permite fazer boas estimativas. Uma alternativa para isto é interpolar a função agrupando os

nós em conjuntos com poucos pontos (de dois em dois, ou de três em três...). Esta técnica nos permite

obter uma interpolação mais refinada, permitindo inclusive obter uma função com derivadas contı́nuas

até certa ordem.

Na Figura 3.6, vemos uma função sendo aproximada por segmentos de retas. Neste caso obtemos, a

cada par de pontos, a reta que passa por eles. A nova função obtida é contı́nua, mas não é derivável em

nenhum dos nós da interpolação.


60 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

4
y

x
−4 −2 2 4 6 8

−2

−4

Figura 3.6: Aproximação de uma função por funções lineares por partes

Alternativamente, podemos trabalhar agrupando os pontos de três em três, obtendo o polinômio de

grau 2 que os interpola em cada parte (ver Figura 3.7).

4
y

x
−4 −2 2 4 6 8

−2

−4

Figura 3.7: Aproximação de uma função por funções quadráticas por partes

Neste caso, ainda vemos que a função interpoladora por partes não é derivável sobre os nós.

Definição 3.1 ([5]) Dado um conjunto de n + 1 nós {(x0 , f (x0 )), ..., (xn , f (xn ))} (com xi < xj sempre

que i < j), uma função S(x) é uma spline de grau p sobre os nós (xi , f (xi )) se:

(a) Em cada subintervalo [xi , xi+1 ], S(x) é um polinômio de grau p: si (x).

(b) S(x) é contı́nua em [x0 , xn ] e tem derivada contı́nua (até ordem p − 1) em (x0 , xn ), exceto talvez

nos pontos x0 , ..., xn+1 .

Além disso:

(c) S(x) é um spline interpolante se S(xi ) = f (xi ), para todo i = 0, 1, ..., n.


3.5. APROXIMAÇÃO LINEAR POR PARTES 61

O leitor interessado pode pesquisar por flat spline na Internet, a tı́tulo de curiosidade, para conhecer

a origem do nome.

Vejamos o tipo de spline mais simples: o linear.

3.5 Aproximação linear por partes

Este tipo de aproximação é obtido usando-se polinômios de grau 1 (cujos gráficos são retas) para cada

par de pontos subsequentes dos nós {(x0 , f (x0 )), ..., (xn , f (xn ))}. Assim,

xi − x x − xi−1
si (x) = f (xi−1 ) + f (xi ) , para x ∈ [xi−1 , xi ].
xi − xi−1 xi − xi−1

é a função que descreve a reta que passa pelos pontos (xi−1 , f (xi−1 )) e (xi , f (xi )).

Esta expressão é obtida imediatamente usando a forma de Lagrange para o polinômio interpolador.

Além disso, é fácil verificar que ela satisfaz as condições (a), (b) e (c) da Definição 3.1.

Exemplo 3.11 Considere os nós dados pela seguinte tabela:

xi −1 −0.5 0 0.5 1

f (xi ) 0.0551 0.0364 0.1 0.0256 −0.0315

Usando a Definição 3.1, temos:

x1 − x x − x0
s1 (x) = f (x0 ) + f (x1 )
x1 − x0 x1 − x0

−0.5 − x x − (−1)
= 0.0551 + 0.0364
−0.5 − (−1) −0.5 − (−1)

= −0.0374x + 0.0177,

s2 (x) = 0.1272x + 0.1,

s3 (x) = −0.1488x + 0.1,

s4 (x) = −0.1142x − 0.0827.


62 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

y
1

0.5

x
−1 −0.5 0.5 1

Figura 3.8: A

É usual resumir estas informações na seguinte função dada por partes:




 −0.0374x + 0.0177, se x ∈ [−1, −0.5],



 0.1272x + 0.1, se x ∈ [−0.5, 0],

S(x) =
−0.1488x + 0.1, se x ∈ [0, 0.5],






 −0.1142x − 0.0827,

se x ∈ [0.5, 1].

Voltaremos a esta técnica de aproximar funções por polinômios por partes quando estudarmos métodos

de integração numérica. O que veremos a seguir é uma maneira de obter uma função aproximante que

seja derivável sobre os nós.

3.6 Spline Cúbica Interpolante

Um spline cúbico (isto é, uma interpolação por partes usando polinômios de grau 3) é uma opção interes-

sante para garantirmos que a função spline interpolante seja derivável em todos os pontos, com derivada

contı́nua. Usa-se polinômios de grau 3 pois, como possuem a forma geral

p(x) = a + bx + cx2 + dx3 ,

eles têm 4 coeficientes a determinar, sobre os quais ganhamos a liberdade de poder impor condições

adicionais sobre as derivadas de primeira e segunda ordem do mesmo.

Definição 3.2 (ver [2]) Dada uma função f definida nos nós (x0 , f (x0 )),...,(xn , f (xn )), uma spline

cúbica interpolante é uma função S que verifica:


3.6. SPLINE CÚBICA INTERPOLANTE 63

(a) S(x) é um polinômio de grau 3, denotado si (x), em cada intervalo [xi , xi+1 ], para todo i =

0, 1, ..., n − 1.

(b) si (x) = f (xi ) e si (xi+1 ) = f (xi+1 ), para cada i = 0, 1, ..., n − 1. Em particular, si+1 (xi+1 ) =

si (xi+1 ).

(c) s0i+1 (xi+1 ) = s0i (xi+1 ),, para cada i = 0, 1, ..., n − 2.

(d) s00i+1 (xi+1 ) = s00i (xi+1 ),, para cada i = 0, 1, ..., n − 2.

(e) Uma das condições de fronteira são verdadeiras:

(i) S 00 (x0 ) = S 00 (xn ) = 0 (neste caso, fronteira natural ou livre.)

(ii) S 0 (x0 ) = f 0 (x0 ) e S 0 (xn ) = f 0 (xn ) (neste caso, fronteira fixa).

Note que, para termos uma fronteira fixa, é preciso conhecer a expressão de f (x), ou pelo menos o

valor de suas derivadas (ao invés de conhecer apenas seus valores nos nós).

Exemplo 3.12 Construir uma spline cúbica natural que passe pelos nós dados pela tabela abaixo:

xi 1 2 3

f (xi ) 2 3 5

Esta spline consiste de duas cúbicas: uma entre os pontos (1, 2) e (2, 3) e outra entre (2, 3) e (3, 5),

com suas derivadas de ordem 1 e 2 coincidindo em x1 = 2.

A primeira cúbica será denotada por

s0 (x) = a0 + b0 (x − 1) + c0 (x − 1)2 + d0 (x − 1)3 ,

e a segunda por

s1 (x) = a1 + b1 (x − 2) + c1 (x − 2)2 + d1 (x − 2)3 .

Observação 3.3 Em cada expressão de si (x), escrevemos as potências de x contraı́da no fator (x−xi )k ,

k = 0, 1, 2, 3 ao invés de apenas xk ; esta forma torna o cálculo seguinte mais simples.

Temos 8 coeficientes a determinar. Como as cúbicas coincidem sobre os nós (item (b) da Definição
64 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

3.2), temos as seguintes quatro relações:

2 = f (1) = s0 (1) = a0 ,

3 = f (2) = s0 (2) = a0 + b0 + c0 + d0 ,

3 = f (2) = s1 (2) = a1 ,

5 = f (3) = s1 (3) = a1 + b1 + c1 + d1 .

Outras duas relações são dadas pelas derivadas de primeira e segunda ordem, que devem coincidir

nos nós (itens (c) e (d) da Definição 3.2):

s00 (2) = s01 (2) ⇒ b0 + 2c0 + 3d0 = b1 ,

s000 (2) = s001 (2) ⇒ 2c0 + 6d0 = 2c1 .

Duas condições finais são obtidos pela condição de fronteira livre (item (e)(i) da Definição 3.2):

s000 (1) = 0 ⇒ 2c0 = 0

s001 (3) = 0 ⇒ 2c1 + 6d1 = 0.

Obtemos o seguinte sistema linear (com alguns dos coeficientes já obtidos):

 


 a0 = 2 

 a0 = 2

 

3
 



 a0 + b0 + c0 + d0 = 3 


 b0 = 4

 

a1 = 3 c0 = 0

 


 


 

 
1
a1 + b1 + c1 + d1 = 5 d0 =

 

4

b0 + 2c0 + 3d0 − b1 = 0 a1 = 3

 


 


 

3
2c0 + 6d0 − 2c1 = 0 b1 =

 

2

 


 

 
3
c0 = 0 c1 =

 






 4
 
= − 41
 
2c1 + 6d1 = 0 d1
 

Assim, a spline cúbica interpolante é:



 2 + 3 (x − 1) + 1 (x − 1)3

se x ∈ [1, 2],
4 4
S(x) =
 3 + 3 (x − 2) + 3 (x − 2)2 − 1 (x − 2)3

se x ∈ [2, 3].
2 4 4

Vejamos uma forma mais rápida de se calcular a spline cúbica interpolante. Sejam (x0 , f (x0 )),...,(xn , f (xn ))
3.6. SPLINE CÚBICA INTERPOLANTE 65

nós. O polinômio cúbico definido no intervalo [xi , xi+1 ] será denotado por

si (x) = ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 , para i = 0, ..., n − 1.

Além disso, denotaremos por hi o comprimento de cada intervalo [xi , xi+1 ], ou seja

hi = xi+1 − xi .

3.6.1 Spline cúbica com fronteira livre

A construção do sistema linear feita no Exemplo 3.12 se reproduz para uma quantidade maior de nós.

Como

si (xi ) = ai = f (xi ),

do item (b) da Definição 3.2, temos

ai+1 = Si+1 (xi+1 ) = Si (xi+1 )

= ai + bi (xi+1 − xi ) + ci (xi+1 − xi )2 + di (xi+1 − xi )3

= ai + bi hi + ci h2i + di h3i ,

para cada i = 0, 1, ..., n − 1.

Similarmente, chame bn = S 0 (xn ) = s0n−1 (xn ); como

s0i (x) = bi + 2ci (x − xi ) + 3di (x − xi )2 ,

obtemos s0i (xi ) = bi , para cada i = 0, 1, ..., n − 1. Usando a condição (c), temos:

bi+1 = bi + 2ci hi + 3di h2i ,

para cada i = 0, 1, ..., n − 1.


S 00 (xn )
Finalmente, chame cn = . Pela condição (d), para cada i = 0, 1, ..., n − 1:
2

ci+1 = ci + 3di hi .

Isolando di na anterior, temos:


ci+1 − ci
di = , (3.7)
3hi
66 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

e substituindo di nas expressões de ai+1 e bi+1 anteriores, obtemos

h2i
ai+1 = ai + bi hi + (2ci + ci+1 ),
3
bi+1 = bi + hi (ci + ci+1 ).

Manipulando esta última, obtemos

1 hi
bi = (ai+1 − ai ) − (2ci + ci+1 ),
hi 3 (3.8)
1 hi−1
⇒ bi−1 = (ai − ai−1 ) − (2ci−1 + ci ).
hi−1 3

Nas equações (3.8) acima, apenas reorganizamos os ı́ndices ao passarmos de uma linha para a outra.

Com estas expressões para bi+1 , bi e bi−1 , obtemos:

3 3
hi−1 ci−1 + 2(hi−1 + hi )ci + hi ci+1 = (ai+1 − ai ) − (ai − ai−1 ), (3.9)
hi hi−1

para cada i = 1, 2, ..., n − 1. As equações (3.9) nos permitem obter um sistema linear que envolve apenas

as variáveis ci , i = 0, 1, ..., n, uma vez que os valores hi são os comprimentos dos intervalos (portanto,

conhecidos) e os valores ai são os valores de f (xi ),i = 0, 1, ..., n − 1. Os coeficientes ci são obtidos,

portanto, resolvendo o sistema

AX = B,

onde:  
1 0 0 0 ··· 0 0 0 
 
h0
 2(h0 + h1 ) h1 0 ··· 0 0 0  
 
0 h1 2(h1 + h2 ) h2 ··· 0 0 0 
 
A=
 .. .. .. .. .. .. ..  ,

..
.
 . . . . . . . 

 
0
 0 0 0 ··· hn−2 2(hn−2 + hn−1 ) hn−1 

 
0 0 0 0 ··· 0 0 1
 
0  
 c0 
 
 
3 3

 h1 (a2 − a 1 ) − h0 (a1 − a0 ) 
  
c 

3 3
  1
h2 (a3 − a2 ) − h1 (a2 − a1 )
   
 
B= , X =  c2  .
 
..
 

.
 
  .



  .. 
 3 (a − a 3
 
n−1 ) − hn−2 (an−1 − an−2 )

 hn−1 n  
  cn
0
3.6. SPLINE CÚBICA INTERPOLANTE 67

Esta matriz é diagonalmente dominante; isso é suficiente para garantir que o sistema linear AX = B

admite uma solução única, donde obtemos os coeficientes ci . Os coeficientes restantes, bi e di , são

calculados diretamente pelas equações (3.8) e (3.7), respectivamente, dado que dependem dos ai , ci e hi

apenas.

2
Exemplo 3.13 Considere os seguintes dados obtidos a partir da função f (x) = e(x−1) · sen(2x):

xi 0 1 2 3 4

f (xi ) 0 0.909 −0.278 −0.00511 1.22 · 10−4

Note que, neste caso, todos os hi valem 1. Para computar a spline cúbica interpolante com fronteira

livre, resolvemos o sistema linear:

        
1 0 0 0 0 c0 0.0 c0 0.0
        
        
1 4 1 0 0 c1   −6.29  c1  −2.01
        
        
0
 1 4 1 0 c2  =  4.38  ⇒ c2  =  1.75 
       

        
0 0 1 4 1 c3  −0.804 c3  −0.64
        
        
0 0 0 0 1 c4 0.0 c4 0.0

Os coeficientes ai já são dados:


   
a0 0
   
   
a1   0.909 
   
   
a  =  −0.278 
 2  
   
a3   −0.00511 
   
   
a4 1.22 · 10−4

e os coeficientes bi e di são calculados diretamente usando as equações (3.8) e (3.7):

       
b0 1.58 d0 −0.67
       
       
b1  −0.432 d1   1.25 
 = ,  = 
       

b2  −0.685 d2  −0.799
       
       
b3 0.432 d3 0.213

Usamos apenas os coeficientes ai , bi , ci , di com i de 0 até n − 1 (ou seja, a4 e c4 não entram na


68 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

expressão dos polinômios, e b4 e d4 sequer foram calculados) para obter:




 1.58x − 0.67x3 , x ∈ [0, 1],



 0.909 − 0.432(x − 1) − 2.01(x − 1)2 + 1.25(x − 1)3 ,

x ∈ [1, 2],
S(x) = .
−0.278 − 0.685(x − 2) + 1.75(x − 2)2 − 0.799(x − 2)3 , x ∈ [2, 3],






 −0.00511 + 0.432(x − 3) − 0.64(x − 3)2 + 0.213(x − 3)3 ,

x ∈ [3, 4].

Graficamente, temos a Figura 3.9.

1
y

0.5

x
1 2 3 4

−0.5
Nós da Interpolação
2
e(x−1) sen(2x)
S(x)

2
Figura 3.9: Spline cúbica interpolante com fronteira livre para a função f (x) = e(x−1) · sen(2x)

3.6.2 Spline cúbica com fronteira fixa

A computação dos coeficientes é similar à forma feita com fronteira livre e não será refeita aqui (ver

[2]): obtemos um sistema linear que envolve apenas as variáveis ci , i = 0, 1, ..., n, os valores hi são os

comprimentos dos intervalos e os valores ai são os valores de f (xi ),i = 0, 1, ..., n − 1. Os coeficientes ci

são obtidos, portanto, resolvendo o sistema

AX = B,
3.6. SPLINE CÚBICA INTERPOLANTE 69

onde:  
2h0 h0 0 0 ··· 0 0 0 
 
 h0
 2(h0 + h1 ) h1 0 ··· 0 0 0  
 
 0 h1 2(h1 + h2 ) h2 ··· 0 0 0 
 
A=
 .. .. .. .. .. .. ..  ,

..
 .
 . . . . . . . 
 
 0
 0 0 0 ··· hn−2 2(hn−2 + hn−1 ) hn−1 
 
0 0 0 0 ··· 0 hn−1 2hn−1
 
3
h0 (a1 − a0 ) − 3f 0 (x0 )  
 c0 
 
 
3 3
h1 (a2 − a1 ) − h0 (a1 − a0 )
   
  c 

3 3
  1
(a − a ) − (a − a )
 
3 2 2 1
 
 h2 h 1

B=  c2  .
,X =  
 .. 
.
 
  .
.
.
   
 
 3 (a − a 3
n−1 ) − hn−2 (an−1 − an−2 )

 hn−1 n  
  cn
3
3f 0 (xn ) − hn−1 (an − an−1 )

Como anteriormente, a matriz A é diagonalmente dominante; portanto o sistema linear AX = B

admite uma solução única, donde obtemos os coeficientes ci . Os coeficientes restantes, bi e di , são

calculados diretamente pelas equações (3.8) e (3.7), respectivamente, dado que dependem dos ai , ci e hi

apenas.

2
Exemplo 3.14 Vamos usar os mesmos dados do Exemplo 3.12, a partir da função f (x) = e(x−1) ·

sen(2x):
xi 0 1 2 3 4

f (xi ) 0 0.909 −0.278 −0.00511 1.22 · 10−4

e incluindo as condições de fronteira

S 0 (x0 ) = f 0 (x0 ) = 2e−1 ≈ 0.735,

S 0 (xn ) = f 0 (xn ) = 2e−9 cos(8) − 6e−9 sen(8) ≈ −7.68 · 10−4


70 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL

Todos os hi valem 1. Resolvemos o sistema linear:

        
2 1 0 0 0 c0 0.52 c0 1.46
        
        
1 4 1 0 0 c1   −6.29  c1   −2.4 
        
        
0
 1 4 1 0 c2  =  4.38  ⇒ c2  =  1.85 
       

        
0 0 1 4 1 c3  −0.804 c3   −0.642 
        
        
0 0 0 1 2 c4 −0.822 c4 −0.0896

Os coeficientes ai são:    
a0 0.0
   
   
a1   0.909 
 =
   

a2   −0.278 
   
   
a3 −0.00511

e os coeficientes bi e di são calculados diretamente usando as equações (3.8) e (3.7):

       
b0 0.735 d0 −1.28
       
       
b1  −0.205 d1   1.41 
 = ,  = 
       

b2   −0.75  d2  −0.833
       
       
b3 0.463 d3 0.184

1
y

0.5

x
1 2 3 4

−0.5
Nós da Interpolação
2
e(x−1) sen(2x)
S(x)

2
Figura 3.10: Spline cúbica interpolante com fronteira fixa para a função f (x) = e(x−1) · sen(2x)

Novamente, usamos apenas os coeficientes ai , bi , ci , di com i de 0 até n − 1 (ou seja, a4 e c4 não


3.7. EXERCÍCIOS 71

entram na expressão dos polinômios, e b4 e d4 sequer foram calculados) para obter:




 0.735x + 1.46x2 − 1.28x3 , x ∈ [0, 1]



 0.909 − 0.205(x − 1) − 2.4(x − 1)2 + 1.41(x − 1)3 ,

x ∈ [1, 2]
S(x) = .
−0.278 − 0.75(x − 2) + 1.85(x − 2)2 − 0.833(x − 2)3 , x ∈ [2, 3]






 −0.00511 + 0.463(x − 3) − 0.642(x − 3)2 + 0.184(x − 3)3 ,

x ∈ [3, 4]

Graficamente, temos a Figura 3.10.

3.7 Exercı́cios

Exercı́cio 3.13 Determine a spline cúbica interpolante natural (com fronteira livre) para o conjunto de

dados do Exemplo 3.11.

Exercı́cio 3.14 Considere os pontos (2, 4.5), (5, −1.9), (9, 0.5) e (12, −0.5).

(a) Construa um spline cúbico com fronteira livre que passe pelos pontos dados. Coloque os pontos e a

função spline em um gráfico.

(b) Construa um spline cúbico com fronteira fixa que passe pelos pontos dados e verifique S 0 (2) = 3,

S 0 (12) = −2. Coloque os pontos e a função spline em um gráfico.

(c) Construa um spline cúbico com fronteira fixa que passe pelos pontos dados e verifique S 0 (2) = −3,

S 0 (12) = 2. Coloque os pontos e a função spline em um gráfico.

(d) Compare os resultados obtidos nos items (a), (b) e (c). O que você observa?
72 CAPÍTULO 3. INTERPOLAÇÃO POLINOMIAL
Capı́tulo 4

Ajuste de Curvas

4.1 Ajuste de Curvas pelo Método dos Mı́nimos Quadrados

Enquanto a interpolação de funções nos permite fazer a estimativa de um valor f (x) para um certo x

a partir de um conjunto de dados, nem sempre ela permite uma boa previsão do comportamento do

fenômeno do ponto de vista global. Quando o conjunto de dados possui uma dispersão significativa

pode ser mais interessante analisar uma curva que siga a tendência geral dos pontos ao invés de seu

comportamento local.

Para isso, dado um conjunto de dados do tipo (xi , f (xi )), i = 1, ..., n, obteremos uma função φ(x)

que se “encaixa” sobre os pontos de uma maneira otimizada.

O método dos mı́nimos quadrados fornece uma maneira para se “encaixar” uma curva (uma reta,

uma parábola, uma senóide, uma exponencial, etc...) num conjunto de dados, de maneira otimizada.

Exemplo 4.1 ([2]) Considere os seguintes dados experimentais:

xi 1 2 3 4 5 6 7 8 9 10

f (xi ) 1.3 3.5 4.2 5.0 7.0 8.8 10.1 12.5 13.0 15.6

Colocando-os num diagrama, temos a Figura 4.1.

Podemos comparar a reta ajustada pelo método dos mı́nimos quadrados e o polinômio que interpola

estes nós olhando para a Figura 4.2. A reta ajustada é o gráfico da função

p(x) = 1.538x − 0.36.

73
74 CAPÍTULO 4. AJUSTE DE CURVAS

y
14

12

10

2
x
1 2 3 4 5 6 7 8 9 10

Figura 4.1: Dados do Exemplo 4.1.

y y
14 14

12 12

10 10

8 8

6 6

4 4

2 2
x x
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10

Figura 4.2: Comparação entre a reta ajustada e a interpolação polinomial dos dados do Exemplo 4.1

Observa-se que a reta ajustada acompanha o comportamento crescente, quase linear, dos dados, en-

quanto o polinômio interpolador tem intervalos de crescimento e decrescimento. O ajuste de curvas,

portanto, é uma ferramenta mais adequada quando queremos aproximar o comportamento global do con-

junto de dados, tais como: crescimento/decrescimento (e de que tipo aproximado: linear, quadrático,

exponencial, logarı́tmico...), aceleração/desaceleração, periodicidade, etc.

4.2 Ajuste Polinomial

Comecemos com o caso mais simples: o ajuste de uma reta a um conjunto de dados {(x1 , f (x1 )), ..., (xn , f (xn ))}.

Uma reta é o gráfico de uma função de primeiro grau; então consideramos a função

p(x) = a0 + a1 x.

Precisamos calcular os coeficientes a0 e a1 . Para cada xi dos pontos do conjunto de dados, definimos o

seguinte desvio di :

di = f (xi ) − p(xi ) = f (xi ) − a0 − a1 xi .

Para evitar problemas com desvios negativos, queremos que a reta p(x) minimize a soma dos quadrados
4.2. AJUSTE POLINOMIAL 75

destes desvios. Esta soma é:


n
X n
X
S= d2i = (f (xi ) − a0 − a1 xi )2 , (4.1)
i=1 i=1

e esta deve ser a mı́nima possı́vel. Para isto, os coeficientes a0 , a1 precisam ser determinados de forma a

minimizar esta soma S. Procurando por valores a0 , a1 crı́ticos (de derivada zero):

n
∂S X
=0⇒ (−2(f (xi ) − a0 − a1 xi )) = 0,
∂a0 i=1

n
∂S X
=0⇒ (−2(f (xi ) − a0 − a1 xi )) · xi = 0.
∂a1 i=1

Trabalhando com estas duas equações simultaneamente, obtemos o sistema linear:

n n
 !
 X X
n · a0 + xi a1 = f (xi )




i=1 i=1
n
! n
! n (4.2)
X X X
x2i

xi a0 + a1 = f (xi ) · xi .




i=1 i=1 i=1

Sua forma matricial é a seguinte:

 n     X n 
a
X
 n xi     f (xi ) 
0
i=1    
i=1
 ·   = X . (4.3)
 
n n n
X  
X
x2i f (xi ) · xi
   
xi  
i=1 i=1
a1 i=1

Resolvendo-se este sistema linear, obtemos a0 e a1 e a reta p(x).

Observação 4.1 O argumento acima consiste em, resumidamente, encontrar um ponto crı́tico da função

S com respeito às variáveis a0 , a1 , e checar que este é um ponto de mı́nimo. Não faremos aqui a checagem

de que o ponto crı́tico encontrado é de mı́nimo.

Exemplo 4.2 Uma pessoa pesa-se uma vez por mês e obtém, ao longo de um ano, os pesos (em kg)

conforme a Tabela 4.1.

Mês 1 2 3 4 5 6 7 8 9 10 11 12
Peso (kg) 74.3 78.9 78.1 80.7 73.5 78.3 78.5 77.9 76.6 79.7 79.0 77.1

Tabela 4.1: Pesos por mês.

Neste caso, temos n = 12, onde os xi são os meses e os f (xi ) são os pesos a cada mês. Substituindo
76 CAPÍTULO 4. AJUSTE DE CURVAS

os valores da tabela no sistema linear (4.3), temos:

     
12 78  a0   932.6 
 · = .
78 650 a1 6079.8

Resolvendo-os com truncamento na 3a casa decimal, chegamos aos seguintes coeficientes:

a0 = 76.903,

a1 = 0.125.

A reta é, portanto:

p(x) = 76.903 + 0.125x.

Na Figura 4.3 vemos os pontos e a reta ajustada obtida.

x
1 2 3 4 5 6 7 8 9 10 11 12

Figura 4.3: Reta ajustada às medições de peso do Exemplo 1.

Os desvios podem ser analisados geometricamente a partir da imagem anterior. Considere os desvios,

representados verticalmente na Figura 4.4.

x
1 2 3 4 5 6 7 8 9 10 11 12

Figura 4.4: Desvios (em verde).


4.2. AJUSTE POLINOMIAL 77

Cada um destes desvios é a diferença entre f (xi ) e p(xi ) para cada i. A reta p(x) é aquela tal que a

soma dos quadrados dos desvios é mı́nima. Por isso, mı́nimos quadrados. Esta soma S pode

ser calculada:
n
X
S= (f (xi ) − p(xi ))2 .
i=1

No caso da tabela do exemplo anterior e esta reta, obtemos:

S = 45.856.

Neste caso, observando a reta ajustada aos dados, podemos inferir o comportamento crescente dos

dados, sinalizando, no contexto do problema, o aumento do peso ao longo do tempo.

O problema de se ajustar uma reta (como no exemplo anterior) é que ela não permite analisar se

os dados estão em aceleração ou desaceleração (funções de primeiro grau possuem derivada segunda

constante igual a zero). Para isso, podemos usar polinômios de grau maior.

Para se ajustar polinômios de grau m a um conjunto de dados, o método é semelhante; a função

polinomial é da forma
m
X
p(x) = a0 + a1 x + a2 x2 + ... + am xm = a j xj .
j=0

Usando a expressão para a soma dos quadrados dos desvios e derivando-a com relação aos coeficientes

ai , obtemos o seguinte sistema linear:

 n
X n
X n
X
  n
X

 n xi x2i ... xmi    f (x i ) 
i=1 i=1 i=1
   i=1 
  a0   X
 n n n n   n 
X X X X 
m+1  
 xi x2i x3i ... xi       f (xi ) · xi 
  a1   i=1
 
 i=1 i=1 i=1 i=1 
 n n n n     n 
m+2   a2  =  2. (4.4)
X 2 X X X X
x3i x4i
    

 xi ... xi     f (xi ) · xi 
 i=1 i=1 i=1 i=1   .   i=1
  ..  

 . .. .. .. ..
..

 .
 . . . . . .
   
   
 an
 n n n n
  n

X X X X X 
 xm
i xm+1
i xm+2
i ... x2mi
  f (xi ) · xm i

i=1 i=1 i=1 i=1 i=1

Exemplo 4.3 Vamos ajustar uma parábola (polinômio de grau 2) aos dados do Exemplo 4.1. O sistema

linear fica
78 CAPÍTULO 4. AJUSTE DE CURVAS

    
 10 55 385  a0   81.0 
    
 a1  =  572.4 
 55 385 3025     

    
385 3025 25333 a2 4532.8

de onde obtemos o polinômio (truncado em cinco casas decimais):

q(x) = 0.03484x2 + 1.15484x + 0.40666.

Graficamente:

16 y
14
12
10
8
6
4
2
x
1 2 3 4 5 6 7 8 9 10

Figura 4.5: Parábola ajustada aos dados do Exemplo 4.1.

Podemos afirmar uma aceleração de pequena intensidade do conjunto de dados conforme xi cresce,

pois a parábola possui concavidade para cima (q 00 (x) = 0.06968).

Exemplo 4.4 Entre os ajustes obtidos pela reta do Exemplo 4.1 e pela parábola do Exemplo 4.3, como

determinar o melhor deles? Como ambas foram obtidas de forma a minimizar S, a soma dos quadrados

dos desvios definido, basta calcular esta quantidade e compará-las.

Para a reta do Exemplo 4.1, p(x) = 1.538x − 0.36 temos:

n
X
S= (f (xi ) − p(xi ))2 ≈ 2.34474.
i=1

Para a parábola do Exemplo 4.3, q(x) = 0.03484x2 + 1.15484x + 0.40666, temos:

n
X
S= (f (xi ) − q(xi ))2 ≈ 1.70351.
i=1

Conclui-se que uma parábola ajusta-se melhor aos dados do que uma reta.
4.3. AJUSTES NÃO POLINOMIAIS 79

Exercı́cios

Exercı́cio 4.1 Calcule a função ajustada aos dados no Exemplo 4.1 e a soma dos quadrados dos desvios.

Exercı́cio 4.2 Ajuste aos dados do Exemplo 4.1 uma curva dada pelo gráfico de uma função polinomial

de grau 3. Calcule a soma dos quadrados dos desvios. Comparando esta soma de quadrados, Esta nova

curva ajusta-se melhor ou pior do que a parábola? Melhor ou pior que a reta?

Exercı́cio 4.3 Determinar os polinômio de grau 2, 3 e 4 que melhor se ajustam aos seguintes dados.

Em seguida, coloque-os num gráfico junto com o polinômio obtido, estime f (8) e calcule a soma dos

quadrados dos desvios.

xi f (xi )

0.23 5.64

1.01 7.83

2.29 17.04

2.87 21.38

4.15 24.56

5.36 16.21

5.51 14.57

6.36 0.78

6.84 -7.64

7.00 -12.52

4.3 Ajustes Não Polinomiais

Ajustes não-polinomiais por vezes são mais adequados e precisos, em especial quando se conhece a

natureza dos dados. Por exemplo, para fenômenos periódicos ou cı́clicos, um ajuste trigonométrico pode

ser melhor que um ajuste polinomial. Para fenômenos do tipo espalhamento de contaminação ou por

radiação, onde a taxa de variação instantânea de uma grandeza é proporcional à própria grandeza, um

ajuste exponencial pode ser mais adequado.

Para isso, procedemos de forma a utilizar o que já fizemos nos ajustes polinomiais. Nos ajustes lineares

não polinomiais, busca-se ajustar uma combinação linear de funções não necessariamente polinomiais:

φ(x) = a1 φ1 (x) + a2 φ2 (x) + ... + am φm (x),


80 CAPÍTULO 4. AJUSTE DE CURVAS

onde as funções φj são escolhidas previamente. Dessa forma, temos m parâmetros a1 , ..., am a serem

determinados.

Neste caso, aplicando-se a mesma técnica vista anteriormente, deriva-se a equação do desvio

n
X
S= (f (xi ) − φ(xi ))2
i=1

com respeito aos parâmetros a determinar ai e iguala-se cada equação a zero para encontrar pontos

crı́ticos. Obteremos o sistema em forma matricial:


 n
X n
X n
X
   n
X

 φ1 (xi )φ1 (xi ) φ1 (xi )φ2 (xi ) · · · φ1 (xi )φm (xi )   a1   f (xi )φ1 (xi ) 
 i=1 i=1 i=1
    i=1 
 n n n    n 
X X X   a2   X 
 φ 2 (x i )φ 1 (x i ) φ2 (xi )φ2 (xi ) · · · φ2 (xi )φm (xi )    
  f (xi )φ2 (xi ) 
 .
  ..  =  i=1

(4.5)
 i=1  
i=1 i=1 
.. .. .. .. ..
    
.
    

 . . .   
   . 

X n Xn Xn    X n 
φm (xi )φ1 (xi ) φm (xi )φ2 (xi ) · · · φm (xi )φm (xi ) am f (xi )φm (xi )
   
i=1 i=1 i=1 i=1

Observação 4.2 Note que, se fizermos φj (x) = xj−1 , para j = 1, ..., m, obtemos novamente o ajuste

polinomial visto anteriormente.

Exemplo 4.5 As receitas de uma empresa são dadas por trimestes. Entre os anos de 2016 e 2019, as

receitas (em milhões de dólares) foram auferidas conforme a Tabela 4.2 abaixo.

Ano Trim. Receita


2016 1 10.5
2 9.2
3 13.1
4 16.0
2017 1 13.6
2 12.2
3 15.6
4 19.4
2018 1 15.9
2 14.7
3 18.3
4 20.5
2019 1 16.6
2 15.7
3 20.0
4 23.3

Tabela 4.2: Receitas por trimestre entre 2016 e 2019.

Vamos realizar um ajuste linear não polinomial a estes dados para tentar prever as receitas de 2020;
4.3. AJUSTES NÃO POLINOMIAIS 81

julgaremos se o ajuste é bom ou não comparando os resultados estimados com os conhecidos.

Enumerando os trimestres de 1 a 16 e colocando estes dados num diagrama, obtemos a Figura 4.6.

25 y

20

15

10

x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Figura 4.6: Receitas por trimestre.

Baseando-se em nosso repertório de funções cujos gráficos temos familiaridade, observamos que este

dados comportam-se de forma parecida à soma de uma função de primeiro grau crescente com uma função

trigonométrica seno ou cosseno (ver Figura 4.7).

Figura 4.7: Gráfico aproximado da soma de uma função de primeiro grau com uma função cosseno

Isso justifica a escolha:

φ(x) = a0 + a1 x + a2 · cos(αx) (4.6)

como função a ser ajustada aos dados. Os coeficientes a0 , a1 e a2 precisam ser determinados e o
π
multiplicador α deve ser escolhido de forma a respeitar a sazonalidade dos dados. Façamos com α = 2

de forma que cos(αx) tenha perı́odo 4 (4 trimestres = 1 ano, o que parece ser o caso dos dados: a cada

ano ele segue um padrão de crescimento e decrescimento).

Da equação (4.6), temos:

 πx 
φ1 (x) = 1, φ2 (x) = x, φ3 (x) = cos .
2
82 CAPÍTULO 4. AJUSTE DE CURVAS

Nosso sistema (4.5) escreve-se como:

    
 16 136 0 a0   254.6 
    
 a1  = 2383.6
136 1496 8    

    
0 8 8 a2 27.4

de onde obtemos a função φ (com truncamento em quatro casas decimais) cujo gráfico está na Figura

4.8.
 xπ 
φ(x) = 10.9942 + 0.5786x + 2.8463 cos
2

25 y

20

15

10

x
1 2 3 4 5 6 7 8 9 1011121314151617181920

Figura 4.8: Função ajustada aos dados.

Na Tabela 4.3 temos uma comparação entre os dados e a função ajustada, bem como uma estimativa

para os 4 próximos trimestres.

Claro que estas previsões para 2020 são apenas isso: uma previsão. Um palpite qualificado. Dado

que toda previsão para um fenômeno assume uma certa regularidade do fenômeno, é provável que estas

previsões não signifiquem nada. 2020 foi muito atı́pico.

4.4 Ajustes Não-Lineares

Vejamos agora como ajustar a um conjunto de dados uma função que não é linear sobre os coeficientes

a serem ajustados, começando com um exemplo clássico: considere uma função do tipo

φ(x) = a1 ea2 x

a ser ajustada a um conjunto de dados (xi , f (xi )). Observe que φ não é linear nos coeficientes a1 , a2 .

Se queremos que os dados no eixo y sejam próximos aos valores da curva φ(x), então, queremos que
4.4. AJUSTES NÃO-LINEARES 83

Trim. (xi ) Receita (f (xi )) Aproximação (φ(xi )) Desvio (absoluto)


1 10.5 11.572 1.0728
2 9.2 9.3051 0.10512
3 13.1 12.73 0.36987
4 16.0 16.155 0.15512
5 13.6 13.887 0.28734
6 12.2 11.619 0.58042
7 15.6 15.044 0.55542
8 19.4 18.469 0.93042
9 15.9 16.201 0.3018
10 14.7 13.934 0.76596
11 18.3 17.359 0.94096
12 20.5 20.784 0.28403
13 16.6 18.516 1.9162
14 15.7 16.248 0.54849
15 20.0 19.673 0.3265
16 23.3 23.098 0.2015
Previsões 17 - 20.83
18 - 18.562
19 - 21.987
20 - 25.412

Tabela 4.3: Comparação dos resultados e previsões.

os dados ln(y) estejam próximos da curva ln(φ(x)), isto é:

y ≈ a1 ea2 x ⇒ ln(y) ≈ ln(a1 ea2 x ) = ln(a1 ) + a2 x.

Esta é a linearização desta função φ(x) = a1 ea2 x (note que, ao fazer isso, obtemos uma combinação

linear de funções). Fazendo isto, agora precisamos ajustar a função ln(φ(x)) = ln(a1 ) + a2 x (que é um

polinômio de grau 1) ao novo conjunto de dados (xi , ln(f (xi ))) para calcular os coeficientes ln(a1 ) e a2 .

Se α1 = ln(a1 ), então evidentemente a1 = eα1 .

Exemplo 4.6 Considere o seguinte conjunto de dados:

xi -1 -0.7 -0.4 -0.1 0.2 0.5 0.8 1


f (xi ) 38.547 16.164 9.195 3.652 2.020 0.960 0.376 0.346

Se colocarmos estes pontos num plano cartesiano, obtemos a Figura 4.9.

Nota-se que, realizando a mudança f (xi ) → ln(f (xi )) nos dados, estes ficam mais alinhados com uma

reta (Figura 4.10), o que indica que a escolha da função φ(x) = a1 ea2 x é uma escolha adequada. Esta

checagem de alinhamento da linearização do ajuste chama-se teste de alinhamento.

O conjunto de dados torna-se:

Para ajustar a reta α1 + a2 x aos dados desta segunda tabela, basta fazer da mesma forma que fizemos
84 CAPÍTULO 4. AJUSTE DE CURVAS

40 y

30

20

10

x
−1 −0.5 0.5 1

Figura 4.9: Valores tabelados do Exemplo 4.6.

x
−1 −0.5 0.5 1
−1

Figura 4.10: Logaritmos dos valores tabelados.

antes: resolve-se o sistema

 n    X n 
xi  α1  
X
 n ln(f (xi )) 
 i=1    i=1
= n 
Xn Xn   X 
2 
ln(f (xi )) · xi
  
xi xi 
i=1 i=1
a2 i=1

    
8 0.3  α1   8.571 
⇒   =  
0.3 3.59 a2 −8.340

cuja solução é:

α1 = 1.162, a2 = −2.420.

Na Figura 4.11 temos a reta ajustada ao logaritmo dos dados.

Observando a reta α1 + a2 x ajustada à segunda tabela na figura abaixo, notamos novamente o bom

alinhamento dos pontos.


4.4. AJUSTES NÃO-LINEARES 85

x -1 -0.7 -0.4 -0.1 0.2 0.5 0.8 1


ln(y) 3.651 2.782 2.218 1.295 0.703 -0.040 -0.978 -1.061

x
−1 −0.5 0.5 1
−1

Figura 4.11: Reta ajustada aos logaritmos dos valores tabelados.

Como α1 = ln(a1 ), então a1 = eα1 = 3.196. A função φ(x) = a1 ea2 x portanto é:

φ(x) = 3.196e−2.420x .

No gráfico da Figura 4.12 temos os dados originais e a função φ(x) ajustada.

40 y

30

20

10

x
−1 −0.5 0.5 1

Figura 4.12: Curva exponencial ajustada aos valores tabelados.

4.4.1 Outros Ajustes Não-lineares

Conforme vimos no exemplo anterior, para realizar um ajuste não linear é preciso efetuar uma linearização

da função a ser ajustada com relação aos novos coeficientes, e a mesma operação de linearização deve ser

realizada sobre os dados. Note que cada linearização exige um cálculo diferente dos coeficientes.

A função φ deve ser escolhida levando-se em conta o comportamento dos dados e a sua linearização.

Não é toda escolha de φ que pode ser linearizada.


86 CAPÍTULO 4. AJUSTE DE CURVAS

Alguns tipos de funções φ usuais e suas respectivas linearizações, são as seguintes:

1
- Ajuste por uma hipérbole: y ≈ φ(x) = , onde a linearização é feita pelo inverso multipli-
a1 + a2 x
cativo: y → y1 .

- Ajuste por uma exponencial de base distinta: y ≈ φ(x) = a1 · ax2 , onde a linearização é feita por

logaritmo: y → ln(y).

- Ajuste por uma curva geométrica: y ≈ φ = a1 xa2 , cuja linearização é feita usando logaritmo:

y → ln(y).

x
- Ajuste por uma função racional do tipo: y ≈ φ = , cuja linearização é feita pelo inverso
ax + b
multiplicativo: y → y1 .

Exemplo 4.7 ([3]) Por vezes, a linearização pode ser feita por manipulação algébrica, ao invés de

inversão de funções. Considere os dados

xi 0 1 2 3
f (xi ) 1 1 1.7 2.5

Façamos o ajuste a estes dados da função racional:

a 0 + x2
φ(x) = .
a1 + x

Queremos φ(x) ≈ f (x). Reorganizando esta função:

a0 + x2
f (x) ≈ ⇒ (a1 + x)φ(x) ≈ a0 + x2
a1 + x
a0 1
⇒ a1 f (x) ≈ a0 − xf (x) + x2 ⇒ f (x) ≈ a1 − a1 (x(f (x) − x)).

a0
Chamemos α = a1 , β = − a11 . Note que esta última expressão é linear sobre os coeficientes α e β, e

as funções a serem usadas são φ1 (x) = 1, φ2 (x) = x(f (x) − x).

Nosso sistema (4.5) escreve-se como

    
 4 −2.1 a0   6.2 
   =  
−2.1 2.61 a1 −4.77

de onde obtemos α = 1.0224, β = −1.005. Como

1 1
β=− ⇒ a1 = − = 0.9950,
a1 β
4.5. EXERCÍCIOS 87

a0
α= = a0 = α · a1 = 1.0173.
a1

Assim:
1.0173 + x2
f (x) ≈ .
0.9950 + x

Geometricamente, temos a Figura 4.13.


y

x
0.5 1

Figura 4.13: Curva racional ajustada aos valores tabelados.

4.5 Exercı́cios

Exercı́cio 4.4 Considere um conjunto de dados (x1 , f (x1 )), ..., (xn , f (xn )). Suponha que se precise ajus-

tar a estes dados as funções φ a seguir. Qual deve ser a linearização feita? Como os dados deve ser

linearizados?

(a) φ(x) = a0 + a1 x.

(a) φ(x) = x · ln(a0 + a1 x).


x
(a) φ(x) = .
a0 + a1 x
1
(a) φ(x) = a0 +a1 x + a2 . (veja [3], Exemplo 7.9 pág 270)

Exercı́cio 4.5 Considere os dados:

xi −8 −6 −4 −2 0 2 4

yi 30 10 9 6 5 4 4

1 1
(a) Ajuste uma função φ(x) = a estes dados; faça o gráfico de yi e verifique se esta é uma
a1 + a2 x
boa aproximação pelo teste de alinhamento.
88 CAPÍTULO 4. AJUSTE DE CURVAS

(a) Faça o mesmo usando φ(x) = a1 · ax2 e φ(x) = a1 ea2 x .

(a) Compare as três aproximações colocando as informações em um gráfico e calculando a soma dos

quadrados dos desvios.


Capı́tulo 5

Integração por métodos numéricos

5.1 Integração Numérica

Calcule a integral definida abaixo. Pode usar a técnica que preferir.

Z 0.6
x2 · sen(x2 ) · e3x dx. (5.1)
0

Agora que você já se frustrou, pensemos: esta função é contı́nua no intervalo [0, 0.6], logo é integrável

e portanto a integral acima é um número real, bem determinado. No entanto, não temos técnicas para

calcular este número de forma analı́tica (da mesma forma que fazemos na integração de polinômios e de

funções elementares simples). Assim, é preciso obter aproximações numéricas para esta integral.

Aplicam-se técnicas de integração numérica também em outros contextos. Por exemplo, podemos

avaliar analiticamente:
2
e4 e2
Z
e2x dx = − .
1 2 2

Quanto vale isso? Usando uma calculadora cientı́fica:

Z 2
e2x dx = 23.60454697...
1

Este número já se trata de uma aproximação (pois a constante e é irracional!). Usando mais casas

decimais:
Z 2
e2x dx = 23.60454696710679442543991687114293529481...
1

Assim, uma vez que existe a necessidade de se obter aproximações, vejamos como fazê-las de forma mais

89
90 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

eficiente.

Finalmente, podemos estimar o valor da integral de uma função f (x), com x ∈ [a, b], conhecendo o

valor de f apenas numa quantidade finita de pontos obtidos, por exemplo, via experimentos.

Quando a função f (x) é conhecida, podemos estimar o erro cometido ao obter uma aproximação.

5.2 Fórmulas de Newton-Cotes

Considere uma função f (x) contı́nua num intervalo I = [a, b]. Vamos dividir o intervalo I em n partes

de igual comprimento h, fazendo:

x0 = a,

x1 = x0 + h,

x2 = x1 + h = x0 + 2h,
..
.

xn = xn−1 + h = x0 + n · h.

Dessa forma, obtemos n + 1 pontos igualmente espaçados no intervalo [a, b] x0 , x1 , ..., xn . O comprimento

de cada subintervalo é h = xj+1 − xj , j = 0, ..., n − 1.

Seja Pn (x) o polinômio interpolador dos nós (xj , f (xj )), j = 0, 1, ..., n − 1. Pela Forma de Lagrange,

temos:
n
X
Pn (x) = f (xi )Li (x).
i=1

Assumindo que f (x) é aproximado por Pn (x), então

f (x) = Pn (x) + Rn (x) .


| {z }
erro na interpolação

Assim sendo, podemos integrar:

Z b Z b Z b
f (x)dx = Pn (x)dx + Rn (x)dx,
a a a

de onde obtemos
Z b n
X
f (x)dx ≈ Ai f (xi ), (5.2)
a i=0
5.2. FÓRMULAS DE NEWTON-COTES 91

onde
Z b
Ai = Li (x)dx.
a

Expressões para aproximação do tipo (5.2) são chamadas Fórmulas de Newton-Cotes do tipo fechado

(significa que o intervalo de integração é fechado nos extremos a e b).

Para reduzir o esforço computacional envolvido, o que fazemos é aplicar a forma (5.2) a subconjuntos

de pontos obtidos ao dividir o intervalo [a, b].

Forma Interpoladora de Lagrange para pontos igualmente espaçados

Recorde que, para pontos (xj , f (xj )), j = 0, 1, ..., n, o polinômio que interpola estes pontos, pela Forma

de Lagrange, é:
n
X
Pn (x) = f (xk ) · Lk (x)
k=0

onde o termo Lk (x) é dado por


n
Y x − xj
Lk (x) =
xk − xj
j=0

j 6= k

Assuma que xj+1 − xj = h, para j = 0, 1, ..., n − 1. Considere a mudança de variável

x − x0
u= . (5.3)
h

É fácil ver que, em função da variável u, para um inteiro qualquer r (entre 0 e n) e x ∈ [a, b] = [x0 , xn ],

vale:

x − xr = (u − r) · h. (5.4)

Assim, para quaisquer r, s inteiros entre 0 e n (assuma r ≤ s), tem-se

xr − xs = (r − s) · h. (5.5)

Aplicando isto no polinômio interpolador:

n
X (x − x0 )(x − x1 ) · · · (x − xk−1 )(x − xk+1 ) · · · (x − xn )
Pn (x) = f (xk )
(xk − x0 )(xk − x1 ) · · · (xk − xk−1 )(xk − xk+1 ) · · · (xk − xn )
k=0
92 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

obtemos, usando o discutido nas equações (5.4) e (5.5):

n
X u(u − 1) · · · (u − (k − 1))(u − (k + 1)) · · · (u − n)
Pn (x0 + uh) = f (xk ) (5.6)
k(k − 1) · · · (k − (k − 1))(k − (k + 1)) · · · (k − n)
k=0

Chamemos
u(u − 1) · · · (u − (k − 1))(u − (k + 1)) · · · (u − n)
λk (u) = .
k(k − 1) · · · (k − (k − 1))(k − (k + 1)) · · · (k − n)

A vantagem desta forma de se escrever o polinômio interpolador é que os fatores de Lagrange não

dependem mais dos pontos xi , mas sim apenas da quantidade de subintervalos n.

5.2.1 Regra do Trapézio

A partir da mudança de variável em (5.3), temos:

dx = h · du,

logo:
Z b n
X Z n
f (x)dx ≈ f (xk ) · h · λk (u)du.
a k=0 0

Denotando
Z n
λk (u)du = Ckn ,
0

obtemos
Z b n
X
f (x)dx ≈ f (xk ) · h · Ckn . (5.7)
a k=0

Observe que os Ckn podem ser calculados previamente e utilizados posteriormente para diferentes funções,

sem precisar serem computados novamente.

Vamos aplicar a técnica vista acima para aproximar a integral de f (x) entre x0 = a e x1 = b usando,

como função aproximadora, um polinômio de grau 1.

Usando (5.7):
Z xn 1
X
f (x)dx ≈ f (xk ) · h · Ck1 .
x0 k=0

Como:
1 1  2 1
u−1 u 1 1
Z Z
C01 = λ0 (u)du = du = − + u = − + 1 = ,
0 0 0−1 2 0 2 2
1 1  2 1
u−0 u 1
Z Z
C11 = λ1 (u)du = du = = .
0 0 1−0 2 0 2
5.2. FÓRMULAS DE NEWTON-COTES 93

y y y

f (x1 ) f (x1 ) f (x1 )

f (x0 ) f (x0 ) f (x0 )

x x x
x0 x1 x0 x1 x0 x1
Z x1
h
(a) f (x)dx (b) 2
(f (x0 ) + f (x1 )) (c) Erro da aproximação
x0

Figura 5.1: Grandezas envolvidas na aproximação da integral, hachuradas.

Portanto:
x1
h
Z
f (x)dx ≈ (f (x0 ) + f (x1 )). (5.8)
x0 2

A aproximação (5.8) é conhecida como Regra do Trapézio. Era ela que nós fomos buscar. Observe

que o lado direito da igualdade acima é exatamente a área de uma trapézio de altura h e bases f (x0 ) e

f (x1 ). Vemos na Figura 5.1 a integral da função, a aproximação por um polinômio interpolador de grau

1 e o erro cometido.

Observe que, se o intervalo de integração [a, b] é grande, o erro também pode ser grande. Podemos
b−a
dividir o intervalo [a, b] em N subintervalos de comprimento h = N , de forma que x0 = a, xN = b e,

em cada subintervalo [xj , xj+1 ], j = 0, 1, ..., N − 1, aplicar a Regra do Trapézio. Na Figura 5.2 vemos

a Regra do Trapézio aplicada três vezes (N = 3) à função da Figura 5.1. Atenção: não confundir o n

minúsculo com o N maiúsculo.

y
f (x2 )
f (x1 )

f (x3 )

f (x0 )

x
x0 x1 x2 x3

Figura 5.2: Regra do Trapézio aplicada três vezes

É evidente que, se fizermos h → 0 (isto é, N → ∞), o erro tenderá a zero, e portanto, a aproximação
94 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

torna-se mais precisa. Assim, obtemos a seguinte:

Z xN Z x1 Z x2 Z xN
f (x)dx = f (x)dx + f (x)dx + ... + f (x)dx
x0 x0 x1 xN −1
h
≈ 2 (f (x0 ) + f (x1 )) + h2 (f (x1 ) + f (x2 )) + ... + h2 (f (xN −1 ) + f (xN )).

Vemos, na última expressão que todos os termos f (xi ) aparecem duas vezes, exceto f (x0 ) e f (xN ).

Assim,

xN
h
Z
f (x)dx ≈ (f (x0 ) + 2f (x1 ) + 2f (x2 ) + ... + 2f (xN −1 ) + f (xN )). (5.9)
x0 2

A expressão acima é conhecida como Regra do Trapézio Generalizada ou Regra do Trapézio

Repetida. Em geral, quando nos referimos à Regra do Trapézio, queremos dizer a aproximação (5.9).

Exemplo 5.1 (ver [3]) Calcular, usando a Regra do Trapézio (5.9), uma aproximação para

Z 1.2
ex cos(x)dx,
0

usando h = 0.2. Os pontos que determinam os subintervalos, e os respectivos valores de f (x) = ex cos(x)

nestes pontos (com truncamento em três casas decimais, é:

xi 0 0.2 0.4 0.6 0.8 1 1.2

f (xi ) 1 1.197 1.374 1.5038 1.5505 1.4686 1.203

Aplicando a Regra do Trapézio:

R 1.2 h
0
ex cos(x)dx ≈ 2 (f (x0 ) + 2f (x1 ) + 2f (x2 ) + ... + 2f (xN −1 ) + f (xN ))
0.2
= 2 (1 + 2(1.197 + 1.374 + 1.5038 + 1.5505 + 1.4686) + 1.203)

= 1.639.

5.2.2 Erro na Regra do Trapézio Repetida

Não faremos a dedução da estimativa do erro envolvido na Regra do Trapézio Repetida; a mesma está feita

em [3], [2] e [5] e pode ser escrita de várias formas distintas, todas elas equivalentes entre si, dependendo

de como se manipula as grandezas N e h.

Assuma que estamos aplicando a Regra do Trapézio Repetida para aproximar a integral de uma

função f (x) (contı́nua em [a, b], com derivadas de primeira e segunda ordem contı́nuas em (a, b)...) sobre
b−a
o intervalo fechado [a, b] usando subintervalos de comprimento h, com N = h .
5.2. FÓRMULAS DE NEWTON-COTES 95

Nesta situação, existe ξ ∈ (a, b) tal que o erro da Regra do Trapézio Repetida, ET R , é:

(b − a) 2 00
ET R = − h f (ξ), (5.10)
12

para algum ξ ∈ (a, b), ou, equivalentemente:

(b − a)3 00
ET R = − f (ξ). (5.11)
12N 2

Na prática, pode ser impossı́vel encontrar o número ξ exato. O que fazemos então, é trabalhar com

as seguinte desigualdades:


(b − a) 2 00 (b − a) 2 00 (b − a) 2
|ET R | = − h f (ξ) = h |f (ξ)| ≤ h máx |f 00 (x)| , (5.12)
12 12 12 x∈(a,b)

ou, usando (5.11):


(b − a)3 00
|ET R | = |f (x)| . (5.13)
12N 2

O problema agora fica reduzido a encontrar máx |f 00 (x)|. Para isso existem técnicas de Cálculo Di-
x∈(a,b)
ferencial. Usando as desigualdades (5.12) e (5.13) podemos estimar o erro cometido para um h escolhido,

ou determinar N de forma a termos um erro menor que um ε especificado.

Exemplo 5.2 Considere os dados do Exemplo 5.1. Temos: f (x) = ex cos(x), x ∈ [0, 1.2], logo

f 00 (x) = −2ex sen(x) ⇒ |f 00 (x)| = 2ex | sen(x)|.

No intervalo [0, 1.2], sen(x) é positiva (cos(x) também), logo coincide com o seu valor absoluto e portanto

f 00 (x) = −|f 00 (x)|

neste intervalo. A derivada de f 00 (x) é

f (3) (x) = −2ex (sen(x) + cos(x)).

Com x ∈ [0, 1.2], f (3) (x) é negativa; então f 00 (x) é estritamente decrescente neste intervalo; como ela
96 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

é negativa, ela atinge seu mı́nimo em x = 1.2, donde o máximo de |f 00 (x)| ocorre em x = 1.2, isto é

máx |f 00 (x)| = |f 00 (1.2)| ≈ 6.188957483943383...


x∈(a,b)

É suficiente tomar um valor ligeiramente maior que esta aproximação, digamos, |f 00 (x)| < 6.19. Usando

esta quantidade e a desigualdade (5.12), temos:

(b − a) 2
|ET R | ≤ h máx |f 00 (x)|
12 x∈(a,b)
1.2
≤ 12 · (0.2)2 · 6.19

= 0.02476.

Exemplo 5.3 Vamos estimar o número de subintervalos necessários para, na integral dos exemplos 5.1

e 5.2, garantir que o erro cometido é inferior a ε = 10−5 .

Usaremos a desigualdade (5.13) e |f 00 (x)| < 6.19. Note que, para que |ET R | seja inferior a ε, é

suficiente que
(b − a)3 00 (b − a)3
|ET R | = 2
|f (x)| < · 6.19 < ε.
12N 12N 2

Manipulando esta, obtemos r


6.19(b − a)3
N> ≈ 298.5...
12ε
b−a
Como N precisa ser inteiro, e N = h , é adequado escolher N = 300. Desta forma,

b−a
h= = 0.004
300

é um comprimento adequado, que divide o intervalo [a, b] em 300 partes de igual comprimento.

5.3 Exercı́cios

Exercı́cio 5.1 Calcule a integral dada na expressão (5.1) com h = 0.1.

Exercı́cio 5.2 Calcule a integral do Exemplo 5.1 por partes e compare com a aproximação. O erro é

menor do que o estimado no Exemplo 5.2? Em seguida, aplique a Regra do Trapézio com h = 0.1, estime

o erro e compare.

Exercı́cio 5.3 Usando a Regra dos Trapézio, calcule aproximações para as integrais abaixo, usando

quatro e seis divisões do intervalo de integração. Compare com o valor exato da integral, calculada pelo
1
5.4. REGRA DE SIMPSON 97
3

método tradicional.
Z 2
(a) ex dx
1
Z 4 √
(b) xdx
1

14
1
Z
(c) √ dx.
2 x

Exercı́cio 5.4 Usando as integrais do exercı́cio anterior, com quantas divisões do intervalo, no mı́nimo,

podemos esperar obter erros menores que 10−5 ?

Exercı́cio 5.5 Suponha que se conheça os valores de uma função f (x) através da seguinte tabela:

x 1.0 1.2 1.4 1.7 2.0 2.3 2.65 3.0

f (x) 0.23 0.59 1.1 1.4 0.92 0.63 0.42 0.38

Aproxime
Z 3
f (x)dx
1

pela Regra do Trapézio.

1
5.4 Regra de Simpson
3
Para a obtenção da Regra do Trapézio para integração de funções, fizemos uma interpolação por po-

linômios de grau 1 sobre os pontos tomados dois a dois. Vimos que pode ser necessário uma grande

quantidade de divisões no intervalo de integração para se atingir certa precisão. Uma maneira de se

obter aproximações para integrais com maior precisão e menor volume de cálculos consistem em realizar

interpolações com graus maiores (tomando pontos de dois em dois, três em três, etc.).

Manteremos as mesmas convenções estabelecidas na seção anterior.

Considere
Z b
f (x)dx.
a

Dividamos o intervalo [a, b] em duas partes de igual comprimento, fazendo:

a+b
x0 = a, x1 = (ponto médio) , x2 = b.
2

Como temos três pontos, podemos obter um polinômio interpolador de grau 2 que passa pelos nós
98 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

(x0 , f (x0 )), (x1 , f (x1 )), (x2 , f (x2 )). Dessa forma, Pela Equação 5.7, teremos:

Z x2 2
X
f (x)dx ≈ f (xk ) · h · Ck2 ,
x0 k=0

onde os Ck2 são:

2 2 2
(u − 1)(u − 2) 1 1
Z Z Z
C02 = λ0 (u)du = du = u2 − 3u + 2 du = .
0 0 (0 − 1)(0 − 2) 2 0 3

2 2 2
(u − 0)(u − 2) 4
Z Z Z
C12 = λ1 (u)du = du = − u2 − 2udu = .
0 0 (1 − 0)(1 − 2) 0 3
2 2 2
(u − 0)(u − 1) (u − 1)u 1
Z Z Z
C22 = λ2 (u)du = du = du = .
0 0 (2 − 0)(2 − 1) 0 2 3

Assim:
R x2 1
+ 43 f (x1 ) + 13 f (x2 )

x0
f (x)dx ≈ h 3 f (x0 )
(5.14)
h
= 3 (f (x0 ) + 4f (x1 ) + f (x2 )).

O nome “Regra 31 ” refere-se ao multiplicador à frente da expressão.

Podemos generalizar esta regra da mesma forma que fizemos na Regra do Trapézio: dividindo o

intervalo [a, b] em um número par 2N de subintervalos (o que significa escolher 2N + 1 pontos x0 = a,

..., x2N = b) equidistantes entre si; a amplitude de cada intervalo é

b−a
h= .
2N

Dessa forma, podemos realizar a interpolação tomando os pontos de três em três (ou de dois em dois

subintervalos) e aplicando, em cada um deles, a aproximação (5.14).

Teremos:
Z x2N Z x2 Z x4 Z x2N
f (x)dx = f (x)dx + f (x)dx + ... + f (x)dx.
x0 x0 x2 x2N −2

Aplicando a aproximação (5.14) em cada uma destas integrais, temos:

x2N
h h
Z
f (x)dx ≈ (f (x0 ) + 4f (x1 ) + f (x2 )) + (f (x2 ) + 4f (x3 ) + f (x4 )) + ...
x0 3 3
h
+ (f (x2N −2 ) + 4f (x2N −1 ) + f (x2N ))
3

Reorganizando:
1
5.4. REGRA DE SIMPSON 99
3

y y y

x x x

Z x2N
(a) f (x)dx (b) Interpolação por parábolas (ver- (c) Erro da aproximação
x0 melhas) a cada dois intervalos

Figura 5.3: Grandezas envolvidas na aproximação da integral, hachuradas.

x2N
h
Z
f (x)dx ≈ (f (x0 ) + 4f (x1 ) + 2f (x2 )) + 4f (x3 ) + 2f (x4 ) + ... + 2f (x2N −2 ) + 4f (x2N −1 ) + f (x2N ))
x0 3
(5.15)
1
que é conhecida como Regra 3 de Simpson Generalizada (ou Repetida). Para memorização, basta

alternar os coeficientes 4, 2, 4, 2, ..., 2, 4 multiplicando os termos da soma, excluindo o inicial e final (ou

então: 4 multiplicando os de ı́ndice ı́mpar, 2 multiplicando os de ı́ndice par, e 1 no inicial e final). Na

Figura 5.3 vemos uma ilustração desta aproximação.

1
Exemplo 5.4 Vamos aplicar a Regra 3 de Simpson Generalizada (5.15) para aproximar

Z 1.2
ex cos(x)dx,
0

já aproximada anteriormente pela Regra do Trapézio. Podemos reutilizar a mesma tabela, que possui

uma quantidade par de subintervalos equidistantes (com truncamento em três casas decimais):

xi 0 0.2 0.4 0.6 0.8 1 1.2

f (xi ) 1 1.197 1.374 1.5038 1.5505 1.4686 1.203

Temos:
Z 1.2
ex cos(x)dx ≈ h
3 (f (x0 ) + 4f (x1 ) + 2f (x2 )) + 4f (x3 ) + 2f (x4 ) + 4f (x5 ) + f (x6 ))
0
0.2
= 3 (1 + 4(1.197 + 1.5038 + 1.4686) + 2(1.374 + 1.5505) + 1.203)

= 1.64864.
100 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

1
5.4.1 Erro na Regra 3
de Simpson Repetida

A dedução da seguinte expressão para o erro encontra-se em [3], [2] e [5].


1
Assuma que estamos aplicando a Regra 3 de Simpson Repetida para aproximar a integral de uma

função f (x) (contı́nua em [a, b], com derivadas de primeira e segunda ordem contı́nuas em (a, b)...) sobre
b−a
o intervalo fechado [a, b] usando um número par de subintervalos de comprimento h, com N = 2h .

1
Nesta situação, existe ξ ∈ (a, b) tal que o erro da Regra 3 de Simpson Repetida, E 13 , é:

(b − a) 4 (4)
E 31 = − h f (ξ), (5.16)
180

para algum ξ ∈ (a, b), ou, equivalentemente:

(b − a)5 (4)
E 31 = − f (ξ). (5.17)
2880 · N 4

Na prática, pode ser impossı́vel encontrar o número ξ exato. O que fazemos então, é trabalhar com

as seguinte desigualdades:
(b − a) 4
|E 31 | ≤ h · máx f (4) (x) , (5.18)

180 x∈(a,b)

ou, usando (5.17):


(b − a)5
(4)

|ET R | ≤ · máx (x) . (5.19)
2880 · N 4 x∈(a,b)
f


O problema agora fica reduzido a encontrar máx f (4) (x) . Para isso existem técnicas de Cálculo Di-
x∈(a,b)
ferencial. Usando as desigualdades (5.18) e (5.19) podemos estimar o erro cometido para um h escolhido,

ou determinar N de forma a termos um erro menor que um ε especificado.

3
5.4.2 Regra 8
de Simpson

3
Podemos obter uma versão que resulta em aproximações ainda mais precisas, conhecida como Regra 8 de

Simpson, realizando interpolações por polinômios de grau 3 (de três em três subintervalos). A construção
1
é semelhante à feita nos casos da Regra do Trapézio e Regra 3 de Simpson: sua versão repetida resulta

na seguinte aproximação:

x3N
3
Z
f (x)dx ≈ h(f (x0 ) + 3f (x1 ) + 3f (x2 ) + 2f (x3 )+
x0 8
+3f (x4 ) + 3f (x5 ) + 2f (x6 ) + ...

+2f (x3N −3 ) + 3f (x3N −2 ) + 3f (x3N −1 ) + f (x3N )).


5.5. INTEGRAÇÃO NUMÉRICA VIA ITERAÇÕES DAS REGRAS DO TRAPÉZIO E SIMPSON101

3
O erro na Regra 8 é dado por:

(b − a)h4 (4)
E 38 = − · f (ξ)
80 5
(b − a)
= − · f (4) (ξ),
6480 · N 4

(b − a)
onde h = .
3N

5.5 Integração Numérica via iterações das Regras do Trapézio

e Simpson

Na prática, usar as expressões dos erros da Regra do Trapézio ou Simpson para se estimar uma quantidade

ótima de subintervalos a se trabalhar, objetivando-se atingir uma precisão ε dada, pode ser uma tarefa

impossı́vel. Computacionalmente, existem estratégias mais adequadas: adotaremos uma avaliação de

erro por comparação entre as aproximações, de forma parecida com a que já fizemos antes.
1
Considere aplicar a Regra 3 de Simpson para integrar uma função contı́nua f (x) sobre um intervalo

[a, b] dividindo o intervalo em dois subintervalos (três pontos); obteremos uma aproximação que chama-

remos de I3 . Após isso, dividamos o intervalo em quatro subintervalos (cinco pontos) e reaplicamos a

Regra, obtendo uma aproximação I5 .

Com estas duas aproximações subsequentes, podemos checar o erro relativo

|I5 − I3 |
E3,5 = .
|I5 |

Se este for menor que ε, então interrompemos o processo e tomamos I5 como aproximação que verifica

a precisão pedida. Caso contrário, obtemos I7 e realizamos uma nova checagem sobre E5,7 , e assim

sucessivamente.

Observação 5.1 O método acima pode ser reproduzido usando a Regra do Trapézio; neste caso seria

necessário acrescentar um novo subintervalo a cada vez.

Exemplo 5.5 Calculemos


Z 1.2
ex · cos(x)dx
0

pelo processo iterativo determinado acima, usando a Regra 1/3 de Simpson, de forma a satisfazer a

precisão ε = 10−3 com respeito ao erro relativo sobre as aproximações. Truncaremos na 6a casa decimal.
102 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

Usando três pontos (dois subintervalos), temos h = 0.6 e:

Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.6) + f (1.2))
0
0.6
= 3 (1 + 4 · 1.503859 + 1.203070)

= 1.643701 = I3 .

Usando cinco pontos (quatro subintervalos), temos h = 0.3 e:

Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.3) + 2f (0.6) + 4f (0.9) + f (1.2))
0
0.3
= 3 (1 + 4 · 1.289569 + 2 · 1.503859 + 4 · 1.528913 + 1.203070)

= 1.648471 = I5 .

Checando erro:
|I5 − I3 |
E3,5 = ≈ 0.0028... > ε.
|I5 |

Prosseguindo, usando sete pontos (seis subintervalos), temos h = 0.2 e:

Z 1.2
ex · cos(x)dx ≈ h
3 (f (0) + 4f (0.2)2f (0.4) + 4f (0.6) + 2f (0.8) + 4f (1.0) + f (1.2))
0
0.2
= 3 (1 + 4 · 1.197056 + 2 · 1.374061 + 4 · 1.503859 + 2 · 1.550549 + 4 · 1.468693 + 1.203070)

= 1.648714 = I7 .

Checando erro:
|I7 − I5 |
E5,7 = ≈ 1.47 · 10−4 < ε,
|I7 |

de onde I7 é uam aproximação que satisfaz à precisão pedida.

5.6 Exercı́cios

Exercı́cio 5.6 Usando as regras de Simpson, calcule aproximações para as integrais abaixo, usando

quatro e seis divisões do intervalo de integração. Compare os resultados entre si, entre a aproximação

obtida via Regra do Trapézio (na seção anterior) e entre o valor exato da integral.

Z 2
(a) ex dx
1

Z 4 √
(b) x dx
1
5.7. QUADRATURA GAUSSIANA 103

14
1
Z
(c) √ dx.
2 x

Exercı́cio 5.7 Usando as integrais do exercı́cio anterior, com quantas divisões do intervalo, no mı́nimo,

podemos esperar obter erros menores que 10−5 , via as Regras de Simpson?

0.6
1
Z
Exercı́cio 5.8 Calcule o valor aproximado de dx com três casas decimais de precisão usando
0 1+x
as regras de Simpson.
Z 4
Exercı́cio 5.9 Qual o erro máximo cometido na aproximação de 3x3 − 3x + 1 dx pelas Regras de
0
Simpson com quatro subintervalos? Compare com o resultado obtido via Regra do Trapézio.

Exercı́cio 5.10 Suponha que se conheça os valores de uma função f (x) através da seguinte tabela:

x 1.0 1.2 1.4 1.7 2.0 2.3 2.65 3.0

f (x) 0.23 0.59 1.1 1.4 0.92 0.63 0.42 0.38

Como você procederia para calcular


Z 3
f (x) dx
1

com a maior precisão possı́vel, via Regras de Simpson?

Exercı́cio 5.11 Escolha um objeto ou superfı́cie plana cuja área não seja um polı́gono. Faça medições

para obter uma tabela parecida com a do Exercı́cio 5 e calcule uma aproximação para a área do objeto ou

superfı́cie. Um exemplo de questão que pode ser respondida via este método: qual a proporção da área

azul sobre toda a área da figura que forma o logotipo da marca Pepsi?
Z π
2
Exercı́cio 5.12 Determinar h (a distância entre xi e xi+1 ) necessária para se aproximar cos(x) dx
0
com erro inferior a  = 10−3 pelas regras de Simpson.

5.7 Quadratura Gaussiana

As regras de aproximação de integração vistas anteriormente usam-se de intervalos igualmente espaçados.

O que veremos agora são as chamadas fórmulas de quadratura, que utilizam-se de pontos obtidos de forma

ótima, de forma a minimizar o erro. Focaremos naquela conhecida como Quadratura de Gauss-Legendre

(ou apenas Quadratura de Gauss). Para a seguinte construção teórica são necessários elementos de

Álgebra Linear (ver [1]), sobre os quais não nos estenderemos.


104 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

5.7.1 Polinômios de Legendre

Façamos uma construção resumida dos polinômios de Legendre; trata-se de uma famı́lia de polinômios

que são ortogonais.

Observação 5.2 Recorde que dois vetores - no sentido geométrico - não nulos são ortogonais quando o

produto escalar deles vale zero. Geometricamente, isto significa que fazem ângulo reto ou são paralelos

(múltiplos um do outro). Para se falar em ortogonalidade de polinômios é preciso definir um produto

interno que, a um par de polinômios na variável x, associe um número real (o produto escalar da Geo-

metria Analı́tica é um tipo de produto interno, mas existem outros como o que usaremos logo a seguir).

A ortogonalidade de uma base de vetores permite escrever um vetor qualquer deste espaço de maneira

otimizada; esta é a ideia principal das fórmulas de Quadratura. O ponto chave omitido aqui é que este

conjunto de polinômios é um espaço vetorial real com produto interno.

Considere o seguinte produto interno entre funções f (x) e g(x) contı́nuas no intervalo [−1, 1]:

Z 1
hf (x), g(x)i = f (x)g(x) dx.
−1

Duas funções f (x), g(x) são ortogonais se hf (x), g(x)i = 0.

Sejam φ0 (x), φ1 (x), φ2 (x),..., uma famı́lia de polinômios de grau 0, 1, 2, ... respectivamente. Suponha

que: 



 hφi (x), φj (x)i = 0, para i 6= j,

 e


hφi (x), φi (x)i =
6 0, para φi (x) 6= 0.

Nesta situação, dizemos que esta famı́lia de polinômios é ortogonal.

Construamos uma famı́lia particular de polinômios ortogonais aplicando o processo de Ortogona-

lização de Gram-Schmidt ao conjunto {1, x, x2 , ...} (este conjunto é uma base do espaço vetorial real dos

polinômios da variável x). Este processo equivale ao resultado enunciado pelo seguinte teorema (ver [3]).

Teorema 5.1 Considere os polinômios φ0 (x), φ1 (x), φ2 (x), ... de graus 0, 1, 2, ... respectivamente, defini-

dos por: 
φ0 (x) = 1,




hx · φ0 (x), φ0 (x)i hx, 1i



 φ1 (x) = x −
 · φ0 (x) = x − ·1
hφ0 (x), φ0 (x)i h1, 1i (5.20)
 e, para k = 2, 3, 4, ...,






 φk+1 (x) = x · φk (x) − αk · φk (x) − βk · φk−1 (x),

5.7. QUADRATURA GAUSSIANA 105

onde
hx · φk (x), φk (x)i hφk (x), φk (x)i
αk = , βk = .
hφk (x), φk (x)i hφk−1 (x), φk−1 (x)i

Os polinômios assim obtidos são, dois a dois, ortogonais, isto é,

Z 1
φi (x)φj (x) dx = 0.
−1

Eles são chamados de Polinômios de Legendre.

Exemplo 5.6 Vamos utilizar o último teorema para calcular alguns polinômios de Legendre. φ0 é esta-

belecido arbitrariamente, e a partir deste calculamos os demais; então:

φ0 (x) = 1,

R1
xdx x2 1
hx, 1i |
φ1 (x) = x − −1
·1 = x− R1 = x − 2 1−1 = x.
h1, 1i dx x|−1
−1

φ2 (x) = x · φ1 (x) − α1 · φ1 (x) − β1 φ0 (x),

onde:
R1 3
hx · φ1 (x), φ1 (x)i x dx
α1 = = R−1
1 = 0,
hφ1 (x), φ1 (x)i x2 dx
−1

R1 2
hφ1 (x), φ1 (x)i x dx 1
β1 = = −1
R1 = ,
hφ0 (x), φ0 (x)i dx 3
−1

1
⇒ φ2 (x) = x2 − .
3
Repetindo este processo, obteremos:

3x
φ3 (x) = x3 − ,
5

6x2 3
φ4 (x) = x4 − + ,
7 35

10x3 5x
φ5 (x) = x5 − + .
9 21
..
.

A propriedade principal destes polinômios de Legendre pode ser enunciada da seguinte forma: cada
106 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

φi (x) possui i raı́zes reais distintas em [−1, 1]; além disso, elas são duas a duas opostas: se x ∈ [−1, 1],

x 6= 0 é uma raiz de φi (x), então −x também é. Na Tabela 5.1 temos as raı́zes dos polinômios de Legendre

que já calculamos.

5.8 Quadratura de Gauss

Façamos, inicialmente, a Quadratura para integrar uma função f (x) contı́nua no intervalo [−1, 1]. Para

um intervalo arbitrário [a, b] qualquer, será preciso realizar uma mudança de variáveis linear que trans-

forme o intervalo [a, b] em [−1, 1].

A Quadratura de Gauss utiliza-se da famı́lia de polinômios ortogonais para obter uma aproximação

ótima da função f (x) contı́nua num intervalo [a, b]. A Quadratura de grau n consiste na seguinte apro-

ximação:
Z 1 n
X
f (x)dx ≈ Ak f (xk ), (5.21)
−1 k=1

onde:

(i) xk são as raı́zes de φn (x), para k = 1, ..., n.

R1
(ii) Ak = −1
Lk (x)dx, para k = 1, ..., n, onde os Lk são os fatores de Lagrange do polinômio interpo-

lador das raı́zes xk de φn (x).

Note que a equação (5.21) é resultado da integração, de −1 até 1, do polinômio que interpola os nós

(xk , f (xk )).

Exemplo 5.7 Vamos usar Quadratura de Gauss grau 2 para aproximar

Z 1
cos(x) dx,
−1

usando cinco casas decimais.

Para esta quadratura, usamos φ2 (x) = x2 − 13 , cujas raı́zes são

1 1
x1 = − √ ≈ −0.57735, x2 = √ ≈ 0.57735.
3 3

Os fatores de Lagrange para o conjunto de pontos {x0 , x1 } são:

x − x2 x − x1
L1 (x) = , L2 (x) = .
x1 − x2 x2 − x1
5.8. QUADRATURA DE GAUSS 107

i φi (x) Raı́zes

0 1 Nenhuma

1 x 0

− √13 ≈ −0.5773502691896258,
2 1
2 x − 3
√1 ≈ 0.5773502691896258,
3


− √35 ≈ −0.7745966692414833,

3 x3 − 35 x 0

√3 ≈ 0.7745966692414833,
5

√√
− 15+√35
2 30
≈ −0.8611363115940526
√√
− 15−√35
2 30
≈ −0.3399810435848562
4 x4 − 67 x2 + 3
35 √√
15− 2 30

35
≈ 0.3399810435848562
√√
15+ 2 30

35
≈ 0.8611363115940526

√√
− 35+3√27 70 ≈ −0.9061798459386639
√√
35− 2 70
− 3√7 ≈ −0.538469310105683

10 3 5
5 x5 − 9 x + 21 x
0
√√
35+ 2 70

3 7
≈ 0.538469310105683
√√
35+ 2 70

3 7
≈ 0.9061798459386639

Tabela 5.1: Polinômios de Legendre e raı́zes


108 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

Os termos A1 e A2 são as respectivas integrais de L1 e L2 sobre o intervalo [−1, 1]:

1 1 1  2 1
x − x2 1 1 x
Z Z Z
A1 = L1 (x) dx = dx = x − x2 dx = − x · x2 = 1.
−1 −1 x1 − x2 x1 − x2 −1 x1 − x2 2 −1

e
Z 1
A2 = L2 (x) dx = 1.
−1

Nestas integrais, usamos o fato de que a raı́zes são opostas.

Agora, avaliamos a função f (x) = cos(x) sobre as raı́zes x1 , x2 :

cos(x1 ) ≈ 0.83791, cos(x2 ) ≈ 0.83791.

Temos:
Z 1 2
X
cos(x) dx ≈ Ak cos(xk )
−1 k=1

= A1 cos(x1 ) + A2 cos(x2 )

= 1 · 0.83791 + 1 · 0.83791

= 1.67582.

Compare com a integral calculada de maneira direta:

Z 1
cos(x) dx = sen(1) − sen(−1) ≈ 1.68294
−1

Observe que os valores de A1 e A2 no exemplo anterior independem da função f (x) sendo integrada.

Assim, podemos calculá-los de antemão para usarmos para diferentes funções a serem integradas.

Exemplo 5.8 Calculemos os termos A1 , A2 , A3 obtidos a partir dos fatores de Lagrange do polinômio

interpolador das raı́zes do polinômio de Lagrange φ3 (x).

Pela Tabela 5.1, temos: φ3 (x) = x3 − 53 x, e suas raı́zes são:

√ √
3 3
x1 = − √ ≈ −0.7745966692414833, x2 = 0 x3 = √ ≈ 0.7745966692414833
5 5

.
5.8. QUADRATURA DE GAUSS 109

Temos: Z 1
A1 = L1 (x) dx
−1

1
(x − x2 )(x − x3 )
Z
= dx ( como x2 = 0)
−1 (x1 − x2 )(x1 − x3 )

1
1
Z
= x2 − x3 · x dx
(x1 )(x1 − x3 ) −1

1 2
= · ( pois x1 = −x3 )
2x21 3

5
=
9

≈ 0.555555555555555...

Similarmente:

A2 = 0.888888888888888...

A3 = 0.555555555555555...

Para os demais graus, os Ak são calculados da mesma maneira. Estas informações podem ser resumidas

na Tabela 5.2, até n = 8. Note, observando a tabela, que os Ak possuem um padrão que se repete e são

sempre positivos.

5.8.1 Quadratura sobre intervalos arbitrários

Vejamos agora como usar Quadratura para aproximar integrais definidas num intervalo [a, b] que seja

diferente de [−1, 1]; a estratégia é efetuar uma mudança de coordenadas linear que transforme o intervalo

[a, b] em [−1, 1], que é o intervalo sobre o qual efetuamos a Quadratura. Aqui, supomos a 6= b e a 6=

−1, b 6= 1.

Assim, se queremos
Z b
f (x) dx, (5.22)
a

considere u(t) a função de primeiro grau cujo gráfico é a reta que passa pelos pontos (−1, a), (1, b), ou

seja:
b−a b+a
u(t) = t+ .
2 2
110 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

xi Ai
n=2
−0.5773502691 1.0000000000
0.5773502691 1.0000000000
n=3
−0.7745966692 0.5555555555
0.0000000000 0.8888888888
0.7745966692 0.5555555555
n=4
−0.8611363115 0.3478548451
−0.3399810435 0.6521451548
0.3399810435 0.6521451548
0.8611363115 0.3478548451
n=5
−0.9061798459 0.2369268850
−0.5384693101 0.4786286704
0.0000000000 0.5688888888
0.5384693101 0.4786286704
0.9061798459 0.2369268850
n=6
−0.9324695142 0.1713244923
−0.6612093864 0.3607615730
−0.2386191860 0.4679139345
0.2386191860 0.4679139345
0.6612093864 0.3607615730
0.9324695142 0.1713244923
n=7
−0.9491079123 0.1294849661
−0.7415311855 0.2797053914
−0.4058451513 0.3818300505
0.0000000000 0.4179591836
0.4058451513 0.3818300505
0.7415311855 0.2797053914
0.9491079123 0.1294849661
n=8
−0.9602898564 0.1012285362
−0.7966664774 0.2223810344
−0.5255324099 0.3137066458
−0.1834346424 0.3626837833
0.1834346424 0.3626837833
0.5255324099 0.3137066458
0.7966664774 0.2223810344
0.9602898564 0.1012285362

Tabela 5.2: Valores de xk e Ak para uso na Quadratura de Gauss.


5.8. QUADRATURA DE GAUSS 111

du b−a
Assim, = e a integral (5.22) torna-se:
dt 2

1 1
b−a b−a
Z Z
f (u(t)) · dt = f (u(t)) dt.
−1 2 2 −1

Note que agora temos uma integral definida sobre o intervalo [−1, 1], sobre o qual já sabemos como

efetuar a Quadratura. Supondo que usaremos o polinômio de Legendre de grau n, então:

b 1 n
b−a b−a X
Z Z
f (x) dx = f (u(t)) dt ≈ · Ak · f (u(xk )).
a 2 −1 2
k=1

Exemplo 5.9 Vamos calcular


2
1
Z
dx
−3 x+4

usando Quadratura com n = 4 e trabalhando com dez casas decimais. Por integração direta, sabemos que

esta integral vale

ln(6) ≈ 1.7917594692...

Como a = −3, b = 2, temos:

2 − (−3) 2 + (−3) 5 1
u(t) = t+ = t− .
2 2 2 2

Organizemos as informações na seguinte forma:

k xk Ak u(xk ) f (u(xk ))

1 −0.8611363115 0.3478548451 −2.6528407787 0.74230275399

2 −0.3399810435 0.6521451548 −1.3499526087 0.37735174219

3 0.3399810435 0.6521451548 0.3499526087 0.22988756199

4 0.8611363115 0.3478548451 1.6528407787 0.1769022053


112 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS

Usando as colunas Ak e f (u(xk )), temos:

2 4
1 b−a X
Z
dx ≈ · Ak · f (u(xk ))
−3 x+4 2
k=1

5
=
2
(0.3478548451 · 0.74230275399
+0.6521451548 · 0.37735174219

+0.6521451548 · 0.22988756199

+0.3478548451 · 0.1769022053)

= 1.7893951719.

Observação 5.3 O mesmo processo iterativo visto no Exemplo 5.5 pode ser aplicado usando Quadratura.

Observação 5.4 A Quadratura vista aqui é conhecida como Quadratura de Gauss-Legendre. Ela fun-

ciona melhor nos casos em que a função f (x) não possui assı́ntotas (verticais e horizontais) e onde o

intervalo de integração é limitado. Para integrandos f (x) que possuam assı́ntotas e/ou para integrais

impróprias, pode-se usar diferentes tipos de Quadratura, como a de Gauss-Tchebyshev, Gauss-Laguerre

e Gauss-Hermite. Consulte [3] para mais detalhes.

Observação 5.5 Existem métodos numéricos similares para integrais múltiplas, ver [2].

5.9 Exercı́cios

Exercı́cio 5.13 Calcule as integrais das funções f (x) no intervalo [a, b] abaixo usando Quadratura de

Gauss com o valor de n indicado. Compare o resultado obtido com o valor obtido pelo cálculo direto, se

possı́vel.


x
(a) f (x) = e , [a, b] = [2, 4].

p
(b) f (x) = ln( 4 cos(x)2 + 1), [a, b] = [1, 1.5].

sen(x)
(c) f (x) = , [a, b] = [0, 1].
x

Exercı́cio 5.14 Obtenha aproximações para as integrais abaixo usando Quadratura de Gauss. Use o

processo iterativo para integrais do Exemplo 5.5 para obter erro relativo inferior ao ε indicado.
Z 2
2
(a) e−x dx, ε = 10−4 .
−2
5.9. EXERCÍCIOS 113

−2
x
Z
(b) dx, ε = 10−3 .
0 x2 + 3
Z 1.6
(c) x−x dx, ε = 10−3 .
0
114 CAPÍTULO 5. INTEGRAÇÃO POR MÉTODOS NUMÉRICOS
Capı́tulo 6

Métodos Numéricos para Equações

Diferenciais Ordinárias

6.1 Métodos Numéricos para Equações Diferenciais Ordinárias

Considere a equação diferencial ordinária de primeira ordem abaixo, com uma condição inicial informada

(também chamado de problema de valor inicial, ou PVI):


 y 0 = f (x, y)

, (6.1)
 y(x0 ) = y0

onde f (x, y) é uma função contı́nua de duas variáveis. A maior parte das equações diferenciais encontradas

na prática não podem ser resolvidas analiticamente; para compreender suas soluções, lançamos mão

de métodos numéricos. Os métodos que veremos aqui produzem discretizações aproximadas para as

soluções.

Em todos os métodos que veremos, será preciso escolher um h, que será conhecido como tamanho

do passo ou apenas passo. A discretização é gerada a partir das abcissas

xk+1 = x0 + h · xk , k = 0, 1, ..., n.

n é o número de passos e [x0 , xn ] é o intervalo sobre o qual queremos obter uma discretização aproxi-

mada da solução.

Seja y(x) a solução de (6.1). Para cada xk , obteremos uma aproximação yk ≈ y(xk ). Vamos também

115
116 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

denotar fk = f (xk , yk ).

6.2 Método de Taylor de Ordem q

O método mais geral para se obter uma aproximação numérica para a solução de 6.1 consiste em trabalhar

com polinômio de Taylor de f (x, y) de ordem q, assumindo que esta seja suficientemente derivável.

Seja y(x) a solução exada do PVI (6.1). O polinômio de Taylor de y(xk + h) com erro de Lagrange

em torno de xk ∈ [x0 , xn ] é:

h2 00
y(xk + h) = y(xk ) + hy 0 (xk ) + 2! y (xk ) + ...
q q+1
(6.2)
+ hq! y (q) (xk ) + h
(q+1)! y
(q+1)
(ξk ),

para algum ξk ∈ (xk , xk+1 ). Como não conhecemos y(x), as suas derivadas em (6.2) não são conhecidas;

no entanto, como y 0 (x) = f (x, y) e conhecemos f (x, y), podemos fazer as seguintes substituições abaixo

(observando que y = y(x) e aplicando a Regra da Cadeia):

y0 = f (x, y),

∂f ∂f dy
y 00 = f0 = + = fx + fy f,
∂x ∂y dx

∂fx ∂fx dy

∂fy ∂fy dy
 
∂f ∂f dy
 (6.3)
y (3) = f 00 = + + + f + fy +
∂x ∂y dx ∂x ∂y dx ∂x ∂y dx

= fxx + 2fxy f + fyy f 2 + fx fy + fy2 f,


..
.

Essas grandezas podem ser avaliadas em xk e substituı́das em (6.2). O cálculo das derivadas de ordem

superior de f pode tornar este método inviável para valores altos de q. A expressão (6.2), sem a expressão

para o erro, fica:

hq (q−1)
y(xk + h) = y(xk ) + hf (xk , y(xk )) + ... + f (xk , y(xk )).
q!

(j)
Como a aproximação consiste em fazer y(xk ) ≈ yk e f (j) (xk , y(xk )) ≈ fk . Obtemos a seguinte expressão

para a sequência desejada:


h2 0 hq (q−1)
yk+1 = yk + hfk + fk + ... + fk , (6.4)
2! q!
6.2. MÉTODO DE TAYLOR DE ORDEM Q 117

chamado Método de Taylor de Ordem q.

No caso particular em que q = 1, este método também é conhecido como Método de Euler. Essa

versão mais simples tem o seguinte processo iterativo:

yk+1 = yk + hfk ,

que é de fácil memorização mas produz erros muito grandes.

Exemplo 6.1 Considere o P V I:



y0 = −y + x2 + 1

 y(0) = 1, x ∈ [0, 0.5]


Vamos obter uma aproximação para a solução y(x) deste PVI usando h = 0.1 e o Método de Taylor

de ordem 2. Temos: x0 = 0, xn = 0.5, donde n = 5. Isso significa que obteremos aproximações para

(x0 , y(x0 )), (x1 , y(x1 )), ..., (x5 , y(x5 )),

onde

x0 = 0, x1 = 0.1, x2 = 0.2, ..., x5 = 0.5,

e, da condição inicial, temos:

y0 = y(x0 ) = 1.

O método de Taylor de Ordem 2 é dado por (6.4) com q = 2, ou seja:

h2 0
yk+1 = yk + hfk + f , k = 0, 1, 2, 3, 4. (6.5)
2 k

Como

f = −y + x2 + 1 ⇒ fk = −yk + x2k + 1

então

f 0 = 2x + (−1)(−y + x2 + 1) = y − x2 + 2x − 1 ⇒ fk0 = yk − x2k + 2xk − 1,

para cada k = 0, 1, 2, 3, 4. Podemos substituir estas em (6.5), ou calcular estes termos à parte; faremos

dessa segunda forma para manter melhor organização.


118 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

Fazendo k = 0: x0 = 0, y0 = 1

f0 = −y0 + x20 + 1 = 0, f00 = y0 − x20 + 2x0 − 1 = 0,

portanto
0.01 0
y1 = y0 + 0.1 · f0 + f = 1.
2 0

Assim, (x1 , y1 ) = (0.1, 1).

Fazendo k = 1: x1 = 0.1, y1 = 1

f1 = −y1 + x21 + 1 = 0.01, f10 = y1 − x21 + 2x1 − 1 = 0.19,

portanto
0.01 0
y2 = y1 + 0.1 · f1 + f = 1.00195.
2 1

Assim, (x2 , y2 ) = (0.2, 1.00195).

Sucessivamente: Fazendo k = 2:

x2 = 0.2 y2 = 1.00195, f2 = 0.03805, f20 = 0.36195,

portanto y3 = 1.00756475 ⇒ (x3 , y3 ) = (0.3, 1.00756475).

Fazendo k = 3:

x3 = 0.3 y3 = 1.00756475, f3 = 0.08243525, f30 = 0.51756475,

portanto y4 = 1.01839609875 ⇒ (x4 , y4 ) = (0.4, 1.01839609875).

Finalmente, fazendo k = 4:

x4 = 0.4 y4 = 1.01839609875, f4 = 0.14160390125, f40 = 0.65839609875,

portanto y5 = 1.03584846936875 ⇒ (x5 , y5 ) = (0.5, 1.03584846936875).

Comparemos estas aproximações com a solução exata do PVI, que é

y(x) = −2e−x + x2 − 2x + 3.
6.3. MÉTODOS DE RUNGE-KUTTA 119

Temos estas aproximações sumarizadas e comparadas na Tabela 6.1. Na Figura 6.1 temos o gráfico da

função y(x) e o pontos (xk , yk ) obtidos.

xk yk y(xk ) Erro
0 1 1
0.1 1 1.00032516392808 3.25 · 10−4
0.2 1.00195 1.002538493844036 5.88 · 10−4
0.3 1.00756475 1.008363558636564 7.98 · 10−4
0.4 1.01839609875 1.019359907928721 9.63 · 10−4
0.5 1.03584846936875 1.036938680574733 1.09 · 10−3

Tabela 6.1: Resultados aproximados e exatos das soluções do PVI do Exemplo 6.1.

y
1.05

1
x
0.1 0.2 0.3 0.4 0.5

Figura 6.1: Aproximações

É importante notar que, conforme nos afastamos de x0 (isto é, k cresce), o erro tende a ir aumentando.

Uma estratégia paa reduzir este efeito é diminuir o tamanho do passo (o que implica numa quantidade

maior de repetições a serem feitas).

6.3 Métodos de Runge-Kutta

O método visto anteriormente destaca-se pela sua acessibilidade e baixa dependência de recursos compu-

tacionais. Havendo acesso a uma capacidade computacional mais potente, ou se não for possı́vel computar

as derivadas de f (x, y), os métodos de Runge-Kutta são mais recomendados.

Veremos apenas o Método de Runge-Kutta de 4 estágios e 4a ordem; ele (ou versões aperfeiçoadas

dele) é a mais comumente usada e implementada nos softwares de computação numérica. Como antes, h

é o comprimento do passo e o P V I está definido num intervalo [x0 , xn ].

A partir de um PVI 
 y 0 = f (x, y)

, (6.6)
 y(x0 ) = y0

120 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

a forma geral dos Métodos de Runge-Kutta de R estágios é definido por

yk+1 = yk + h · φ(xk , yk , h),

onde
R
X
φ(x, y, h) = cj Kj , onde:
j=1

K1 = f (x, y),
j−1
!
X
Kj = f x + aj h, y + h bjs Kj , j = 2, 3, ..., R,
s=1
j−1
X
aj = bjs , para j = 2, 3, ..., R.
s=1

Runge-Kutta de 4a ordem

Existem várias versões deste método; via de regra são todos equivalentes entre si. Usaremos a seguinte

(ver [3]):

yk+1 = yk + h6 (K1 + 2(K2 + K3 ) + K4 )

K1 = f (xk , yk ),

= f xk + 21 h, yk + 12 hK1 ,

K2

= f xk + 21 h, yk + 12 hK2 ,

K3

K4 = f (xk + h, yk + hK3 ) .

Exemplo 6.2 Voltemos ao Exemplo 6.1; vamos aplicar a ele o Método de Runge-Kutta de 4a Ordem

visto acima, com h = 0.1. O processo iterativo é:

yk+1 = yk + h6 (K1 + 2(K2 + K3 ) + K4 )

onde:

K1 = f (xk , yk ) = −yk + x2k + 1,

= f xk + 21 h, yk + 12 hK1 = −(yk + 21 hK1 ) + (xk + 12 h)2 + 1



K2

= f xk + 12 h, yk + 12 hK2 = −(yk + 21 hK2 ) + (xk + 12 h)2 + 1,



K3

K4 = f (xk + h, yk + hK3 ) = −(yk + hK3 ) + (xk + h)2 + 1.

Podemos substituir retroativamente as expressões de K1 em K2 , K2 em K3 e K3 em K4 , mas é muito

mais simples calcular cada um separadamente e substituir apenas o resultado.

Estes cálculos renderão os seguintes resultados (com truncamento em oito casas decimais), bem como
6.4. EXERCÍCIOS 121

a comparação com os valores obtidos pela solução exata.

xk K1 K2 K3 K4 yk y(xk ) Erro

0 − − − − 1 1 0

0.1 0 0.0025 0.002375 0.00976250 1.00032520 1.00032516 4.44 · 10−8

0.2 0.00967479 0.02169105 0.02109023 0.03756576 1.00253859 1.00253849 1.00 · 10−7

0.3 0.03746140 0.05808833 0.05705698 0.08175570 1.00836372 1.00836355 1.64 · 10−7

0.4 0.08163627 0.11005446 0.10863355 0.14077292 1.01936014 1.01935990 2.35 · 10−7

0.5 0.14063985 0.17610786 0.17433446 0.21320640 1.03693899 1.03693868 3.11 · 10−7

Observa-se o erro pequeno mesmo com um h grande como 0.1.

6.4 Exercı́cios

Exercı́cio 6.1 Considere o PVI 


 x2 · y 0 = 2x − y,

 y(2) = 1.

(a) Identifique x0 , y0 , f (x, y).

(b) Se h = 0.125, calcule a quantidade de passos necessários para obter uma aproximação para y(5).

(c) Escreva o processo iterativo para o PVI dado usando o Método de Euler (método de Taylor com

q = 1) com o h informado.

(d) Calcule uma aproximação para y(3).

Exercı́cio 6.2 Considere 


 y0 = 2y
+ (x + 1)3 ,

x+1
 y(0) = 3.

(a) Use o método de Taylor com q = 2 para obter aproximações para y(2) e y(3). Use o Excel para

fazer as contas necessárias, com h = 0.125 e h = 0.2.

(b) Use o método de Runge-Kutta de 4a ordem para obter aproximações para y(2) e y(3). Use o Excel

para fazer as contas necessárias, com h = 0.125 e h = 0.2.

(c) Resolva o PVI e compare com as soluções exatas.

Exercı́cio 6.3 Reescreva o processo iterativo do Método de Taylor dado na equação (6.4) com q = 3.
122 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

Exercı́cio 6.4 Considere o PVI cuja equação é separável:

x

 y0 = ,

y
 y(1) = 2.

(a) Use o Métodos de Runge-Kutta de 4a ordem e um aplicativo de sua preferência (Ex: Excel) para

aproximar o valor da solução y(x) quando x = 5. Use os seguintes valores para h: 0.1, 0.125 e

0.05.

(b) Resolva o PVI e calcule y(5). Compare com as aproximações obtidas no item (a).

(c) Coloque, num mesmo sistema de eixos, o gráfico de y(x) e os pontos (xn , yn ) obtidos no item (a).

Compare o gráfico com as aproximações.

6.5 Métodos Numéricos para Sistemas de Equações Diferenciais

Ordinárias

Considere um sistema de m equações diferenciais de primeira ordem:




 y10 = f1 (x, y1 , y2 , ..., ym )


 y20 = f2 (x, y1 , y2 , ..., ym )


.. (6.7)
.






 y 0 = f (x, y , y , ..., y ).

m n 1 2 m

com condições iniciais 




 y1 (x0 ) = y1,0



 y2 (x0 ) = y2,0

.. .
.







 y (x ) = y
m 0 m,0

Podemos escrever o sistema (6.7) vetorialmente:

y0 = f (x, y),
6.5. MÉTODOS NUMÉRICOS PARA SISTEMAS DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS123

onde:    
y1 f1 (x, y)
   
   
 y2   f2 (x, y) 
y= , f (x, y) = .
  
.. 
  ..
.  .
  
  
   
ym fm (x, y)

e  
y1,0
 
 
 y2,0 
y0 = y(x0 ) =  . .
 
 .
 .


 
ym,0

Os métodos vistos anteriormente podem ser aplicados a sistemas de EDOS, desde que o processo

iterativo dos métodos sejam escritos em forma vetorial.

Exemplo 6.3 (ver [3]) Considere o PVI:





 y0 = z

 z 0 = y + ex


 y(0) = 1, z(0) = 0,

com x ∈ [0, 0.2],h = 0.1. Escrevendo este PVI vetorialmente, temos:

   
y z
y=  , f (x, y, z) =  .
   
z y + ex

Aqui, omitimos que y = y(x), z = z(x). Das condicções iniciais, y0 = 1, z0 = 0.

O processo iterativo do Método de Euler, no caso geral, é:

yk+1 = yk + h · f (xk , yk )

que, escrito vetorialmente, fica:

yk+1 = yk + h · f (xk , yk , zk ).

Temos:      
 yk+1   yk  zk
=  + h .
 

zk+1 zk yk + exk
124 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

Fazendo k = 0: temos x1 = 0.1 e


       
y y
 1   0  z 0 1
=  + h = ,
   

x0
z1 z0 y0 + e 0.2

 
y(x )
1 
o que assumimos ser uma aproximação para  .

z(x1 )
Fazendo k = 1: temos x2 = 0.2 e
       
y y
 2   1  z1 1.02
=  + h = ,
   

x1
z2 z1 y1 + e 0.4105

 
 y(x2 ) 
o que assumimos ser uma aproximação para  .
z(x2 )

6.6 Equações de Ordem Superior

Considere uma equação diferencial de ordem m:

y (m) = f (x, y, y 0 , ..., y (m−1) )

com condições iniciais


(m−1)
y(x0 ) = y0 , y 0 (x0 ) = y00 , ..., y (m−1) (x0 ) = y0 .

É possı́vel escrever esta equação de ordem m como um sistema de m equações diferenciais de ordem

1 introduzindo m novas variáveis (que chamaremos de z1 , ..., zm ): se z1 = y, então z10 = y 0 , a qual

chamaremos de z2 ; z20 será chamada de z3 , e assim sucessivamente.





 z10 = y 0 = z2


z20 = y 00 = z3






z30 = y 000 = z4



..
.






0
= y (m−1) = zm




 zm−1


0
zm = y (m) = f (x, y, y 0 , ..., y (m−1) ).


6.7. EXERCÍCIOS 125

Exemplo 6.4 O PVI 





 y 00 = y − ex

 y(0) = 1


 y 0 (0) = 2

pode ser transformado em um sistema de equações diferenciais de primeira ordem fazendo

y 0 = z ⇒ z 0 = y 00 = y − ex

e obtemos 


 y0 = z



 z 0 = y − ex

y(0) = 1






 z(0) = 2

Dessa forma, pode-se aplicar os métodos numéricos vistos na forma vista na Seção 1 a equações de

ordem diferenciais de ordem superior.

6.7 Exercı́cios

Exercı́cio 6.5 Escreva o processo iterativo obtido aplicando ao seguinte PVI os métodos pedidos:




 y 0 = x2 − z

 z 0 = xy − zy


 y(0) = 1.2, z(0) = 3

(a) Método de Euler (Taylor com q = 1).

(b) Método de Taylor com q = 2.

(c) Método de Runge-Kutta de 4a ordem.

Exercı́cio 6.6 Para cada processo iterativo obtido no Exercı́cio anterior, calcule aproximações das soluções

no intervalo [0, 0.4] usando os seguintes valores de h:

(a) h = 0.1.
126 CAPÍTULO 6. MÉTODOS NUMÉRICOS PARA EQUAÇÕES DIFERENCIAIS ORDINÁRIAS

(b) h = 0.01.

(c) h = 0.001.

Exercı́cio 6.7 Considere as EDO de ordem maior que um:

(a) y 00 + 3xy − 5x2 = 0

(b) x3 y 000 − x2 y 00 + 2xy 0 + y = 1

(c) y (4) − y = 0

x
(d) y 00 − = y2
y

Reduza cada uma das EDOs a um sistema de equações diferenciais de primeira ordem. Se h = 0.01,

escreva o processo iterativo obtido aplicando sobre este PVI os seguintes métodos:

(a) Método de Euler

(b) Método de Taylor de Ordem 2

(c) Runge-Kutta de 4a Ordem


Referências Bibliográficas

[1] J. L. Boldrini, S. I. R. Costa, V. L. Figueiredo, and H. G. Wetzler. Álgebra Linear. HARBRA, 3

edition, 1986.

[2] A. M. Burden, R. L. Burden, and D. J. Faires. Análise Numérica. CENGAGE - CTP Nacional, 2016.

[3] N. M. B. Franco. Cálculo Numérico. PEARSON, 2006.

[4] D. A. R. Justo, E. Sauter, F. S. de Azevedo, L. F. Guidi, and P. H. de A. Konzen. Cálculo Numérico:

Um Livro Colaborativo (Versão Octave). Projeto REAMAT, 2020.

[5] V. L. da R. Lopes M. A. G. Ruggiero. Cálculo Numérico: Aspectos Teóricos e Computacionais.

MAKRON, 2nd edition, 1996.

[6] R. J. Santos. Um Curso de Geometria Analı́tica e Álgebra Linear. Imprensa Universitária UFMG,

Belo Horizonte, 2014.

[7] G. W. Stewart. Introduction to Matrix Computations. Computer Science and Applied Mathematics.

Academic Press, 1973.

[8] J. Stewart. Cálculo. CENGAGE - CTP Nacional, 2013.

127

Você também pode gostar