Você está na página 1de 184

Chapter 1

Zeros de Funções Reais

1.1 Introdução
Equações não-lineares são aquelas que contém potências ou funções trancendentais das variáveis
independentes. Tais equações surgem frequentemente em engenharia, fı́sica ou quı́mica. Nosso objetivo
é encontrar os zeros de uma dada função f dada por f (x) para x ∈ R, ou seja, encontrar os pontos
x ∈ R tais que f (x) = 0. Graficamente temos:

y
zeros da função f (x) =⇒ f (x) = 0

y = f (x)

Figure 1.1: Ilustração gráfica dos zeros (ou raı́zes) de funções

1
2

Definição 1:
Dizemos que um número real ξ é uma raiz de f (x) quando f (ξ) = 0.
Exemplo 1:
Seja calcular as raı́zes reais das funções f dadas por:
a)

f (x) = x3 − 4x2 + 8x − 2

b)

f (x) = ex − cos x

Obter os zeros de uma função qualquer analiticamente é muito difı́cil ou impossı́vel. Por isso,
devemos tentar encontrar apenas aproximações para esses zeros.
A idéia geral dos métodos numéricos que estudaremos é obter, a partir de uma aproximação
inicial para um zero, uma sequência de melhores aproximações através de um processo iterativo, que
veremos mais adiante.

1.2 Método Gráfico


No Método Gráfico fazemos o esboço do gráfico de f (x) para ter uma ideia de onde se encontram as
raı́zes de f (x). A partir de valores aproximados, tomados nos intervalos onde se encontram essas raı́zes,
utilizamos outros métodos para aproximar as mesmas com uma precisão maior. Atualmente, muitas
bibliotecas matemáticas permitem traçar gráficos de funções que nos permitem encontrar os intervalos
onde se encontram suas raı́zes.
Exemplo 2:
Seja encontrar a raiz de f (x) = cos(x) − x para xemR, x > 0.
Em um primeiro momento, não temos ideia onde se encontra essa raiz. Contudo, através do
gráfico poderemos ter uma ideia onde se encontra a mesma. Para uma melhor visualização, vamos
transformar a equação cos(x) − x = 0 em cos(x) = x. Neste caso, traçamos os gráficos de h(x) = cos(x)
e g(x) = x, daı́ basta estimar pelo gráfico a interseção dos gráficos de h(x) e g(x). Graficamente, temos:

Observamos que a interseção dos gráficos de h(x) e g(x) é, aproximadamente, em torno para o
valor de x = 0.7, para x em radianos.
3

1.3 Método Iterativo


Definição 2: Um Método iterativo consiste de uma sequência de instruções que são repetidas em
ciclos.
A execução de um ciclo chama-se iteração. Cada iteração utiliza resultados das iterações anteriores
e efetua alguns testes para verficar se já foi encontrado o resultado próximo a raiz procurada.

x0 → x1 → x2 → x3 → x4 → · · · · · · → ξ
| {z } |{z}
aproximações zero
Surgem algumas questões:

1. Como encontrar uma aproximação inicial?

2. Como interromper a geração de novas aproximações?

3. Como gerar as novas aproximações?

4. Quão rapidamente a sequência se aproxima do limite?

1. Aproximação inicial
Inicialmente, devemos determinar um intervalo onde se encontra uma raiz da função. Isto pode
ser feito através de seu gráfico (visto anteriormente) ou através da mudana̧ de sinal da mesma.
Nesse caso, devemos analisar se existe pelo menos uma raiz no intervalo onde a função muda de
sinal. Para isto, utilizamos o seguinte resultado:

Teorema 1.3.1 Seja f uma função dada por f (x) para x ∈ R, sendo contı́nua em um intervalo
[a, b]. Se f (a) · f (b) < 0 então existe pelo menos um ponto entre a e b que é zero de f (x).

Desta forma, podemos construir uma tabela de pontos com os valores para a função e verificar
onde existam trocas de sinal da mesma.
Exemplo 3:
Seja a função f dada por f (x) = x3 − 9x + 3, então:

x −100 −10 −5 −3 −1 0 1 2 3 4
f (x) −999097 −907 −77 3 11 3 −5 −7 3 11
sinal − − − + + + − − + +

Pode-se então afirmar que existem zeros nos seguintes intervalos: (−5, −3); (0, 1); (2, 3).
Conhecendo-se onde se encontram aproximadamente os zeros da função parte-se, então, para
a melhoria da aproximação do zero. Para isto, apresentaremos diferentes métodos numéricos
para obtenção de zeros de funções. Observe que a técnica acima não nos dá uma estimativa
inicial para as raı́zes de uma função. Mas, a partir dos intervalos onde se encontram essas raı́zes,
utilizaremos o Método da Bisseção (mais adiante) para encontrar tais estimativas.
4

2. Critério de Parada
Quando parar o processo iterativo?
Uma maneira de determinar se a sequência gerada pelo método iterativo está convergindo é
verificar se a diferença entre a aproximação e o valor exato do zero está diminuindo. Seja xi o
valor aproximado obtido na iteração i e ξ o valor exato do zero, podemos verificar se

| xi − ξ |< 

isto é, se a diferença acima citada é menor que um valor pequeno (). Chamamos  de tolerância
de parada ou simplesmente tolerância.
Entretanto, como não conhecemos o valor exato do zero da função (queremos na verdade
determinar este valor), o teste acima não pode ser efetuado. Substituı́mos o teste acima pelo
seguinte teste:

| xi+1 − xi |< 

A diferença agora é calculada entre duas aproximações sucessivas.


O critério empregando a diferença relativa entre aproximações sucessivas também é usado, isto é,

| xi+1 − xi |
<
| xi+1 |

Outro teste que também pode ser realizado é

| f (xi ) |< 

Porém, os dois testes nem sempre são satisfeitos simultaneamente.

3. Geração da sequência de aproximações


Para gerar a sequência de aproximações utilizaremos alguns métodos iterativos, dados a seguir.

4. Rapidez de convergência
Uma análise da rapidez de convergência será feita no final do capı́tulo.
5

1.3.1 Método da Bissecção


O primeiro método iterativo a ser apresentado será o Método da Bissecção. Esse método poderá
ser usado para determinar uma aproximação inicial x0 para a raiz procurada.
Seja [a, b] um intervalo que contenha um zero de uma função contı́nua f (x), isto é, f (a) · f (b) < 0.
O objetivo do Método da Bissecção é reduzir o tamanho do intervalo inicial que contém o
zero até que seja atingida uma precisão desejada. A redução do intervalo é conseguida através da
divisão sucessiva ao meio do intervalo. O ponto que divide o intervalo em dois subintervalos, é,
a+b
x=
2
A divisão do intervalo, define dois subintervalos, sendo que um contém o zero e o outro não. Repetimos
o mesmo processo sempre com o intervalo que contém o zero, como mostra a figura abaixo. O novo
intervalo que contém o zero será aquele onde existe troca de sinal da função.

y
y = f (x)
f (a) · f (b) < 0

Ponto médio do intervalo [a, b],


obtido por média aritmética
dos extremos a e b +

+ x
a a+b b
− 2

| {z }| {z }
subintervalo aonde subintervalo aonde não
há troca de sinal há troca de sinal

Figure 1.2: Método da bissecção — 1a iteração


6

y
y = f (x)
f (a) · f (b) < 0

Ponto médio do novo intervalo [a, b],


obtido por média aritmética
dos extremos a e b

a+b
2
+ x
a − b

| {z }
troca de sinal

Figure 1.3: Método da bissecção — 2a iteração

y
y = f (x)
f (a) · f (b) < 0

a+b
a 2 + x
+
− b
| {z }
troca de sinal

Figure 1.4: Método da bissecção — 3a iteração


7

Podemos resumir o método da bissecção através da seguinte figura:

y
y = f (x)
f (ai ) · f (bi ) < 0

+ x
+
− − −
− sequência de intervalos
subintervalo inicial a0 b0 [a0 , b0 ] ⇒ b0 − a0
1a interação a1 b1 [a1 , b1 ] ⇒ b1 − a1
2a interação a2 b2 [a2 , b2 ] ⇒ b2 − a2
3a interação a3 b3 [a3 , b3 ] ⇒ b3 − a3
4a interação a4 b4 [a4 , b4 ] ⇒ b4 − a4
5a interação a5 b5 [a5 , b5 ] ⇒ b5 − a5

Figure 1.5: Método da bissecção - Resumo

Exemplo 4:
f (x) = x3 − 9x + 3 com I = [0, 1] e  = 0.01

+ + + − − −
IR
-
0 0,25 0,3125 0,375 0,5 1,0

+ + + − −
IR
-
0,3125 0,328125 0,3359375 0,34375 0,375
8

Iteração x = (a + b)/2 f (x) b−a | f (x) |


1 x1 = 0,5000000 −1,3750000000 0,5000000 1,3750000000
2 x2 = 0,2500000 0,7656250000 0,2500000 0,7656250000
3 x3 = 0,3750000 −0,3222652500 0,1250000 0,3222652500
4 x4 = 0,3125000 0,2180175780 0,0625000 0,2180175780
5 x5 = 0,3437500 −0,0531311035 0,0312500 0,0531311035
6 x6 = 0,3281250 0,0822029114 0,0156250 0,0822029114
7 x7 = 0,3359375 0,0144743919 0,0078125 0,0144743919

logo ξ = 0,3359375 é uma boa aproximação para um zero de f (x).


Estimativa do número de iterações para o Método da Bissecção
No Método da Bissecção, se utilizarmos como critério de parada, o tamanho do intervalo, podemos
estimar a priori o número de iterações necessárias para satisfazer o critério de parada.
bi−1 − ai−1 1 bi−2 − ai−2 bi−2 − ai−2 1 bi−3 − ai−3
bi − ai = = = 2
= 2 =
2 2 2 2 2 2
bi−3 − ai−3 1 bi−4 − ai−4 bi−4 − ai−4 b0 − a0
= 3
= 3 = 4
= ······ =
2 2 2 2 2i
ou
b0 − a0
bi − ai =
2i
Como queremos que bi − ai <  podemos escrever
b0 − a0
<
2i
b0 − a0
2i >

usando logaritmo temos
b0 − a0
 
i
log(2 ) > log

i log(2) > log(b0 − a0 ) − log()
log(b0 − a0 ) − log()
i>
log(2)
No exemplo resolvido terı́amos
log(1 − 0) − log(0.01)
i> = 6, 64
log(2)
Portanto serão necessárias 7 iterações.

Observações:

• O método da bissecção sempre converge;

• As iterações são facilmente realizadas;

• A convergência é muito lenta.


9

1.3.2 Método da Falsa Posição


Este também é um método de quebra. Seja [a, b] um intervalo que contenha um zero da função contı́nua
f dada por f (x) para x ∈ R, isto é, f (a) · f (b) < 0.
Assim como no Método da Bissecção o intervalo que contém um zero é dividido em dois
subintervalos, porém, esta divisão não é mais feita pela média aritmética dos limites do intervalo. O
ponto divisor do intervalo nesse método é determinado pela média ponderada entre a e b com pesos
respectivamente iguais a | f (b) | e | f (a) |. Logo, este ponto é calculado pela expressão:
a | f (b) | + b | f (a) | a f (b) − b f (a)
x= =
| f (b) | + | f (a) | f (b) − f (a)
O método consiste em gerar uma sequência de aproximações {xi } a partir de um intervalo inicial
que contenha um zero de f (x).
A figura abaixo mostra geometricamente como são realizadas as iterações nesse método.

y
y = f (x)
f (a) · f (b) < 0 Reta secante a y = f (x),
em (a, f (a)) e (b, f (b))

(b, f (b))

Ponto divisor do intervalo [a, b],


obtido por média ponderada
dos extremos a e b
+

af (b)−bf (a)
f (b)−f (a) x
a b
− −

(a, f (a))
| {z }| {z }
não há há troca de sinal
troca de sinal

Figure 1.6: Método da falsa posição — 1a iteração


10

y
y = f (x)
f (a) · f (b) < 0 Reta secante a y = f (x),
em (a, f (a)) e (b, f (b))

(b, f (b))

Ponto divisor do intervalo [a, b],


obtido por média ponderada
dos extremos a e b
+

af (b)−bf (a)
f (b)−f (a) x
a b

(a, f (a))
| {z }| {z }
não há há troca de sinal
troca de sinal

Figure 1.7: Método da falsa posição — 2a iteração


11

y
y = f (x)
f (a) · f (b) < 0 Secante em
(a, f (a)) e (b, f (b))

(b, f (b))

af (b)−bf (a)
f (b)−f (a)
x
a b


(a, f (a))
| {z } | {z }
sem troca de sinal
troca
de sinal

Figure 1.8: Método da falsa posição — 3a iteração


12

Podemos resumir o método da falsa posicção através da seguinte figura:

y
y = f (x)
f (ai ) · f (bi ) < 0

 (bi , f (bi ))
 x0 = a0


ou


 x =b
0 0

x0 x1 x2 x3 x4 x0

a1 a2 a3 x
a0 − b0
− b1
− b2
− − b3
b4
(a0 , f (a0 ))
(a1 , f (a1 ))

subintervalo inicial a0 b0 [a0 , b0 ] ⇒ b0 − a0


1a interação a1 b1 [a1 , b1 ] ⇒ b1 − a1
2a interação a2 b2 [a2 , b2 ] ⇒ b2 − a2
3a interação a3 b3 [a3 , b3 ] ⇒ b3 − a3
4a interação a4 b4 [a4 , b4 ] ⇒ b4 − a4

Figure 1.9: Método da falsa posição — Resumo


13

Exemplo 5:
f (x) = x3 − 9x + 3 com I = [0, 1] e  =0,0005

+ −− − −
IR
-
0 0,337635046 1
0,3386243389
0,375

a f (b) − b f (a)
Iteração x= f (x) | f (x) |
f (b) − f (a)
1 x1 = 0,375000000 −0,322265625 0,322265625
2 x2 = 0,338624339 −0,008790100 0,008790100
3 x3 = 0,337635046 −0,000225880 0,000225880

logo ξ = 0,337635046 é uma boa aproximação para um zero de f (x).


Observações:

• O método da falsa posição sempre converge;

• A convergência é mais rápida que no método da bissecção.

1.3.3 Método de Ponto Fixo - Iterativo Linear


Nesse método partimos da equação

f (x) = 0

Reescrevemos a equação acima da seguinte maneira

x = g(x)

e usamos g(x) como função de iteração. Desta forma, a partir de uma aproximação inicial x0 , geramos
uma sequência de novas aproximações como mostrado abaixo,

xi+1 = g(xi )

x0
x1 = g(x0 )
x2 = g(x1 )
x3 = g(x2 )
x4 = g(x3 )
..
.
xi+1 = g(xi )
..
.

g(x) é chamada função de iteração para f (x) = 0.


A figura abaixo mostra graficamente essa equivalência.
14

y = f (x)

Problema de zero
da função f (x)

f (x) = 0
α é zero de f (x)

x
α

y=x

Problema de ponto fixo


da função g(x)


 y=x

 y = g(x)

α = g(α)

y = g(x)
α é ponto fixo de g(x)
x
α

Figure 1.10: Ilustração da equivalência f (x) = 0 ⇐⇒ x = g(x)


15

Exemplo 6:
Seja a equação:

x − cos x = 0

f (x) = x − cos x = 0

ou

x = cos x

g(x) = cos x

Exemplo 7:
Seja a seguinte equação:

x2 + x − 6 = 0

que pode ser reescrita como x = g(x) de maneiras diferentes, a saber:

a) g(x) = 6 − x2


b) g(x) = ± 6 − x

6
c) g(x) = x −1

6
d) g(x) = x+1

e) g(x) = x2 + 2x − 6

Entretanto, nem sempre o Método do Ponto Fixo converge.


Vamos tomar a função de iteração dada em a):

g(x) = 6 − x2 ; x0 = 1.5;  = 0.0001

Fazendo os cálculos das iterações, obtemos:

x1 = g(x0 ) = 6 − x20 = 6 − (1.5)2 = 3.75 −→| x1 − x0 |= 2.25


x2 = g(x1 ) = 6 − x21 = 6 − (3.75)2 = −8.0625 −→| x2 − x1 |= 11.8125
x3 = g(x2 ) = 6 − x22 = 6 − (−8.0625)2 = −59.003906 −→| x3 − x2 |= 50.941406
x4 = g(x3 ) = 6 − x23 = 6 − (−59.003906)2 = −3475.4609 −→| x4 − x3 |= 3416.456994
..
.
não converge.
16

Vamos considerar agora a função de iteração dada em b):



g(x) = 6 − x; x0 = 1.5;  = 0.0001

Fazendo os cálculos das iterações, obtemos:


√ q
x1 = g(x0 ) = 6 − x0 = 6 − (1.50000) = 2.12132 −→| x1 − x0 |= 0.62132
√ q
x2 = g(x1 ) = 6 − x1 = 6 − (2.12132) = 1.96944 −→| x2 − x1 |= 0.15188
√ q
x3 = g(x2 ) = 6 − x2 = 6 − (1.96944) = 2.00763 −→| x3 − x2 |= 0.03819
√ q
x4 = g(x3 ) = 6 − x3 = 6 − (2.00763) = 1.99809 −→| x4 − x3 |= 0.00954
√ q
x5 = g(x4 ) = 6 − x4 = 6 − (1.99809) = 2.00048 −→| x5 − x4 |= 0.00239
√ q
x6 = g(x5 ) = 6 − x5 = 6 − (2.00048) = 1.99989 −→| x6 − x5 |= 0.00059
√ q
x7 = g(x6 ) = 6 − x6 = 6 − (1.99989) = 2.00003 −→| x7 − x6 |= 0.00014
√ q
x8 = g(x7 ) = 6 − x7 = 6 − (2.00003) = 1.99999 −→| x8 − x7 |= 0.00004
..
.
converge para 2.

O teorema a seguir, nos dá uma condição suficiente para a convergência do Método de Ponto
Fixo.

Teorema 1.3.2 Seja ξ um zero de uma função f contı́nua, dada por f (x) para x ∈ R em um intervalo
I e seja a função g derivável, dada por g(x) para x ∈ R, uma função de iteração para f (x) = 0, onde
g e g 0 são funções contı́nuas. Então o Método Ponto Fixo converge se:
1. | g 0 (x) |< 1, para todo x ∈ I, e com
2. x0 ∈ I.

No método iterativo linear, podemos deparar com os seguintes resultados:


17

y=x y = g(x)

x1 = g(x0 )

x2 = g(x1 )

x3 = g(x2 )

α = g(α)
x
α
· · · x3 x2 x1 x0

Figure 1.11: Ilustração gráfica da convergência monotônica

.. y = g(x) y=x
..
..

x3 = g(x2 )

x2 = g(x1 )

x1 = g(x0 )

α = g(α)
| {z }
ponto fixo
de g(x) x
α x0 x1 x2 x3 · · · · · ·

Figure 1.12: Ilustração gráfica da divergência monotônica


18

y=x

x2 = g(x1 )
α = g(α)
x3 = g(x2 )
y = g(x)
x1 = g(x0 )

x
x1 x3α x2 x0

Figure 1.13: Ilustração gráfica da convergência oscilante

y=x

x2 = g(x1 )

α = g(α)
x1 = g(x0 )

y = g(x)
x3 = g(x2 )
x
x3 x1 α x0 x2

Figure 1.14: Ilustração gráfica da divergência oscilante


19

Observação: Quanto menor for o valor de | g 0 (x) | mais rapidamente a sequência converge.
No Exemplo 7 b)

g(x) = 6 − x2 −→ g 0 (x) = −2x

1 1 1 1
 
0
| g (x) |< 1 −→| −2x |< 1 −→ −1 < 2x < 1 −→ − < x < −→ I = − ,
2 2 2 2
mas

x0 = 1.5 e ξ = 2 ou ξ = −3

portanto

x0 ∈
/I e ξ∈
/I

e
√ 1
g(x) = 6 − x −→ g 0 (x) = − √
2 6−x

1 1 √
| g 0 (x) |< 1 −→| − √ |< 1 −→ < 6 − x −→
2 6−x 2

1 1
−→ < 6 − x −→ x < 6 − = 5.75 −→ I = (−∞, 5.75)
4 4
mas

x0 = 1.5 e ξ = 2 ou ξ = −3

portanto

x0 ∈ I e ξ∈I
20

1.3.4 Método de Newton-Raphson


Funções de iteração podem ser obtidas sistematicamente da seguinte maneira. Se ξ é o zero de uma
função f : R → R, e se f é suficientemente diferenciável em uma vizinhaça V(ξ) em torno do zero ξ de
f (x), então expandindo a função em série de Taylor em torno de x0 ∈ V(ξ) temos:

(ξ − x0 )2 00 (ξ − x0 )k (k)
f (ξ) = 0 = f (x0 ) + (ξ − x0 )f 0 (x0 ) + f (x0 ) + · · · + f (x0 + ϑ(ξ − x0 ))
2! k!
Se as maiores potências (ξ − x0 )ν são desprezadas, chegamos a equações que expressam o ponto ξ
aproximadamente em termos de um ponto dado x0 , por exemplo:

0 = f (x0 ) + (ξ¯ − x0 )f 0 (x0 )

ou
(ξ¯∗ − x0 )2 00
0 = f (x0 ) + (ξ¯∗ − x0 )f 0 (x0 ) + f (x0 )
2!
que resultam, respectivamente
f (x0 )
ξ¯ = x0 − 0
f (x0 )
e
f 0 (x0 ) ±
p
(f 0 (x0 ))2 − 2f (x0 )f 00 (x0 )
ξ¯∗ = x0 −
f 00 (x0 )
as expressões acima fornecem simplesmente valores próximos do zero desejado, mas elas foram deduzidas
para fornecerem funções de iteração. Dessa maneira, chega-se aos seguintes processos iterativos:

f (x)
xi+1 = Φ(xi ), Φ(x) = x −
f 0 (x)
e
q
f 0 (x) ± (f 0 (x))2 − 2f (x)f 00 (x)
xi+1 = Φ± (xi ), Φ± (x) = x −
f 00 (x)
O primeiro é o clássico método de Newton-Raphson. O segundo é uma extensão óbvia do primeiro
(também chamado Método de Cauchy).
O método de Newton-Raphson é também conhecido como método das tangentes e graficamente
temos a seguinte representação:
21

y
y = f (x)

f (xi )

}
∆y

{z
α x

|
xi+1 xi
| {z }
∆x
∆y = f (xi ) − 0 = f 0 (x ) =⇒ x f (xi )
tan α = ∆x xi − xi+1 i i+1 = xi −
f 0 (xi )

Figure 1.15: Ilustração gráfica do método de Newton-Raphson

O método de Newton-Raphson é obtido linearizando-se f .


Resumo
Resumindo temos:
f (xi )
xi+1 = xi −
f 0 (xi )
No método de Newton-Raphson a nova aproximação (xi+1 ) é obtida a partir da reta tangente
à função usando-se a aproximação anterior. A interseção da reta tangente e o eixo x define a nova
aproximação, como mostra a figura abaixo:
22

y
y = f (x)

Retas tangentes a f (x)

x
x3 x2 x1 x0

Figure 1.16: Ilustração gráfica das iterações do método de Newton-Raphson

Observações:

(a) O método de Newton pode ser interpretado com uma tentativa de garantir a convergência do
método iterativo linear, para isso escolhe-se a função de iteração de forma que g 0 (x) = 0.
Garantindo assim que | g 0 (x) |≤ M < 1 e que a convergência será mais rápida.

(b) Aproximação Inicial e Convergência

Exemplo 8:
Seja encontrar a raiz positiva da função f dada por:

f (x) = x2 + x − 6

tomando os valores

x0 = 1.5;  = 0.001

pelo Método de Newton-Raphson.


Temos como função de iteração:

f (x) x2 + x − 6 x2 + 6
g(x) = x − = x − =
f 0 (x) 2x + 1 2x + 1
23

Substituindo o valor inicial x0 na função de iteração, obtemos:

x20 + 6 1.52 + 6
x1 = g(x0 ) = = = 2.06250 −→| x1 − x0 |= 0.56250
2x0 + 1 2 · 1.5 + 1

x21 + 6 2.062502 + 6
x2 = g(x1 ) = = = 2.00076 −→| x2 − x1 |= 0.06174
2x1 + 1 2 · 2.06250 + 1

x22 + 6 2.000762 + 6
x3 = g(x2 ) = = = 2.00000 −→| x3 − x2 |= 0.00076
2x2 + 1 2 · 2.00076 + 1

..
.

converge para 2.

Exemplo 9:
Seja a função f dada por:
f (x) = x3 − 9x + 3
já vimos que as raı́zes estão nos intervalos (−4, −3); (0, 1); (2, 3)
f (xi )
xi+1 = xi −
f 0 (xi )
seja x0 = 1.5 e  = 2 × 10−2 , então
x0 = 1.50000000
x1 = −1.66666666
x2 = 18.38888888
x3 = 12.36601040
x4 = 8.40230675
x5 = 5.83533816
x6 = 4.23387355
x7 = 3.32291026
x8 = 2.91733893
x9 = 2.82219167
x10 = 2.81692988
Note que neste exemplo o processo iterativo tende a divergir inicialmente. Isto se deve ao fato de

que f 0 (x 0
1 ) ≈ 0 ( 3 é raiz de f (x)). Havendo neste ponto uma divisão por um número próximo de
zero.

1.3.5 Método da Secante


Este método substitui a avaliação da derivada da função no ponto xi por uma aproximação desta
derivada. Isto é,
f (xi ) − f (xi−1 )
f 0 (xi ) ≈
xi − xi−1
24

Substituindo-se a expressão acima na função de iteração do método de Newton-Raphson, obtemos a


função de iteração para o Método da Secante.
xi−1 · f (xi ) − xi · f (xi−1 )
xi+1 =
f (xi ) − f (xi−1 )
Nota-se claramente que para se obter xi+1 precisa-se de dois valores xi−1 e xi , portanto necessita-se de
duas estimativas iniciais para se iniciar o método. Graficamente temos:

y
y = f (x)

Retas secantes a f (x)

x
x4 x3 x2 x1 x0

Figure 1.17: Ilustração gráfica do método das secantes

Exemplo 10:
Seja a função f dada por:

f (x) = x2 + x − 6

e com os valores:

x0 = 1.5; x1 = 1.7  = 0.01


25

logo

x0 f (x1 ) − x1 f (x0 ) 1.5 · (−1.41) − 1.7 · (−2.25)


x2 = = = 2.03571 −→| x2 − x1 |= 0.33571
f (x1 ) − f (x0 ) (−1.41) − (−2.25)

x1 f (x2 ) − x2 f (x1 )
x3 = = 1.99774 −→| x3 − x2 |= 0.03797
f (x2 ) − f (x1 )

x2 f (x3 ) − x3 f (x2 )
x4 = = 1.99999 −→| x4 − x3 |= 0.00225
f (x3 ) − f (x2 )

..
.

converge para 2.

Observações: Pode divergir se f (xi ) ≈ f (xi+1 )


26

1.4 Ordem de Convergência


Definição 1.4.1 Seja uma sequência x0 , x1 , x2 , . . . que converge para ξ. Seja
ei =| xi − ξ |. Se existir um número p > 1 e uma constante C 6= 0 tal que
ei+1
lim p =C
i→∞ ei

então, p é dito ordem de convergência da sequência e C é a constante assintótica de erro. Se p = 1


dizemos que a convergência é linear, neste caso para que haja convergência C < 1.

Método de Ponto Fixo:

xi+1 = g(xi )

ξ = g(ξ)

subtraindo as duas relações

xi+1 − ξ = g(xi ) − g(ξ)

mas usando o Teorema do Valor Médio temos

xi+1 − ξ = g(xi ) − g(ξ) = g 0 (ci )(xi − ξ) ci ∈ (xi , ξ)

ou
ei+1 xi+1 − ξ
= = g 0 (ci )
ei xi − ξ
que por continuidade
xi+1 − ξ
lim = lim g 0 (ci ) = g 0 ( lim ci ) = g 0 (ξ) = C
i→∞ xi − ξ i→∞ i→∞

ei+1
lim = g 0 (ξ) = C
i→∞ ei

Logo, o Método de Ponto Fixo tem convergência pelo menos linear.


Método de Newton-Raphson:

• Caso 1: Raiz Simples (f 0 (ξ) 6= 0)

f (xi )
xi+1 = xi −
f 0 (xi )

f (xi )
xi+1 − ξ = xi − ξ −
f 0 (xi )

f (xi )
ei+1 = ei −
f 0 (xi )
27

Desenvolvendo em série de Taylor para x = xi

f 00 (ci )
f (x) = f (xi ) + f 0 (xi )(x − xi ) + (x − xi )2 ci ∈ (x, xi )
2

x=ξ

f 00 (ci )
0 = f (ξ) = f (xi ) − f 0 (xi )(xi − ξ) + (xi − ξ)2
2

f 00 (ci )
=⇒ f (xi ) = f 0 (xi )(xi − ξ) − (xi − ξ)2
2

que dividindo por f 0 (xi ) (por hipótese, tomamos f 0 (xi ) 6= 0), temos:

f (xi ) f 00 (ci )
= x i − ξ − (xi − ξ)2
f 0 (xi ) 2f 0 (xi )

f 00 (ci ) 2 f (xi )
0
ei = ei − 0 = ei+1
2f (xi ) f (xi )

visto que

f (xi ) f (xi ) f (xi )


 
xi+1 = xi − ⇒ xi+1 − ξ = xi − ξ − ⇒ ei+1 = ei −
f 0 (xi ) f 0 (xi ) f 0 (xi )

Assim
ei+1 1 f 00 (ci )
=
e2i 2 f 0 (xi )

ei+1 1 f 00 (ci ) lim f 00 (ci )


1 i→∞
00
1 f (i→∞ lim ci ) 1 f 00 (ξ)
lim 2 = lim 0 = = = =C
i→∞ ei 2 i→∞ f (xi ) 2 lim f 0 (xi ) 2 f 0 ( lim xi ) 2 f 0 (ξ)
i→∞ i→∞

logo
ei+1
lim =C
i→∞ e2i

Portanto, o Método de Newton-Raphson tem convergência quadrática quando temos uma raiz
simples.

• Caso 2: Raiz Dupla (f 0 (ξ) = 0)


Calculando a derivada da função de iteração do Método de Newton-Raphson, que é dada por:

f (x)
g(x) = x −
f 0 (x)

obtemos:

f (x).f 00 (x)
g 0 (x) =
(f 0 (x))2
28

Ora, f 0 (ξ) = 0/0, indeterminado! Para levantar essa indeterminação aplicamos a regra de
l’Hopital, derivando o numerador e denominador duas vezes. Daı́, chega-se ao resultado:

1
g 0 (ξ) =
2

Logo, nesse caso, o Método de Newton-Raphson tem convergência linear com g 0 (ξ) = 21 .

Resumo
Resumindo temos:

Método Ordem de Convergência


Bissecção 1 Linear
Falsa Posição — —
Iterativo Linear 1 Linear
Newton-Raphson 2 Quadrática
Secante 1,618 —
Chapter 2

Resolução Numérica de Sistemas


Lineares

2.1 Introdução
Neste capı́tulo, apresentaremos Métodos Numéricos para resolução de Sistemas de Equações Lineares e
não Lineares nXn.
Uma grande quantidade de Sistemas de Equações Lineares e não Lineares aparece em problemas
de engenharia. Como exemplo, temos os sistemas resultantes da discretização de Equações Diferenciais
via Métodos de Diferenças Finitas ou Elementos Finitos. Citamos também, os sistemas resultantes em
problemas de ajuste de dados, de minimização de funções e de problemas inversos.
Seja um sistema linear geral de n equações e n incógnitas x1 , x2 , x3 , . . . xn

a11 x1 + a12 x2 + a13 x3 + a14 x4 + · · · + a1n xn = b1








a21 x1 + a22 x2 + a23 x3 + a24 x4 + · · · + a2n xn = b2








 a31 x1 + a32 x2 + a33 x3 + a34 x4 + · · · + a3n xn = b3


(2.1)




 a41 x1 + a42 x2 + a43 x3 + a44 x4 + · · · + a4n xn = b4

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



. . . . . .








 an1 x1 + an2 x2 + an3 x3 + an4 x4 + · · · + ann xn = bn

29
30

Que reescrito na forma matricial torna-se


     
 a11 a12 a13 a14 · · · a1n   x1   b1 
     
     

 a21 a22 a23 a24 ··· a2n  
  x2   b
  2


     
     

 a31 a32 a33 a34 ··· a3n  
  x3   b
  3


 · =  (2.2)
     

 a41 a42 a43 a44 ··· a4n  
  x4   b4
  

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


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


     
     
an1 an2 an3 an4 · · · ann xn bn

ou na forma compacta

Ax = b

onde
 
 a11 a12 a13 a14 · · · a1n 
 
 

 a21 a22 a23 a24 ··· a2n 

 
 

 a31 a32 a33 a34 ··· a3n 

A=




 a41 a42 a43 a44 ··· a4n 

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

 . . . . . . 

 
 
an1 an2 an3 an4 · · · ann

é chamada matriz de coeficientes do sistema


 
 x1 
 
 

 x2 

 
 

 x3 

x=




 x4 

 
 .. 
.
 
 
 
 
xn
31

é o vetor de incógnitas e
 
 b1 
 
 

 b2 

 
 

 b3 

b=




 b4 

 
 .. 
.
 
 
 
 
bn

é o vetor segundo membro.


Teoricamente se A é inversı́vel (det(A) 6= 0), então x = A−1 b é a solução do sistema. Entretanto,
calcular inversas de matrizes pode ser uma tarefa trabalhosa.

2.2 Definições Preliminares


Definição 1.2.1
A ∈ IRn×n , são chamadas matrizes quadradas
 
 a11 a12 a13 a14 · · · a1n 
 
 

 a21 a22 a23 a24 ··· a2n 

 
 

 a31 a32 a33 a34 ··· a3n 

A = [aij ] = 




 a41 a42 a43 a44 ··· a4n 

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

 . . . . . . 

 
 
an1 an2 an3 an4 · · · ann

Operações Básicas com Matrizes

C = A+B ; cij = aij + bij


C = αA ; cij = αaij
= nk=1 aik · bkj
P
C = AB ; cij
C = AT ; cij = aji
 
1 0 0 ··· 0 0
 

 0 1 0 ··· 0 0  
 
 0 0 1 ··· 0 0 
I=
 
.. .. .. . . .. .. 

 . . . . . . 
 

 0 0 0 ··· 1 0  
0 0 0 ··· 0 1
32

Definição 1.2.2
Chama-se inversa de uma matriz A a matriz A−1 tal que AA−1 = A−1 A = I.
Se A−1 existe, A é dita não-singular, caso contrário A é dita singular.

Determinantes

Definição 1.2.3
Se A = a ∈ IR1×1 −→ det(A) = a
Se A ∈ IRn×n −→
n
X
det(A) = (−1)j+1 aij det(A1j )
j=1

onde a matriz A1j é obtida retirando-se a primeira linha e a j-ésima coluna de A.

Propriedades dos determinantes

1. det(AB) = det(A) det(B);

2. det(AT ) = det(A);

3. det(cA) = cn det(A);

4. det(A) 6= 0 ←→ A é não-singular;
33

Matrizes Especiais
• Simétrica se AT = A
• Anti-simétrica se AT = −A
• Positiva definida se xT Ax > 0, ~0 6= x ∈ IRn
• Não positiva definida se xT Ax ≥ 0, x ∈ IRn
• Ortogonal se AT A = I
• Nilpotente se Ak = 0 para algum k
• Idempotente se A2 = A
• Positiva se aij > 0, ∀ i, j
• Não negativa se aij ≥ 0, ∀ i, j
• Diagonal dominante | aii |> nj6=i | aij |, ∀ i
P
se
Classificação quanto a forma da matriz:
• Diagonal se aij =0 para i 6= j;
• Tridiagonal se aij =0 para | i − j |> 1;
• Triangular superior se aij =0 para i > j;
• Estritamente triangular superior se aij =0 para i ≥ j;
• Triangular inferior se aij =0 para i < j;

• Matriz esparsa se tem a maioria de seus elementos nu-


los;

• Matriz densa se a maioria de seus elementos são difer-


entes de zero;

• Matriz em Banda Uma matriz é de banda superior s e


de banda inferior r se aij = 0 para
i > j + r e j > i + s, se s = r a
matriz é chamada simplesmente de
banda r.

Definição 1.2.4
Uma norma em IRn é uma função real k.k satisfazendo as seguintes propriedades.

• ∀x ∈ IRn , kxk ≥ 0 e kxk = 0 ⇐⇒ x = ~0

• ∀x ∈ IRn , ∀α ∈ IR, kαxk =| α | kxk

• ∀x, y ∈ IRn , kx + yk ≤ kxk + kyk


34

Exemplo 1.2.1
v
u n
uX
kxk2 = t | xi |2 Norma Euclidiana
i=1

n
X
kxk1 = | xi | Norma da Soma
i=1

kxk∞ = max | xi | Norma do Máximo


1≤i≤n

Analogamente podemos definir normas para matrizes como:

Definição 1.2.5 Uma norma em IRm×n é uma função real k.k satisfazendo as seguintes propriedades.

• ∀A ∈ IRm×n , kAk ≥ 0 e kAk = 0 ⇐⇒ A = 0̂

• ∀A ∈ IRm×n , ∀α ∈ IR, kαAk =| α | kAk

• ∀A, B ∈ IRm×n , kA + Bk ≤ kAk + kBk

Exemplo 1.2.2

n
!
X
kAk1 = max | aij | Norma do Máximo das Colunas
1≤j≤
i=1

n
!
X
kAk∞ = max | aij | Norma do Máximo das Linhas
1≤j≤
i=1
v
n
u n X
uX
kAkE = t a2ij Norma Euclidiana
i=1 j=1

Observação: Uma norma matricial é consistente com uma norma vetorial se:

kAxk ≤ kAkkxk ∀A ∈ IRn×n , ∀x ∈ IRn

Existem duas grandes classes de métodos numéricos para a resolução numérica de Sistemas de
Equações Lineares: Os Métodos Diretos e os Métodos Iterativos. Nos Métodos Diretos a solução do
sistema é obtida após um número finito de passos. Diferentemente, os Métodos Iterativos partem
de uma aproximação inicial para a solução do sistema e geram uma seqüência de aproximações que
esperamos convirja para a solução do sistema.

2.3 Métodos Diretos


Nesta classe de métodos a solução do sistema é obtida após um número finito de passos e são em
geral baseados em métodos de eliminação onde se transforma o sistema a resolver em outro sistema de
resolução mais fácil que o sistema original. Estes métodos são normalmente empregados na solução de
sistemas de pequeno a médio porte em que a matriz de coeficientes é densa.
35

2.3.1 Eliminação de Gauss / Fatoração LU


O objetivo do processo de Eliminação de Gauss é transformar um sistema linear Ax = b em um outro
sistema, que possui a mesma solução do primeiro, U x = c tal que a matriz U seja triangular superior.
Esta transformação é feita através de combinações lineares das linhas do sistema. As operações sobre
as linhas não alteram a solução do sistema original e se resumem a:

• Multiplicação de uma linha por um escalar;

• Soma de duas linhas;

• Troca de duas linhas.

Os sistemas lineares onde a matriz do sistema é triangular superior são de fácil solução. Seja o
sistema triangular superior abaixo

a11 x1 + a12 x2 + a13 x3 + · · · · · · + a1,n−1 xn−1 + a1n xn = b1








a22 x2 + a23 x3 + · · · · · · + a2,n−1 xn−1 + a2n xn = b2








a33 x3 + · · · · · · +


 a3,n−1 xn−1 + a3n xn = b3
(2.3)
 .. .. ..



 . . .




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








ann xn = bn

Vemos que a última equação do sistema acima só possui dependência da última incógnita xn , logo
podemos calcular esta incógnita,
bn
xn =
ann
da penúltima equação como já conhecemos xn , podemos determinar xn−1 , logo
1
xn−1 = {bn − an−1,n xn }
an−1,n−1
Conhecendo xn−1 e xn podemos da antipenúltima equação do sistema determinar xn−2 . Com xn , xn−1
e xn−2 calculamos xn−3 e repetindo este procedimento podemos determinar todas as incógnitas do
sistema. Este processo é chamado retrosubstituição.

Algoritmo 1.1

Para i = n, n − 1, . . . , 1
xi = bi
Para j = i + 1, . . . , n
xi = xi − aij xj
xi = xi /aii
36

Exemplo 1.3.1

 3x1

 + 4x2 − 4x3 = 3
2x2 + x3 = 3


 4x3 = 4

Solução:
4
Da terceira equação −→ x3 = =1
4
1 1 2
Da segunda equação −→ x2 = {3 − x3 } = {3 − 1} = = 1
2 2 2
1 1 1 3
Da primeira equação −→ x1 = {3 + 4x3 − 4x2 } = {3 + 4 · 1 − 4 · 1} = {3 + 4 − 4} = = 1
3 3 3 3
Resp: (1; 1; 1)

De maneira similar podemos resolver um sistema triangular inferior através de uma substituição
progressiva,



a11 x1 = b1











a21 x1 + a22 x2 = b2













 a31 x1 + a32 x2 + a33 x3 = b2
(2.4)
.. .. ..






 . . .






an−1,2 x2 + an−1,3 x3 + · · · + an−1,n−1 xn−1




 an−1,1 x1 + = bn−1






an1 x1 + an2 x2 + an3 x3 + · · · + an,n−1 xn−1 + ann xn = bn


isto é da primeira equação do sistema calculamos o valor da incógnita x1 , que substituı́do na segunda
equação permite que calculemos diretamente a incógnita x2 , com os valores de x1 e x2 podemos obter
x3 da terceira equação e assim em diante.

Algoritmo 1.2

Para i = 1, 2, 3, . . . , n
xi = bi
Para j = 1, . . . , i − 1
xi = xi − aij xj
xi = xi /aii
37

Exemplo 1.3.2

 4x1 = 4


1 x + 2x2 = 3

+ 4x2 − 4x3

 3x
1 = 3
Solução:
4
Da primeira equação −→ x1 = =1
4
1 1 2
Da segunda equação −→ x2 = {3 − x1 } = {3 − 1} = = 1
2 2 2
1 1 −4
Da terceira equação −→ x3 = {3 − 3x1 − 4x2 } = {3 − 3 − 4} = =1
−4 −4 −4
Resp: (1; 1; 1)

Já vimos que muito fácil resolver qualquer sistema triangular superior. Veremos agora como
transformar um sistema qualquer em um sistema triangular superior usando combinações lineares das
linhas do sistema.
Observação: Vamos utilizar a notação (li ) para designar a linha i. Vejamos o procedimento no
seguinte exemplo:
Exemplo 1.3.3
Seja o sistema linear






 3x1 + x2 + 6x3 = 2



 2x1 + x2 + 3x3 = 7





 x1 + x2 + x3 = 4

Substituiremos a (l2 ) por (l2 ) - 32 (l1 ), isto é

(l2 ) 2x1 + x2 + 3x3 = 7

− 23 (l1 ) − 32 3x1 − 2x −
3 2
2 6x = − 2 2
3 3 3

0x1 + 1x − x3 = 17
3 2 3
o sistema linear se transforma






 3x1 + x2 + 6x3 = 2



1 17



0x1 + 3 x2 − x3 = 3



 x1 + x2 + x3 = 4


38

Agora substituiremos a (l3 ) por (l3 ) - 13 (l1 ), isto é

(l3 ) x1 + x2 + x3 = 4

− 31 (l1 ) − 13 3x1 − 1x −
3 2
1 6x = − 1 2
3 3 3

0x1 + 2x − x3 = 10
3 2 3
e o sistema linear se torna






 3x1 + x2 + 6x3 = 2



1 17



0x1 + 3 x2 − x3 = 3



 0x1

+ 2x − x3 = 10
3 2

3

Enfim, substituiremos a (l3 ) por (l3 ) - 2(l2 ) , isto é

(l3 ) 0x1 + 2
− 10
3 x2 x3 = 3

−2(l2 ) −2 · 0x1 − 2 31 x2 − 2x3 = −2 17


3

0x1 + 0x2 + x3 = − 24
3
resultando no seguinte sistema linear






 3x1 + x2 + 6x3 = 2



0x1 + 1x − x3 = 17


 3 2 3


x3 = − 24

 0x1 + 0x2 +


3
ou






 3x1 + x2 + 6x3 = 2



1x − x3 = 17


 3 2 3


x3 = − 24




3
que é triangular superior, logo de solução imediata.

x3 = −8, x2 = −7, x1 = 19
39

Caso Geral
Num primeiro passo do algoritmo um múltiplo adequado da primeira linha é subtraı́da de todas as
outras equações do sistema de forma que os coeficientes de x1 se anulem, e dessa forma restando x1
somente na primeira equação. Isso é possı́vel se a11 6= 0, condição que pode ser obtida rearranjando
as equações do sistema até que pelo menos um ai1 = 6 0 (se for possı́vel), como veremos mais adiante.
Vamos trabalhar com o sitema de equações lineares Ax = b na forma matricial efetuando as operações
sobre a matriz e o segundo membro do sistema linear.
    

 a11 a12 a13 a14 · · · a1n 
  x1 
   b1



    
    
a21
    
a21 a22 a23 a24 ··· a2n   x2   b2  (l2 ) ← (l2 ) − a11 (l1 )
    

    
    
    

a31 a32 a33 a34 ···

a3n  x3
 
  b3

 (l3 ) ← (l3 ) − a31
a11 (l1 )
 
    
  = 
    
a41
    

 a41 a42 a43 a44 ··· a4n 

 x4   b
  4
 (l )
 4 ← (l4 ) − a11 (l1 )
    
    
.. .. .. .. .. ..   ..   ..
    
.
 

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


    
    

an1 an2 an3 an4 · · · ann

xn
 
bn

(ln ) ← (ln ) − an1 (l )
a11 1
a21
Vejamos as operações da primeira linha: Substituiremos a (l2 ) por (l2 ) - a11 (l1 ), isto é

(l2 ) a21 x1 + a22 x2 + a23 x3 · · · + a2n xn = b2

−a 21
a11 (l1 ) −a 21
a11 a11 x1 −
a21
a11 a12 x2 −
a21 a x · · · −
a11 13 3
a21 a x = − a21 b
a11 1n n a11 1

a21
  n o n o n o n o
a21 a21 a21 a21
a21 − a11 x1 + a22 − a11 a12 x2 + a23 − a11 a13 x3 · · · + a2n − a11 a1n xn = b2 − a11 b1
a11
| {z }
=0

Observe que os múltiplos da primeira linha são calculados da seguinte maneira, é a razão entre o
coeficiente que se deseja anular e o elemento a11 da diagonal da primeira linha.
Logo, o primeiro passo do processo de eliminação de Gauss transforma o sistema linear acima
40

Ax = b num sistema linear da forma A0 x = b0


    

 a011 a012 a013 a014 · · · a01n 
  x1 
   b0
 1


    
    
    
a022 a023 a024 0   0
0 ··· a2n   x2   b2
  
 
    
    
    
a032 a033 a034 a03n 
    0 

 0 ··· 
 x3   b3
 


  = 
    
    

 0 a042 a043 a044 ··· 0
a4n 
 x4   b0
  4


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

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


    
    
    
0 a0n2 a0n3 a0n4 · · · a0nn xn b0n

esta primeira etapa pode ser descrita como:

Etapa 1 Para k = 2, 3, . . . , n, subtraia de (lk ) o múltiplo


ak1
lk1 =
a11

da linha (l1 ) da matriz A e do vetor b. O resultado será a matriz A0 e o vetor b0 desejados.

A transição A, b → A0 , b0 pode ser descrita usando multiplicação de matrizes

A0 = G1 A, b0 = G1 b

onde G1 é uma matriz triangular inferior da seguinte forma:


 
1 0 0 0 ··· 0
 

 −l21 1 0 0 ··· 0 

 
 −l31 0 1 0 ··· 0 
G1 = 
 
−l41 0 0 1 ··· 0

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

 . . . . . . 

−ln1 0 0 0 · · · 1

a21 , a31 , a41 , . . . , an1 .


onde os coeficientes l21 , l31 , l41 , . . . , ln1 são dados respectivamente por a 11 a11 a11 a11
Matrizes tais como a acima (G1 ), as quais diferem da matriz identidade em uma linha somente
são chamadas matrizes de Frobenius. G1 é não-singular. Observe que:
 
1 0 0 0 ··· 0
 

 l21 1 0 0 ··· 0 

 
−1
 l31 0 1 0 ··· 0 
G1 = 
 
l41 0 0 1 ··· 0

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

 . . . . . . 

ln1 0 0 0 · · · 1
41

Por esta razão os sistemas Ax = b e A0 x = b0 têm a mesma solução: Ax = b implica que


G1 Ax = A0 x = b0 = G1 b, e A0 x = b0 implica que G−1 0 −1 0
1 A x = Ax = b = G1 b .

O elemento a11 na diagonal da primeira linha na Etapa 1 é chamado elemento pivô ou simplesmente
pivô, a linha que contém o pivô é chamada linha pivotal.

Observe que o sistema resultante dessa primeira etapa não possui a variável x1 nas linhas
abaixo da linha pivotal, isto é, as linhas 2, 3, 4, . . ., n, tornam-se agora um sistema de ordem n − 1,
independente da variável x1 . Logo, podemos repetir o procedimento anterior usando agora o elemento
a022 (a022 6= 0) como pivô e a segunda linha como linha pivotal. Enfim, num segundo passo do algoritmo
um múltiplo adequado da segunda linha é subtraı́do de todas as linhas abaixo da segunda linha, de
forma que todos os elementos de x2 abaixo de a22 se anulem. Isto é, A0 x = b0 :
    

 a011 a012 a013 a014 · · · a01n 
  x1 
  
 b01 

    
    
    
0 a022 a023 a024 ··· a02n   x2   b02
    
 
    
    
a032
    
a032 a033 a034 0 b03
    
0 ··· a3n  x3   (l3 ) ← (l3 ) − (l )
a022 2
  
    
  = 
    
     a042
 0 a042 a043 a044 ··· 0
a4n   x4   b04  (l )
 4 ← (l4 ) − (l )
a022 2
   
    
    
.. .. .. .. .. ..   ..   ..
    
.
 

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

    
a0n2
    
    
0 a0n2 a0n3 a0n4 · · · a0nn xn b0n (ln ) ← (ln ) − (l )
a022 2
Logo, o segundo passo do processo de eliminação de Gauss transforma o sistema acima A0 x = b0 em
um sistema da forma A00 x = b00 :
    

 a0011 a0012 a0013 a0014 · · · a001n 
  x1 
  
 b001 

    
    
    
0 a0022 a0023 a0024 ··· a002n   x2   b002
    
 
    
    
    
a0033 a0034 00 b003
    

 0 0 ··· a3n  
 x3  
 


  = 
    
    

 0 0 a0043 a0044 ··· 00
a4n  
 x4  
  b004 

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

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

    
    
    
0 0 a00n3 a00n4 · · · a00nn xn b00n

agora a segunda etapa pode ser descrita como:

Etapa 2 Para k = 3, . . . , n, subtraia de (lk ) o múltiplo


a0k2
lk2 =
a022
42

da linha (l2 ) da matriz A0 e do vetor b0 . O resultado será a matriz A00 e o vetor b00 desejados.

A transição A0 , b0 → A00 , b00 também pode ser descrita usando multiplicação de matrizes

A00 = G2 A0 , b00 ) = G2 b0

onde G2 é uma matriz triangular inferior da seguinte forma:


 
1 0 0 0 ··· 0
 

 0 1 0 0 ··· 0 

 
 0 −l32 1 0 ··· 0 
G2 = 
 
0 −l42 0 1 ··· 0

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

 . . . . . . 

0 −ln2 0 0 ··· 1

a032 a042 a052 a0n2


onde os coeficientes l32 , l42 , l52 , . . . , ln2 são dados respectivamente por
, , , . . . , .
a022 a022 a022 a022
Assim como a matriz G1 , G2 é uma matriz de Frobenius e possui inversa da forma
 
1 0 0 0 ··· 0
 

 0 1 0 0 ··· 0 

 
−1
 0 l32 1 0 ··· 0 
G2 = 
 
0 l42 0 1 ··· 0

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

 . . . . . . 

0 ln2 0 0 ··· 1

Assim como na etapa anterior, podemos mostrar que A0 x = b0 e A00 x = b00 têm a mesma solução.
O elemento a022 na diagonal da segunda linha na Etapa 2 agora é chamado pivô e a segunda linha
é agora a linha pivotal.
Observando o sistema resultante vemos que a partir da terceira linha as equações não possuem
nenhuma dependência das incógnitas x1 e x2 e portanto podemos visualizar um sistema de ordem n − 2
com incógnitas x3 , x4 , . . . , xn e então repetir o procedimento anterior e o sistema da forma A00 x = b00
fica:
    

 a0011 a0012 a0013 a0014 · · · a001n 
  x1 
  
 b001 

    
    
    
0 a0022 a0023 a0024 ··· a002n   x2   b002
    
 
    
    
    
a0033 a0034 00 b003
    

 0 0 ··· a3n  
 x3  
 


  = 
    
     a0043
 0 0 a0043 a0044 ··· 00
a4n   x4   b004  (l )
 4 ← (l4 ) − (l )
a0033 3
   
    
    
.. .. .. .. .. ..   ..   ..
    
.
 

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

    
a00n3
    
    
0 0 a00n3 a00n4 · · · a00nn xn b00n (ln ) ← (ln ) − (l )
a0033 3
43

Como nas etapas anteriores a eliminação de Gauss transforma o sistema acima A00 x = b00 em um
sistema da forma A000 x = b000 :
    

 a000 000 000
11 a12 a13 a000
14 · · · a000
1n   x1 
   b000 
 1 
    
    
    
a000 000 a000 · · · a000
  000 
0 22 a23 x2   b2 
 

 24 2n 
   
    
    
a000 a000 · · · a000
    000 

 0 0 33 34 3n

 x3   b3 
  
  = 
    
    

 0 0 0 a000
44 · · · a000
4n

 x4   b000 
  4 
    
    
.. .. .. .. .. .. ..   .. 
    
.
 

 . . . . . 
 .   . 
  
    
    
    
0 0 0 a000 000
n4 · · · ann xn b000
n

e a terceira etapa será descrita como:

Etapa 3 Para k = 4, 5, . . . , n, subtraia da linha (k) o múltiplo

a00k3
lk3 =
a0033

da linha (l3 ) da matriz A00 e do vetor b00 . O resultado será o sistema linear desejado A000 x = b000 .

A transição A00 , b00 → A000 , b000 será descrita por

A000 = G3 A00 , b000 = G3 b00

onde G3 é da forma
 
1 0 0 0 ··· 0
 

 0 1 0 0 ··· 0 

 
 0 0 1 0 ··· 0 
G3 = 
 
0 0 −l43 1 ··· 0

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

 . . . . . . 

0 0 −ln3 0 ··· 1

a0043 a0053 a00n3


00 , 00 , . . . , 00 respectivamente.
onde os coeficientes l43 , l53 , . . . , ln3 são dados por
a33 a33 a33
Como G1 e G2 , G3 possui sua inversa da forma
 
1 0 0 0 ··· 0
 

 0 1 0 0 ··· 0 

 
−1
 0 0 1 0 ··· 0 
G3 = 
 
0 0 l43 1 ··· 0

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

 . . . . . . 

0 0 ln3 0 ··· 1
44

Mais uma vez podemos mostrar que A00 x = b00 e A000 x = b000 têm a mesma solução.

O pivô nesta etapa é o elemento a0033 na diagonal da terceira linha, e esta é chamada linha pivotal.

O sistema resultante a partir da quarta linha não possue dependência das incógnitas x1 , x2 e x3
sendo assim um sistema de ordem n − 3 com incógnitas x4 , x5 , . . . , xn e mais uma vez podemos repetir
o procedimento no novo sistema reduzido.

Procedendo sucessivamente de maneira análoga, reduziremos o sistema original a um sistema


triangular superior, que pode ser facilmente resolvido.
Usando a representação matricial da eliminação de Gauss temos

Ax = b ⇐⇒ Ax = b
A0 x = b0 ⇐⇒ G1 Ax = G1 b
A00 x = b00 ⇐⇒ G2 G1 Ax = G2 G1 b
A000 x = b000 ⇐⇒ G3 G2 G1 Ax = G3 G2 G1 b
.. .. .. .. .. ..
. . . . . .
(n−1) (n−1)
A
| {z } x = b
| {z } ⇐⇒ Gn−1 . . . G2 G1 A x = Gn−1 . . . G2 G1 b
c
| {z } | {z }
U U c
Ux = c ⇐⇒ U x = Gn−1 . . . G2 G1 b

Premultiplicando o sistema acima pela inversa de Gn−1 que sabemos que existe

G−1 −1
n−1 U x = Gn−1 Gn−1 Gn−2 . . . G2 G1 b
| {z }
I
ou

G−1
n−1 U x = Gn−2 . . . G2 G1 b

Analogamente premultiplicamos o sistema por G−1


n−2

G−1 −1 −1
n−2 Gn−1 U x = Gn−2 Gn−2 Gn−3 . . . G2 G1 b
| {z }
I
logo

G−1 −1
n−2 Gn−1 U x = Gn−3 . . . G2 G1 b

Da mesma forma podemos premultiplicar o sistema por G−1


n−3

G−1 −1 −1 −1
n−3 Gn−2 Gn−1 U x = Gn−3 Gn−3 Gn−4 . . . G2 G1 b
| {z }
I
logo

G−1 −1 −1
n−3 Gn−2 Gn−1 U x = Gn−4 . . . G2 G1 b
45

Procedendo da mesma forma, premultiplicamos sucessivamente o sistema por G−1 −1 −1 −1 −1


n−4 , Gn−5 , Gn−6 , . . . G2 , G1 ,
obtendo enfim

G−1 −1 −1 −1 −1 −1
1 G2 G3 . . . Gn−3 Gn−2 Gn−1 U x = b

Vimos que a inversa de cada matriz de Frobenius é fácil de calcular. Temos agora que calcular o
produto dessas matrizes. Porém, cada matriz Gi é triangular inferior, logo o produto delas é também
triangular inferior, além disso, devido a estrutura de cada uma delas este produto possui a forma

G−1 −1 −1 −1 −1 −1
1 G2 G3 . . . Gn−3 Gn−2 Gn−1 =
    
1 0 0 0 ··· 0 1 0 0 0 ··· 0 1 0 0 ··· 0 0
    

 l21 1 0 0 ··· 0 
 0 1 0 0 ··· 0 


 0 1 0 ··· 0 0 

    
 l31 0 1 0 ··· 0  0 l32 1 0 ··· 0   0 0 1 ··· 0 0 
= ··· =
    
l41 0 0 1 ··· 0

0 l42 0 1 ··· 0 .. .. .. . . .. ..
    . . . . . .
.. .. .. .. .. .. .. .. .. ..
    
 ..  ..   

 . . . . . . 
 . . . . . . 


 0 0 0 ··· 1 0 

ln1 0 0 0 · · · 1 0 ln2 0 0 ··· 1 0 0 0 · · · ln,n−1 1
| {z }| {z } | {z }
G−1
1 G−1
2 G−1
n−1

 
1 0 0 ··· 0 0
 
 l21
 1 0 ··· 0 0 

 l31 l32 1 ··· 0 0
 

= .. =L
 
 l41
 l42 l43 ··· . 0 

 . .. .. .. ..
 ..

 . . . 1 . 

ln1 ln2 ln3 · · · ln,n−1 1
| {z }
L
Observando a matriz L, vemos que seus elementos são os valores dos múltiplos utilizados no processo
de eliminação do método de eliminação de Gauss.

Decomposições triangulares tem grande importância na solução de sistemas de equações lineares.


Se esta decomposição é conhecida para uma matriz A, então o sistema

Ax = b

pode ser imediatamente resolvido para qualquer segundo membro b. Isto é,
(
Ly = b −→ y
Ax = b =⇒ LU x = b =⇒
U x = y −→ x
Observação: Nem sempre toda matriz inversı́vel possui uma decomposição da forma acima, às vezes,
é necessária uma conveniente troca de linhas da matriz para a obtenção da fatoração.
Resumindo temos os seguintes algoritmos:
Algoritmo 1.3
Eliminação de Gauss
46

Para k = 1, 2, . . . , n − 1
Para i = k + 1, . . . , n
lik = aik /akk
Para j = k + 1, . . . , n
aij = aij − lik akj
bi = bi − lik bk

Exemplo 1.3.4

 3x1 + x2 + 6x3 = 2


1x
1 + x2 + x3 = 4


 2x + x2 + 3x3 = 7
1

Solução:
    
3 1 6 x1 2
    
 1 1 1   x2  =  4  (l2 ) ← (l2 ) −1/3l1 )
    
2 1 3 x3 7 (l3 ) ← (l3 ) −2/3(l1 )
    
3 1 6 x1 2
    
 0 2/3 −1   x2  =  10/3 
    
0 1/3 −1 x3 17/3 (l3 ) ← (l3 ) −1/2(l2 )
    
3 1 6 x1 2
    
 0 2/3 −110/3   x2  =  10/3 
    
0 0 −1/2 x3 4

Resp: (19; −7; −8)


então
   
1 0 0 3 1 6
   
L=
 1/3 1 0  e U =
 0 2/3 −1 

2/3 1/2 1 0 0 −1/2
Se possuı́mos a fatoração LU da matriz A o sistema acima seria resolvido da seguinte maneira:

A = LU =⇒ |{z}
A x = b =⇒ LU x = b =⇒ L |{z}
Ux = b
LU y
Ly = b −→ Sistema Triangular Inferior

Ux = y −→ Sistema Triangular Superior

Ou seja, se conhecemos as fatoração A = LU a resolução de qualquer sistema linear Ax = b se


resume a resolução de dois sistemas triangulares.

No último exemplo
    
3 1 6 1 0 0 3 1 6
    
A = LU =⇒  1 1 1  =  1/3 1 0   0 2/3 −1 
    

2 1 3 2/3 1/2 1 0 0 −1/2
47
    
3 1 6 x1 2
    
Ax = b =⇒  1 1 1   x2  =  4 
    

2 1 3 x3 7

Usando a fatoração LU , primeiramente resolvemos um sistema triangular inferior


    
1 0 0 y1 2 → y1 = 2
    
Ly = b =⇒  1/3
 1 0   y2  =  4  → y2 = 10/3
    
2/3 1/2 1 y3 7 → y3 = 4

que foi resolvido por substituição. E em seguida, resolvemos um sistema triangular superior.
    
3 1 6 x1 2 → x1 = 19
    
U x = y =⇒  0 2/3 −1   x2  =  10/3  → x2 = −7
     
0 0 −1/2 x3 4 → x3 = −8

que é facilmente resolvido por retrosubstituição.


48

Exemplo 1.3.5
Fatoração LU com pivô nulo.



−x1 + 2x2 + 3x3 + x4 = 1













 2x1 − 4x2 − 5x3 − x4 = 0






 −3x1 + 8x2 + 8x3 + x4 = 2






+ 2x2 − 6x3 + 4x4 = −1


 x1

Solução:
      
 −1 2 3 1   x1   1 
     1 0 0 0 
  
      
      
2 (l )
      
 2 −4 −5 −1   x2   0  (l2 ) ← (l2 ) −  −2 1 0 0 
     
−1 1 
= =⇒ L = 
      
   
      

 −3 8
    −3 (l )  
8 1   x3   2  (l3 ) ← (l3 ) −  3 ? 1 0 
−1 1
   
  
      
      
1
      
1 2 −6 4 x4 −1 (l4 ) ← (l4 ) − −1 (l1 ) −1 ? ? 1

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

=
    
  
    
    
 0
 2 −1 −2 

 x3   −1 
  
    
    
    
0 4 −3 5 x4 0

trocando a segunda e terceira linha contornamos o pivô nulo


 
 1 0 0 0 
 
 
 
 
 3 1 0 0 


=⇒ L = 
 

 
 
 −2 ? 1 0 
 
 
 
 
−1 ? ? 1
49

Observe que os elementos de L abaixo da diagonal são também permutados.


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

2 −1 −2   x2   −1 
  
  3

1 0 0 

= =⇒ L = 
      
   
      
     0 (l )  
 (l3 ) ← (l3 ) −
 0 0 1 1   x3   2   −2 0 1 0 
2 2
   
  
      
      
4
      
0 4 −3 5 x4 0 (l4 ) ← (l4 ) − 2 (l2 ) −1 2 ? 1

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

2 −1 −2   x2   −1 
  
  3

1 0 0 

= =⇒ L = 
      
   
      
      
 0 0 1 1   x3   2 
     −2 0 1 0 
   
      
      
−1 (l )
      
0 0 −1 9 x4 2 (l4 ) ← (l4 ) − 1 3 −1 2 −1 1

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

2 −1 −2   x2   −1 
  

=
    
  
    
    
 0 0 1 1   x3   2 
    
    
    
    
0 0 0 10 x4 4

Resp: ( 28 7 8 2
5 ; 10 ; 5 ; 5 )
Resumindo temos a fatoração P A = LU .
   
 1 0 0 0   −1 2 3 1 
   
   
   
   
 3

1 0 0 
  0

2 −1 −2 

L= U =
   
 
   
   
 −2 0 1 0   0 0 1 1 
   
   
   
   
−1 2 −1 1 0 0 0 10
50

Calculando o produto LU
     

  −1
 1 0 0 0   2 3  −1
1  2 3 1 
  
     
     
     
 3

1 0 0  
  0 2 −1 −2   −3
 
8 8 1 

· =  = PA
     

     
     
 −2 0 1 0   0 0 1 1   2 −4 −5 −1 
 
   
     
     
     
−1 2 −1 1 0 0 0 10 1 2 −6 4

Veremos a seguir, que por razões numéricas trocamos linhas do sistema para utilizar um pivô melhor,
até mesmo quando temos um pivô diferente de zero.
51

2.3.2 Sobre erros de arredondamento e Sistemas Mal Condicionados


Teoricamente a solução de um sistema linear não singular está perfeitamente estabelecida. Na eliminação
de Gauss pode ser necessário algumas trocas de linhas, mas sempre será possı́vel resolver corretamente
(teoricamente) o sistema. A prática, porém é diferente.
Lembre-se que para um sistema linear de tamanho pequeno, digamos 100 × 100, a Eliminação de
Gauss envolve aproximadamente 300.000 operações aritméticas (n3 /3). Para cada operação podemos
esperar um erro de arredondamento.
A questão é, como estes erros contribuem para o erro final na solução?
Os exemplos abaixo podem ilustrar alguns pontos importantes sobre os erros de arredondamento.
Sejam as duas matrizes
" # " #
1 1 0,0001 1
A= e A0 =
1 1,0001 1 1

O primeiro ponto é: Algumas matrizes são extremamente sensı́veis à pequenas mudanças, e
outras não.
Qualitativamente A é quase singular enquanto A0 não é. Se trocarmos o último elemento de A
para a22 = 1, a matriz se torna singular. Considere agora dois segundos membros próximos para o
sistema Ax = b
( (
x1 + x2 = 2 x1 + x2 = 2
e
x1 + 1,0001x2 = 2 x1 + 1,0001x2 = 2,0001

A solução do primeiro sistema é x1 = 2, x2 = 0; a solução do segundo sistema é x1 = x2 = 1.


Uma mudança na quarta casa decimal de b foi amplificada para uma mudança na primeira casa
decimal da solução. Nenhum método numérico pode evitar tal sensibilidade a pequenas pertubações.
O mal-condicionamento pode se modificado de um lugar para outro, mas não pode ser removido. A
solução real do sistema é muito sensı́vel, e a solução calculada computacionalmente não pode ser menos
sensı́vel.
Exemplo 1.3.2.1
Exemplo gráfico: =⇒ retas quase paralelas

O segundo ponto é: Mesmo uma matriz bem-condicionada pode ser afetada por um algoritmo.
Infelizmente para a matriz A0 , o processo de Eliminação de Gauss Clássica não é um bom
algoritmo. Suponha que 0,0001 seja utilizado como o primeiro pivô, e 10000 vezes a primeira linha seja
subtraı́da da segunda. O elemento na posição (22) da matriz tornar-se-á −9999, que arredondado se
transforma em −10000. Os vestı́gios do valor 1 que estava originalmente naquela posição desapareceram.
Exemplo 1.3.2.2
Seja o sistema linear:
(
0,0001x1 + x2 = 1
1
x1 + x2 = 2 (l2 ) ← (l2 ) − 0,0001 (l1 ) (l2 ) ← (l2 ) − 10000(l1 )
52

x1 + x2 = 2


x1 + 10000x2 = 10000
− 9999x2 = −9998

Após a eliminação a segunda equação poderia tornar-se

−9999x2 = −9998, ou x2 = 0,99990

Um arredondamento resultaria em −10000x2 = −10000, ou x2 = 1. Independentemente, a


alteração da segunda equação não resultou em uma solução ”errada” para x2 . Entretanto, quando é
feita a retro-substituição a primeira equação com o valor correto de x2 torna-se

0,0001x1 + 0,9999 = 1 ou x1 = 1

Se ao invés disso usarmos o valor x2 = 1 que está incorreto somente na quarta casa decimal,
teremos:

0,0001x1 + 1 = 1 ou x1 = 0

O valor calculado computacionalmente é completamente errôneo. Mesmo a matriz A0 sendo


bem-condicionada o processo de Eliminação de Gauss Clássico é extremamente instável.
O pivô de pequeno valor (= 0,0001) trouxe instabilidade, e a cura é a troca de linhas. Esse é o
terceiro ponto:

Teoricamente apenas os pivôs nulos forçam a troca de linhas na Eliminação de Gauss, e um pivô
pequeno força uma troca prática.
A menos que se tenha garantias especiais, um computador precisa comparar cada pivô com todos
os possı́veis pivô na mesma coluna. Escolhendo entre esses candidatos o com maior valor absoluto, e
trocando as respectivas linhas tal que o maior valor seja o novo pivô, teremos a chamada Eliminação
de Gauss com pivoteamento Parcial.

Exemplo 1.3.2.3
Outro exemplo de Sistema Mal Condicionado
Seja o sistema

10x1 + 7x2 + 8x3 + 7x4 = 32









 7x

1 + 5x2 + 6x3 + 5x4 = 23




 8x1 + 6x2 + 10x3 + 9x4 = 33




7x1 + 5x2 + 9x3 + 10x4 = 31


53

se substituirmos x = ( 9,2 ; −12,6 ; 4,5 ; −1,1 ) no sistema acima obtemos, no lado esquerdo:




 b1 = 32,1


 b2 =

22,9
 b3 =

 33,1



 b4 =

30,9

o que nos leva a crer que x é uma boa aproximação da solução do sistema.
Mas, se fizermos x = ( 1,82 ; −0,36 ; 1,35 ; 0,79 ) obtemos




 b1 = 32,01


 b2 =

22,99



 b3 = 33,01


 b4 =

30,99

que é outra aproximação da solução, porém, ainda longe do valor correto que é x = (1; 1; 1; 1).
54

Estratégias de Pivoteamento
Vimos que quando encontramos um pivô nulo temos que procurar um outro elemento para substituı́-lo.
Entretanto, como também já vimos o método da eliminação de Gauss pode ser instável se utilizamos
um pivô com valor muito pequeno, isto sugere que sempre seja feita um seleção para a escolha de um
novo pivô. Isto é feito geralmente de duas maneiras chamadas, pivoteamento parcial e pivoteamento
total.

Pivoteamento parcial

Nesta estratégia a pesquisa por um novo pivô é feita na mesma coluna do pivô natural (aquele que
é usado na eliminação de Gauss clássica), os elementos candidatos ao cargo de pivô são os situados
abaixo do pivô natural. O eleito será o de maior valor absoluto, isto é,

| ar1 | = max | ai1 | i = 1, 2, 3, . . . , n


i

então trocamos as linhas r e 1 tornando ar1 o novo pivô e continuamos a eliminação de Gauss.
Na Etapa 2 a pesquisa pelo novo pivô é feita agora na segunda coluna abaixo do pivô a022 , isto é,

| ar2 | = max | ai1 | i = 2, 3, . . . , n


i

Na prática o método da eliminação de Gauss (ou Fatoração LU ) sempre é usado com alguma
seleção de pivô, principalmente com a estratégia de pivoteamento parcial.
Observações:

a) Quando calculamos a fatoração LU de uma matriz A usando pivoteamento parcial, devemos de


alguma forma guardar as trocas de linhas realizadas na eliminação para a posterior trocas das
linhas do vetor segundo membro.

Pivoteamento total

No pivoteamento parcial a pesquisa por um novo pivô é restrita a uma coluna (aquela que contém o pivô
natural). No pivoteamento total a pesquisa é feita em toda a matriz de coeficientes e novo pivô será
aquele que tiver o maior valor absoluto. Neste caso após a escolha devemos trocar convenientemente as
linhas e colunas do sistema para continuar o processo de eliminação.

Observações:

a) Como nesta estratégia de pivoteamento trocamos colunas do sistema deve-se atentar para a troca
na ordem das incógnitas visto que estas estão associadas a cada coluna do sistema.

b) O pivoteamento total é muito pouco utilizado devido ao alto custo da pesquisa por um novo pivô,
na k-ésima etapa da fatoração são necesssários (n − k + 1)2 testes para se determinar quem será
o novo pivô, enquanto que no pivoteamento parcial o número de testes necessários é igual a
(n − k + 1), visto que a procura é restrita a uma única coluna.
55

Algoritmo 1.4
Fatoração LU com pivoteamento parcial:

Para k = 1, 2, . . . , n − 1
M ax =| akk |
kM ax = k
Para i = k + 1, . . . , n
Se | aik |> M ax
M ax =| aik |
kM ax = i
Fim Se
Fim Para
Se k 6= kM ax
Para i = 1, . . . , n
Aux = akM ax ,i
ak,i = akM ax ,i
Aux = akM ax ,i
Fim Para
Fim Se
Para i = k + 1, . . . , n
aik = aik /akk {lik = aik }
Para j = k + 1, . . . , n
aij = aij − aik akj
Fim Para
Fim Para
Fim Para
56

EXEMPLOS
Exemplo 1.3.2.4
Eliminação de Gauss



2x1 + 2x2 + x3 + x4 = 7











 x1

 − x2 + 2x3 − x4 = 1






 3x1 + 2x2 − 3x3 − 2x4 = 4







 4x1
 + 3x2 + 2x3 + x4 = 12

 
 2
 2 1 1 | 7 

 
 
1 (l )
 
 1 −1 2 −1 |  (l2 ) ← (l2 ) −
1 

  2 1
 
 

2 −3 −2 |
 3 (l )
 (l3 ) ← (l3 ) −
 3 4 

 
2 1
 
4 (l )
 
4 3 2 1 | 12 (l4 ) ← (l4 ) − 2 1
 
 2
 2 1 1 | 7 

 
 
 
3
 0 −2

2 − 32 | − 25 

 
 
 
 0 −1 − 9

− 72 | − 13

 (l3 ) ← (l3 ) − −1


2 2 

−2 (l2 )
 
−1
 
0 −1 0 −1 | −2 (l4 ) ← (l4 ) − −2 (l2 )
 
 2
 2 1 1 | 7 

 
 
 
3
 0 −2

2 − 32 | − 52 

 
 
 
0 − 21 − 11 | − 21
 
 0 
 4 4 4 
 
 
  −3/4
0 0 − 34 − 41 | − 34 (l4 ) ← (l4 ) − (l )
−21/4 3
57
 
 2
 2 1 1 | 7 

 
 
 
3
 0 −2

2 − 32 | − 52 

 
 
 
0 − 21 − 11 | − 21
 
 0 
 4 4 4 
 
 
 
1
0 0 0 7 | 0




2x1 + 2x2 + x3 + x4 = 7










3 3
− 25



 − 2x2 + 2 x3 − 2 x4 =


21 11
= − 21




 − 4 x3 − 4 x4 4






 1
7 x4 = 0

Da quarta equação −→ x4 = 0

1 21 11 1 21
   
Da terceira equação −→ x3 = 21 − + x4 = 21 − +0 =1
−4 4 4 −4 4

1 5 3 3 1 5 3 3 8
   
Da segunda equação −→ x2 = − − − x3 + x4 =− − − ·1+ ·0 = =2
2 2 2 2 2 2 2 2 4
1 1
Da primeira equação −→ x1 = {7 − 2x2 − x3 − x4 } = {7 − 2 · 2 − 1 − 0} = 1
2 2
Resp: (1; 2; 1; 0)
58

Quando precisamos resolver vários sistemas lineares que possuem a mesma matriz de coeficientes,
a fatoração LU é vantajosa em relação a eliminação de Gauss. Com a fatoração LU precisamos
triangularizar a matriz de coeficientes uma única vez e armazenar os multiplicares usados que serão os
coeficientes da matriz L.
Os próximos exemplos ilustram esta caracterı́tica.
Exemplo 1.3.2.5 Uso da fatoração LU (sem estratégia de pivoteamento)
Sejam os seguintes três sistemas lineares:
    
 2 −1 4 0   x1   5 
    
    
    
    
 4 −1 5 1   x2   9 
   

=
    
  
    
    
 −2 2 −2 3   x3   1 
    
    
    
    
0 3 −9 4 x4 −2

    
 2 −1 4 0   x1   12 
    
    
    
    
 4 −1 5 1   x2   21 
    
=
    
  
    
    
 −2 2 −2 3   x3   8 
    
    
    
    
0 3 −9 4 x4 −5

    
 2 −1 4 0   x1   10 
    
    
    
    
 4 −1 5 1   x2   10 
    
=
    
  
    
    
 −2 2 −2 3   x3   10 
    
    
    
    
0 3 −9 4 x4 10

Observe que os três sistemas tem a mesma matriz de coeficientes. Vamos inicialmente usar a
eliminação de Gauss para resolvê-los.
59

Primeiro sistema linear


    
 2 −1 4 0   x1   5 
    
    
    
    
 4 −1 5 1   x2   9 
   

=
    
  
    
    
 −2 2 −2 3   x3   1 
    
    
    
    
0 3 −9 4 x4 −2

Segundo sistema linear


    
 2 −1 4 0   x1   12 
    
    
    
    
 4 −1 5 1   x2   21 
    
=
    
  
    
    
 −2 2 −2 3   x3   8 
    
    
    
    
0 3 −9 4 x4 −5

   
12 1
   
 −3   2 
−→ Lc = b −→ U x = c −→ c =   ex=
   


 23 


 3 

4 4

Terceiro sistema linear


    
 2 −1 4 0   x1   10 
    
    
    
    
 4 −1 5 1   x2   10 
    
=
    
  
    
    
 −2 2 −2 3   x3   10 
    
    
    
    
0 3 −9 4 x4 10

Exemplo 1.3.2.6 Fatoração LU com e sem pivoteamento


60

1) Calcular a fatoração LU da matriz abaixo e calcular seu determinante


 
 2 −1 4 0 
 
 
 
 
 4 −1 5 1 


A=
 

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

usaremos as posições da matriz abaixo da diagonal principal que forem sendo zeradas para armazenar
os elementos da matriz L.
 
 2 −1 4 0 
 
 
 
4
 
 4 −1  (l2 ) ← (l2 ) −
5 1  2 (l1 )

 
 
 

 −2

2 −2 3  −2 (l )
  (l3 ) ← (l3 ) − 2 1
 
 
0
 
0 3 −9 4 (l4 ) ← (l4 ) − 2 (l1 )
 
2 −1 4 0
 

 —- 

 

 2 | 1 −3 1 

|
 
 
1
 
−1 | 1 2  (l3 ) ←
3  (l3 ) − 1 (l2 )


 

 | 

0 | 3 −9 4 (l4 ) ← (l4 ) − 3 (l )
1 2
 
2 −1 4 0
 

 —- 

 

 2 | 1 −3 1 

—-
 
 
 

 −1 1 | 5 2 

 

 | 

3 | (l4 ) ← (l4 ) − 0
0 0 1 5 (l3 )
 
2 −1 4 0
 

 —- 

 

 2 | 1 −3 1 

—-
 
 
 

 −1 1 | 5 2 

 

 —- 

0 3 0 | 1
61
   
1 0 0 0 2 −1 4 0
   
 2 1 0 0   0 1 −3 1 
L= e U =
   
 

 −1 1 1 0 


 0 0 5 2 

0 3 0 1 0 0 0 1

logo

det A = det LU = det L · det U = 1 · det U = det R = 2 × 1 × ×5 × 1 = 10

como o determinante da matriz é diferente de zero então o sistema linear abaixo possui uma única
solução.
         
 2 −1 4 0   2 −1
  x1 
 5  4 0 
  x1 
     10 
     
         
         
         
 4 −1 5 1   x2   9   4 −1 5 1   x2   50 
       
 
= =
         
     
         
         
 −2 2 −2 3   x3   1   −2 2 −2 3   x3   1 
         
         
         
         
0 3 −9 4 x4 −2 0 3 −9 4 x4 2

ache a solução deste sistema usando a decomposição LU de A.


(
Ly = b −→ y
Ax = b =⇒ LU x = b =⇒
U x = y −→ x
    

 −→ y1 =
 1 0 0 0 
  y1  5  5
  
 
    
    
    
 2 1 0 0 
  y2    −→ y2
9  = −1
   
Ly = b −→  =
    
 
    
    
 −1 1 1 0   y3   −→ y3
1  = 7
  
  
    
    
    
0 3 0 1 y4 −2 −→ y4 = 1

    
 2
 −1 4   x1 
0     5  −→ x1
  = 1
    
    
    
 0

1 −3 1   x2   −1 
  
 −→ x2 = 1
U x = y −→  =
    
 
    
    
 0 0 5 2   x3   7  −→ x3 = 1
    
    
    
    
0 0 0 1 x4 1 −→ x4 = 1
62

Agora, repetiremos o problema usando pivoteamento parcial.


 
 2 −1 4 0 
 
 
 
 
 4 −1 5 1 


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

Com pivoteamento parcial precisamos trocar a primeira com a segunda linha para que novo pivô seja o
4.
 
 4 −1 5 1 
 
 
 
2
 
 2 −1  (l2 ) ← (l2 ) −
4 0  4 (l1 )

 
 
 

 −2

2 −2 3  −2 (l )
  (l3 ) ← (l3 ) − 4 1
 
 
0
 
0 3 −9 4 (l4 ) ← (l4 ) − 4 (l1 )
 
4 −1 5 1
 

 —- 

 

 1/2 | −1/2 3/2 −1/2 

|
 
 
 

 −1/2 | 3/2 1/2 7/2 

 

 | 

0 | 3 −9 4

Precisamos agora de nova troca de linhas, isto é, a segunda linha será trocada com a quarta linha
 
4 −1 5 1
 

 —- 

 

 0 | 3 −9 4 

|
 
 
  3/2
−1/2 | 3/2 1/2  (l3 ) ←
7/2  (l3 ) − 3 (l2 )


 

 | 

1/2 | −1/2 3/2 −1/2 −1/2
(l4 ) ← (l4 ) − 3 (l2 )
63
 
4 −1 5 1
 

 —- 

 

 0 | 3 −9 4 

—-
 
 
 
 −1/2 1/2 | 5 3/2 
 
 

 | 

−1/6 | (l4 ) ← (l4 ) − 0
1/2 0 1/6 5 (l3 )
Temos enfim
 
4 −1 5 1
 

 —- 

 

 0 | 3 −9 4 

—-
 
 
 
 −1/2 1/2 | 5 3/2 
 
 

 —- 

1/2 −1/6 0 | 1/6
e
   
 1 0 0 0   4 −1 5 1 
   
   
   
   
 0 1 0 0   0 3 −9 4 
 
 
L= e U =
   
 
   
   
 −1/2 1/2 1 0   0 0 5 3/2 
   
   
   
   
1/2 −1/6 0 1 0 0 0 1/6

se calcularmos o produto LU obtemos


 
 4 −1 5 1 
 
 
 
 
 0

3 −9 4 

LU =   = PA
 
 
 
 −2 2 −2 3 
 
 
 
 
2 −1 4 0

que não é igual a matriz A, porém o resultado é igual a A com as mesmas trocas de linhas realizadas
durante a fatoração.

No produto LU , P é a matriz de permutação relativa às trocas de linhas e P = P 2 P 1 . P 1


representa a troca das 1a. e 2a. linhas e P 2 representa a troca das 2a. e 4a. linhas. Na forma matricial
64

temos
    
 0 1 0 0   1 0 0 0 
 0 1 0 0 

   
    
    
    
 0 0 0   0
1  0 0  1
1  0 0 0 
  

P = =  = P 2P 1
    

    
    
 0 0 1 0 
  0 0 1  0
0  0 1 0 
 
 
    
    
    
1 0 0 0 0 1 0 0 0 0 0 1

Para usarmos a fatoração acima para resolver um sistema linear temos que permutar as linhas do
segundo membro da mesma forma que foram feitas na matriz durante a fatoração. Logo inicialmente
trocamos a primeira e a segunda linhas e a seguir trocamos a segunda e quarta linhas, resultando no
seguinte segundo membro.
 
 9 
 
 
 
 
 −2 
 
0
b =
 

 
 
 1 
 
 
 
 
5
65

2.3.3 Custo da Eliminação Gaussiana


Quantas operações aritméticas são necessárias para se resolver um sistema de n equações e n incógnitas?
Suporemos que não sejam necessárias trocas de linhas, isto é, não existam pivôs nulos nem os
erros de arrendondamento.
Vejamos em primeiro lugar somente as operações na matriz (ignoraremos inicialmente as operações
no segundo membro).
Essas operações são de dois tipos.
Uma operação é a divisão pelo pivô, para encontrar o múltiplo da linha pivotal que deverá ser
subtraı́do. E a seguir, efetuamos realmente essa subtração.
Consideremos cada divisão e cada multiplicação–subtração uma única operação.
No inı́cio, quando a primeira equação tem n elementos na matriz, são necessárias n operações
para cada zero(0) obtido na primeira coluna de cada linha ( 1 operação para determinarmos o múltiplo
(divisão) e n−1 para os outros elementos da linha fatorada (multiplicações e subtrações)). Existem n−1
linhas abaixo da primeira linha, assim a primeira etapa da eliminação necessita de n(n − 1) = n2 − n
operações (outra abordagem é a seguinte: todos os n2 elementos precisam ser modificados, menos os n
elementos da primeira linha → n2 − n). Agora, observe que as etapas seguintes são mais ”rápidas“,
porque as equações se tornam progressivamente menores. Quando a eliminação é feita em k equações
(k < n), somente k 2 − k operações são necessárias para zerar a coluna abaixo do pivô (pela mesma
razão usada na primeira linha).
Juntas, o número de operações na matriz é a soma de k 2 − k operações para k variando de 1 até
n. Isto é,
n
X n
X n
X
k2 − k = k2 − k=
k=1 k=1 k=1

n(n + 1)(2n + 1) n(n + 1) n3 − n n3


= (12 + 22 + . . . + n2 ) − (1 + 2 + . . . + n) = − = ≈
6 2 3 3
Observação 1
Se o n é muito grande, uma estimativa do número de operações é 31 n3 .
No segundo membro na primeira etapa temos n − 1 operações (uma multiplicação–subtração
para cada elemento do segundo membro). Na segunda etapa como temos um sistema (n − 1) × (n − 1),
serão necessárias n − 2 operações, e assim por diante. Logo, somando todas as operações, teremos

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

n2 − n n2
= ≈
2 2
Observação 2
Se o n é muito grande, uma estimativa do número de operações no segundo membro é 21 n2 .
A retro-substituição é bem mais ”rápida“.
66

A última incógnita (xn ) é determinada com somente uma operação (uma divisão). A penúltima
incógnita requer 2 operações (uma subtração–multiplicação e uma divisão) e assim por diante. Logo o
número total de operações para a retrosubstituição é

n(n + 1) n2 + n n2
1 + 2 + ... + n = = ≈
2 2 2
Somando todas as operações efetuadas, temos:

n3 − n n2 − n n2 + n n3 − n
+ + = + n2
3 2 2 3
Observação 3
Novamente, podemos dizer, se n for muito grande que o número de operações necessários para se
resolver um sistema por Eliminação de Gauss é 31 n3 .
67

2.4 Métodos Iterativos


Muitos problemas práticos requerem a solução de grandes sistemas lineares (Ax = b) em que a matriz
A é esparsa, isto é, tem relativamente poucos elementos não nulos. Sistemas desse tipo surgem, por
exemplo, em aplicações dos métodos de diferenças finitas ou elementos finitos para aproximar a solução
de problemas de valor de contorno em equações diferenciais parciais. Os métodos de eliminação usuais,
normalmente não podem ser empregados neste caso (exceção feita as matrizes do tipo banda, quando a
largura de banda é pequena), pois eles tendem a gerar matrizes intermediárias densas e o número de
operações necessárias para a solução torna-se muito grande, mesmo para os computadores modernos,
além disso tais matrizes ocupariam uma memória, às vezes, não disponı́vel, além disso existem os
erros de arredondamento. Por estas e outras razões utiliza-se os métodos iterativos para resolver tais
sistemas.
Nesta classe de métodos partimos de uma aproximação inicial x(0) para a solução x∗ do sistema
linear, e a partir dela geramos por um processo recursivo (repetitivo) novas aproximações que definem
uma sequência. O método será bem sucedido se a sequência convergir para a solução x∗ do sistema
linear. Cada ciclo responsável pela geração de uma nova aproximação é chamado iteração. A cada
iteração são usadas informações das iterações anteriores. Resumindo

x(0) −→ x(1) −→ x(2) · · · · · · · · · x(i) −→ x(i+1) · · · · · · · · · x∗

ou
(0) (1) (2) (i) (i+1)
           
x1 x1 x1 x1 x1 x1
 (0)   (1)   (2)   (i)   (i+1)   
 x   x   x   x   x   x2 
 2   2   2   2   2   
 (0)
 −→  x(1)  −→  x(2)  · · · · · · · · ·  x(i)  −→  x(i+1)
          
 x3
   3   3   3   3
·········
  x3 

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


 

 

 



 . 


 . 

(0) (1) (2) (i) (i+1)
xn xn xn xn xn xn
| {z } | {z } | {z } | {z } | {z } | {z }
x(0) x(1) x(2) x(i) x(i+1) x∗

lim x(i) = x∗
i→∞

Surgem algumas questões:

1. Como encontrar uma aproximação inicial? (x(0) )

2. Quando interromper a geração de novas aproximações? Critério de parada

3. Como gerar a aproxmações? Diferentes métodos

4. Quando a sequência gerada converge? Critério para convergência

5. Qual a velocidade de convergência da sequência?


68

2.4.1 Aproximação inicial


Como aproximação inicial tomamaos qualquer valor de (x(0) ) dado por:
(0)
 
x1
 (0) 
 x 
 2 
 (0) 
 x3 
 
 .
 ..


 
(0)
xn
| {z }
x(0)

2.4.2 Critério de Parada


Obviamente é impossı́vel realizar infinitas iterações para obter a solução do sistema. Por isso adotaremos
um critério de parada.
Uma maneira de determinar se a sequência gerada pelo método iterativo está convergindo é
verificar se a diferença entre a aproximação e o vetor exato da solução está diminuindo. Seja x(i) o
vetor aproximado obtido na iteração i e x¯∗ o vetor solução, podemos verificar se
kx(i) − x¯∗ k < 
isto é, se a diferença acima citada é menor que um valor pequeno (), onde k · k denota uma norma do
IRn . Chamamos o valor escalar  de tolerância de parada ou simplesmente tolerância.
Entretanto, como não conhecemos a solução do sistema linear (queremos na verdade determinar
este vetor), o teste acima não pode ser efetuado. Substituı́mos o teste acima pelo seguinte teste:
kx(i+1) − x(i) k < 
A diferença agora é calculada entre duas aproximações sucessivas.
O critério empregando a diferença relativa entre aproximações sucessivas também é usado, isto é,
kx(i+1) − x(i) k
<
kx(i+1) k
A seção a seguir se dedica à apresentar brevemente os métodos iterativos para resolução de
sistemas lineares. Nos retringiremos aos métodos clássicos.

2.4.3 Método de Jacobi


No método de Jacobi partimos do sistema original abaixo

a11 x1 + a12 x2 + a13 x3 + a14 x4 + · · · + a1n xn = b1








a21 x1 + a22 x2 + a23 x3 + a24 x4 + · · · + a2n xn = b2








 a31 x1 + a32 x2 + a33 x3 + a34 x4 + · · · + a3n xn = b3





 a41 x1 + a42 x2 + a43 x3 + a44 x4 + · · · + a4n xn = b4

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



. . . . . .








 an1 x1 + an2 x2 + an3 x3 + an4 x4 + · · · + ann xn = bn

69

e o reescrevemos da maneira descrita a seguir.


Da primeira linha explicitamos a incógnita x1 , da segunda linha a incógnita x2 , da terceira linha
a incógnita x3 , e assim por diante até a última equação do sistema, onde então, explicitamos a incógnita
xn . Resultando assim,


1




 x1 = (b1 − a12 x2 − a13 x3 − a14 x4 − · · · − a1n xn )
a11









1


x2 = (b2 − a21 x1 − a23 x3 − a24 x4 − · · · − a2n xn )






 a22






 1
 x3 = (b3 − a31 x1 − a32 x2 − a34 x4 − · · · − a3n xn )



a33
(2.5)


1


(b4 − a41 x1 − a42 x2 − a43 x3 − · · · − a4n xn )


 x4 =
a44










 .. ..
. .











1



 xn =

 (bn − an1 x1 − an2 x2 − an3 x3 − · · · − an,n−1 xn−1 )
ann

A função de iteração é então definida como




1

  
(i+1) (i) (i) (i)
b1 − a12 x2 − a13 x3 − a14 x4 − · · · − a1n x(i)


 x1 = n
a11









1
  
(i+1) (i) (i) (i)

x2 = b2 − a21 x1 − a23 x3 − a24 x4 − · · · − a2n x(i)


 n



 a22






(i+1) 1 
(i) (i) (i)

b3 − a31 x1 − a32 x2 − a34 x4 − · · · − a3n x(i)

 x3 =


 n
a33
(2.6)


1 
 
(i+1) (i) (i) (i)

(i)
− − − − · · · −


 x 4 = b4 a x
41 1 a x
42 2 a x
43 3 a x
4n n
a44










 .. ..
. .











1 

 
 (i+1) (i) (i) (i) (i)
 xn

 = bn − an1 x1 − an2 x2 − an3 x3 − · · · − an,n−1 xn−1
ann

Para i = 0, 1, 2, . . .
Para k = 1, 2, .. . , n 
 k−1 n 
(i+1) X (i) X (i)
xk = b − akj xj − akj xj /a
 k  kk
j=1 j=k+1
70

Testa Criterio de Parada

(0) (0) (0) (0)


com x(0) = (x1 , x2 , x3 , . . . , xn ) dado

Assim se tivermos uma aproximação inicial para a solução do sistema, podemos gerar uma
sequência de aproximações que esperamos convirja para a solução.

Um Critério de Convergência (Jacobi)

Mostraremos a seguir uma condição suficiente para a convergência do Método de Jacobi.


Por ser um critério somente suficiente asseguramos a convergência se as condições do teorema
são satisfeitas. Entretanto, nada podemos afirmar se as condições não são satisfeitas.

Teorema 2.4.1 (Critério das Linhas ou Critério da Diagonal Dominante) Seja um sistema
linear Ax = b e seja
| a12 | + | a13 | + | a14 | + · · · | a1n |
α1 =
| a11 |
| a21 | + | a23 | + | a24 | + · · · | a2n |
α2 =
| a22 |
| a31 | + | a32 | + | a34 | + · · · | a3n |
α3 =
| a33 |
..
.
| an1 | + | an2 | + | an3 | + · · · | an,n−1 |
αn =
| ann |
isto é
 
n
X
αi =  | aij | / | aii | i = 1, . . . , n
 
j=1
j6=i

Se

α = max αi < 1
1≤i≤n

então o método de Jacobi e o método de Gauss-Seidel convergem para a solução do sistema linear,
independentemente da aproximação inicial.

Exemplo 1.4.3.1
Seja o sistema linear


4x1 − x2 + x3 = 4








 x1 + 6x2 + 2x3 = 9






 −x1

− 2x2 + 5x3 = 2
71

Pelo critério das linhas


| a12 | + | a13 | 1+1 1
α1 = = = <1
| a11 | 4 2

| a21 | + | a23 | 1+2 1


α2 = = = <1
| a22 | 6 2

| a31 | + | a32 | 1+2 3


α3 = = = <1
| a33 | 5 5

logo temos certeza de que o método de Jacobi convergirá. Reescrevendo o sistema linear

 
 (k+1) 1 (k) (k)
x1 = 4 + x2 − x3


4





  
(k+1) 1 (k) (k)
 x2 = 6 9 − x1 − 2x3




  
 x(k+1) 1 (k) (k)


3 = 5 2 + x1 + 2x2
 
0
com x(0) = ~0 = 
 
 0  e  = 0,5

0

Primeira Iteração x(0) → x(1)



 
 (1) 1 (0) (0) 1
x1 = 4 + x2 − x3 = (4 + 0 − 0) = 1


4 4





  
(1) 1 (0) (0) 1 9
 x2 = 6 9 − x1 − 2x3 = 6 (9 − 0 − 2 · 0) = 6




  
 x(1) 1 (0) (0) 1 2


3 = 5 2 + x1 + 2x2 = 5 (2 + 0 + 2 · 0) = 5

   
(1)
 x1   1 
   
   
   
 (1) = 9 
 x2   6 
   
   
(1)
   
2
x3 5

Temos que verificar se o critério de parada foi satisfeito

kx(1) − x(0) k <  ?????


     
 1   0   1 
     
     
 k = k  9  k = 9 = 1.5 > 
     
k 9 −
 6   0 
   
 6 
  6
     
     
2 2
5 0 5
72

faremos então mais uma iteração

Segunda Iteração x(1) → x(2)



   
 (2) 1 (1) (1) 1 9 2 51
x1 = 4 + x2 − x3 = 4+ − =


4 4 6 5 40





    
(2) 1 (1) (1) 1 2 36
x = 9 − x1 − 2x3 = 9−1−2· =
 2


6 6 5 30


    
 x(2) 1 (1) (1) 1 9 6


3 = 5 2 + x1 + 2x2 = 5 2+1+2· 6 = 5

     
(2) 51
 x1     1,275 
40
     
     
     
 (2)  =  36  = 
 x2   30   1,2 

     
     
(2)
     
6
x3 5 1,2

Pelo critério de parada

kx(2) − x(1) k <  ?????


     
51
  1  11
40 40
  
     
     
 k = 4 = 0.8 > 
     
k
 36  −
 9  k = k
 −9
 30 
  6 
  30 
 5
     
     
6 2 4
5 5 5

logo, mais uma iteração.

Terceira Iteração x(2) → x(3)



   
 (3) 1 (2) (2) 1 9 6
x1 = 4 + x2 − x3 = 4+ − =1


4 4 5 5





    
(3) 1 (2) (2) 1 51 6 213
 x2 = 6 9 − x1 − 2x3 = 6 9− 40 −2· 5 = 240 = 0,8875




    
 x(3) 1 (2) (2) 1 51 6 227


3 = 5 2 + x1 + 2x2 = 5 2+ 40 +2· 5 = 200 = 1,1375

   
(3)
 x1   1 
   
   
   
 (3) =
 x2   0,8875 

   
   
(3)
   
x3 1,1375

Pelo critério de parada

kx(3) − x(2) k <  ?????


73
     
 1   1,275   −0,27 
     
     
     
k  0,8875  −  1,2  k = k  −0,32 
    
 k = 0,32 < 
     
     
     
1,1375 1,2 −0,07

logo, aproximação da solução do sistema linear é:


 
 1,0000 
 
 
 
x ≈  0,8875 


 
 
 
1,1375

Exemplo 1.4.3.2
Seja o sistema linear


10x1 + 2x2 + x3 = 7








 x1 + 5x2 + x3 = −8







 2x1 + 3x2 + 10x3 = 6
Reescrevendo o sistema linear

 
 (k+1) 1 (k) (k)
x1 = 7 − 2x2 − x3


10





  
(k+1) 1 (k) (k)
x = −8 − x1 − x3
 2


5


  
 x(k+1) 1 (k) (k)


3 = 10 6 − 2x1 − 3x2
h iT
com x(0) = [ 0,7 − 1,6 0,6 ] e  = 0.05, temos:
h iT
x(0) = [ 0,7000 − 1,6000 0,6000 ]
h iT
1a. iteração x(1) = [ 0,9780 − 1,9800 0,9660 ] =⇒ kx(2) − x(1) k = 0,3800 > 
h iT
2a. iteração x(2) = [ 0,9994 − 1,9888 0,9984 ] =⇒ kx(3) − x(2) k = 0,0324 < 
Método de Jacobi:
Algoritmo 1.4.1

Para i = 1, 2, 3, . . . . . .
Para k = 1, . . ., n 
 k−1 n 
(i+1) X (i) X (i)
xk = b − akj xj − akj xj
 k 
j=1 j=k+1
74

2.4.4 Método de Gauss-Seidel


Novamente partindo do sistema linear reescrito na forma 2.5. Assim como no método do Jacobi as
últimas aproximações para os componentes são usadas para calcular as novas aproximações. Entretanto,
a medida que novos valores são obtidos para os componentes estes são usados ao invés daqueles da
aproximação anterior.


1

  
(i+1) (i) (i) (i)
b1 − a12 x2 − a13 x3 − a14 x4 − · · · − a1n x(i)


 x1 = n
a




 11




1
  
(i+1) (i+1) (i) (i)

x2 = b2 − a21 x1 − a23 x3 − a24 x4 − · · · − a2n x(i)


 n



 a22






(i+1) 1 
(i+1) (i+1) (i)

− a34 x4 − · · · − a3n x(i)

 x3 = b3 − a31 x1 − a32 x2


 n
a33
(2.7)


1 
 
(i+1) (i+1) (i+1) (i+1)

(i)
− − − − · · · −


 x 4 = b4 a41 x1 a 42 x 2 a43 x3 a 4n x n
a44










 .. ..
. .











1 

 
 (i+1) (i+1) (i+1) (i+1) (i+1)
 xn

 = bn − an1 x1 − an2 x2 − an3 x3 − · · · − an,n−1 xn−1
ann

Um Critério de Convergência (Gauss-Seidel)

Pode-se utilizar o Critério da Linhas ou Diagonal Dominante usado no método de Jacobi para o método
de Gauss-Seidel. Mostraremos a seguir uma outra condição suficiente para a convergência do Método
de Gauss-Seidel.

Teorema 2.4.2 (Critério de Sassenfeld) Seja um sistema linear Ax = b e seja


| a12 | + | a13 | + | a14 | + · · · + | a1n |
β1 =
| a11 |

β1 | a21 | + | a23 | + | a24 | + · · · + | a2n |


β2 =
| a22 |

β1 | a31 | +β2 | a32 | + | a34 | + · · · + | a3n |


β3 =
| a33 |

..
.
β1 | an1 | +β2 | an2 | +β3 | an3 | + · · · + βn−1 | an,n−1 |
βn =
| ann |

ou seja,
| a12 | + | a13 | + | a14 | + · · · + | a1n |
β1 =
| a11 |
75

e
 
i−1
X n
X
βi =  βj | aij | + | aij | / | aii | i = 2, . . . , n
j=1 j=i+1

Se

β = max βi < 1
1≤i≤n

então o método de Gauss-Seidel converge para a solução do sistema linear, independentemente da


aproximação inicial.

Exemplo 1.4.4.1
Seja o sitema linear


5x1 + x2 + x3 = 5








 3x1 + 4x2 + x3 = 6






 3x1

+ 3x2 + 6x3 = 0

Pelo critério das linhas


| a12 | + | a13 | 1+1 2
α1 = = = <1
| a11 | 5 5

| a21 | + | a23 | 3+1


α2 = = =1
| a22 | 4

| a31 | + | a32 | 3+3


α3 = = =1
| a33 | 6

logo não temos certeza de que o método de Gauss-Seidel convergirá. Vamos testar o critério de
Sassenfeld.
| a12 | + | a13 | 1+1 2
β1 = = = <1
| a11 | 5 5
2
β1 | a21 | + | a23 | 5 ·3+1 11
β2 = = = <1
| a22 | 4 20
2
β1 | a31 | +β2 | a32 | 5 · 3 + 11
20 · 3 57
β3 = = = <1
| a33 | 6 120

que foi satisfeito.


Reescrevendo o sistema linear

 
 (k+1) 1 (k) (k)
x1 = 5 − x2 − x3


5





  
(k+1) 1 (k+1) (k)
x = 6 − 3x1 − x3
 2


4


  
 x(k+1) 1 (k+1) (k+1)


3 = 6 0 − 3x1 − 3x2
76

com x(0) = ~0 e  = 0.05.



 
 (1) 1 (0) (0) 1
x1 = 5 − x2 − x3 = (5 − 0 − 0) = 1


5 5





  
(1) 1 (1) (0) 1 3
x = 6 − 3x1 − x3 = (6 − 3 · 1 − ·0) =
 2


4 4 4


    
 x(1) 1 (1) (1) 1 3 21


3 = 6 0 − 3x1 − 3x2 = 6 0−3·1−3· 4 = − 24
     
(1)
 x1   1   1 
     
     
     
 (1) = 3 =
 x2 0.75


 
  4  
 


     
(1)
     
x3 − 21
24 −0.875

Temos que verificar se o critério de parada foi satisfeito


kx(1) − x(0) k <  ?????
     
 1   0   1 
     
     
     
k
 0.75
− k = k
  0   0.75
 k = 1 > 0.05 = 

     
     
     
−0.875 0 −0.875

faremos então mais uma iteração



 
 (2) 1 (1) (1) 1
x1 = 5 − x2 − x3 = (5 − 0.75 + 0.875) = 1.025


5 5





  
(2) 1 (2) (1) 1
 x2 = 4 6 − 3x1 − x3 = 4 (6 − 3 · 1.025 + 0.875) = 0.95




  
 x(2) 1 (2) (2) 1


3 = 6 0 − 3x1 − 3x2 = 6 (0 − 3 · 1.025 − 3 · 0.95) = −0.9875
   
(2)
 x1   1.025 
   
   
   
 (2) =
 x2 0.95

  
   
   
(2)
   
x3 −0.9875

Pelo critério de parada


kx(2) − x(1) k <  ?????
     
 1.025   1   0.0250 
     
     
     
k
 0.95
−
  0.75   0.2000  k = 0.2000 > 
k = k 
     
     
     
−0.9875 −0.875 −0.1125
77

com mais uma iteração, obteremos,


   
(3)
 x1   1.0075 
   
   
   
 (3) =
 x2   0.9912 

   
   
(3)
   
x3 −0.9993

Pelo critério de parada

kx(3) − x(2) k <  ?????


     
 1.0075   1.025   0.0175 
     
     
     

−
k  0.9912  
0.95   0.0412  k = 0.0412 <  = 0.05
k = k 
     
     
     
−0.9993 −0.9875 0.0118

Método de Gauss-Seidel:
Algoritmo 1.4.2

Para i = 1, 2, 3, . . . . . .
Para k = 1, . . ., n 
 k−1 n 
(i+1) X (i+1) X (i)
xk = b − akj xj − akj xj
 k 
j=1 j=k+1

2.4.5 Método da Relaxação


Neste método introduzimos um parâmetro ω de maneira que a sequência de aproximações geradas
convirja mais rapidamente. O parâmetro ω deve respeitar o seguinte intervalo 0 < ω < 2. Se ω < 1
chamamos o método de sob-relaxação e se ω > 1 o método é chamado de sobre-relaxação.

Este método pode ser interpretado da seguinte maneira:


(i+1)
Suponha que para a (i + 1) aproximação x(i+1) já conheçamos os componentes xk , k =
1, 2, . . . , i − 1. Os novos componentes da aproximação (i + 1) pode ser interpretada como uma média
ponderada com pesos (1 − ω) e ω da aproximação anterior e daquela que seria calculada pelo método
de Gauss-Seidel, respectivamente. Isto é,
 
j−1 n
(i+1) (i) 1  X (i+1) X (i)
xj = (1 − ω) xj +ω bj − ajk xk − ajk xk  j = 1, 2, . . . , n
|{z} ajj k=1 k=j+1
aprox. anterior | {z }
aprox. Gauss-Seidel
78


ω 

 
(i+1) (i) (i) (i) (i)
b1 − a12 x2 − a13 x3 − a14 x4 − · · · − a1n xn(i)


 x1 = (1 − ω)x1 +
a11









ω 
 
(i+1) (i) (i+1) (i)

x2 = (1 − ω)x2 + b2 − a21 x1 − a23 x3 − · · · − a2n x(i)


 n



 a22






(i+1) (i) ω  (i+1) (i+1)

· · · − a3n x(i)

 x3 = (1 − ω)x3 + b3 − a31 x1 − a32 x2


 n
a33
(2.8)


ω 
 
(i+1) (i) (i+1) (i+1)

(i)
− − − − · · · −


 x4 = (1 ω)x 4 + b4 a 41 x 1 a42 x2 a 4n x n
a44










 .. ..
. .











ω 

 
(i+1) (i+1) (i+1) (i+1)
= (1 − ω)x(i)

 xn

 n + b n − a n1 x 1 − an2 x 2 − · · · − a n,n−1 x n−1
ann

Exemplo 1.4.5.1
Seja o sistema abaixo que é uma aproximação do sistema de equações que modelam uma viga
bi-apoiada com um carregamento pontual na posição 2. (DESENHO)
     
 5 −4 1 0   u1   0 
     
     
 −4 6 −4 1   u2   1 
   
 
 · = 
     
 1 −4 6 −4   u3   0 
    

     
     
0 1 −4 5 u4 0

Resolvendo por relaxação:


 
j−1 n
(i+1) (i) ω  X (i+1) (i) X (i)
xj = xj + bj − ajk xk − ajj xj − ajk xk  j = 1, 2, . . . , n
ajj k=1 k=j+1

ou



ω
  
(i+1) (i) (i) (i) (i)

u1 = u1 + −5u1 + 4u2 − u3






 5






 (i+1) (i) ω 
(i+1) (i) (i) (i)

 u2 = u2 + 1 + 4u1 − 6u2 + 4u3 − u4



6


ω
  
(i+1) (i) (i+1) (i+1) (i) (i)

−u1 − 6u3 + 4u4


 u3 = u3 + + 4u2
6










 (i+1) (i) ω 
(i+1) (i+1) (i)

 u4 = u4 + −u2 + 4u3 − 5u4



5
79

com uma estimativa inicial u(0) = ~0 e tolerância  = 0.001. Para o método de Gauss-Seidel (ω = 1)
obteremos a convergência após 104 iterações e a aproximação para a solução é:
h iT
u(104) = (1.59; 2.59; 2.39; 1.39)

sendo que a solução exata é:

[u]T = (1.6; 2.6; 2.4; 1.4).

Variando-se o valor do parâmetro ω temos a seguinte relação entre ω e o número de iterações:

ω 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9
no. iterações 104 88 74 61 49 37 23 30 43 82
80

2.5 Formulação Matricial dos Métodos Iterativos Clássicos


2.5.1 Introdução
Seja o sistema linear

Ax = b A ∈ IRn×n , x e b ∈ IRn

e seja a seguinte decomposição da matriz A do sistema:

A=D−E−F

onde
D - matriz diagonal (dii 6= 0);
E - matriz triangular estritamente inferior;
F - matriz triangular estritamente superior.
 
 a11 0 0 0 ··· 0 
 
 
 

 0 a22 0 0 ··· 0 

 
 
 

 0 0 a33 0 ··· 0 

D=



 

 0 0 0 a44 · · · 0 

 
 .. .. .. .. .. .. 
. . . . . .
 
 
 
 
 
0 0 0 0 · · · ann

 

 0 0 0 0 ··· 0 0 

 
 
 −a21 0 0 0 ··· 0 0
 

 
 
 
 −a −a32 0 0 ··· 0 0 
 31 
 
 
E =  −a41
 
 −a42 −a43 0 ··· 0 0 

 

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


 . . . . . . . 

 
 
 −an−1,1 −an−1,2 −an−1,3 −an−1,4 · · · 0 0
 

 
 
 
−an1 −an2 −an3 −an4 · · · −an,n−1 0
81
 

 0 −a12 −a13 −a14 · · · −a1n 

 
 
0 0 −a23 −a24 · · · −a2n 
 

 
 
 

 0 0 0 −a34 · · · −a3n  
 
 
F =
 
 0 0 0 0 ··· −a4n  
 

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


 . . . . . . 

 
 
0 0 0 0 ··· −an−1,n 
 

 
 
 
0 0 0 0 ··· 0

Define-se também as matrizes L e U da seguinte forma:

L = D −1 E

U = D −1 F

Método de Jacobi

Ax = b

(D − E − F ) x = b

Dx − (E + F ) x = b

Dx = (E + F ) x + b

x = D −1 (E + F ) x + D −1 b

que induz a seguinte fórmula iterativa:

x(i+1) = (L + U ) x(i) + D −1 b

x(i+1) = J x(i) + d

onde

J = L + U = D −1 (E + F )

d = D −1 b

J é a matriz do Método de Jacobi associada a matriz A.


82

Método de Gauss-Seidel

Ax = b

(D − E − F ) x = b

(D − E) x = F x + b

D −1 (D − E) x = D −1 F x + D −1 b

(I − L) x = U x + D −1 b

x = (I − L)−1 U x + (I − L)−1 D −1 b

Que induz a seguinte fórmula iterativa:

x(i+1) = (I − L)−1 U x(i) + (I − L)−1 D −1 b

x(i+1) = R1 x(i) + d

onde

R1 = (I − L)−1 U

d = (I − L)−1 D −1 b

R1 é a matriz de Gauss-Seidel associada a matriz A.

Método da Relaxação (SOR - Sucessive Over Relaxation)

Ax = b

x = x + ωD −1 (b − Ax)

x = x + ωD −1 (b − Dx + Ex + F x)

x = x + ωD −1 b − ωD −1 Dx + ωD −1 Ex + ωD −1 F x

x − ωD −1 Ex = x − ωx + ωD −1 F x + ωD −1 b

(I − ωL) x = (1 − ω) x + ωU x + ωD −1 b
83

(I − ωL) x = [(1 − ω) I + ωU ] x + ωD −1 b

x = (I − ωL)−1 [(1 − ω) I + ωU ] x + ω (I − ωL)−1 D −1 b

Que sugere a seguinte fórmula iterativa:

x(i+1) = (I − ωL)−1 [(1 − ω) I + ωU ] x(i) + ω (I − ωL)−1 D −1 b

x(i+1) = Rω x(i) + d

onde

Rω = (I − ωL)−1 [(1 − ω) I + ωU ]

d = ω (I − ωL)−1 D −1 b

Rω é a Matriz de Relaxação associada a A.

EXEMPLOS
Exemplo 1.5.1

1. Jacobi
Seja o sitema linear:



3x1 + x2 + x3 = 5











x1 + 2x2 = 3





1

x1 + 2 x2 + 2x3 = 6


então, a matriz de Jacobi é:


     
 3 0 0   0 0 0   0 −1 −1 
     
     
D=
 0 2 ;
0  E=
 −1 ;
0 0  F = 0
 0 .
0 
     
     
0 0 2 −1 −1/2 0 0 0 0

   
 1/3 0 0   0 −1 −1 
   
J = D −1 (E + F ) = 
   
 −1
 0 1/2 0 0 0 

  
   
   
0 0 1/2 −1 −1/2 0
84
 
 0 −1/3 −1/3 
 
 
J =  −1/2
 0 0  
 
 
−1/2 −1/4 0

2. Gauss-Seidel
Para o sistema linear dado, a matriz de Iteração de Gauss-Seidel é:
 −1  
 1 0 0   0 −1/3 −1/3 
   
−1    
R1 = (I − L) U = 
 1/2 1 0 

 0
 0 0  
   
   
1/2 1/4 1 0 0 0

   
 1 0 0   0 −1/3 −1/3 
   
−1    
R1 = (I − L) U = 
 −1/2 1 0 

 0
 0 0 

   
   
−3/8 −1/4 1 0 0 0

 
 0 −1/3 −1/3 
 
 
R1 = 
 0 1/6 1/6 
 
 
0 1/8 1/8

3. Relaxação

2.6 Resultados sobre os Métodos Iterativos


Os métodos apresentados podem ser representados de uma maneira compacta. Todos eles possuem a
seguinte forma geral:

x(i+1) = T x(i) + d (2.9)

A matriz T e o vetor d são construı́dos a partir dos dados do sistema linear (Ax = b), sendo
que T só depende de A.

2.6.1 Resultados Gerais sobre Métodos Iterativos


Dados uma matriz inversı́vel A e um vetor b, queremos calcular a solução x do sistema linear

Ax = b.
85

Suponhamos que possamos encontrar uma matriz T e um vetor d tais que a matriz (I − T ) seja
inversı́vel, e que a solução do sistema Ax = b (única) satisfaça,

x = T x + d.

A forma acima sugere a definição de um método iterativo, isto é:


Dado um vetor aproximação inicial x(0) , definimos uma sequência de aproximações (x(i) )i≥0 gerada por

x(i+1) = T x(i) + d, i≥0 (2.10)

Dizemos que o método iterativo é convergente se

lim x(i) = x
i→∞

para qualquer vetor inicial x(0)


O resultado seguinte é o teorema fundamental de convergência dos métodos iterativos. Note que
este teorema só envolve a matriz T , que é chamada matriz de iteração do método.

Teorema 2.6.1 As três afirmativas seguintes são equivalentes:

(1) O método iterativo (2.10) é convergente;

(2) ρ(T ) < 1;

(3) kT k < 1 pelo menos para uma norma matricial k · k.

onde ρ(T ) denota o raio espectral da matriz de iteração T .

Demonstração: Se o método é convergente então

lim e(i) = 0 ∀ e(0) = x(0) − x


i→∞

onde

e(i) = x(i) − x = T i e(0) , i≥0

é o vetor erro. As equivalências vêm do seguinte teorema.

Teorema 2.6.2 Seja T uma matriz quadrada. As seguintes condições são equivalentes:

(1) lim T i = 0;
i→∞

(2) lim T i v = ~0 ∀v;


i→∞

(3) ρ(T ) < 1;

(4) kT k < 1 pelo menos para uma norma matricial k · k.


86

Demonstração: (1) ⇒ (2). Seja k · k uma norma vetorial e k · k a norma matricial consistente
correspondente. Sendo dado um vetor v, a desigualdade

kT i vk ≤ kT i kkvk

mostra que

lim T i v = ~0 ∀v.
i→∞

(2) ⇒ (3). Se ρ(T ) ≥ 1, pode-se encontrar um vetor p tal que,

p 6= ~0, T p = λp, | λ |≥ 1,

Então a sequência de vetores (T i p)i≥1 não convergirá para ~0 (visto que T i p = λi p).
(3) ⇒ (4). É uma consequência imediata do teorema descrito a seguir.
(4) ⇒ (1). Aplica-se a desigualdade

kT i k ≤ kT ki

para a norma dada em (4).

Teorema 2.6.3

(1) Seja uma matriz quadrada qualquer A e k · k uma norma matricial qualquer (consistente ou não).
Então

ρ(A) ≤ kAk.

(2) Dada uma matriz A e um número  > 0, existe pelo menos uma norma matricial consistente tal
que

kAk ≤ ρ(A) + .

2.6.2 Resultados Particulares de Convergência para os Métodos de Jacobi, de


Gauss-Seidel e de Relaxação
Teorema 2.6.4 (Condição Necessária para a Convergência do Método da Relaxação).
O raio espectral da matriz de iteração de relaxação (por pontos ou por blocos) sempre satisfaz a
desigualdade abaixo;

ρ(Rω ) ≥| ω − 1 | ; ω 6= 0

Como conseqüência, o Método da Relaxação, por pontos ou por blocos, só poderá convergir se 0 < ω < 2.

Demonstração: Sejam λi os autovalores de Rω , i = 1, 2, . . . , n, então,


n
Y
det(Rω ) = λi .
i=1

Mas,
 
det(Rω ) = det (I − ωL)−1 [(1 − ω)I + ωU ] =
87

= det (I − ωL)−1 det ((1 − ω)I + ωU ) =

Mas, L é triangular estritamento inferior, logo,

det (I − ωL)−1 = 1

E, U é triangular estritamente superior, logo,

det ((1 − ω)I + ωU ) = (1 − ω)n

Assim,

det(Rω ) = (1 − ω)n

e
n
Y
= (1 − ω)n ≤ ρn (Rω ) (pois | λ |≤ ρ(Rω ) = max | λi |)
i=1

ρ(Rω ) ≥| 1 − ω |

Para garantir a convergência é necessário e suficiente que ρ(Rω ) < 1, então,

0 ≤| 1 − ω |≤ ρ(Rω ) < 1

| 1 − ω |< 1

−1 < 1 − ω < 1

−2 < −ω < 0

0<ω<2

Exemplo 1.6.1 Seja a matriz


 
 1 −1/2 1/2 
 
 
A=
 1 1 1 

 
 
−1/2 −1/2 1

A matriz do Método de Jacobi é:


 
 0 1/2 −1/2 
 
 
J =
 −1 1 −1 

 
 
1/2 1/2 0

5
cujo raio espectral ρ(J ) = 2 > 1 e portanto o Método de Jacobi diverge.
88

A matriz do Método de Gauss-Seidel é:


 
 0 1/2 −1/2 
 
 
R1 = 
 0 −1/2 −3/2 

 
 
0 0 −1/2

1
cujo raio espectral ρ(R1 ) = 2 < 1 e portanto o Método de Gauss-Seidel converge.

Teorema 2.6.5 (Condição suficiente para a convergência do Método da Relaxação)


Se a matriz A é hermitiana e positiva definida, o método da relaxação converge se 0 < ω < 2.

Teorema 2.6.6 (Comparação dos Métodos de Jacobi e Gauss-Seidel).


Seja A uma matriz tridiagonal por blocos.
Então os raios espectrais das matrizes dos Métodos de Jacobi e Gauss-Seidel correspondentes são
relacionados da seguinte forma:

ρ(R1 ) = (ρ(J ))2

ou seja, ou os dois métodos convergem ou divergem simultaneamente; quando os dois convergem, o


Método de Gauss-Seidel converge mais rapidamente que o Método de Jacobi.

Demonstração:

Teorema 2.6.7 (Comparação dos Métodos de Jacobi e Relaxação).


Seja A uma matriz tridiagonal por blocos, tal que todos os autovalores da matriz do Método de Jacobi
sejam reais.
Então os Métodos de Jacobi por blocos e Relaxação por blocos com 0 < ω < 2 convergem ou divergem
simultaneamente; quando eles convergem, a função ω ∈ (0, 2) → ρ(Rω ) tem o perfil dado pelo gráfico
abaixo: isto é,
2
ρótimo = p
1+ 1 − (ρ(J ))2

Demonstração:
89

EXERCÍCIOS
Exercı́cio 1.6.1
O objetivo deste exercı́cio é mostrar que não se pode dizer nada, em geral, da comparação entre
os Métodos de Jacobi e Gauss-Seidel.

1) Seja a matriz
 
 1 2 −2 
 
 
A=
 1 1 1 

 
 
2 2 1

Mostre que ρ(J ) < 1 < ρ(R1 )

2) Seja a matriz
 
 2 −1 1 
 
 
A=
 2 2 2 

 
 
−1 −1 2

Mostre que ρ(R1 ) < 1 < ρ(J )

Solução:

 −1  
 1 0 0   0 −2 2 
   
J = D −1 (E + F ) = 
   
1)  0 1 0 

 −1
 0 −1 

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

 
 0 −2 2 
 
 
J =  −1
 0 −1 

 
 
−2 −2 0

Logo, os autovalores da matriz do Método de Jacobi são, λ1 = λ2 = λ3 = 0 e portanto ρ(J ) = 0.


 −1  
 1 0 0   0 −2 2 
   
−1    
R1 = (D − E) F =  1 1 0 


 0
 =
0 −1 
   
   
2 2 1 0 0 0
90
   
 1 0 0   0 −2 2 
   
   
R1 = 
 −1 1 0 

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

Logo, os autovalores da matriz do Método de Gauss-Seidel são: λ1 = 0, λ2 = λ3 = 2 e portanto


ρ(R1 ) = 2.
Assim, ρ(J ) < 1 < ρ(R1 ).
 −1  
 2 0 0   0 1 −1 
   
−1
   
2) J = D (E + F ) =  0 2 0 


 −2 0
 −2 

   
   
0 0 2 1 1 0
 
 0 1 −1 
 
1 
J=  −2 0 −2 
2
 

 
1 1 0
√ √
5 5
Logo, os autovalores

da matriz do Método de Jacobi são: λ1 = 0, λ2 = 2 i, λ3 = − 2 i e
5
portanto ρ(J ) = 2 .
 −1  
 2 0 0   0 1 −1 
   
R1 = (D − E)−1 F = 
   
2 2 0  =
−2 
 0 0
  
   
   
−1 −1 2 0 0 0
   
 1/2 0 0   0 1 −1 
   
   
R1 = 
 −1/2 1/2 0 

 0 0
 =
−2 
   
   
0 1/4 1/2 0 0 0
 
 0 1/2 −1/2 
 
 
R1 =  0 −1/2 −1/2 

.
 
 
0 0 −1/2
91

1 1
Logo, os autovalores da matriz do Método de Gauss-Seidel são: λ1 = 0, λ2 = 2, λ3 = 2 e
portanto ρ(R1 ) = 12 .
Assim, ρ(R1 ) < 1 < ρ(J ).
92

Exercı́cio 1.6.2 Método de Gauss-Seidel em Bloco


Seja a seguinte matriz quadrada
 
 5 2 2 
 
 
A= 2 5 3 


 
 
2 3 5

Subdividindo em blocos
 
 5 2 | 2 
 
 
 2
 5 | 3 

AB = 



 — —

| — 

 
 
2 3 | 5

a) Determine o raio espectral ρ da matriz de Gauss-Seidel R1 associada a matriz A.

A=D−E−F

Substituindo no sistema

(D − E)x(k+1) = F x(k) + b

x(k+1) = (D − E)−1 F x(k) + (D − E)−1 b


 
5 0 0
 
(D − E) =  2 5 0 


2 3 5
 
0 −2 −2
 
F = 0
 0 −3 

0 0 0

Logo,
 
1/5 0 0
(D − E)−1
 
=  −2/25
 1/5 0 
−4/125 −3/25 1/5
Podemos agora calcular
 
0 −2/5 −2/5
−1
 
R1 = (D − E) F =  0 4/25 −11/25 


0 8/125 53/125
Calculando os autovalores

λ1 = 0, λ2 = 0.292 + 0.104i, λ3 = 0.292 − 0.104i.


93

Desta forma, ρ = 0.310.


b) Determine ρB = ρ(RB ), onde RB é a matriz associada com o Método de Gauss-Seidel por Blocos
usando a partição indicada.

AB = D B − E B − F B

Substituindo no sistema

(D − E)B x(k+1) = F B x(k) + b

x(k+1) = (D − E)−1
B F Bx
(k)
+ (D − E)−1
B b
 
5 2 0
 
(D − E)B =  2 5 0 


2 3 5
 
0 0 −2
 
FB  0 0 −3 
= 
0 0 0

Logo,
 
5/21 −2/21 0
(D − E)−1
 
B =  −2/21
 5/21 0 
−4/105 −11/105 1/5

Podemos agora calcular


   
0 0 −4/21 0 0 −4
1 
RB = (D − E)−1
  
B FB =  0 0 −11/21  =
   0 0 −11 
21  
0 0 41/105 0 0 41/5

Calculando os autovalores
8.2
λ1 = λ2 = 0, λ3 = = 0.391.
21
Desta forma, ρB = 0.391.
Vemos então que o Método de Gauss-Seidel por bloco converge mais lentamente que o Método
de Gauss-Seidel por pontos.
Chapter 3

Resolução Numérica de Sistemas não


Lineares

3.1 Resolução numérica de sistemas de equações não-lineares


3.1.1 Introdução
De uma maneira geral, estudaremos o problema de determinar um zero de uma função f : IRn −→ IRn ,
que é descrita por n funções reais fk (x1 , x2 , · · · , xn ); k = 1, 2, 3, . . . , n de n variáveis reais x1 , x2 , · · · , xn .
Ou seja,
   
f1 (x1 , x2 , . . . , xn ) x1
   

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


 x2 

   
f (x) = 
 f3 (x1 , x2 , . . . , xn ) ;
 x=
 x3 

 ..   .. 

 . 


 . 

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

O problema de resolver f (x) = ~0 torna-se o de resolver um sistema de equações não-lineares:





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

f (x , x , . . . , xn ) = 0

 2 1 2



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

 .. .. ..
. . .






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

3.1.2 Métodos Iterativos para Sistemas de Equações não Lineares


Normalmente, não é possı́vel determinar um zero α de uma função f explicitamente, então temos que
procurar outros métodos que aproximam a solução. Estes métodos são normalmente iterativos e tem a
seguinte forma:

• Partindo-se de um valor inicial x(0) , novas aproximações sucessivas x(i) , i = 1, 2, . . . são calculadas
com a ajuda de uma função de iteração Φ(x)

x(i+1) = Φ(x(i) ), i = 0, 1, 2, . . .
94
95

Espera-se que no limite a sequência de aproximações convirja para a solução do sistema, isto é

lim x(i) = α
i→∞

Assim como no caso uni-dimensional, algumas questões surgem:

1. Como escolher uma aproximação inicial?

2. Como interromper a geração de novas aproximações?

3. Como podemos encontrar uma função de iteração adequada?

4. Sob que condições a sequência {x(i) } converge?

5. Quão rapidamente a sequência {x(i) } converge?

3.1.3 Critério de Parada


Quando parar o processo iterativo?
Uma maneira de se determinar se a sequência de aproximações gerada pelo método iterativo está
convergindo é verificar se a diferença entre a aproximação e o valor exato do zero está diminuindo.
Seja x(i) o valor aproximado obtido na iteração i e x̄ o valor exato do zero, podemos verificar se

kx(i) − x̄k < 

isto é, se a diferença acima citada é menor que um valor pequeno. Chamamos  de tolerância de parada
ou simplesmente tolerância. k · k denota uma norma definida no IRn .
Entretanto, como não conhecemos o valor exato do zero da função (queremos na verdade
determinar este zero), o teste acima não pode ser efetuado. Substituı́mos o teste acima pelo seguinte
teste.

kx(i+1) − x(i) k < 

A diferença agora é calculada entre duas aproximações sucessivas.


Outro teste que também pode ser realizado é

kx(i+1) − x(i) k
<
kx(i+1) k
ou ainda

kf (x(i) )k < 

Em geral, a norma do IRn usada é a norma do máximo, isto é

kxk = max | xk |
1≤k≤n

3.1.4 Funções de Iteração


Vamos examinar como as funções de iterações podem ser construı́das.
96

3.1.5 Método Iterativo Linear


Algumas vezes as funções de iteração são sugeridas pela formulação do problema. Por exemplo, se a
equação é x − cos x = 0, então é natural tentar um processo iterativo com:

xi+1 = cos xi , i = 0, 1, 2, . . .

ou seja,

Φ(x) = cos x

analogamente ao caso escalar, em que transformavámos a equação f (x) = 0 em x = g(x) e utilizavámos


g(x) como função de iteração.
Mais precisamente, dado um sistema não-linear



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

f (x , x , . . . , xn ) = 0

 2 1 2



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

 .. .. ..
. . .






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

Da primeira equação do sistema explicitamos a incógnita x1 , da segunda equação do sistema a incógnita


x2 , da terceira equação a incógnita x3 , e assim por diante até a última equação do sistema, onde então,
explicitamos a incógnita xn . Assim, reescrevemos o sistema como:

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












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


 x3 = g3 (x1 , x2 , . . . , xn )

..






 .




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

A função de iteração é então definida como


 
 g1 (x1 , x2 , . . . , xn ) 
 
 

 g2 (x1 , x2 , . . . , xn ) 

 
 
g(x) = 
 g3 (x1 , x2 , . . . , xn ) 

 
 .. 

 . 

 
 
gn (x1 , x2 , . . . , xn )

Donde

x(i+1) = g(x(i) )
97

ou

(i+1) (i) (i) (i)
x1 = g1 (x1 , x2 , . . . , xn )







(i+1) (i) (i) (i)





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


(i+1) (i) (i) (i)
 x3 = g3 (x1 , x2 , . . . , xn )

..






 .



 (i+1) (i) (i) (i)
xn = gn (x1 , x2 , . . . , xn )

Logo, se tivermos uma aproximação inicial para a solução do sistema, podemos gerar uma
sequência de aproximações que esperamos convirja para a solução. Isto é,

lim x(i) = α
i→∞

Observação: Assim como no caso unidimensional existem infinitas funções de iteração para f (x) = ~0.
Exemplo 2.1
Seja o sistema de equações não-lineares dado abaixo:
(
x2 + y 2 = 1
x − 2y = 0
ou
(
x21 + x22 = 1
x1 − 2x2 = 0

que pode ser reescrito da forma


 q
1 − x22

 x1
 =

 x2
x1

=
2
ou
 q 
 1 − x22 
x = g(x) = 
 
x1 
2
Como

x(i+1) = g(x(i) )


 r
(i) 2
  
 (i+1)
 x1 = 1 − x2



 (i)
x1

(i+1)


 x2 =


2

Usando como aproximação inicial x(0) = (0.5; 0.5), com uma tolerância  = 0.01, temos
98

Primeira iteração:
       
  √
r  2   q
(0)
1 − (0.5)2
   

 1 − x2  
 
  0.75   0.866025404 
    
(1) (0)
x = g(x ) =  = = =
       

       
(0)
x1 0.5
       
0.25 0.25
       
2 2

Critério de Parada
" # " # " #
(1) (0) 0.866025404 0.5 0.366025404
kx −x k=k − k=k k = 0.366025404 > 
0.25 0.5 −0.25
Segunda iteração:
       

r
(1) 2   q
 
1 − (0.25)2
     

 1 − x2  
 
 
  0.9375   0.968245837 
  
x(2) = g(x(1) ) =  = = =
       

       
(1)
x1   0.866025404
       
0.433012702 0.433012702
     
2 2

Critério de Parada
" # " # " #
0.968245837 0.866025404 0.102220433
kx(2) − x(1) k = k − k=k k = 0.183012702 > 
0.433012702 0.25 0.183012702
Resumindo
(i) (i)
Iteração x1 x2 kx(i) − x(i−1) k
1 0.8660254 0.2500000 0.366025400
2 0.9682459 0.4330127 0.183012700
3 0.9013878 0.4841229 0.066858050
4 0.8750000 0.4506939 0.033429030
5 0.8926786 0.4375000 0.017678560
6 0.8992184 0.4463393 0.008839279

Portanto, uma aproximação para o zero do sistema de equações dado é x̄ = (0.8992184; 0.4463393).

3.1.6 Método de Newton


Outra maneira de criar funções de iteração é gerá-las sistematicamente, como descrito a seguir:
Seja V(α) uma vizinhança em torno do zero α de f (x), então expandindo a função em série de
Taylor em torno de x0 ∈ V(α) temos
(α − x0 )2 00 (α − x0 )k (k)
f (α) = 0 = f (x0 ) + (α − x0 )f 0 (x0 ) + f (x0 ) + · · · + f (x0 + ϑ(α − x0 ))
2! k!
Se as maiores potências (α − x0 )ν são desprezadas, chegamos a equações que expressam o ponto α
aproximadamente em termos de um ponto dado x0 , por exemplo:

0 = f (x0 ) + (ᾱ − x0 )f 0 (x0 )


99

ou
(ᾱ∗ − x0 )2 00
0 = f (x0 ) + (ᾱ∗ − x0 )f 0 (x0 ) + f (x0 )
2!
que fornecem, respectivamente
f (x0 )
ᾱ = x0 −
f 0 (x0 )
e
f 0 (x0 ) ±
p
∗ (f 0 (x0 ))2 − 2f (x0 )f 00 (x0 )
ᾱ = x0 −
f 00 (x0 )
as expressões acima fornecem simplesmente valores próximos do zero desejado, mas elas foram deduzidas
para fornecerem funções de iteração. Dessa maneira, chega-se aos seguintes processos iterativos.

f (x)
xi+1 = Φ(xi ), Φ(x) = x −
f 0 (x)
e
q
f 0 (x) ± (f 0 (x))2 − 2f (x)f 00 (x)
xi+1 = Φ± (xi ), Φ± (x) = x −
f 00 (x)
O primeiro é o clássico método de Newton-Raphson. O segundo é uma extensão óbvia do primeiro
(também chamado Método de Cauchy).
Graficamente temos a seguinte representação:
O método de Newton-Raphson é obtido linearizando-se f . A linearização é também um meio de
construir métodos iterativos para resolver sistemas da forma
 
f1 (x1 , x2 , . . . , xn )
 

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

 = ~0
 
f (x) = 
 f3 (x1 , x2 , . . . , xn ) 
 .. 

 . 

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

Analogamente ao processo usado na obtenção da função de iteração do método de Newton-Raphson,


temos

f (α) = ~0 ≈ f (x(0) ) + Df (x(0) )(α − x(0) )

onde
 
∂f1 ∂f1 ∂f1
 (x) (x) · · · (x) 

 ∂x1 ∂x2 ∂xn 

 
 ∂f2 ∂f2 ∂f2 

(x) (x) · · · (x) 
∂x1 ∂x2 ∂xn
 
Df (x) = 
 

.. .. ..
 
 

 . . . 

 
 
 ∂fn ∂fn ∂fn 
(x) (x) · · · (x)
∂x1 ∂x2 ∂xn
100

e
 (0) 
α1 − x1
 α2 − x(0)
 

(0) 2
α−x =
 
.. 

 . 

(0)
αn − xn

Se Df (x(0) ) é não-singular

f (x(0) ) + Df (x(0) )(x(1) − x(0) ) = ~0

pode ser resolvida para x(1) :


h i−1
x(1) = x(0) − Df (x(0) ) f (x(0) )

e, generalizando para melhores aproximações do zero


h i−1
x(i+1) = x(i) − Df (x(i) ) f (x(i) ) i = 0, 1, 2, . . .

A resolução da equação acima envolve a obtenção da inversa da matriz Df (x(i) ) a cada iteração,
o que é uma tarefa dispendiosa. Podemos contornar este cálculo reescrevendo a equação acima
h i−1
x(i+1) − x(i) = − Df (x(i) ) f (x(i) ) i = 0, 1, 2, . . .

premultiplicando ambos os lados por Df (x(i) ), temos


  h i−1
Df (x(i) ) x(i+1) − x(i) = −Df (x(i) ) Df (x(i) ) f (x(i) ) i = 0, 1, 2, . . .
 
Df (x(i) ) x(i+1) − x(i) = −f (x(i) ) i = 0, 1, 2, . . .

ou

Df (x(i) )∆x = −f (x(i) ) i = 0, 1, 2, . . .

onde

∆x = x(i+1) − x(i)

Desta forma podemos dado x(i) resolver o sistema linear

Df (x(i) )∆x = −f (x(i) ) i = 0, 1, 2, . . .

para ∆x e a seguir calcular a nova aproximação x(i+1) por

x(i+1) = x(i) + ∆x

Note que a cada iteração avaliamos a matriz Df (x(i) ) e resolvemos um sistema linear.
Exemplo 2.2
Seja o seguinte sistema de equações não-lineares,
(
x2 + y 2 = 1
x − 2y = 0
101

ou
(
x21 + x22 = 1
x1 − 2x2 = 0

ou ainda
" # " # " #
f1 (x1 , x2 ) x21 + x22 − 1 0
f (x) = = = = ~0
f2 (x1 , x2 ) x1 − 2x2 0

logo
   
 ∂f1 ∂f1
  2x1 2x2 
 
Df (x) =  ∂x1 ∂x2
 
=
   

 ∂f2 ∂f2  
   
−2

1
∂x1 ∂x2

Usaremos como no exemplo anterior x(0) = (0.5; 0.5) e  = 0.01.


Primeira iteração:

Df (x(0) )∆x = −f (x(0) )


     
(0) (0)
 2x1 2x2   2 × 0.5 2 × 0.5   1 1 
    

(0)
Df (x )= = =
     

     
−2 −2 1 −2
     
1 1

 
 2  2
(0) (0)

 x1 + x2 −1 

"
0.52 + 0.52 − 1
# "
−0.5
#
(0)
f (x )= = = =
 
  0.5 − 2 × 0.5 −0.5
(0) (0)
x1 − 2x2
 

Logo
  

 1 1 
  ∆x1 
   " # " #
−0.5 0.5
=− =
  
 
   −0.5 0.5
1 −2
  
∆x2

Resolvendo o sistema linear obtemos


 

 ∆x1 
  " #
0.5
=
 




 0.0
∆x2

Podemos agora calcular x(1)


" # " # " #
(1) (0) 0.5 0.5 1.0
x =x + ∆x = + =
0.5 0.0 0.5
102

Critério de Parada
" #
(1) (0) 0.5
kx −x k = k∆xk = k k = 0.5 > 
0.0

Segunda iteração:

Df (x(1) )∆x = −f (x(1) )


     
(1) (1)
 2x1 2x2   2 × 1.0 2 × 0.5   2 1 
    

Df (x(1) ) =  = =
     

     
−2 −2 1 −2
     
1 1

 
 2  2
(1) (1)

 x1 + x2 −1 

"
1.02 + 0.52 − 1
# "
0.25
#
f (x(1) ) =  = = =
 
  1.0 − 2 × 0.5 0.0
(1) (1)

 
x1 2x2

Logo
  

 2 1 
  ∆x1 
   " # " #
0.25 −0.25
=− =
  
 
   0.0 0.0
1 −2
  
∆x2

Resolvendo o sistema linear obtemos


 

 ∆x1 
  " #
−0.10
=
 




 −0.05
∆x2

Podemos agora calcular x(2)


" # " # " #
1.0 −0.10 0.9
x(2) = x(1) + ∆x = + =
0.5 −0.05 0.45

Critério de Parada
" #
−0.10
kx(2) − x(1) k = k∆xk = k k = 0.1 > 
−0.05

Resumindo
(i) (i)
Iteração x1 x2 kx(i) − x(i−1) k
1 1.0000000 0.5000000 0.500000000
2 0.9000000 0.4500000 0.100000000
3 0.8944445 0.4472222 0.005555511
103

Portanto, uma aproximação para o zero do sistema de equações dado é x̄ = (0.8944445; 0.4472222).
Observação:

(a) As velocidades de convergência dos métodos multidimensionais são análogas àquelas do caso
unidimensional. Isto é, a convergência do método iterativo linear é linear (Ordem de Convergência
igual a 1) e a convergência do método de Newton é quadrática (Ordem de Convergência igual a
2).

(b) Métodos quasi-Newton.

Como o método de Newton necessita a cada iteração recalcular os elementos de Df (x(i) ) e


resolver o sistema linear. Existem variações do método de Newton que propõem manter a matriz
Df (x(i) ) fixa durante algumas iterações. No caso unidimensional significa manter a derivada fixa
durante algumas iterações.
104

3.2 Métodos Numéricos para determinar os Autovalores e Autove-


tores de uma Matriz
3.2.1 Introdução
Antes de determinar o polinômio caracterı́stico de uma matriz

A ∈ IRn×n ,

vamos citar o seguinte Teorema de Newton:


Teorema 1.7.1 Seja o polinômio
Pn (x) = a0 xn + a1 xn−1 + a2 xn−2 + · · · + an−1 x + an , (3.1)
cujas raı́zes são x1 , x2 , · · · , xn .
Seja ainda
n
X
sk = xki , 1 ≤ k ≤ n. (3.2)
i=1
Então,
k−1
X
ai sk−i + kak = 0, k = 1, 2, 3, · · · , n. (3.3)
i=0
Demonstração:
A demonstração deste teorema pode ser encontrada em Jennings, W - First course in numerical
methods, Ed. Macmillan.
Este teorema nos fornece a relação entre os coeficientes do polinômio e as somas das potências
de suas raı́zes.
Exemplo 1.7.1
Sejam s1 = 6, s2 = 14 e s3 = 36 as somas das potências das raı́zes de um polinômio P3 (x). Para
encontrar este polinômio, escrevemos:

P3 (x) = a0 x3 + a1 x2 + a2 x + a3 ,

Utilizando a relação (3.3) do teorema anterior, obtemos:

k = 1 ⇒ a0 s1 + a1 = 0 ⇒ a1 = −a0 s1 ,

k = 2 ⇒ a0 s2 + a1 s1 + 2a2 = 0 ⇒ 2a2 = −a0 s2 − a1 s1 ,

k = 3 ⇒ a0 s3 + a1 s2 + a2 s1 + 3a3 = 0 ⇒ 3a3 = −a0 s3 − a1 s2 − a2 s1 .

Fazendo a0 = 1 e substituindo nas expressões anteriores, obtemos:

a1 = −62a2 = −14 + 6 × 6 = 22 ⇒ a2 = 113a3 = −36 + 6 × 14 − 11 × 6 = −18 ⇒ a3 = −6

Logo,
P3 (x) = x3 − 6x2 + 11x − 6.
Observação: As raı́zes deste polinômio são: x1 = 1, x2 = 2 e x3 = 3.
Vamos utilizar a seguinte notação para um polinômio caracterı́stico de uma matriz A, n × n:

Pn (λ) = (−1)n (λn − a1 λn−1 − a2 λn−2 + · · · − an−1 λ − an ). (3.4)


105

3.2.2 Método de Leverrier


O Método de Leverrier fornece o polinômio caracterı́stico de uma matriz A, n × n.
Seja uma matriz A, n × n. Se λ1 , λ2 , · · · , λn são autovalores da matriz A e se
n
X
sk = λki , 1 ≤ k ≤ n. (3.5)
i=1

então, pelo teorema (1.7.1), temos:

kak = sk − a1 sk−1 − ak−1 s1 , 1 ≤ k ≤ n. (3.6)

Deste modo, sendo conhecidos os valores de sk , 1 ≤ k ≤ n, podemos determinar os coeficientes


a1 , a2 , · · · , an de Pn (λ).
Determinação de sk
Fazendo a expansão de det(A − λI), o coeficiente de λn−1 em Pn (λ) é:

(−1)n−1 (a11 + a22 + · · · + ann ).

onde aii , i = 1, 2, · · · , n são os elementos da diagonal da matriz A.


Comparando (3.6) com a expressão dos coeficientes de Pn (λ) em (3.4), identificamos:

a1 = (a11 + a22 + · · · + ann ) = tr(A), (3.7)

onde tr(A) é o traço da matriz A.


Daı́, obtemos

s1 = tr(A). (3.8)

Por outro lado, sabemos que os autovalores de Ak são a k-ésima potência dos autovalores da
matriz A. Logo,

sk = tr(Ak ) k = 1, 2, · · · , n, (3.9)

obtendo assim,s1 , s2 , · · · , sn .
Uma vez obtido o polinômio caracterı́stico, podemos encontrar as raı́zes do mesmo pelo Método
de Newton-Bairstow (Método de Newton e Método de Briot-Ruffini ).
Exemplo 1.7.2
Seja a matriz
 
 1 1 −1 
 
 
A=
 0 0 1 

 
 
−1 1 0

Usando o Método de Leverrier, determine os seus autovalores.


Resolução:
106

Das relações (3.8) e (3.9), obtemos:

s1 = tr(A) = 1, s2 = tr(A2 ) = 5, − s3 = tr(A3 ),

onde A2 e A3 são, respectivamente, as matrizes:


   
 2 0 0   2 2 −2 
   
   
, .
 −1 1 0   −1 −1 2 
 
   
   
−1 −1 2 −3 1 0

Utilizando agora, a relação de ai com si , i = 1, 2, 3, obtemos:

a1 = s1 ⇒ a1 = 1,

2a2 = s2 − a1 s1 ⇒ a2 = 2,

3a3 = s3 − a1 s2 − a2 s1 ⇒ a3 = −2.

Substituindo esses valores na fórmula do polinômio caracterı́stico em (3.4), obtemos:

P3 (λ) = (−1)3 (λ3 − a1 λ2 − a2 λ − a3 ) = −λ3 + λ2 + 2λ − 2.

Fatorando o polinômio, encontramos P3 (λ) = (λ − 1)(−λ2 + 2).


√ √
Daı́, encontramos os autovalores λ1 = 1, λ2 = − 2 e λ3 = 2.

3.2.3 Método de Leverrier-Faddeev


O Método de Leverrier-Faddeev consiste em uma simplificação do Método de Leverrier para o cálculo
dos autovalores da matriz A e também permite calcular os seus autovetores.
Inicialmente, definimos uma sequência de matrizes: A1 , A2 , · · · , An , como segue:

A1 = A, b1 = tr(A1 ), B1 = A1 − b1 I;
tr(A2 )
A2 = AB1 , b2 = 2 , B2 = A2 − b2 I;
tr(A3 ) (3.10)
A3 = AB2 , b3 = 3 , B3 = A3 − b3 I;
.. .. ..
. . .
tr(An )
An = ABn−1 , bn = n , Bn = An − bn I.

Propriedades da sequência A1 , A2 , · · · , An
Propriedade 1
Os termos bk obtidos na sequência (3.10) são os mesmos coeficientes ak do polinômio caracterı́stico
(3.4), ou seja:

bk = ak , k = 1, 2, 3, · · · , n.
107

Propriedade 2
Se A é uma matriz n × n, então Bn é a matriz nula n × n.
Demonstração:
Basta observar que a matriz A é a raiz de seu polinômio caracterı́stico (Teorema de Cayley-
Hamilton).
Propriedade 3
Se A é uma matriz não singular n × n, então:
1
A−1 = Bn−1 . (3.11)
an
Demonstração:
A demonstração destas propriedades podem ser encontradas em: Neide Bertoldi Franco - Cálculo
Numérico, Ed. Pearson.
Cálculo dos Autovetores
Teorema 1.7.2 Sejam λ1 , λ2 , · · · , λn autovalores distintos da matriz A. Cada coluna não nula da
matriz:

Qk = λk n−1 I + λk n−2 B1 + · · · + λk Bn−2 + Bn−1 (3.12)

é um autovetor correspondente ao autovalor λk , onde as matrizes Bi , i = 1, 2, · · · , n − 1 são as


matrizes obtidas em (3.10)
Demonstração:
Pode-se provar que Qk é uma matriz não nula quando os autovalores da matriz A são distintos.
Mesmo com λi iguais a matriz Qk pode ser não nula.
Agora, vamos mostrar a afirmativa do teorema em questão.
Ora, substituindo o desenvolvimento de Qk dado em (3.12) em (λk I − A)Qk , obtemos:

(λk I − A)Qk = (λk I − A)λk n−1 I + λk n−2 B1 + · · · + λk Bn−2 + Bn−1 =

= λk n I + λk n−1 (B1 − A) + λk n−2 (B2 − AB1 ) · · · + λk (Bn−1 − ABn − 2) − ABn−1

Agora, subtituindo os valores obtidos em (3.10), temos:

(λk I − A)Qk = λk n I − a1 λk n−1 I − a2 λk n−2 I − · · · − an−1 λk I − an I = Θ,

onde Θ é a matriz nula.

Cálculo dos Autovetores


Como cada coluna não nula da matriz Qk é um autovetor correspondente ao autovalor λk ,
escrevemos:

AX = λk X,

onde X é o autovetor correspondente ao autovalor λk .


Desta forma, utilizamos o seguinte algoritmo:
Algoritmo 1.6.1
108

Para k = 1, 2, 3, . . . , n
X (0) = ek ,
Para i = 1, 2, . . . , n − 1
X (i) = λk X (i−1) + bi ,

onde ek é a k-ésima coluna da matriz identidade e bi é a k-ésima coluna da correspondente matriz


Bi .
O valor encontrado X (n−1) é o autovetor correspondente ao autovalor λk .
Observação:
Observe que de acordo com (3.10), i = 1, 2, · · · , n − 1, pois pela Propriedade 1 Bn = Θ.
Exemplo 1.7.3
Vamos retomar a matriz do exemplo (1.7.2)
 
 1 1 −1 
 
 
A=
 0 0 1 

 
 
−1 1 0

Usando o Método de Leverrier-Faddev, determine os seus autovalores e seus autovetores corre-


spondentes.
Resolução:
I) Para encontrar o polinômio caracterı́stico, vamos construir a sequência de matrizes A1 , A2 , A3 .
Utilizando as relações dadas em (3.10), obtemos:
 
 1 1 −1 
 
 
A1 = 
 0 0  , a1 = tr(A1 ) = 1,
1 
 
 
−1 1 0

onde A1 = A.
 
 0 1 −1 
 
 
B1 = 
 0 −1 ,
1 
 
 
−1 1 −1

onde B1 = A1 − a1 I.
 
 1 −1 1 
 
  tr(A2 )
A2 =  −1

 , a2 =
1 −1  = 2,
  2
 
0 −2 2
109

onde A2 = AB1 .
 
 −1 −1 1 
 
 
 −1 −1 −1  ,
B2 =  
 
 
0 −2 0

onde B2 = A2 − a2 I.
 
 −2 0 0 
 
  tr(A3 )
A3 = 
 0 −2  , a3 =
0  = −2,
  3
 
0 0 −2

onde A3 = AB2 .
Finalmente, obtemos B3 = A3 − a3 I igual a matriz nula 3 × 3.
Substituindo esses valores na fórmula do polinômio caracterı́stico (3.4), obtemos:

P3 (λ) = (−1)3 (λ3 − a1 λ2 − a2 λ − a3 ) = −λ3 + λ2 + 2λ − 2.

II) Agora, vamos encontrar os autovetores correspondentes aos seus autovalores. Para isto,
calculamos:
IIa) para o autovalor λ1 = 1, tomamos o vetor e1 = (1, 0, 0)t como valor inicial. Daı́, temos:
 
 1 
 
(0)
 
X = 0 

,
 
 
0

Em seguida, calculamos:

X (1) = λ1 X (0) + b1 ,

onde b1 é a primeira coluna da matriz B1 . Obtemos como resultado:


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

Finalmente, calculamos:

X (2) = λ1 X (1) + b2 ,
110

onde b2 é a primeira coluna da matriz B2 . Obtemos como resultado:


     
 1   −1   0 
     
X(2) = 1 
     

 +   =
0   −1   −1 

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

O vetor X (2) = (0, −1, −1)t é o autovetor associado ao autovalor λ1 = 1.


Para os outros dois autovalores procede-se de forma similar. Pode-se tomar como valor inicial
X (0) qualquer vetor da base canônica em IR3 , desde que se obtenha um vetor não nulo como resultado.
Chapter 4

Interpolação Polinomial

4.1 Introdução
A palavra interpolação nos faz lembrar dos estudos elementares de geometria e trigonometria, quando
a noção correspondente é utilizada para obter valores mais precisos do que os encontrados em tabelas,
para o seno de um ãngulo ou o logaritmo de um número. Neste caso, estamos falando de uma
interpolação linear, onde usamos uma fórmula para representar uma reta a partir de dois valores
tabelados. Quaisquer pontos do segmento da reta encontrada fornecem valores aproximados para a
função. De uma forma mais geral, a ideia aqui é traçar um polinômio que passe por certo conjunto
de pontos dados e usar o polinômio como aproximação de uma função desconhecida, sendo os pontos
dados os únicos elementos comuns entre a função e o polinômio. A noção de traçado de curvas
por meio de um polinômio é denominada interpolação polinomial, e se aplica em diferenciação
numérica, integração numérica e resolução numérica de equações diferenciais. Existem diversos tipos de
interpolação polinomial. Apresentaremos aqui dois tipos polinômios de interpolação: o de Lagrange,
na forma em que aparecem as ordenadas, o de Newton, na forma de diferenças finitas.
Existência e Unicidade do Polinômio Interpolador
Teorema 1:
Dados os (n + 1) pontos distintos (x0 , f (x0 )), (x1 , f (x1 )), ...., (xn , f (xn )), queremos aproximar
f (x) por um polinômio de grau ≤ n, pn (x) tal que:

f (xk ) = pn (xk ) k = 0, 1, 2, · · · , n.

Prova
Mostraremos que este polinômio existe e é único.
Vamos representar pn (x) por:

pn (x) = a0 + a1 x + a2 x2 + · · · + an xn . (4.1)

Para encontrar pn (x), devemos obter os coeficientes a0 , a1 , · · · , an , de modo que f (xk ) =


pn (xk ), k = 0, 1, 2, · · · , n.

111
112

Dessa condição, montamos o seguinte sistema linear:



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








 a0 + a1 x1 + a2 x21 + · · · + an xn

1 = f (x1 )

(4.2)
 ..
 .






 a0 + a1 xn + a2 x2 + · · · + an xn = f (xn )


n n

com n + 1 equações e n + 1 incógnitas.


A matriz dos coeficientes é:
 
 1 x0 x20 ··· xn0 
 
 

 1 x1 x21 · · · xn1 

 
 
A=
 1 x2 x22 · · · xn2 
 (4.3)
 
 .. .. .. .. .. 

 . . . . . 

 
 
1 xn x2n · · · xnn

conhecida como matriz de Vandermonde e, sabe-se que, desde que (x0 , f (x0 )), (x1 , f (x1 )), ...., (xn , f (xn ))
sejam pontos distintos, tem-se que det(A) 6= 0 e, então o sistema linear admite solução única.
Desta forma, existe um único polinômio pn (x), de grau ≤ n, tal que pn (xk ) = f (xk ), k =
0, 1, 2, · · · , n, desde que xk 6= xj , j 6= k.

4.2 Forma de Interpolação de Lagrange


O polinômio pn (x) que interpola f (x) nos pontos distintos (x0 , f (x0 )), (x1 , f (x1 )), ...., (xn , f (xn )) é
único. Contudo, existem várias formas para se obter tal polinômio. Podemos, por exemplo, proceder à
resolução do sistema linear como dado anteriormente. Outro modo, consiste na forma de interpolação
de Lagrange que descreveremos em seguida.
Sejam , n+1 pontos distintos (x0 , f (x0 )), (x1 , f (x1 )), ...., (xn , f (xn )) e yi = f (xi ), ∀i = 0, 1, · · · , n.
Seja pn (x), o polinômio de grau ≤ n que interpola f (x) em (x0 , f (x0 )), (x1 , f (x1 )), ...., (xn , f (xn )).
Podemos representar pn (x) na forma:

pn (x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x) + · · · + yn Ln (x), (4.4)

onde Lk (x) são polinômios de grau ≤ n. Para cada i, devemos satisfazer a condição pn (xi ) = yi ,
ou seja:

pn (xi ) = y0 L0 (xi ) + y1 L1 (xi ) + y2 L2 (xi ) + · · · + yn Ln (xi ) = yi . (4.5)

Para isto, impomos a condição:


(
6 i
0 se k =
Lk (xi ) = (4.6)
1 se k = i
113

Assim, basta escrever Lk (x) como:

(x − x0 )(x − x1 ) · · · (x − xk−1 )(x − xk+1 ) · · · (x − xn )


Lk (x) = (4.7)
(xk − x0 )(xk − x1 ) · · · (xk − xk−1 )(xk − xk+1 ) · · · (xk − xn )

Nota-se que Lk (xk ) = 1 e Lk (xi ) = 0 se i 6= k.


Como Lk (x) tem n fatores da forma (x − xi ), então Lk (x) é um polinômio de grau n. Assim,
pn (x) é um polinômio de grau ≤ n e pn (xi ) = nk=0 yk Lk (xi ) = yi Li (xi ) = yi = f (xi ).
P

Portanto, escrevemos a forma de interpolação de Lagrange:


n
X
pn (x) = yk Lk (x). (4.8)
k=0

Exemplo 1:
Seja a função f dada por f (x) = ex . Dados os pontos (0, f (0)), (1, f (1)) e (2, f (2)), seja obter
uma aproximação para e1.5 usando o polinômio interpolador de Lagrange de 2o grau.
Solução
Temos os seguintes pontos a serem interpolados:
(0, 1), (1, 2.7183) e (2, 7.3891)
O polinômio que interpola estes pontos é dado por:

p2 (x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x),

onde y0 = 1, y1 = 2.7183, y2 = 7.3891 e

(x − x1 )(x − x2 ) (x − 1)(x − 2) (x − 1)(x − 2)


L0 (x) = = =
(x0 − x1 )(x0 − x2 ) (0 − 1)(0 − 2) 2
(x − x0 )(x − x2 ) (x − 0)(x − 2) x(x − 2)
L1 (x) = = =
(x1 − x0 )(x1 − x2 ) (1 − 0)(1 − 2) −1
(x − x0 )(x − x1 ) (x − 0)(x − 1) x(x − 1)
L2 (x) = = =
(x2 − x0 )(x2 − x1 ) (2 − 0)(2 − 1) 2

Assim, escrevemos p2 (x):

(x − 1)(x − 2) x(x − 2) x(x − 1)


p2 (x) = 1 + 2.7183 + 7.389 .
2 −1 2
de onde obtemos:

p2 (1.5) = 4.6846.

Observe que o Erro absoluto total da aproximação é: 0.2029, uma vez que e1.5 = 4.4817 e
trabalhamos somente com quatro casas decimais.
114

4.3 Forma de Interpolação de Newton


O grau necessário do polinômio interpolador para uma dada precisão, geralmente, não é dado antes do
cálculo do mesmo. O polinômio de interpolação de Newton é uma fórmula explı́cita de tal modo que
podemos utilizar o polinômio de grau n–1 para o cálculo do polinômio de grau n. Assim, podemos
aumentar, sempre que necessário, a precisão de nossa aproximação . A forma de Newton para o
polinômio pn (x) que interpola f (x) em (x0 , f (x0 )), (x1 , f (x1 )), · · · , (xn , f (xn )), n + 1 pontos distintos é
a seguinte:

pn (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + · · · + an (x − x0 )(x − x1 ) · · · (x − xn−1 ). (4.9)

onde as constantes a0 , a1 , a2 , · · · , an são diferenças divididas ak ( ordem k), k = 0, 1, 2, ..., n de f ,


em relação aos argumentos x0 , x1 , x2 , · · · , xk−1 .
Diferenças Divididas
Para determinar a primeira constante a0 , escrevemos pn (x) dado anteriormente e avaliamos pn (x)
em x0 , isto nos fornece a constante a0 , isto é:

a0 = pn (x0 ) = f (x0 ) (4.10)

Da mesma forma, avaliando pn (x) em x1 obtemos:

f (x0 ) + a1 (x1 − x0 ) = pn (x1 ) = f (x1 ) (4.11)

ou ainda,
f (x1 ) − f (x0 )
a1 = (4.12)
(x1 − x0
Definição 1
Definimos a diferença dividida da função f em relação à xi , que denotamos por f [xi], como
sendo:

f [xi ] = f (xi ), (4.13)

dada pelo valor de f em xi .


A diferença dividida da função f em relação à xi e xj , que denotamos por f [xi, xj], é definida
por:
f [xi ] − f [xj ]
f [xi , xj ] = (4.14)
xi − xj

Quando as (k−1)-ésimas diferenças divididas f [xi , xi+1 , xi+2 , · · · , xi+k+−1 ] e f [xi+1 , xi+2 , · · · , xi+k−1 , xi+k ]
são ambas determinadas, a k–ésima diferença de f relativa à xi , xi+1 , · · · , xi+k é dada por:
f [xi+1 , xi+2 , · · · , xi+k−1 , xi+k ] − f [xi , xi+1 , xi+2 , · · · , xi+k+−1 ]
f [xi , xi+1 , xi+2 , · · · , xi+k+−1 , xi+k ] = (4.15)
xi+k − xi
Temos que a1 pode ser expressa como a diferença dividida:
f [x1 ] − f [x0 ]
a1 = f [x0 , x1 ] = (4.16)
x1 − x0
115

Por manipulações algébricas, expressamos ak pela diferença dividida:

ak = f [x0 , x1 , x2 , · · · , xk ] para k = 0, 1, 2, ..., n. (4.17)

Assim, podemos reescrever o polinômio de Newton pn (x), dado inicialmente, como sendo:

pn (x) = f [x0 ] + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ) + · · ·+


f [x0 , x1 , x2 , · · · , xn ](x − x0 )(x − x1 ) · · · (x − xn−1 ). (4.18)

Quando os pontos (x0 ), (x1 , ), · · · , (xn ) são dispostos consecutivamente e igualmente espaçados, o
polinômio de Newton pn (x) pode ser representado de forma mais conveniente para fins computacionais.
Para isto, introduzimos a notação h = xi+1 − xi , i = 0, 1, ..., n − 1 e x = x0 + s h. As diferenças x − xi
podem ser reescrita como x − xi = (s − i) h , e assim pn (x) fica:

pn (x) = pn (x0 + sh) = f [x0 ] + shf [x0 , x1 ] + s(s − 1)h2 f [x0 , x1 , x2 ] + · · ·+


s(s − 1) · · · (s − n + 1)hn f [x0 , x1 , x2 , · · · , xn ]. (4.19)

Essa fórmula é conhecida como fórmula interpolante de Newton com diferenças pro-
gressivas quando h > 0 e como fórmula interpolante de Newton com diferenças regressivas
quando h < 0.

Tabela de Diferenças Divididas


xi f (xi ) 1a Dif Div 2a Dif Div 3a Dif Div 4a Dif Div
x0 f (x0 )
x1 f (x1 ) f [x0 , x1 ]
x2 f (x2 ) f [x1 , x2 ] f [x0 , x1 , x2 ]
x3 f (x3 ) f [x2 , x3 ] f [x1 , x2 , x3 ] f [x0 , x1 , x2 , x3 ]
x4 f (x4 ) f [x3 , x4 ] f [x2 , x3 , x4 ] f [x1 , x2 , x3 , x4 ] f [x0 , x1 , x2 , x3 , x4 ]
x5 f (x5 ) f [x4 , x5 ] f [x3 , x4 , x5 ] f [x2 , x3 , x4 , x5 ] f [x1 , x2 , x3 , x4 , x5 ]
Exemplo 2:
Dada a tabela abaixo,
xi f(xi )
1.0 0.7651977
1.3 0.6200860
1.6 0.4554022
1.9 0.2818186
2.2 0.1103623
seja determinar uma aproximação para f (1.1) usando o polinômio de Newton de grau 4.
Solução

Tabela de Diferenças Divididas


xi f (xi ) 1a Dif Div 2a Dif Div 3a Dif Div 4a Dif Div
1.0 0.7651977
1.3 0.6200860 -0.4832057
1.6 0.4554022 -0.5489460 -0.1087339
1.9 0.2818186 -0.5786120 -0.0494433 0.0658784
2.2 0.1103623 -0.5715180 0.0118233 0.0680740 0.0018297
116

Usando diferenças progressivas obtemos:

1 1 1 2
f (1.1) = p4 (1.0 + (0.3)) = 0.7651977 + × 0.3 × (−0.4832057) + × (− ) × 0.32 × (−0.1087339)+
3 3 3 3
1 2 5 1 2 5 8
× (− ) × (− ) × 0.33 × (0.0658784) + × (− ) × (− ) × (− ) × 0.34 × (0.0018297) = 0.7196480.
3 3 3 3 3 3 3

4.4 Erro na Interpolação Polinomial


Ao se aproximar uma função f por um polinômio interpolador de grau leqn, comete-se um erro, ou
seja:

En (x) = f (x) − pn (x), ∀x ∈ [x0 , xn ] (4.20)

Exemplo 3:
Na aproximação de por um polinômio em [0,2], no Exemplo 1, obtivemos o seguinte polinômio
de Lagrange:

(x − 1)(x − 2) x(x − 2) x(x − 1)


p2 (x) = 1 + 2.7183 + 7.389 .
2 −1 2

O erro cometido na interpolação de f (x) = ex por este polinômio de Lagrange p2 (x) quando
x = 1.5 foi E2 (1.5) = 0.2029, onde aqui estão considerados o erro da aproximação da função por este
polinômio e os erros de arredondamento. Caso utilize um polinômio p1 (x) para aproximar f (x) = ex
em [0, 2], espera-se que o erro seja bem maior. Aliás, o erro irá depender da concavidade da curva, ou
00
seja, de f (x) , como veremos no teorema a seguir, a expressão exata do erro quando aproxima-se f (x)
por pn (x) .
Erro do Polinômio Interpolador
Teorema 2:
Sejam pontos x0 < x1 < · · · < xn−1 < xn , n + 1 pontos. Seja a função f com derivadas contı́nuas
até ordem (n + 1), ∀x ∈ [x0 , xn ]. Então, ∀x ∈ [x0 , xn ] o erro é dado por:

f (n+1)
En (x) = f (x) − pn (x) = (x − x0 )(x − x1 ) · · · (x − xn ) (ξx ), ξx ∈ (x0 , xn ). (4.21)
(n + 1)!

Prova:
(A prova deste teorema pode ser encontrada em Ruggiero Lopes, Cálculo Numérico: Aspectos
Teóricos e Computacionais).
A fórmula exata do erro para En (x) dada por este teorema é teórica e é utilizada na obtenção de
estimativas de erro para as fórmulas de interpolação, diferenciação e integração numérica. Na prática,
utiliza-se uma cota superior do erro cometido, uma vez que o ponto nunca é conhecido e também,
quando são conhecidos somente os pontos interpolantes.
Sendo assim, damos os seguintes corolários:
Corolário 1:
117

Sob as hipóteses do Teorema 2 e se f (n+1) for contı́nua em I = [x0 , xn ], podemos escrever a


seguinte relação:

Mn+1
|En (x)| = |f (x) − pn (x)| ≤ |(x − x0 )(x − x1 ) · · · (x − xn )| , (4.22)
(n + 1)!

onde Mn+1 = maxx∈I |f (n+1) (x)|.


Prova:
Mn+1 existe, pois por hipótese, f (n+1) é contı́nua em I = [x0 , xn ]. Então,
|f (n+1) (x)| ≤ Mn+1 , ∀x ∈ [x0 , xn ].
Assim,

Mn+1
|En (x)| = |f (x) − pn (x)| ≤ |(x − x0 )(x − x1 ) · · · (x − xn )| .
(n + 1)!

Corolário 2:
Sob as hipóteses anteriores e se os pontos forem igualmente espaçados, isto é,h = x1 − x0 =
x2 − x1 = · · · = xn − xn−1 , então

hn+1 Mn+1
|En (x)| < . (4.23)
4(n + 1)

Observações:
1) No Corolário 2, o limitante superior para o erro independe do ponto x considerado, x ∈ [x0 , xn ]
.
2) Para o polinômio interpolador de Newton, podemos construir a tabela de diferenças divididas
até ordem (n + 1) e usar a maior valor (em módulo) das diferenças divididas de ordem (n + 1) para
aproximar Mn+1 , ou seja:

|En (x)| = |f (x) − pn (x)| ≤ |(x − x0 )(x − x1 ) · · · (x − xn )| max |Dif.Div.ordem(n + 1)|. (4.24)
x∈I

Exemplo 4:
Seja f (x) = ex + x − 1. Utilizando a tabela abaixo, obter uma aproximação para f (0.7) por
interpolação linear (p1 (x)) e fazer uma análise do erro cometido.
xi f(xi )
0.0 0.0000
0.5 1.1487
1.0 2.7183
1.5 4.9811
2.0 8.3810
Solução
1o ) Polinômio interpolante p1 (x) de Newton:

p1 (x) = f (x0 ) + f [x0 , x1 ](x − x0 )

Como x = 0.7, tomamos x0 = 0.5 e x1 = 1.0.


118

Assim,

2.7183 − 1.1487
p1 (x) = 1.1487 + (x − 0.5)
1.0 − 0.5

= 1.1487 + 3.1392(x − 0.5)

Logo, p1 (0.7) = 1.7765.


2o.) Cota superior do erro:
Usando o Corolário 1, temos a seguinte cota superior do erro:

M2
|E1 (x)| = |f (x) − p1 (x)| ≤ |(x − x0 )(x − x1 )| ,
2!
00
onde M2 = maxx∈I |f ( ) (x)| = e.
Portanto,

7.7183
|E1 (0.7)| ≤ |(0.7 − 0.5)(0.7 − 1)| = 0.08515.
2
Observe que esta cota está dentro dos limites do erro exato, dado por:

|E1 (0.7)| = |f (0.7) − p1 (0.7)| = 0.0628.

Outro modo de se obter a cota superior do erro será utilizar o máximo das diferenças divididas
de ordem 2, dada por: 2.2742.

Tabela de Diferenças divididas


xi f (xi ) 1a Dif Div 2a Dif Div
0.5 1.1487
1.0 2.7183 3.1392
1.5 4.9811 4.5256 1.3864
2.0 8.3810 6.7998 2.2742

Desta forma, a cota superior do erro fica:

|E1 (0.7)| ≤ |(0.7 − 0.5)(0.7 − 1)| × 2.2742/2 = 0.0682.

Observe que esta cota também está dentro dos limites do erro exato.
Exemplo 5:
Dada a tabela a seguir, seja obter uma aproximação para f(0.47) usando um polinômio interpolador
de Newton do 2o. grau e também calcular uma estimativa para o erro cometido nesta aproximação.
119

Solução

Tabela de Diferenças Divididas


xi f (xi ) 1a Dif Div 2a Dif Div 3a Dif Div
x0 = 0.20 0.16
x1 = 0.34 0.22 0.4286
x2 = 0.40 0.27 0.8333 2.0235
x3 = 0.52 0.29 0.1667 -3.7033 -17.8963
x4 = 0.60 0.32 0.3750 1.0415 18.2494
x5 = 0.72 0.37 0.4167 0.2085 -2.6031

Como pretendemos encontrar uma aproximação em x = 0.47, vamos interpolar f (x) em


(x2 , f (x2 )), (x3 , f (x3 )) e (x4 , f (x4 )), pois 0.47 ∈ [x2 , x4 ].
Assim, obtemos:

p2 (x) = f [x2 ] + f [x2 , x3 ](x − x2 ) + f [x2 , x3 , x4 ](x − x2 )(x − x3 ) = 0.27 + (x − 0.40) × 0.1667 + (x − 0.40)(x − 0

|E2 (0.47)| ≤ |(0.47 − 0.40)(0.47 − 0.52)(0.47 − 0.60)| × 18.2494 = 1.3838 × 10−3

onde tomamos max |3aDif | = 18.2494.


Chapter 5

Ajuste de Curvas

5.1 Introdução
O problema básico em ajuste de curvas pode ser descrito como segue:
“Temos um conjunto de valores de medida de uma quantidade x, e um conjunto associado de
valores de medida de outra quantidade y. Queremos encontrar alguma função f tal que y = f (x)
que satisfaça nosso conjunto de valores de medida (x1 , y1 ), (x2 , y2 ), ..., (xn , yn ), que nos permita inferir
valores razoáveis de y para outros valores de x, onde não temos nenhuma medida”.
Limitaremos nosso problema de ajuste de curvas onde:

y = c1 f1 (x) + c2 f2 (x) + · · · + cm fm (x), (5.1)

onde as funções f1 (x), f2 (x), · · · , fm (x) são funções conhecidas em x e as constantes c1 , c2 , · · · , cm


são indeterminadas e aparecem na forma linear. No caso, se temos n valores de medidas (x1 , y1 ), (x2 , y2 ), ..., (xn , yn ),
temos que este conjunto deve satisfazer a seguinte equação:

c1 f1 (x1 ) + c2 f2 (x1 ) + c3 f3 (x1 ) + · · · + cm fm (x1 ) = y1








 c1 f1 (x2 ) + c2 f2 (x2 ) + c3 f3 (x2 ) + · · · + cm fm (x2 ) = y2


(5.2)
 ..



 .




c1 f1 (xn ) + c2 f2 (xn ) + c3 f3 (xn ) + · · · + cm fm (xn ) = yn

Se n = m, existe exatamente uma solução (desde que o determinante dos coeficientes seja
diferente de zero) , isto é, existe um conjunto de valores c1 , c2 , · · · , cm que satisfaz a equação acima. Se
n < m, existem menos equações do que incógnitas e existe um número infinito de soluções, cada qual
representando uma curva passando através dos pontos dados. Se n > m, existem mais equações do
que incógnitas, e não existe solução. Neste caso, procuramos uma solução no sentido dos “quadrados

120
121

mı́nimos”. Para isto, escrevemos as equações em (6.2 na forma:



c1 f1 (x1 ) + c2 f2 (x1 ) + c3 f3 (x1 ) + · · · + cm fm (x1 ) − y1 = δ1








 c1 f1 (x2 ) + c2 f2 (x2 ) + c3 f3 (x2 ) + · · · + cm fm (x2 ) − y2 = δ2


(5.3)
 ..



 .




c1 f1 (xn ) + c2 f2 (xn ) + c3 f3 (xn ) + · · · + cm fm (xn ) − yn = δn

As quantidades δ1 , δ2 , · · · , δn são “residuais”. Para um ajuste perfeito, estes resı́duos deveriam


ser nulos. Uma vez que, os mesmos não são nulos, devemos torná-los tão pequenos de forma a encontrar
valores c1 , c2 , · · · , cm que minimizam a expressão δ12 + δ22 + · · · + δn2 .
O sistema equações anterior, pode ser escrito na forma abreviada:
m
X
= ci fi (xj ) − yj = δj , , j = 1, 2, · · · , n (5.4)
i=1

e devemos escolher os coeficientes ci tais que:


n
X
δj2 = min! (5.5)
i=1

A condição necessária para este mı́nimo é que as derivadas parciais de cada ci devam anular, ou
seja:
n
∂ X
( δ 2 ) = 0, para k = 1, 2, · · · , m (5.6)
∂ck j=1 j

ou
n
X ∂δj
δj = 0, para k = 1, 2, · · · , m (5.7)
i=1
∂ck

De (6.4), obtemos:

∂δj
= fk (xj ), para j = 1, 2, · · · , n e k = 1, 2, · · · , m (5.8)
∂ck

Substituindo o valor de δj em (6.7) e (6.8), obtemos:


n X
X m
( ci fi (xj ) − yj ) fk (xj ) = 0, para k = 1, 2, · · · , m (5.9)
j=1 i=1

ou
m
X n
X n
X
ci fi (xj ) fk (xj ) = yj fk (xj ), para k = 1, 2, · · · , m (5.10)
i=1 j=1 j=1

Este é um sistema de m equações lineares nas incógnitas c1 , c2 , · · · , cm , que é a solução do


problema de minimização.
Trataremos aqui o caso do ajuste por um polinômio linear (ajuste linear).
122

5.2 Ajuste de Curvas por um Polinômio Linear


Para simplicidade de estudo, vamos supor que a nossa curva, de acordo com os dados obtidos, tenha
uma configuração de uma função linear ( uma reta ).
Escrevemos:

f (x) = c1 x + c0 (5.11)

Desta forma, o problema (6.5) fica:


n
X n
X
δj2 = (c1 xj + c0 − yj )2 = min! (5.12)
i=1 i=1

Para que ni=1 δj2 em (6.11) seja mı́nimo devemos ter que as derivadas parciais deste somatório
P

em relação aos ci 0 s sejam nulas. Assim:


∂ Pn 2 = nj=1 2 (c1 xj + c0 − yj )(+1) = 0
P
∂c0 ( j=1 δj ) (5.13)
n
∂ 2 = nj=1 2 (c1 xj + c0 − yj )(xj ) = 0
P P
∂c1 ( j=1 δj )

O que resulta em:

n c0 + ( nj=1 xj ) c1 = nj=1 yj
P P
(5.14)
( nj=1 xj ) c0 + ( nj=1 xj 2 ) c1 = nj=1 xj yj
P P P

De (6.14) obtemos os valores de c0 e c1 , ou seja:


Pn
yj nj=1 xj 2 − nj=1 xj nj=1 xj yj
P P P
j=1
c0 = (5.15)
n nj=1 xj 2 − ( nj=1 xj )2
P P

Pn
xj yj − nj=1 xj nj=1 yj
P P
n j=1
c1 = (5.16)
n j=1 xj 2 − ( nj=1 xj )2
Pn P

Levando os resultados de (6.15) e (6.16) na equação f (x) = c1 x + c0 , obtemos a reta que


melhor se ajusta ao conjunto de dados pelo método dos mı́nimos quadrados, também chamada de
regressão linear de y em x.
Exemplo 1:
Seja fazer uma regressão linear dada a seguinte tabela:

Índice j xj yj xj 2 xj yj
1 1 1 1 1
2 3 2 9 6
3 4 4 16 16
4 6 4 36 24
5 8 5 64 40
6 9 7 81 63
7 11 8 121 88
8 14 9 196 126
P
56 40 524 364
123

De acordo com as fórmulas em (6.15) e (6.16), obtemos:


40 × 524 − 56 × 364 6
c0 = 2
=
8 × 524 − 56 11
8 × 364 − 56 × 40 7
c1 = 2
=
8 × 524 − 56 11
Daı́, obtemos a seguinte equação da reta que melhor se ajusta ao conjunto dos pontos dados:
7 6
f (x) = x+
11 11

5.3 Coeficiente de Determinação


Para avaliar se a função de ajuste escolhida é adequada ao conjunto de pontos considerado, utiliza-se
uma medida de ajuste, denominada coeficiente de determinação (R2 ), definida pela expressão:
Pn 2
j=1 (yj − f (xj ))
R2 = 1 − Pn 2 (5.17)
j=1 (yj − ȳ)

onde
Pn
j=1 yj
ȳ = (5.18)
n
Para o caso de ajuste linear, verifica-se que o coeficiente de determinação é o quadrado do
coeficiente de correlação de Pearson (R) , daı́ a notação (R2 ). O valor de (R2 ) está entre 0 e 1, e o
melhor ajuste é obtido para o valor próximo de 1.
O coeficiente de correlação de Pearson (R) calcula-se segundo a seguinte fórmula:
Pn
j=1 (xj − x̄)(yj − ȳ)
R = qP qP (5.19)
n
j=1 (xj − x̄)2 n
j=1 (yj − ȳ)2

onde
Pn Pn
j=1 xj j=1 yj
x̄ = , ȳ = (5.20)
n n
Exemplo 2:
Para o Exemplo 1, dado anteriormente, obtemos:

Índice j xj yj f (xj ) (yj − f (xj ))2 (yj − ȳ)2


1 1 1 1.1818 0.033050 16
2 3 2 2.4545 0.206570 9
3 4 4 3.0909 0.826460 1
4 6 4 4.3636 0.132200 1
5 8 5 5.6364 0.405000 0
6 9 7 6.2727 0.528970 4
7 11 8 7.5454 0.206570 9
8 14 9 9.4545 0.206570 16
P
56 40 - 2.545400 56
124

Daı́,
40
ȳ = =5
8
e
2.5454
R2 = 1 − = 0.95455
56
Como R2 é próximo de 1,o ajuste é ótimo.

5.4 Redução ao Ajuste Linear


Em muitos casos, os dados possuem comportamento que não estão na forma linear expressa em (6.12).
Contudo, podem existir transformações que levam à forma linear. Seja um conjunto de n pontos e a
função de ajuste não linear y = f (x) com parâmetros a(c0 ) e b(c1 ). Se essa função pode ser linearizada,
ela se transformará na forma:

Y =BX +A (5.21)

onde

Y = f1 (y), X = f2 (x), a = f3 (A), b = f4 (B) (5.22)

Para isto,

A = f3 −1 (a), B = f4 −1 (b) (5.23)

sendo que f1 , f2 , f3 −1 e f4 −1 são funções que admitem tais transformações.


Para o coeficiente de determinação, utiliza-se a mesma fórmula do modelo linear na função não
linear que foi linearizada.
A seguir, apresentamos algumas funções que podem ser linearizadas e suas formas de linearização.
1 – Função do tipo

f (x) = a e−bx , a > 0, b > 0 (5.24)

Neste caso, a linearização pode ser feita do seguinte modo:

Y = ln(f (x)) = −bx + ln(a)

Colocando Y = ln(f (x)) e A = ln(a), B = −b, tem-se:

Y = BX + A

onde A e B podem ser determinados através do ajuste linear pelos mı́nimos quadrados.
2 – Função do tipo
1
f (x) = , bx + a 6= 0 (5.25)
bx + a
125

Aqui, a linearização é feita pela inversão da função f , ou seja:

1
Y = = BX + A
f (x)

Neste caso, os parâmetros A e B se ajustam à inversa da função f .


3 – Função do tipo

f (x) = a bx , f > 0 (5.26)

Como f > 0 , tem-se:

Y = ln(f (x)) = ln(b) x + ln(a)

Colocando A = ln(a) e B = ln(b), tem-se :

Y = BX + A

onde A e B podem ser determinados através do ajuste linear pelos mı́nimos quadrados.
4 – Função do tipo

f (x) = a xb , f > 0, x > 0 (5.27)

Como f > 0, x > 0, tem-se:

Y = ln(f (x)) = b ln(x) + ln(a)

Colocando A = ln(a), B = b e X = ln(x), tem-se:

Y = ln(f (x)) = B ln(x) + A = BX + A

Exemplo 3:
Dados os pontos tabelados:

Índice j xj yj
1 10 1.293
2 20 1.000
3 30 0.800
4 40 0.654
5 50 0.546

Ajuste este conjunto de pontos à função não linear

f (x) = a ebx , a > 0

Como a função é linearizada de acordo com a função do tipo 1, temos de tomar Yj = ln(yj ).
Assim, montamos a tabela:
126

Índice j xj yj xj 2 ln(yj xj ∗ ln(yj )


1 10 1.293 100 0.2570 2.5697
2 20 1.000 400 0 0
3 30 0.800 900 -0.02231 -6.6943
4 40 0.654 1600 -0.4246 -16.9859
5 50 0.546 2500 -0.6051 -30.2568
P
150 - 5500 -0.99596 -51.3674

Daı́, obtemos de acordo com as fórmulas em (6.15) e (6.16):

−0.99596 × 5500 − 150 × (−51.3674)


A= = 0.44547
5 × 5500 − 1502
e
5 × (−51.3674) − 150 × (−0.99596)
B= = −0.021489
5 × 5500 − 1502

Como a = eA , obtemos a = 1.5612.


Logo,

Y = 1.5612 e−0.021489x

O valor de R2 = 0.994, que é próximo de 1. Portanto, o ajuste é ótimo.


Chapter 6

Integração Numérica

6.1 Introdução
Sabemos do Cálculo Diferencial e Integral, que se f é uma função contı́nua para x ∈ [a, b] ⊆ R ,
então esta função tem uma primitiva neste intervalo, ou seja, existe F para x ∈ [a, b] ⊆ R tal que
0
F (x) = f (x), assim:
Z b
I= f (x) dx = F (b) − F (a) (6.1)
a

Muitas vezes, não é fácil expressar esta função primitiva por meio de combinações de funções
elementares. Neste caso, quando conhecidos os valores de f (x) no intervalo [a, b], utilizamos os métodos
de integração numérica.
A ideia básica da integração numérica é a substituição de f (x) por um polinômio interpolador
no intervalo [a, b]. Este, por sua vez, é facilmente integrado.

6.1.1 Fórmulas de Newton-Cotes


Nas fórmulas de Newton-Cotes, aproximamos f (x) por um polinômio interpolante em pontos de [a, b],
igualmente espaçados.
Dado o intervalo [a, b], o particionamos em subintervalos [xi , xi+1] de amplitude:

h = xi+1 − xi , i = 0, 1, 2, · · · , n − 1

As fórmulas fechadas de Newton-Cotes são fórmulas de integração, com x0 = a, xn = b, do tipo:


Z b Z xn
I= f (x) dx = f (x) dx = A0 f (x0 ) + A1 f (x1 ) + · · · + An f (xn ) (6.2)
a x0

onde os coeficientes Ai são determinados de acordo com o grau do polinômio interpolador.


Veremos aqui, o Método dos Trapézios, o Método de Simpson e o Método de Romberg.

127
128

6.2 Métodos de Newton-Cotes


6.2.1 Método dos Trapézios
No Método dos Trapézios, utilizamos o polinômio de grau 1 (p1 (x)) para interpolar f (x) em x0 = a
e x1 = b. Assim, temos:
Z b Z x1 Z x1
x − x1 x − x0
f (x) dx ∼
= p1 (x) dx = [ f (x0 ) + f (x1 )]dx (6.3)
a x0 x0 −h h

Resolvendo esta integral, obtemos:

x2 x2
Z x1
xx1 x1 x0 x x1
p1 (x) dx = (− + )|x0 f (x0 ) + ( − )| f (x1 ) =
x0 2h h 2h h x0

x1 2 2x0 x1 x1 2 2x0 x1
[ + x0 2 2h − ] f (x0 ) + [ + x0 2 2h − ] f (x1 ) =
2h 2h 2h 2h

(x1 − x0 )2 (x1 − x0 )2 h
f (x0 ) + f (x1 ) = [f (x0 ) + f (x1 )]
2h 2h 2
Portanto, temos:

h
IT = [f (x0 ) + f (x1 )] (6.4)
2
que é a área do trapézio de altura h = x1 − x0 e bases f (x0 ) e f (x1 ). Graficamente, temos:

y
y = f (x)

+ x
a x= a+b b
2

Figure 6.1: Ilustração gráfica do Método dos Trapézios


129

Quando aproximamos ab f (x) dx pela regra dos Trapézios, cometemos um erro, e este é deduzido
R

por integração da expressão:


Z x1 Z x1 00
f (ξx )
f (x) dx = IT + (x − x0 )(x − x1 ) dx (6.5)
x0 x0 2!

Portanto, o erro é dado por:


Z x1 00 Z x1 00
f (ξ) f (ξx )
ET = (x − x0 )(x − x1 ) dx = g(x) dx (6.6)
x0 2! x0 2!

onde g(x) = (x − x0 )(x − x1 ).


00
Como f é função de x, utilizamos o teorema do valor médio para integrais, onde obtemos:
00 Z x1
f (c)
ET = g(x)dx, c ∈ (x0 , x1 ). (6.7)
2 x0

R x1 3
Como x0 g(x)dx = − h6 , temos finalmente:

h3 00
ET = − f (c), c ∈ (x0 , x1 ). (6.8)
12
Regra dos Trapézios Repetida
Vemos que o erro na Regra dos Trapézios depende da amplitude do intervalo. Assim, quanto
maior ovalor de h maior será o erro cometido, dando valores não muito exatos para a integral. Neste caso,
subdividimos o intervalo [a, b] em subintervalos [xi , xi+1 ] de amplitude h = xi+1 −xi , i = 0, 1, 2, · · · , n−1
e aplicamos a Regra dos Trapézios. Assim, obtemos para os n subintervalos [xi , xi+1 ]:
Z xn Z xi+1 3 f 00 (c )
n−1 n−1 h n−1 h i
X X X
f (x) dx = i=0 f (x)dx = i=0 [f (xi )+f (xi+1 ]− i=0 , ci ∈ (xi , xi+1 )(6.9)
x0 xi 2 12
00
Supondo f contı́nua em [a, b], utilizando o teorema do valor médio temos que existe ξ ∈ [a, b]
tal que:

n−1 00 00
X
i=0 f (ci ) = nf (ξ)

Assim,

h
IT r = [f (x0 ) + 2f (x1 ) + 2f (x2 ) + · · · + 2f (xn−1 + f (xn )] (6.10)
2
e

n h3 00
ET r = − f (ξ) (6.11)
12
Na verdade, utilizamos a cota superior do erro:

n h3
|ET r | ≤ M2 (6.12)
12
00
onde M2 = max |f (x)|, x ∈ [a, b]
130

Ou ainda:

(b − a) n h2 (b − a)h2
|ET r | ≤ M2 = M2 (6.13)
n 12 12

pois h = b−a
n .
Exemplo 1
Seja aproximar 01 ex dx usando a Regra dos Trapézios Repetida de modo que |ET r | ≤ 10−3 .
R

Solução
De acordo com a fórmula em 6.3 devemos obter:
(1 − 0) 2
h M2 < 10−3
12
onde M2 = max ex para x ∈ [0, 1] , ou seja: M2 = e.
Portanto,
Para isto, podemos tomar h < 0.0625, ou seja, n = h1 ≥ 16.
Daı́, calculamos a aproximação:

1/16
IT r = [f (x0 ) + 2f (x1 ) + 2f (x2 ) + · · · + 2f (x15 + f (x16 )]
2

6.2.2 Método de Simpson


Procedemos da mesma forma que a Regra dos Trapézios, mas ao invés de tomarmos áreas de
trapézios para aproximar a área em um intervalo de amplitude h, usaremos a área sob uma parábola
para aproximar a área em dois subintervalos adjacentes de amplitude h.
Seja p2 (x) o polinômio que interpola f (x) nos pontos x0 = a, x1 = x0 + h e x2 = x0 + 2h = b.
Assim, temos:
Z b Z x2
f (x) dx ∼
= p2 (x) dx (6.14)
a x0

onde
Z x2 Z x2 Z x2 Z x2
f (x0 ) f (x1 f (x2 )
p2 (x) dx = (x−x1 )(x−x2 )dx− 2 (x−x0 )(x−x2 )dx+ (x−x0 )(x−x1 )dx(6.15)
x0 2h2 x0 h x0 2h2 x0

Fazendo a mudança das variáveis x–x0 = zh, temos que dx = h dz e x = x0 + h, e a integral


(6.15) fica:
Z 2 Z 2 Z 2
f (x0 ) f (x2 ) h
IS = (z − 1)(z − 2)dz − f (x1 ) h z(z − 2)dz + z(z − 1)dz (6.16)
2h2 0 0 2 0

Resolvendo esta integral, obtemos:

h
IS = [f (x0 ) + 4 f (x1 ) + f (x2 )] (6.17)
3
que é a fórmula para a Regra de Simpson.
131

Pode-se mostrar que a expressão do erro de truncamento desta fórmula, supondo f (iv) contı́nua
em [x0 , x2 ] é:

h5 iv
ES = − f (ξ), ξ ∈ (x0 , x2 ) (6.18)
90
Regra de Simpson Repetida
Vamos encontrar agora a fórmula para a Regra de Simpson Repetida no intervalo [a, b] =
[x0 , xm ]. Para isto, vamos tomar x0 , x1 , x2 , · · · , xm pontos igualmente espaçados, onde m é par e
h = xi+1 –xi .
Observação: m deve ser par, pois cada parábola utiliza três pontos consecutivos.
Em cada número par de subintervalos, temos:

h5 iv
Z x2k
h
f (x) dx = [f (x2k−2 ) + 4 f (x2k−1 + f (x2k ] − f (ck ) (6.19)
x2k−2 3 90

onde ck ∈ (x2k−2 , x2k ), k = 1, 2, · · · , m/2


Daı́,

h5 iv
Z xn X m/2 Z x2k X m/2 h X m/2
f (x) dx = k=1 f (x)dx = k=1 [f (x2k−2 )+4 f (x2k−1 )+f (x2k )]+ k=1 − f (ck )(6.20)
x0 x2k−2 3 90

onde ck ∈ (x2k−2 , x2k ), k = 1, 2, · · · , m/2


Portanto,

h
ISr = {f (x0 )+f (xm )+4 [f (x1 )+f (x3 +· · ·+f (xm−1 )]+2 [f (x2 )+f (x4 )+· · ·+f (xm−2 )}(6.21)
3
é a fórmula de aproximação para a integral I pela Regra de Simpson Repetida.
E o erro de truncamento é dado por:

X m/2 h5 iv
ESr = k=1 − f (ck ) (6.22)
90

Supondo f (iv) contı́nua em [x0 , xm ] e usando uma generalização do teorema do valor médio,
obtemos:

m h5 iv m h5 iv
ESr = − f (ξ) = f (ξ), ξ ∈ (x0 , xm ) (6.23)
2 90 180
E como cota superior de erro:

(b − a) h4
|ESr | ≤ M4 (6.24)
180

onde M4 = max |f iv (x)| x ∈ [x0 , xm ] e lembrando que m = b−a


h .
Observe que o erro para a Regra de Simpson Repetida é proporcional a h4 , dando uma
melhor aproximação do que a Regra dos Trapézios Repetida. Também, temos que a aproximação
com a Regra de Simpson Repetida é exata para polinômios ≤ 3.
Exemplo 2
132

Seja encontrar uma aproximação para 00.5 (e−x − sin x)dx com erro ≤ 10−5 usando a Regra de
R

Simpson Repetida.
Solução
Temos que max |f iv (x)| = max |(e−x − sin x)| = 1, x ∈ [0, 0.5]
Assim,

(0.5) h4
|ESr | ≤ × 1 < 10−4
180
e
p
h< 360 × 10−4 = 0.2449

Daı́,

0.5
< 0.2449
n
Logo, n > 2.0416
Como n deve ser par, tomamos n = 4. Assim,

0.125
ISr = [1 + 0.1270 + 4 × [0.7578 + 0.3210] + 2 × 0.5314] = 0.2710
3

6.3 Método de Extrapolação para o Limite - Método de Romberg


A extrapolação para o limite consiste em determinar uma sequência de aproximações de ordem fixa de
um valor procurado dado por um determinado método e combiná-las de um modo especial para obter
aproximações de ordem sucessivamente maior. Vamos tomar aqui a Regra dos Trapézios Repetida
para encontrar uma melhor aproximação da integral I. A extrapolação para o limite que veremos aqui,
chamada de Método de Romberg, é fundamentada no seguinte teorema:
Teorema:
A aproximação IT r dada pela Regra dos Trapézios Repetida para a integral I, dada anteri-
ormente, é de ordem 2 em h. Além do mais, vale o seguinte desenvolvimento:

IT r = I + C0 h2 + C2 h4 + C4 h6 + · · · (6.25)

onde Ci são constantes independentes de h.


Prova
(ver Ruas, Vitoriano – Curso de Cálculo Numérico, PUC/RJ LTC)
Vamos adotar a seguinte notação:
“Para a aproximação pela Regra dos Trapézios Repetida com n subdivisões do intervalo
[x0 , xn ] de amplitude h vamos chamar de I 0 (h).”
Vamos dividir [x0 , xn ] em 2n subintervalos de amplitude h/2, obtendo assim a aproximação
0
I (h/2). Do teorema anterior, segue-se que:

I 0 (h) = I + C0 h2 + o(h4 ) (6.26)


133

I 0 (h/2) = I + C0 (h/2)2 + o(h4 ) (6.27)

onde C0 é constante e o(h4 ) representa o resto da série dada no teorema anterior.


A fim de remover o termo em h2 , vamos multiplicar a igualdade 6.27 por 4 e subtrair de 6.26,
membro a membro, obtendo:

4 I 0 (h/2) − I 0 (h) = 3I + o(h4 ) (6.28)

Portanto,

4 I 0 (h/2) − I 0 (h)
I 1 (h) = = I + o(h4 ) (6.29)
3

nos dá uma melhor aproximação para I do que I 0 (h) ou I 0 (h/2). Ou seja, I 1 (h) dada pela
fórmula 6.29 é uma aproximação de ordem 4 em h para a integral I.
Para efeito de cálculos futuros, escrevemos 6.29 como:
0
I 1 (h) = I + C2 h4 + o(h6 ) (6.30)
0
onde C2 = C2 /4.
Vamos calcular agora uma outra aproximação I 0 (h/4) com a divisão de [x0 , xn ] em 4n subinter-
valos de amplitude h/4, onde podemos obter outra fórmula de ordem 4 em h, ou seja:

4 I 0 (h/4) − I 0 (h/2)
I 1 (h/2) = = I + o(h4 ) (6.31)
3
Ou ainda:
0
I 1 (h/2) = I + C2 (h/2)4 + o(h6 ) (6.32)

Para obtermos aproximações de ordem 6 em h, basta multiplicarmos 6.32 a por 16 e subtrairmos


membro a membro de 6.30.
Então:

16 I 1 (h/2) − I 1 (h) = 15I + o(h6 ) (6.33)

e obtemos aproximações I 2 (h) de ordem 6 em h dada por:

16 I 0 (h/2) − I 1 (h)
I 2 (h) = = I + o(h6 ) (6.34)
15
para qual vale ainda:
00
I 2 (h) = I + C4 h6 + o(h8 ) (6.35)

Isto nos permitirá obter aproximações de ordem 8 em h , sendo que devemos calcular I 0 (h/8),
I 1 (h/4) e I 2 (h/2) e assim:

64 I 2 (h/2) − I 2 (h)
I 3 (h) = = I + o(h8 ) (6.36)
63
134

Procedemos desta forma, assim sucessivamente, obtendo fórmulas de ordem 8, 10, · · · em h.


Generalizando este processo, podemos obter aproximações de ordem 2m + 2, da seguinte forma:
1o.) Calculamos m + 1 aproximações pela regra dos Trapézios repetida com 1, 2, 4, · · · , 2m divisões
do intervalo de integração, respectivamente, I 0 (h), I 0 (h/2), I 0 (h/4), · · · , I 0 (h/2m ).
2o.) Calculamos recursivamente aproximações de ordem 2j + 2, j = 1, 2, · · · , m pela fórmula:

4j I j−1 (h/2i+1 ) − I j−1 (hq2i )


I j (hi ) = , i = 0, 1, 2, · · · , m − j (6.37)
4j − 1
Esta é a fórmula de recorrência do Método de Romberg.
Note que as aproximações I 1 (h/2i ), i = 0, 1, 2, · · · , m − j são aproximações pela Regra de
Simpson Repetida com 2, 4, 8, · · · subintervalos.
Exemplo 3
Seja calcular a aproximação da seguinte integral:
Z 1
(6 − 6x) dx = F (b) − F (a)
0

usando a aproximação pelo Método de Romberg de ordem 8 em h.


Solução
i h/2i I0 (h/2i ) I1 (h/2i ) I2 (h/2i ) I3 (h/2i )
0 1 3.00000000
1 1/2 4.40625000 4.87500000
2 1/4 4.84570312 4.99218750 5.00000000
3 1/8 4.96105957 4.99951172 5.00000000 5.00000000
Ordem 2 Ordem 4 Ordem 6 Ordem 8
2 i
Observação.: Note que para I (h/2 ) já obtemos o valor exato da integral.

6.4 Métodos Numéricos para Integral Dupla


Vamos considerar a integral dupla:
Z Z Z b Z g2 (x)
I= f (x, y)dydx = [ f (x, y) dy]dx (6.38)
S a g1 (x)

onde z = f (x, y) é definida numa região S tal que a ≤ x ≤ b e g1 (x) ≤ y ≤ g2 (x).


Ou ainda, de acordo com o teorema de Ruffini,
Z Z Z d Z f2 (y)
I= f (x, y)dydx = [ f (x, y) dx]dy (6.39)
S c f1 (y)

onde z = f (x, y) é definida numa região S tal que c ≤ y ≤ d e f1 (y) ≤ y ≤ f2 (y).


Vamos utilizar a seguinte notação para aproximar a integral (6.38):
Z Z Z b Z g2 (x) Z b
I= f (x, y)dydx = [ f (x, y) dy]dx = Ix dx (6.40)
S a g1 (x) a
135

onde,
Z g2 (x)
Ix = f (x, y) dy (6.41)
g1 (x)

Deste modo, temos de resolver as duas integrais simples por um dos métodos numéricos dados
anteriormente. Assim, para aproximar a integral dada por (6.40), inicialmente fazemos a partição do
intervalo no Eixo − x e explicitamos a aproximação da integral I pela fórmula:
Z xn
Ix (x) dx = A0 Ix (x0 ) + A1 Ix (x1 ) + · · · + An Ix (xn ) (6.42)
x0

onde x0 = a e xn = b.
Em seguida, fazemos as partições do intervalo no Eixo − y e calculamos as aproximações das
integrais Ix (x0 ), Ix (x1 ), · · · , Ix (xn ).
Finalmente, substituimos as aproximações Ix (x0 ), Ix (x1 ), · · · , Ix (xn ) em (6.42), obtendo a aprox-
imação para a integral I.
Exemplo 4
Seja aproximar a integral:
Z Z Z b Z g2 (x)
I= f (x, y)dydx = [ f (x, y) dy]dx
S a g1 (x)

onde z = 2x + y é definida numa região S tal que a = 0 e b = 2, g1 (x) = x e g2 (x) = 2x + 2.


Temos que a região S definida pelos seguintes segmentos de reta:



 y=x para 0 ≤x≤2

 x=2 para 0 ≤y≤6

 x=0

 para 0 ≤y≤2

y = 2x + 2 para 0 ≤x≤2


136

Solução
Temos que Ix (x) é dada por:
Z 2x+2
Ix (x) = (2x + y) dy
x

A integral dupla I agora se escreve:


Z 2
I= Ix (x) dx
0

Vamos resolver essa integral dupla utilizando a RegradeSimpsonRepetida tomando quatro


subintervalos no Eixo − x e quatro subintervalos no Eixo − y.

1. Fazendo nx = 4, isto é, hx = (2 − 0)/4 = 0.5 , tem-se:

0.5
I= × (Ix (0) + 4 × Ix (0.5) + 2 × Ix (1) + 4 × Ix (1.5) + Ix (2))
3

para Ix (x) explicitada como anteriormente.


Daı́, calculamos:

• 1)
Z 2
Ix (0) = (2 × 0 + y) dy
0
Fazendo ny = 4, isto é, hy = (2 − 0)/4 = 0.5, obtemos:
0.5
Ix (0) = × (0 + 4 × 0.5 + 2 × 1 + 4 × 1.5 + 2) = 2
3
• 2)
Z 3
Ix (0.5) = (2 × 0.5 + y) dy
0.5
Fazendo ny = 4, isto é, hy = (3 − 0.5)/4 = 0.625, obtemos:
0.625
Ix (0.5) = × (1.5 + 4 × 2.125 + 2 × 2.750 + 4 × 3.375 + 2) = 6.875
3
• 3)
Z 4
Ix (1) = (2 × 1 + y) dy
1
Fazendo ny = 4, isto é, hy = (4 − 1)/4 = 0.75, obtemos:
0.750
Ix (1) = × (3 + 4 × 3.750 + 2 × 4.500 + 4 × 5.250 + 6) = 13.500
3
• 4)
Z 5
Ix (1.5) = (2x + y) dy
1.5
Fazendo ny = 4, isto é, hy = (5 − 1.5)/4 = 0.875, obtemos:
0.875
Ix (1.5) = × (4.5 + 4 × 5.375 + 2 × 6.250 + 4 × 7.125 + 8) = 21.875
3
137

• 5)
Z 6
Ix (2) = (2 × 2 + y) dy
2
Fazendo ny = 4, isto é, hy = (6 − 2)/4 = 1, obtemos
1
Ix (2) = × (6 + 4 × 7 + 2 × 8 + 4 × 9 + 10) = 32
3
Portanto,

0.5
I= × (2 + 4 × 6.875 + 2 × 13.500 + 4 × 21.875 + 32) = 29.3333...
3
Chapter 7

Resolução numérica de equações


diferenciais ordinárias

Regina Célia P. Leal Toledo & Marco Antonio M. Silva Ramos


Revisão de Nelson Antônio Borges Garcia
Departamento de Ciência da Computação - Instituto de Computação
UFF — Universidade Federal Fluminense

7.1 Introdução

7.1.1 Motivação

Uma grande parte de fenômenos fı́sicos são descritos (modelados) matematicamente através de
equações diferenciais. Resolver estas equações, torna-se de grande importância para a análise do
problema que se quer estudar.
Obter a solução exata destas equações, na maioria da vezes, não é possı́vel. Muitas destas
equações tem que sofrer um determinado número de simplificações para que possam ter uma
solução analı́tica.
A utilização de métodos numéricos se torna então, uma opção viável e imprescindı́vel para a
análise destes fenômenos.
É importante lembrar que a definição de um modelo que represente algum fenômeno fı́sico contém
aproximações, não só porque estará descrito matematicamente o que o observador ”pode” observar
deste fenômeno como também, o que, desta observação, pode ser descrito matematicamente. É
claro, que um modelo antes de ser utilizado, deve ser testado como uma representação possı́vel
destes fenômenos, mas é bom ter em mente, que o que está descrito, é uma representação mais
ou menos simplificada do fenômeno real.
Antes de começarmos com nossas equações diferenciais, vamos falar mais um pouco sobre este
processo capaz de validar um modelo e também do processo envolvido na solução numérica deste
modelo matemático.
138
139

7.1.2 O Modelo Matemático e sua Solução Numérica

Quando queremos resolver algum problema real, temos que observar o fenômeno em questão e
tentar descrevê-lo observando tudo que julgamos importante para a compreensão deste. Este
problema pode ser das mais diversas áreas, como por exemplo:

• quais as dimensões que uma determinada estrutura deve ter (dependendo do material, é
claro!) para suportar o carregamento desejado;
• como dimensionar nossa ponte (Rio-Niterói) para que ela resista a fortes ventos;
• a que temperatura estará cada ponto de uma determinada peça em um certo momento, se
submetida ao calor ou frio;
• qual a velocidade de um determinado fluido e como ele se desloca se colocarmos ou tirarmos
um anteparo, por exemplo;
• para que direção e em que momento uma mancha de óleo derramada no mar, atingirá uma
certa região;
• previsão de tempo ou de clima;
• a resistência de um osso a uma determinada prótese;
• a circulação do sangue no coração quando se coloca determinada válvula;
• etc...

Podemos ter interesse na solução destes problemas dentre muitos outros! Hoje em dia, vários
testes de laboratórios estão sendo substituı́dos por simulações computacionais. Estas são mais
baratas e em muitos casos, a única opção para se testar um modelo.
Na maioria das vezes, estes fenômenos são descritos através de equações diferenciais com condições
de contorno e/ou iniciais (vamos rever brevemente estes conceitos). A compreensão do fenômeno
e sua descrição matemática, normalmente é feita por profissionais da área afim, muitas vezes
de forma interdisciplinar, envolvendo profissionais da área de matemática e computação, por
exemplo.
Definido o modelo matemático, desejamos encontrar sua solução. Em um grande número de
problemas a solução não pode ser encontrada de forma fechada (solução analı́tica) ou então, temos
que fazer inúmeras simplificações nestas equações para que possam ser resolvidas analiticamente.
Estas simplificações podem acarretar erros de tal ordem que inviabilizem a representação do
fenômeno de interesse. Nestes casos a utilização de métodos numéricos deixa de ser uma opção
para ser a única forma de se encontrar a solução.
Uma vez que encontramos a solução da equação proposta, necessitamos verificar se esta realmente
pode ser utilizada para descrever o fenômeno que desejamos representar. Esta etapa normamente
é chamada de validação do modelo. Existem duas causas principais para que a solução encontrada
não seja a solução esperada:
- erro na solução numérica (veremos adiante);
- erro no modelo matemático.
140

Formulação do modelo matemático

?
- Solução do modelo

Modificação do modelo
6

Insatisfatório
?
Validação

Satisfatório

?
Pronto para ser utilizado

Figure 7.1: A modelagem matemática e o processo de solução [Golub e Ortega].

Neste último caso, podemos ter aproximado ou negligenciado algum fator indispensável para
a representação do fenômeno em questão. Devemos retornar ao modelo matemático e tentar
torná-lo mais preciso. Um esquema deste processo é fornecido por Golub e Ortega [???] e
reproduzido na figura 7.1.

Encontrar uma solução de um problema que envolve uma equação diferencial é encontrar a função
que satisfaz a equação diferencial e mais alguma condição (condições iniciais ou condições de
contorno, por exemplo).
Quando buscamos uma aproximação para a solução numericamente, a estratégia de todos os
métodos que estudaremos consiste em obter somente valores numéricos da função solução para
141

6y

y5

× y6
y7
× y10
y2 y3 y4 × y8
y9
×
y1 × × ×
× ×
×

y0

x
-
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10

 h - h - h - h - h - h - h - h - h - h -

Figure 7.2: Discretização unidimensional.

alguns pontos do domı́nio.


Chamamos a escolha desses pontos do domı́nio aonde serão encontrados os valores da função de
discretização do domı́nio. Este é um termo técnico que é muito comum nesta área do conhecimento.
Graficamente isto significa encontrar a solução somente nestes pontos (daı́ o termo discreto),
como mostrado na figura 7.2, para o caso unidimensional.
Os pontos escolhidos para a obtenção desses valores aproximados são chamados de pontos nodais
(ou nós).

Neste curso, estaremos apresentando alguns métodos numéricos para resolução de equações
diferenciais, bem como fazendo uma discussão de sua aplicabilidade, sobre a confiabilidade da
solução numérica encontrada e sobre as caracterı́sticas de um bom software cientı́fico.
142

7.1.3 Algumas Definições Básicas

Definição 1:
Uma equação diferencial com apenas uma variável independente, é dita equação diferencial
ordinária (EDO). Quando há mais de uma variável independente , temos então, uma equação
diferencial parcial (EDP).
Exemplo 1:
Por exemplo, a posição x de um sistema massa-mola com amortecimento é descrito pela equação
diferencial (incluir figura):

d2 x dx
m 2
+c + kx = 0 a≤t≤b (7.1)
dt dt
com condições iniciais:

x(a) = α (7.2)

dx
(a) = β (7.3)
dt
incluir esquema
sendo m a massa, c o coeficiente de amortecimento e k a constante da mola.
Esta equação é classificada como:

• uma equação diferencial ordinária, sendo a variável independente o tempo t;


2
• de segunda ordem, fornecida pela mais alta ordem da derivada ( d x );
dt2
• linear, uma vez que não há produtos ou termos não lineares com a variável dependente x;
• um problema de valor inicial (P V I), que representa um problema de evolução, uma vez
que as informações contidas nas condições iniciais, se propagam. As duas condições são
fornecidas no inı́cio do intervalo a ser analisado (em t = a).

Num problema de valor de contorno (P V C), as condições são fornecidas em 2 pontos distintos
do intervalo, em t = a, inı́cio do intervalo e em t = b, fim do intervalo.
Uma equação diferencial ordinária de primeira ordem com uma condição inicial(PVI) pode ser
escrita como:

 dy = y = f (x, y(x))
0
x ∈ [a, b]


dx (7.4)

 y(a) = α

Se a equação diferencial for de ordem mais alta, ela pode ser reduzida a um sistema de equações
de primeira ordem. Por exemplo, a equação 7.1, pode ser transformada no sistema:

 dx = ẋ = v


dt (7.5)
 v̇ = − cv + kx


m
143

com condições iniciais:




 x(a) = α

(7.6)

 ẋ(a) = v(a) = β

Descrita matricialmente como:




 ẏ = f (t, x, v)

(7.7)

 y(a) = γ

onde,
     
     
 x 
  
 v 
  α 
 
y= , f (t, x, v) = e γ= (7.8)
 − cv + kx 
     
 v 
   β 

m
  

Quando estamos estudando uma equação diferencial, é conveniente saber se ela tem solução e se
sua solução é única ou múltipla. No caso de PVI de equações diferenciais ordinárias, esta questão
está bem resolvida, se forem verificadas as seguintes condições:

Teorema 1:(Existência e unicidade de solução)


0
Seja a EDO: y = f (x, y(x)) onde y(x) é contı́nua e diferenciável e f (x, y(x)), definida e contı́nua
em a ≤ x ≤ b, −∞ < y(x) < ∞, onde a e b são finitos. Se existir uma constante L, denominada
constante de Lipschitz para todo ponto x ∈ [a, b], tal que:

|f (x, y(x)) − f (x, y ∗ (x))| ≤ L|y(x) − y ∗ (x)| (7.9)

onde y e y ∗ são dois números quaisquer, o problema de valor inicial(PVI) tem solução e ela é
única.
Exemplo 2:
Seja o seguinte problema de valor inicial

 y 0 = −y + 1 ; x ∈ [e, 5]


x ln x x

 y(e) = e

temos que

|f (x, y1 ) − f (x, y2 )| = −y1 1 y2 1 −y1 y2


x ln x + x + x ln x − x = x ln x + x ln x =
= y2 − y1
x ln x
≤ y2 − y1 = 1 |y − y |
e e 2 1

que satisfaz o teorema sobre a existência e unicidade da solução.


144

Exemplo 3:
Seja o seguinte problema de valor inicial


 y 0 = y 1/2 = y; x ∈ [0, 1]


 y(0) = 0

Este problema possui duas soluções, a saber (verificar):


!2
x2
y=0 e y=
2
p
a função f (x, y) = (y) não satisfaz a condição de Lipschitz em relação a y na vizinhaça de
y = 0, com verificado a seguir:

√ √ √ y
f (x, y) − f (x, 0) = y− 0= y=√
y

logo

f (x, y) − f (x, 0) 1
=√
y y

1
y → 0 =⇒ √ → ∞ não ∃L
y

Todos os resultados e métodos que apresentaremos são válidos tanto para sistemas de equações
diferenciais quanto para um única equação.
Usaremos como problema padrão para os problemas de valor inicial associados às equações
diferenciais ordinárias o seguinte problema:

 y 0 = f (x, y) x ∈ [a, b]


 y(0) = α

7.1.4 Redução de equações de ordem superior a um sistema de EDO’s de 1a .


ordem

Veremos como reduzir uma equação diferencial ordinária de ordem (n) a um sistema de n equações
diferenciais ordinárias de 1a . ordem.
Em sua forma mais geral uma equação diferencial ordinária de ordem (n) pode ser escrita como:

F (x, y, y 0 , y 00 , . . . , y (n) ) = 0.
145

Se esta equação puder ser reescrita da seguinte maneira

y (n) = f (x, y, y 0 , y 00 , . . . , y (n−1) )

isto é, explicitando y (n) . Podemos então renomear y e suas derivadas como a seguir

y1 = y(x),
y2 = y 0 (x),
y3 = y 00 (x),
.. ..
. .
yn = y (n−1) (x)

mas



 y10 = y 0 (x), = y2


y0 = y 00 (x),

 = y3
 2



y30 = y 000 (x), = y4

 .. .
= ..

.






yn0 = y (n) (x) = f (x, y, y 0 , y 00 , . . . , y (n−1) ) = f (x, y1 , y2 , y3 , . . . , yn )

que representa o sistema de n equações diferenciais ordinárias de primeira ordem.

Observação: Existem situações em que estas transformações não podem ser realizadas, por
exemplo, existem equações em que não é possı́vel explicitar o termo de maior ordem — y (n) .
Neste caso, as transformações sugeridas não tem interesse prático.

Exemplo 4:



 y 00 − y = 0 x ∈ [0, 1]


y(0) = 1

y 0 (0) = 1

com

z1 = y e z2 = y 0 =⇒ z10 = y 0 = z2 e z20 = y 00

temos

  
 z20 = z1
y 00 − y = 0 y 00 = y

 x ∈ [0, 1]  x ∈ [0, 1] 

 z 0 = z2
  
x ∈ [0, 1]

 
 
1
y(0) = 1 =⇒ y(0) = 1 =⇒


 0



 0



 z1 (0) = 1
y (0) = 1 y (0) = 1



 z2 (0) = 1

146

ou
 0  
z1 z2
  = 
z2 z1

com condição inicial


   
z1 1
  (0) =  
z2 1

7.2 Métodos Numéricos de passo simples para PVI

Quando utilizamos um método numérico, estamos procurando uma aproximação para solução em
pontos discretos do intervalo de interesse [a, b], ou seja, em um número finito de pontos.
Chamando-se o ponto inicial a = x0 , as aproximações serão calculadas espaçadas de h, escolhido,
chamado passo ou incremento. Dessa forma, x1 = x + h, x2 = x + 2h, · · · , xk = x + kh e xn =
x + nh = b.
Definição 2:
São chamados Métodos Numéricos de passo simples, os métodos numéricos que para encontrarmos
uma aproximação para xk+1 = xk + h, h = (b − a)/N , só necessitamos de informações sobre o
passo anterior, xk . Isto significa que a partir da condição inicial x0 , podemos obter x1 , conhecendo
x1 obtemos x2 e assim sucessivamente. Os métodos de passo simples mais conhecidos são os
métodos baseados na Série de Taylor e os Métodos de Runge-Kutta.

Passo simples
y
Condição Inicial

y1
y0 y2 yi yN
α yi+1 yk−3 yk−2 yk−1
yk yk+1

x
a = x0 x1 x2 · · · · · · · · · xi xi+1 ········· xk−3 xk−2 xk−1 xk xk+1 xN = b
147

7.2.1 Métodos Baseados na Série de Taylor para PVI

A idéia destes métodos é que, tendo-se informações da solução do PVI em x = xk , podemos


através da série de Taylor, calcular o valor de y em x = xk+1 , ou seja, y(xk+1 ):

h2 h3 hn
y(xk+1 ) = y(xk ) + y 0 (xk )h + y 00 (xk ) + y 000 (xk ) + ... + y (n) (xk ) + O(hn+1 ) (7.10)
2! 3! n!

Onde h = xk+1 − xk. O último termo da expressão anterior, indica o erro que cometemos ao
truncarmos a série no enésimo termo que é dado por:

hn
y (n) (ψ) , x≤ψ ≤x+h
n!

Desta forma, dado o PVI:



 dy = y = f (x, y(x))
0
x ∈ [a, b]


dx (7.11)

 y(a) = α

substituindo 7.11 em 7.10 obtemos:

h2 0
y(xk+1 ) = y(xk ) + hf (xk , y(xk )) + f (xk , y(xk ))
2!
hn (n−1)
+ ... + f (x, y(x)) + O(hn+1 ) (7.12)
n!

Se utilizarmos somente os 2 primeiros termos para encontrarmos aproximações sucessivas para


y(x), x ∈ [a, b], teremos. Este método, conhecido como Método de Euler, é dado por:

yk+1 = yk + hf (xk , yk ) (7.13)

onde utilizaremos a notação yk para denotar uma aproximação para y(xk ), uma vez que estamos
abandonando todos os demais termos da série. Este método, foi o primeiro utilizado para se
encontrar aproximações numéricas para equações diferenciais ordinárias.
Exemplo 5:
Seja o PVI:
(
y 0 = −y + x x ∈ [0, 1]
y(0) = 1

cuja solução exata é: y(x) = x − 1 + 2e−x . Pelo Método de Euler, teremos:

yk+1 = yk + h(−yk + xk ) (7.14)


148

Escolhendo h = 0.1, obtemos:

y1 = y(0.1) = y0 + h(−y0 + x0 ) = 1.0 + 0.1(−1.0 + 0.0) = 0.9000


y2 = y(0.2) = y1 + h(−y1 + x1 ) = 0.9 + 0.1(−0.9 + 0.1) = 0.8200
y3 = y(0.3) = 0.7580
y4 = y(0.4) = 0.7122
···
y9 = y(0.9) = 0.6748
y10 = y(1.0) = 0.6974

Veremos, mais adiante, as possı́veis escolhas de h.

Sugestão: Faça este mesmo exemplo com h = 0.2 e compare a solução encontrada com a do
exemplo anterior e com a solução exata.

Podemos obter aproximações melhores, utilizando mais termos da série de Taylor. Por exemplo,
podemos considerar até o termo em h2 e neste caso, teremos um erro da ordem de h3 .

h2 0
y(xk+1 ) = y(xk ) + hf (xk , y(xk )) + f (xk , y(xk )) + O(h3 ) (7.15)
2!
onde
0 df (x, y(x))
f (x, y(x)) = = fx + f fy (7.16)
dx
O sub-ı́ndice denota uma derivada parcial em relação a esta variável, ou seja:

∂f (x, y(x))
fi = (7.17)
∂i
Utilizando este mesmo expediente podemos melhorar a ordem do método — O que é ordem
de um método —, incluindo mais termos à série de Taylor. O problema nesses casos, é que
temos que calcular as derivadas totais aplicando a regra da cadeia, o que dificulta a aplicação
desses métodos e sua implementação computacional.
Sugestão: Repita o exemplo anterior utilizando o método baseado na Série de Taylor da O(h2 )
com h = 0.1 e h = 0.2 e compare com os resultados anteriores.

7.2.2 Métodos de Runge-Kutta para PVI - Passo Simples

Nos Métodos de Runge-Kutta podemos encontrar aproximações de ordem mais alta, como nos
métodos baseados na Série de Taylor, sem termos que calcular as derivadas totais.
Os Métodos de Runge-Kutta têm as seguintes caracterı́sticas:

• São métodos de um único passo;


149

• Coincidem com a série de Taylor até o termo hp , onde p é diferente para cada um dos
métodos e chama-se ordem do método;
0
• não necessitam do cálculo de nenhuma derivada a não ser a dada y = f (x, y).

Os Métodos de Runge-Kutta têm a seguinte forma geral:

yk+1 = yk + hφ(xk , yk , h) (7.18)

onde, φ(x, y(x)) é tal que não precisamos encontrar derivadas para a função f (x, y).
r
X
φ(x, y, h) = µi ki (7.19)
i=1

sendo,

k1 = f (xk , yk )
k2 = f (xk + α2 h, yk + β21 k1 h)
k3 = f (xk + α3 h, yk + β31 k1 h + β32 k2 h)
..
.
kr = f (xk + αr h, yk + βr1 k1 h + βr2 k2 h + · · · + βr,r−1 kr−1 h)

onde os valores de µk , k = 1, 2, · · · , r; kji e αj com j = 2, 3, · · · , r e βi i = 1, 2, · · · , r − 1 são


encontrados, igualando-se (7.18) à série de Taylor até a ordem desejada.
Para r = 1, 2, 3 e 4 podemos obter métodos de Runge-Kutta de ordens 1,2,3 e 4 respectivamente.

Método de Runge-Kutta de 1a ordem

O Método de Runge-Kutta de 1a ordem corresponde ao Método de Euler, descrito anteriormente.


Este método possui um erro de truncamento muito grande. Na maioria dos casos, o erro é
instável, ou seja, pequenos erros de arredondamento ou truncamento em um passo, têm grande
influência nos passos seguintes.
Descrição geométrica do Método de Euler
0
Seja o PVI de 1a ordem y = f (x, y), y(xk ) = yk , onde xk e yk são conhecidos.
Suponha que o valor de yk da solução no ponto xk seja conhecido, conforme figura............. Desta
0
forma, pode-se calcular em (xk , yk ) o valor da derivada y k = f (xk , yk ). Passando uma reta L
pelo ponto (xk , yk ) com inclinação dessa derivada, e chamando de yk+1 a ordenada que se obtém
a partir da abscissa xk+1 = xk + h até a interseção com a reta L, obtemos a fórmula de Euler:

yk+1 = yk + hf (xk , yk ) (7.20)

Observação: Analiticamente, a equação da reta L é: y = yk + f (xk , yk )(x − xk ). Fazendo


x = xk+1 , temos y = yk + f (xk , yk )(xk+1 − xk ).
150

Exemplo 6
Seja resolver pelo Método de Euler, o seguinte problema de valor inicial tomando h = 0, 1.

 d y = y0 = 1 y x ∈ [0, 1]


dx 2


 y(0) = 1

1
Observação: Solução exata - y = e 2

Solução:
Aplicando a fórmula do Método de Euler temos:
(
yk+1 = yk + hf (xk , yk )
y0 = α

Onde f (x, y) = (1/2)y e y0 = 1.

No primeiro passo y0 −→ y1 , logo com k = 0:

1 1
   
y1 = y0 + hf (x0 , y0 ) = y0 + h y0 = 1 + 0,1 · 1 = 1,05
2 2

No segundo passo y1 −→ y2 , logo com k = 1:

1 1
   
y2 = y1 + hf (x1 , y1 ) = y1 + h y1 = 1,05 + 0,1 · 1,05 = 1,1025
2 2

Continuando os cálculos, obtemos a seguinte tabela:

k xk yk yexata | yk − yexata |
0 0,0 1,0000000 1,0000000 0,00000000
1 0,1 1,0500000 1,0512711 0,00127110
2 0,2 1,1025000 1,1051709 0,00267092
3 0,3 1,1576250 1,1618834 0,00420924
4 0,4 1,2155063 1,2214027 0,00589651
5 0,5 1,2762816 1,2840254 0,00774385
6 0,6 1,3400956 1,3498588 0,00976317
7 0,7 1,4071004 1,4190675 0,01196713
8 0,8 1,4774554 1,4918247 0,01436925
9 0,9 1,5513282 1,5683122 0,01698397
10 1,0 1,6288946 1,6487212 0,01982664
151

Observação: Para comparação foi incluı́da a solução exata na tabela com os resultados.

Se utilizarmos um número maior de subintervalos, por exemplo n = 20 ou h = 0,05, obtemos os


seguintes resultados:

k xk yk yexata | yk − yexata |
0 0,00 1,00000000 1,00000000 0,00000000
1 0,05 1,02500000 1,02531512 0,00031512
2 0,10 1,05062500 1,05127110 0,00064610
3 0,15 1,07689062 1,07788415 0,00099353
4 0,20 1,10381289 1,10517092 0,00135803
5 0,25 1,13140821 1,13314845 0,00174024
6 0,30 1,15969342 1,16183424 0,00214082
7 0,35 1,18868575 1,19124622 0,00256046
8 0,40 1,21840290 1,22140276 0,00299986
9 0,45 1,24886297 1,25232272 0,00345975
10 0,50 1,28008454 1,28402542 0,00394087
11 0,55 1,31208666 1,31653067 0,00444402
12 0,60 1,34488882 1,34985881 0,00496998
13 0,65 1,37851104 1,38403065 0,00551960
14 0,70 1,41297382 1,41906755 0,00609373
15 0,75 1,44829817 1,45499141 0,00669325
16 0,80 1,48450562 1,49182470 0,00731908
17 0,85 1,52161826 1,52959042 0,00797216
18 0,90 1,55965872 1,56831219 0,00865347
19 0,95 1,59865019 1,60801420 0,00936401
20 1,00 1,63861644 1,64872127 0,01010483

Observação: Para comparação foi incluı́da a solução exata na tabela com os resultados.

Método de Runge-Kutta de 2a ordem


a
Podemos observar que o método de 2 ordem baseado na série de Taylor (7.15) pode ser reescrito
como:

h 0
y(xk+1 ) = y(xk ) + h[f (xk , y(xk )) + f (xk , y(xk )) + O(h2 )] (7.21)
2!

h f 0 (x , y(x )) + O(h2 ), na equação anterior:


Fazendo-se φ(x, y(x)) = f (xk , y(xk )) + 2! k k

yk+1 = yk + hφ(x, y(x)) (7.22)


152

Igualando-se a expressão anterior com a do método de Runge-Kutta (7.18) com 2 termos no


somatório, temos:
h 0
f (xk , y(xk )) + f (xk , y(xk )) + O(h2 ) = µ1 k1 + µ2 k2 (7.23)
2!
a
Substituiremos então, a expressão da 1 derivada de f e as expressões de k1 e k2 :
h
f (xk , yk ) + (fx + f fy ) + O(h2 ) = µ1 f (xk , yk ) + µ2 f (xk + α2 h, yk + β21 k1 h) (7.24)
2!
Para podermos igualar termo a termo, teremos que expandir a expressão de k2 em série de Taylor:

f (xk + α2 h, yk + β21 k1 h) = f + α2 hfx + β21 hf fy + O(h2 ) (7.25)

Dessa forma, obtemos o sistema não-linear:

µ1 + µ 2 = 1
1
µ2 α 2 =
2
1
µ2 β21 =
2
Podemos observar que é um sistema não-linear de 3 equações e 4 incógnitas. Colocando-se todas
as incógnitas em função de α2 :
1
µ1 = 1 −
2α2
1
µ2 =
2α2
β21 = α2
a
Para cada α2 6= 0, obtemos um método de Runge-Kutta de 2 ordem, ou seja:
Para α2 = 12 , temos o chamado Método de Euler Modificado, onde µ1 = 0, µ2 = 1, α2 = 1
2 e
β21 = 12 :

h h
yk+1 = yk + hf (xk + , yk + f (xk , yk )) (7.26)
2 2
Para α2 = 1, temos o Método de Heun ou Euler Melhorado, onde µ1 = 12 , µ2 = 12 , α2 = 1 e
β21 = 1:
h h
yk+1 = yk + f (xk , yk ) + f (xk + h, yk + hf (xk , yk )) (7.27)
2 2
Descrição geométrica do Método de Heun
A interpretação geométrica do Método de Heun pode ser feita com base na figura a seguir.......
0
Seja a aproximação yk em xk do PVI y = f (x, y), y(xk ) = yk . Pelo ponto A0 = (xk , yk ), traçamos
0 E ), onde
a reta L1 , cujo inclinação é yk = f (xk , yk ). Nesta reta, tomamos o ponto A1 = (xk+1 , yk+1
xk+1 = xk + h e yk+1E é a aproximação pelo Método de Euler:

E
yk+1 = yk + hf (xk , yk ) (7.28)
153

Agora, pelo ponto A1 traçamos a reta L2 , cuja inclinação é:

E
f (xk + h, yk + hf (xk , yk )) = f (xk+1 , yk+1 ) (7.29)

Em seguida, pelo ponto A1 traçamos a reta L0 , cuja inclinação é a média das inclinações das
retas L1 e L2 , ou seja:

E
[f (xk , yk )) + f (xk+1 , yk+1 )]/2 (7.30)

Finalmente, pelo ponto A0 = (xk , yk ) traçamos a reta L paralela a a reta L0 , cuja equação é
dada por:

1 E
y − yk = [f (xk , yk )) + f (xk+1 , yk+1 )](x − xk ) (7.31)
2
Fazendo x = kk+1 nesta equação, obtemos a aproximação do Método de Heun para o PVI, a
saber:
h E
yk+1 = yk + [f (xk , yk )) + f (xk+1 , yk+1 )] (7.32)
2
Exemplo 7
Seja resolver pelo Método de Euler Aperfeiçoado (Heun), o seguinte problema de valor inicial
usando h = 0, 1.

 d y = y0 = 1 y x ∈ [0, 1]


dx 2


 y(0) = 1

Solução:
Aplicando a fórmula do Método de Heun temos:

 h
 yk+1 = yk + [f (xk , yk ) + f (xk + h, yk + hf (xk , yk ))]


2


 y0 = α

onde f (x, y) = (1/2)y e y0 = 1.

No primeiro passo y0 −→ y1 , logo com k = 0:

h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2

No segundo passo y1 −→ y2 , logo com k = 1:

h
y2 = y1 + [f (x1 , y1 ) + f (x1 + h, y1 + hf (x1 , y1 ))] =
2

Continuando os cálculos, obtemos a seguinte tabela:


154

k xk yk yexata | yk − yexata |
0 0,0 1,0000000 1,0000000
1 0,1 1,0512500 1,0512711
2 0,2 1,1051267 1,1051709
3 0,3 1,1617644 1,1618834
4 0,4 1,2213048 1,2214027
5 0,5 1,2838967 1,2840254
6 0,6 1,3513013 1,3498588
7 0,7 1,4222446 1,4190675
8 0,8 1,4969124 1,4918247
9 0,9 1,5736292 1,5683122
10 1,0 1,6562447 1,6487212

Observação: Para comparação foi incluı́da a solução exata na tabela com os resultados.αα
Da mesma forma que no item anterior (e com mais trabalho!), podemos encontrar métodos de
a
Runge-Kutta de maior ordem. A seguir, apresentamos o método de 4 ordem, muito utilizado.

Método de Runge-Kutta de 4a ordem:

O Método de Runge-Kutta de 4a ordem se baseia na média ponderada de inclinações aproximadas de


tangentes à curva em pontos distintos.
Descrição geométrica do Método de Runge-Kutta de 4a ordem
Faremos a descrição geométrica desse método baseando-se na figura a seguir:..........................................
Pelo ponto A0 = (xk , yk ) tra{¸camos a reta L1 com inclinação k1 = tg(α) = f (xk , yk ). Nesta reta
encontra-se o ponto A1 = (xk + h2 , yA1 ), onde yA1 = yk + k1 ( h2 ).
Pelo ponto A1 = (xk + h2 , yA1 ) traçamos a reta L2 com inclinação k2 = tg(β) = f (xk + h2 , yA1 ).
Daı́, encontramos a reta L3 paralela a reta L2 , passando pelo ponto A0 = (xk , yk ) cuja equação é:
y = yk + k2 ( h2 ). Nesta reta encontra-se o ponto A2 = (xk + h2 , yA2 ), onde yA2 = yk + k2 ( h2 ).
Pelo ponto A2 = (xk + h2 , yA1 ) traçamos a reta L4 com inclinação k3 = tg(γ) = f (xk + h2 , yA2 ).
Daı́, encontramos a reta L5 paralela a reta L4 , passando pelo ponto A0 = (xk , yk ) cuja equação é:
y = yk + k3 (h). Nesta reta encontra-se o ponto A3 = (xk + h, yA3 ), onde yA3 = yk + k3 (h).
Agora, pelo ponto A3 = (xk + h, yA3 ) traçamos a reta L6 com inclinação k4 = tg(δ) = f (xk + h, yA3 ).
Finalmente, encontramos encontramos a aproximação para o PVI em xk+1 dada por:

h
yk+1 = yk + (k1 + 2k2 + 2k3 + k4 ) (7.33)
6

onde obtivemos:
155

k1 = f (xk , yk )
h h
k2 = f (xk + , yk + k1 )
2 2
h h
k3 = f (xk + , yk + k2 )
2 2
k4 = f (xk + h, yk + k3 h)

Exemplo 8
Vamos resolver pelo Método de Runge-Kutta 4a ordem, o seguinte problema de valor inicial usando
h = 0, 1.

 d y = y0 = 1 y x ∈ [0, 1]


dx 2


 y(0) = 1

Método de Runge-Kutta 4a ordem


 h
 yk+1 = yk + [k1 + 2k2 + 2k3 + k4 ]


6


 y0 = α

onde

k1 = f (xk , yk )

h k1
k2 = f (xk + , yk + h )
2 2

h k2
k3 = f (xk + , yk + h )
2 2

k4 = f (xk + h, yk + hk3 )

Onde f (x, y) = (1/2)y e y0 = 1.

No primeiro passo y0 −→ y1 , logo com k = 0, temos que calcular os fatores k’s intermediários:

1 1 1
k1 = f (x0 , y0 ) = y0 = · 1 = = 0,5
2 2 2

h k1 0,1 (1/2) 1
k2 = f (x0 + , y0 + h ) = f (0 + ; 1 + 0,1 · ) = f (0,05; 1,025) = · 1,025 = 0,5125
2 2 2 2 2
156

h k2 0,1 0,5125
k3 = f (x0 + , y0 + h ) = f (0 + ; 1 + 0,1 · ) = f (0,05; 1,025625) = 0,5128125
2 2 2 2

1,05128125
k4 = f (x0 + h, y0 + hk3 ) = f (0 + 0,1; 1 + 0,1 · 0,5128125) = f (0,1; 1,05128125) = =
2

= 0,525640625

h 0,1
y1 = y0 + [k1 + 2k2 + 2k3 + k4 ] = 1 + [0,5 + 2 · 0,5125 + 2 · 0,5128125 + 0,525640625] =
6 6

0,1 0,1
=1+ [0,5 + 1,025 + 1,025625 + 0,525640625] = 1 + [3,076265625] = 1,05127109375
6 6

No segundo passo y1 −→ y2 , logo com k = 1, temos que calcular os fatores k’s intermediários:

1 1
k1 = f (x1 , y1 ) = y1 = · 1,05127109375 = 0,525635546875
2 2

h k1 0,1 0,525635546875
k2 = f (x1 + , y1 + h ) = f (0,1 + ; 1,05127109375 + 0,1 · )
2 2 2 2

1
= f (0,15; 1,07755287109375) = · 1,07755287109375 = 0,538776435546875
2

h k2 0,1 0,538776435546875
k3 = f (x1 + , y1 + h ) = f (0,1 + ; 1,05127109375 + 0,1 · )=
2 2 2 2

= f (0,15; 1,07820991552734375) = 0,539104957763671875

k4 = f (x1 + h, y1 + hk3 ) = f (0,1 + 0,1; 1,05127109375 + 0,1 · 0,539104957763671875) =

1, 1051815895263671875
= f (0,2; 1, 1051815895263671875) = =
2

= 0,55259079476318359375

h
y2 = y1 + [k1 + 2k2 + 2k3 + k4 ] =
6

0,1
= 1,05127109375 + [0,525635546875 + 2 · 0,538776435546875 + 2 · 0,539104957763671875
6

+0,55259079476318359375] =

0,1
= 1,05127109375 + [0,525635546875 + 1,07755287109375 + 1,07820991552734375
6

+0,55259079476318359375] =

0,1
= 1,05127109375 + [3,23398912825927734375] = 1,1051709125543212890625
6

E assim por diante, onde chegamos aos seguintes resultados:


157

k xk yk yexata | yk − yexata |
0 0,0 1,0000000 1,0000000
1 0,1 1,0512710 1,0512711
2 0,2 1,1051709 1,1051709
3 0,3 ? 1,1618834
4 0,4 ? 1,2214027
5 0,5 ? 1,2840254
6 0,6 ? 1,3498588
7 0,7 ? 1,4190675
8 0,8 ? 1,4918247
9 0,9 ? 1,5683122
10 1,0 ? 1,6487212

Observação: Para comparação foi incluı́da a solução exata na tabela com os resultados.
158

7.2.3 Métodos de Passos Múltiplos

Nos métodos de passo simples o cálculo da aproximação de y(xk+1 ), isto é, yk+1 é feito usando somente
as informações do passo anterior (yk ). Nos métodos que estudaremos agora para calcular uma nova
aproximação usaremos as informações de p passos anteriores, isto é, yk , yk−1 , yk−2 , . . . , yk−p+1 .

Passo múltiplo

Condição Inicial

y1
y0 y2 yk−p+1 yN
α yk−p+2 yk−2 yk−1
yk yk+1

x
a = x0 x1 x2 · · · · · · · · · xk−p+1 xk−p+2 ··············· xk−2 xk−1 xk xk+1 xN = b
| {z } | {z }
passo simples p passos
iniciação do passo múltiplo passo múltiplo

Como nos métodos de passo simples a informação necessária é a do passo anterior, logo ele é auto-
iniciável a partir da condição inicial y0 = α. Agora nos métodos de p passos precisamos de informações
nos p passos iniciais y0 , y1 , y2 , . . . , yp−1 para iniciar os métodos de mútiplos passos. Por isso dizemos
que os métodos de mútiplos passos não são auto-iniciáveis.

Forma Geral dos Métodos de Passos Múltiplos

Chamamos método de p passos um método que tem a forma geral:

αk+1 yk+1 + αk yk + . . . + αk−p+1 yk−p+1 = h [βk+1 fk+1 + βk fk + . . . + βk−p+1 fk−p+1 ]

Onde:

• yk denota uma aproximação para y(xk );


• fk denota uma aproximação para f (xk , y(xk ));
159

Se βk+1 = 0, o método é dito explı́cito. Neste caso são usadas as informações somente dos passos
anteriores. Isto é, yk+1 é calculado explicitamente.

1
yk+1 = {−αk yk − . . . − αk−p+1 yk−p+1 + h [βk+1 fk+1 + βk fk + . . . + βk−p+1 fk−p+1 ]}
αk+1

Se βk+1 6= 0, o método é implı́cito, posto que necessitamos do valor de yk+1 para encontrarmos o
próprio yk+1 .
 

αk+1 yk+1 + αk yk + . . . + αk−p+1 yk−p+1 = h βk+1 fk+1 +βk fk + . . . + βk−p+1 fk−p+1 


 
| {z }
usa yk+1

Métodos Explı́citos

Seja a seguinte equação diferencial ordinária e uma condição inicial:



 d y = y 0 = f (x, y) x ∈ [a, b]


dx

 y(a) = α

o valor exato da solução y(x) no intervalo [xk−r , xk+1 ] pode ser calculado integrando-se a equação
diferencial neste intervalo, isto é:
Z xk+1 Z xk+1
0
y dx = f (x, y) dx
xk−r xk−r

ou,
Z xk+1
y(xk+1 ) = y(xk−r ) + f (x, y) dx
xk−r

No gráfico a seguir está representada a integral anterior na região mais escurecida, apontada como I.

MetodosDePassoMultiploExplicitoIntegral.pdf
Para simplificar a notação usaremos:

fk = f (xk , yk ) ≈ f (xk , y(xk ))

yk ≈ y(xk )
160

A dificuldade para se obter esta solução exata, é calcular a integral de f (x, y) analiticamente. Uma
idéia que se coloca é aproximar o integrando f (x, y) por um polinômio p(x) que passe pelos pontos
(xk , y(xk )), (xk−1 , y(xk−1 )), . . . . . . , (xk−(p−1) , y(xk−(p−1) )) e integrá-lo exatamente, ou seja:
Z xk+1 Z xk+1
y(xk+1 ) = y(xk−r ) + f (x, y) dx ≈ y(xk−r ) + p(x) dx (7.34)
xk−r xk−r

ou
Z xk+1 Z xk+1
yk+1 = yk−r + f (x, y) dx ≈ yk−r + p(x) dx (7.35)
xk−r xk−r

Qualquer método de interpolação poderia ser utilizado para se encontrar este polinômio, embora o
mais utilizado seja o método das diferenças regressivas de Newton. Isto se deve ao fato de que neste
método, o polinômio é encontrado de forma recursiva, isto é, para aumentar o grau do polinômio, basta
acrescentarmos termos ao polinômio de grau mais baixo já obtido.

Da interpolação sabemos que o polinômio de grau menor ou igual a n − 1 que interpola n pontos, é
dado pela seguinte expressão:

Sejam os pontos

x f (x)
xk f (xk , y(xk )))
xk−1 f (xk−1 , y(xk−1 )))
xk−2 f (xk−2 , y(xk−2 )))
.. ..
. .
xk−(p−1) f (xk−(p−1) , y(xk−(p−1) )))

temos
(x − xk ) (x − xk )(x − xk−1 ) 2
p(x) = f (xk , yk ) + 1
∇f (xk , yk ) + ∇ f (xk , yk ) +
1! h 2! h2
(x − xk )(x − xk−1 )(x − xk−2 ) 3
+ ∇ f (xk , yk ) + ... + (7.36)
3! h3
(x − xk )(x − xk−1 )...(x − xk−(p−1) ) p
+ ∇ f (xk , yk )
p! hp

O operador ∇ é um operador linear, denominado Operador de Diferenças Regressivas, definido como:

∇0 f (xk , yk ) = f (xk , yk )
∇f (xk , yk ) = f (xk , yk ) − f (xk−1 , yk−1 ))
∇2 f (xk , yk ) = ∇[∇f (xk , yk )] = ∇[f (xk , yk ) − f (xk−1 , yk−1 ))]
ou,
∇2 f (xk , yk ) = f (xk , yk ) − 2f (xk−1 , yk−1 ) + f (xk−2 , yk−2 )
···
∇p f (xk , y(xk )) = ∇[∇p−1 f (xk , y(xk ))] = ∇p−1 [∇f (xk , yk )]
161

Para facilitar a integração de p(x) é aconselhável uma mudança de variável, do tipo:

x − xk
= u =⇒ dx = h du
h
logo

x − xk−1 x − (xk − h) x − xk + h x − xk h
= = = + =u+1
h h h h h
e
x − xk−2 x − (xk − 2h) x − xk + 2h x − xk 2h
= = = + =u+2
h h h h h
e
x − xk−3 x − (xk − 3h) x − xk + 3h x − xk 3h
= = = + =u+3
h h h h h
..
.
..
.
x − xk−(p−1) x − (xk − (p − 1)h) x − xk + (p − 1)h x − xk (p − 1)h
= = = + = u + (p − 1)
h h h h h

Para r = 0 obtemos a famı́lia de Métodos de Adams-Bashforth:


Z xk+1 Z xk+1
p(x)dx = p(x)dx (7.37)
xk−r xk

Considerando a mudança de variáveis (x → u), p(u) será dado por:

u (u)(u + 1) 2
p(u) = f (xk , yk ) + ∇f (xk , yk ) + ∇ f (xk , yk ) +
1! 2!
(u)(u + 1)(u + 2) 3
+ ∇ f (xk , yk ) + .. + (7.38)
3!
(u)(u + 1)...(u + p − 1) p
+ ∇ f (xk , yk )
p!
162

Substituindo-se na integral, observando que:

Se x = xk −→ u = 0
Se x = xk+1 −→ u = 1

logo
Z xk+1 Z xk+1 Z 1 Z 1
p(x)dx = p(x)dx = p(u)h du = h p(u)du
xk−r xk 0 0

e
Z xk+1 Z xk+1
y(xk+1 ) = y(xk ) + f (x, y)dx ≈ y(xk ) + p(x)dx =
xk xk

Z 1
u (u)(u + 1) 2

= y(xk ) + h f (xk , yk ) + ∇f (xk , yk ) + ∇ f (xk , yk ) + ... du (7.39)
0 1! 2!

Calculando-se as integrais:
Z 1
du = u|10 = 1
0

1
u2
Z 1
1
udu = =
0 2 0
2

1
u3
Z 1
1
u2 du = =
0 3 0
3

...

Z 1 2 1
u3 u2
Z 1
u(u + 1) (u + u) 1 1 5
du = du = + = + =
0 2! 0 2 6 4 0
6 4 12

devido a aproximação que foi feita (f (x, y) ≈ p(x)), estamos calculando um valor aproximado para
y(xk ) e y(xk+1 ).
Substituindo-se o valor das integrais na expressão de yk+1 , obtemos:

1 5
 
yk+1 = yk + h fk + ∇fk + ∇2 fk + ... (7.40)
2 12

Se quisermos então, aproximar f (x, y) por um polinômio de 1o grau, supondo que conhecemos a priori
uma aproximação para (xk−1 , y(xk−1 )), teremos:

1
 
yk+1 = yk + h fk + ∇fk (7.41)
2
163

Sabendo-se que ∇fk = fk − fk−1 , a expressão do método pode ser dada por:

h
yk+1 = yk + [3fk − fk−1 ]
2

Temos acima um método explı́cito de passo 2.


Para um polinômio de 2o grau, e substituindo-se as expressões de ∇:

1 5
 
yk+1 = yk + h fk + ∇fk + ∇2 fk
2 12

1 5
 
yk+1 = yk + h fk + [fk − fk−1 ] + [fk − 2fk−1 + fk−2 ]
2 12

1 1 5 5 5
 
yk+1 = yk + h fk + fk − fk−1 + fk − 2 fk−1 + fk−2
2 2 12 12 12

h
yk+1 = yk + [23fk − 16fk−1 + 5fk−2 ]
12

Este método, é um método explı́cito de passo 3. Explı́cito, porque do lado direito da equação não aparece
“k + 1” e de passo 3, porque necessitamos de informações de 3 passos anteriores para continuarmos o
processo.
A famı́lia de métodos de passo múltiplo, explı́citos e com r = 0, são chamados de Adams− Bashforth.

Métodos de Adams-Bashforth

no de passos Expressão Ordem

2 yk+1 = yk + h
2 [3fk − fk−1 ] 2

3 h [23f − 16f
yk+1 = yk + 12 k k−1 + 5fk−2 ] 3

h [55f − 59f
4 yk+1 = yk + 24 k k−1 + 37fk−2 − 9fk−3 ] 4

h [1901f − 2774f
5 yk+1 = yk + 720 k k−1 + 2616fk−2 − 1274fk−3 + 251fk−4 ] 5

Poderı́amos refazer todos estes cálculos para, por exemplo, r = 1, e terı́amos uma outra famı́lia de
métodos, denominados Métodos de Nyströn.
164

Exemplo 9:

Resolva, usando os métodos de Adams-Bashforth de 2 passos e de 3 passos, o seguinte problema de


valor inicial usando h = 0, 1.

 d y = y0 = 1 y x ∈ [0, 1]


dx 2


 y(0) = 1

Como estes métodos não são auto-iniciáveis temos que usar um método de passo simples para obter os
primeiros valores aproximados da função. Usaremos o método de Euler Aperfeiçoado (Modificado)
para exemplificar.

Euler Aperfeiçoado


 h
 yk+1 = yk + [f (xk , yk ) + f (xk + h, yk + hf (xk , yk ))]


2


 y0 = α

Onde f (x, y) = (1/2)y e y0 = 1.

No primeiro passo y0 −→ y1 , logo com k = 0:

h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2

No segundo passo y1 −→ y2 , logo com k = 1:

h
y2 = y1 + [f (x1 , y1 ) + f (x1 + h, y1 + hf (x1 , y1 ))] =
2

Resumindo:

k xk yk yexata
0 0,0 1,0000000 1,0000000
1 0,1 1,0512500 1,0512711
2 0,2 1,1051267 1,1051709

Voltando ao método de Adams-Bashforth.


Adams-Bashforth com 2 passos:

h
yk+1 = yk + [3fk − fk−1 ]
2
165

Próximo passo: y0 , y1 −→ y2 , logo com k = 1:

Observação: Nos dois primeiros passos foram usados os resultados do Método de Euler Aperfeiçoado.

h
y2 = y1 + [3f1 − f0 ]
2
Mas
1
f0 = f (x0 , y0 ) = f (x0 , y(x0 )) = f (0,0; 1,0000000) = · 1,0000000 = 0,5
2
e
1
f1 = f (x1 , y1 ) = f (x1 , y(x1 )) = f (0,1; 1,0512500) = · 1,0512500 = 0,525625
2

Portanto
0,1
y2 = 1,0512500 + [3 · 0,525625 − 0,5] = 1,10509375
2
Próximo passo: y1 , y2 −→ y3 , logo com k = 2:

h
y3 = y2 + [3f2 − f1 ]
2
Mas f1 = 0,525625 foi calculado no passo anterior e
1
f2 = f (x2 , y2 ) = f (x2 , y(x2 )) = f (0,2; 1,10509375) = · 1,10509375 = 0,552546875
2

Portanto
0,1
y3 = 1,10509375 + [3 · 0,552546875 − 0,525625] = 1,16169453125
2
E assim sucessivamente

k xk yk yexata f (xk , yk )
0 0,0 1,0000000 1,0000000
1 0,1 1,0512500 1,0512711
2 0,2 1,1050937 1,1051709
3 0,3 1,1616945 1,1618834
4 0,4 ? 1,2214027
5 0,5 ? 1,2840254
6 0,6 ? 1,3498588
7 0,7 ? 1,4190675
8 0,8 ? 1,4918247
9 0,9 ? 1,5683122
10 1,0 ? 1,6487212
166

Adams-Bashforth com 3 passos:

h
yk+1 = yk + [23fk − 16fk−1 + 5fk−2 ]
12

Próximo passo: y0 , y1 , y2 −→ y3 , logo com k = 1:

Observação: Nos três primeiros passos foram usados os resultados do Método de Euler Aperfeiçoado.

h
y3 = y2 + [23f2 − 16f1 + 5f0 ]
12

Mas

1
f0 = f (x0 , y0 ) = f (x0 , y(x0 )) = f (0,0; 1,0000000) = · 1,0000000 = 0,5
2

1
f1 = f (x1 , y1 ) = f (x1 , y(x1 )) = f (0,1; 1,0512500) = · 1,0512500 = 0,525625
2

1
f2 = f (x2 , y2 ) = f (x2 , y(x2 )) = f (0,2; 1,1050937) = · 1,1050937 = 0,55254685
2

Portanto

0,1
y3 = 1,1050937 + [23 · 0,55254685 − 16 · 0,525625 + 5 · 0,5] =
12

0,1 0,1
= 1,1050937 + [12,70857755 − 8,41 + 2,5] = 1,1050937 + [6,79857755] =
12 12

= 1,16174851291666 . . .

Próximo passo: y2 , y3 −→ y4 , logo com k = 3:

h
y4 = y3 + [23f3 − 16f2 + 5f1 ]
12

Mas f1 = 0,525625, f2 = 0,55254685 e

1
f3 = f (x3 , y3 ) = f (x3 , y(x3 )) = f (0,3; 1,16174851291666 . . .) = · 1,16174851291666 . . .
2

f3 = 0,58087425645833
167

Portanto,

0,1
y3 = 1,1050937 + [23 · 0,55254685 − 16 · 0,525625 + 5 · 0,5] =
12

0,1 0,1
= 1,1050937 + [12,70857755 − 8,41 + 2,5] = 1,1050937 + [6,79857755] =
12 12

= 1,16174851291666 . . .

E assim sucessivamente,

k xk yk yexata f (xk , yk )
0 0,0 1,0000000 1,0000000
1 0,1 1,0512500 1,0512711
2 0,2 1,1050937 1,1051709
3 0,3 ? 1,1618834
4 0,4 ? 1,2214027
5 0,5 ? 1,2840254
6 0,6 ? 1,3498588
7 0,7 ? 1,4190675
8 0,8 ? 1,4918247
9 0,9 ? 1,5683122
10 1,0 ? 1,6487212
168

Métodos Implı́citos

Os métodos implı́citos, são uma famı́lia de métodos de passo múltiplo que utilizam uma aproximação
de y(xk+1 ), para se obter uma outra aproximação (possivelmente melhor!) para este valor. Segue-se a
mesma metodologia dos métodos de Adams-Bashfort, só que para encontrar o polinômio interpolador,
utilizamos informações dos pontos k + 1, k, k − 1, . . . , k − p + 2.
Desta forma, o polinômio pp (x), agora é dado por:

(x − xk+1 )
pn (x) = f (xk+1 , yk+1 ) + ∇f (xk+1 , yk+1 ) +
1! h1
(x − xk+1 )(x − xk ) 2
+ ∇ f (xk+1 , yk+1 ) (7.42)
2! h2
(x − xk+1 )(x − xk )(x − xk−1 ) 3
+ ∇ f (xk+1 , yk+1 ) + ... +
3! h3
(x − xk+1 )(x − xk )...(x − xk−p+2 ) p
+ ∇ f (xk+1 , yk+1 )
p! hp

Fazendo-se uma mudança de variáveis semelhante àquela usada na construção dos métodos explı́citos:

x − xk+1
= u =⇒ dx = hdu (7.43)
h

e, para r = 0:
Z xk+1 Z xk+1 Z 0
p(x)dx = p(x)dx = h p(u)du (7.44)
xk−r xk −1

obtemos:

u u(u + 1) 2
p(u) = f (xk+1 , yk+1 ) + ∇f (xk+1 , yk+1 ) + ∇ f (xk+1 , yk+1 ) +
1! 2!
u(u + 1)(u + 2) 3
+ ∇ f (xk+1 , yk+1 ) + ... + (7.45)
3!
u(u + 1)...(u + p − 2) p
+ ∇ f (xk+1 , yk+1 )
p!

Calculando-se as integrais:
Z 0
du = u|0−1 = 1
−1

0
u2
Z 0
1
udu = =−
−1 2 −1
2
169

0
u3
Z 0
2 1
u du = =
−1 3 −1
3

0
u4
Z 0
3 1
u du = =−
−1 4 −1
4

...

podemos interpolar uma reta:

h
yk+1 = yk + (fk+1 + fk ) (7.46)
2

uma cúbica:

h
yk+1 = yk + (9fk+1 + 19fk − 5fk−1 + fk−2 ) (7.47)
24

e assim sucessivamente.
Esta famı́lia de métodos implı́citos, com r = 0, constitui os chamados métodos de Adams − Moulton.

7.2.4 Métodos Preditor-Corretor

Um procedimento adotado nestes casos (onde necessitamos de fk+1 , para se calcular yk+1 ) é utilizar um
esquema tipo “preditor − corretor”, ou seja: “predizemos” o valor de yk+1 por um método explı́cito
e “corrigimos” este valor, por um método implı́cito. Por exemplo, podemos utilizar um método de
Runge-Kutta ou de Adams-Bashforth para predizer o valor de yk+1 e corrigir este valor por um método
de Adams-Moulton. Faremos então, para cada passo, por exemplo:

(p) h
yk+1 = yk + (55fk − 59fk−1 + 37fk−2 − 9fk−3 ) (7.48)
24

(p) (p)
fk+1 = f (xk+1 , yk+1 ) (7.49)

(c) h  (p) 
yk+1 = yk + 9fk+1 + 19fk − 5fk−1 + fk−2 (7.50)
24

Se quisermos continuar o processo para melhorar ainda mais a aproximação obtida, podemos fazer o
(p) (c) (p) (c)
valor corrigido ser o novo preditor, isto é: yk+1 = yk+1 , até que yk+1 − yk+1 ≤ ε.

Métodos de Adams-Moulton
170

no de passos Expressão Ordem

yk+1 = yk + h
h i
(c) (p)
2 2 fk+1 + fk 2

(c) h [5f
3 yk+1 = yk + 12 k+1 + 8fk − fk−1 ] 3

h 9f (p) + 19f − 5f
h i
(c)
4 yk+1 = yk + 24 k+1 k k−1 + fk−2 4

h 251f (p) + 646f − 264f


h i
(c)
5 yk+1 = yk + 720 k+1 k k−1 + 106fk−2 − 19fk−3 5
171

Exemplo 10:

Resolva, usando o método de Adams-Moulton Cúbico, o seguinte problema de valor inicial usando
h = 0, 1.

 d y = y0 = 1 y x ∈ [0, 1]


dx 2


 y(0) = 1

Como estes métodos não são auto-iniciáveis temos que usar um método de passo simples para obter os
primeiros valores aproximados da função. Usaremos o método de Euler Aperfeiçoado (Modificado)
para exemplificar. Como preditor usaremos o método explı́cito de Adams-Bashforth de 4 passos.

Euler Aperfeiçoado


 h
 yk+1 = yk + [f (xk , yk ) + f (xk + h, yk + hf (xk , yk ))]


2


 y0 = α

Onde f (x, y) = (1/2)y e y0 = 1.

No primeiro passo y0 −→ y1 , logo com k = 0:

h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2

No segundo passo y1 −→ y2 , logo com k = 1:

h
y2 = y1 + [f (x1 , y1 ) + f (x1 + h, y1 + hf (x1 , y1 ))] =
2

Resumindo:

k xk yk yexata
0 0,0 1,0000000 1,0000000 Cond. Inicial
1 0,1 1,0512500 1,0512711 Euler Aperf.
2 0,2 1,1051267 1,1051709 Euler Aperf.

Adams-Bashforth com 3 passos (preditor):

h
yk+1 = yk + [23fk − 16fk−1 + 5fk−2 ]
12

Próximo passo: y0 , y1 , y2 −→ y3 , logo com k = 1:


172

Observação: Nos três primeiros passos foram usados os resultados do Método de Euler Aperfeiçoado.

h
y3 = y2 + [23f2 − 16f1 + 5f0 ]
12

Mas

1
f0 = f (x0 , y0 ) = f (x0 , y(x0 )) = f (0,0; 1,0000000) = · 1,0000000 = 0,5
2

1
f1 = f (x1 , y1 ) = f (x1 , y(x1 )) = f (0,1; 1,0512500) = · 1,0512500 = 0,525625
2

1
f2 = f (x2 , y2 ) = f (x2 , y(x2 )) = f (0,2; 1,1050937) = · 1,1050937 = 0,55254685
2

Portanto

0,1
y3 = 1,1050937 + [23 · 0,55254685 − 16 · 0,525625 + 5 · 0,5] =
12

0,1 0,1
= 1,1050937 + [12,70857755 − 8,41 + 2,5] = 1,1050937 + [6,79857755] =
12 12

= 1,16174851291666 . . .

Com isso obtivemos os 4 passos iniciais para a utilização do método Adams-Moulton cúbico.
Próximo passo: y0 , y1 , y2 , y3 −→ y4 , logo com k = 3:

Predição:

(p) h
y4 = y3 + [23f3 − 16f2 + 5f1 ]
12

Mas f1 = 0,525625, f2 = 0,55254685 e

f3 = f (x3 , y3 ) = f (x3 , y(x3 )) = f (0,3; 1,16174851291666 . . .) =

1
= · 1,16174851291666 . . . = 0,58087425645833
2

Portanto

(p) 0,1
y4 = 1,16174851291666 + [23 · 0,58087425645833 − 16 · 0,55254685 + 5 · 0,525625] =
12
173

0,1
= 1,16174851291666 + [13,36010789854159 − 8,8407496 + 2,628125] =
12
0,1
= 1,16174851291666 + [7,14748329854159] =
12
= 1,22131087373783991666 . . .

(p)
f4 = f (x4 , y4 ) = f (x4 , y(x4 )) = f (0,4; 1,22131087373783991666 . . .) =

1
= · 1,22131087373783991666 . . . . . . = 0,61065543686891995833
2
(p)
f4 = 0,61065543686891995833

(p)
Sendo este o valor de y4 predito. Logo precisamos agora corrigi-lo com Adams-Moulton

h
yk+1 = yk + (9fk+1 + 19fk − 5fk−1 + fk−2 )
24

(c) h  (p) 
y4 = y3 + 9f4 + 19f3 − 5f2 + f1
24
0,1
= 1,16174851291666 + (9 · 0,61065543686891995833 + 19 · 0,58087425645833
24
− 5 · 0,55254685 + 0,525625 )

0,1
= 1,16174851291666 + (14,29540055452854962497)
24
= 1,2213504757193672

E assim sucessivamente

k xk yk yk,exata | yk − yk,exata | Método


0 0,0 1,0000000000000000 1,0000000000000000 0,000000000000000000 Cond. Inicial
1 0,1 1,0512500000000000 1,0512710963760241 0,000021096376024099 Euler Aperf.
2 0,2 1,1051265625000000 1,1051709180756477 0,000044355575647748 Euler Aperf.
3 0,3 1,1617845247395833 1,1618342427282831 0,000049717988699793 Adams-Bashforth
4 0,4 1,2213504757193672 1,2214027581601699 0,000052282440802687 Adams-Moulton
5 0,5 1,2839704185524450 1,2840254166877414 0,000054998135296414 Adams-Moulton
6 0,6 1,3498009449369652 1,3498588075760032 0,000057862639037953 Adams-Moulton
7 0,7 1,4190066722687698 1,4190675485932573 0,000060876324487591 Adams-Moulton
8 0,8 1,4917606507244809 1,4918246976412703 0,000064046916789406 Adams-Moulton
9 0,9 1,5682448028889453 1,5683121854901689 0,000067382601223631 Adams-Moulton
10 1,0 1,6486503787277875 1,6487212707001282 0,000070891972340670 Adams-Moulton
174

Problema de Valor de Contorno (PVC)

Até este ponto vimos inúmeros métodos para resolver equações diferenciais ordinárias, naqueles métodos
o problema colocado era de valor inicial (um valor era imposto na função e/ou suas derivadas em um
único ponto).

Agora seremos apresentados a problemas de equações diferenciais ordinárias onde são impostas condições
em dois pontos diferentes. São os chamados Problemas de Valor de Contorno. Ou seja, as informações
sobre estas condições devem propagar para o interior do domı́nio (nos problemas de valor inicial
somente uma condição se propagava passo a passo), é claro que agora a situação é mais difı́cil e nem
sempre isto é possı́vel. Assim, a condição de existência e unicidade da solução é mais complicada.

Por exemplo,

y 00 + π 2 y = 0 y(0) = 0, y(1) = 1 não tem solução


y 00 + π 2 y = 0 y(0) = 1, y(1) = 0 tem infinitas soluções

O exemplo geral mais simples desse tipo de problema é dado a seguir. Seja a seguinte equação diferencial
ordinária:


 d y = y 0 = f (x, y) x ∈ [a, b]
dx





 y(a) = α




 y(b) = β

as condições y(a) = α e y(b) = β são chamadas condições de contorno por serem impostas ao contorno
do domı́nio (os pontos extremos do intervalo [a, b]).

Método das Diferenças Finitas

Nesta técnica numérica as derivadas são aproximadas por relações que envolvem diferenças. Seja a
representação abaixo de uma função f (x) avaliada em vários pontos xk , k = 0, 1, 2, 3, . . . uniformemente
distribuı́dos no domı́nio da função com distância entre os pontos igual a h e seja f (xk ) = fk .
175

fk
× fk+1
fk+2
×
fk−2 fk−1 ×
fk+3
fk−3 × × ×
×

fk−4

x
-
xk−4 xk−3 xk−2 xk−1 xk xk+1 xk+2 xk+3

 h - h - h - h - h - h - h -

Existem várias maneiras de se aproximar as derivadas de f (x) em relação a x. O mais comum é fazer
a aproximação considerando diferenças. Isto é,

df ∆f

dx ∆x

Por sua vez existem diferentes formas de aproximar o segundo termo da equação acima no ponto
x = xk . Por exemplo,

Diferença regressiva (Backward Formula):

df ∆f fk − fk−1 fk − fk−1
(xk ) ≈ (xk ) = =
dx ∆x xk − xk−1 h

Diferença progressiva (Forward Formula):

df ∆f fk+1 − fk fk+1 − fk
(xk ) ≈ (xk ) = =
dx ∆x xk+1 − xk h

Diferença central (Central Formula):

df ∆f fk+1 − fk−1 fk+1 − fk−1


(xk ) ≈ (xk ) = =
dx ∆x xk+1 − xk−1 2h
176

Dependendo do número de pontos que usarmos para aproximar a derivada teremos diferenças de
diferentes ordens. Outros exemplos

df −3fk + 4fk+1 − fk+2



dx 2h

df fk−2 − 4fk−1 + 3fk



dx 2h

Para as derivadas de segunda ordem também existem diferentes opções.

d2 f fk−1 − 2fk + fk+1


2

dx h2

d2 f fk − 2fk+1 + fk+2
2

dx h2

d2 f fk−2 − 2fk−1 + fk
2

dx h2

Idem para as derivadas de terceira ordem.

d3 f −fk + 3fk+1 − 3fk+2 + fk+3


3

dx h3

d3 f −fk−3 + 3fk−2 − 3fk−1 + fk


3

dx h3

d3 f −fk−2 + 2fk−1 − 2fk+1 + fk+2


3

dx 2h3

Analogamente para as derivadas de quarta ordem.

d4 f fk−2 − 4fk−1 + 6fk − 4fk+1 + fk+2


4

dx h4
177

d4 f fk − 4fk+1 + 6fk+2 − 4fk+3 + fk+4


4

dx h4

d4 f fk−4 − 4fk−3 + 6fk−2 − 4fk−1 + fk


4

dx h4

A série de Taylor nos fornece um procedimento direto para aproximar derivadas. Lembre-se que esta
série nos diz que qualquer função pode ser expressa como uma série infinita de suas derivadas em um
ponto de referência. Logo, podemos escrever a série de Taylor para cada ponto nodal (ponto nodal da
malha (discretização)) e resolver para a derivada em termos dos valores da função. Observe que
xk−2 = xk − 2h, xk−1 = xk − h, . . . , xk+1 = xk + h, xk+2 = xk + 2h.

Portanto, expandindo a função em série de Taylor nos pontos xk+1 , xk+2 temos

fk+1 = fk + hfk0 + h2 f 00 ± ERRO, x = xk+1


2! k

(2h)2 00
fk+2 = fk + (2h)fk0 + 2! fk ± ERRO, x = xk+2

Multiplicando a primeira das equações acima por −4 e somando a segunda equação obtemos

−4fk+1 + fk+2 = −3fk − 2hfk0

E explicitanto fk0 obtemos

−3fk + 4fk+1 − fk+2


fk0 ≈
2h

Como neste caso eliminamos os termos de ordem acima ou igual a 2 temos uma aproximação de segunda
ordem (O(h2 )).
Outro exemplo, expandindo a função em série de Taylor nos pontos xk+1 , xk−1 temos

fk+1 = fk + hfk0 + h2 f 00 ± ERRO, x = xk+1


2! k

fk−1 = fk − (h)fk0 + h2 f 00 ± ERRO, x = xk−1


2! k
178

Subtraindo as duas equações obtemos a diferença central.

df fk+1 − fk−1

dx 2h
179

Exemplo 11:
Seja resolver o PVC:

dy 0
dx = y = −y + x x ∈ [0, 1]








y(0) = 1








y(1) = 2e−1












Observação:







 y(x) = x − 1 + 2e−x

(solução exata)

Considere a discretização do domı́nio [0, 1] em 10 subintervalos, isto é, n = 10, logo

b−a 1−0
h= = = 0,1
n 10

xk = a + k · h = 0 + k · 0,1 k = 0, 1, 2, . . . , 10

6y

y5

× y6
y7
× y10
y2 y3 y4 × y8
y9
×
y1 × × ×
× ×
×

y0

x
-
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10

 h - h - h - h - h - h - h - h - h - h -
0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0

Substituindo as derivadas pelas diferenças e escrevendo a equação para cada ponto da discretização.
No exemplo a seguir usaremos a diferença central.
180

df ∆f fk+1 − fk−1 fk+1 − fk−1


≈ = =
dx ∆x xk+1 − xk−1 2h



y2 − y0





 x1 = 0,1 −→ 2h = −y1 + x1







 x2 = 0,2 −→ y3 − y1 = −y2 + x2
2h







y4 − y2


−→ = −y3 + x3




 x3 = 0,3 2h




y5 − y3


x4 = 0,4 −→ = −y4 + x4


2h







x5 = 0,5 −→ y6 − y4 = −y5 + x5


 2h



y7 − y5


x6 = 0,6 −→ = −y6 + x6


2h







y8 − y6


x7 = 0,7 −→ = −y7 + x7





 2h



y9 − y7





 x8 = 0,8 −→ 2h = −y8 + x8





y10 − y8




 x9 = 0,9 −→ 2h = −y9 + x9








 y2 − y0 = 2h(−y1 + x1 )






y3 − y1




 = 2h(−y2 + x2 )






y4 − y2




 = 2h(−y3 + x3 )






y5 − y3 = 2h(−y4 + x4 )











y6 − y4 = 2h(−y5 + x5 )






y7 − y5 = 2h(−y6 + x6 )











y8 − y6 = 2h(−y7 + x7 )














 y9 − y7 = 2h(−y8 + x8 )









 y10 − y8 = 2h(−y9 + x9 )
181







 −y0 + 2hy1 + y2 = 2hx1






−y1 + 2hy2 + y3




 = 2hx2






−y2 + 2hy3 + y4




 = 2hx3






−y3 + 2hy4 + y5 = 2hx4











−y4 + 2hy5 + y6 = 2hx5






−y5 + 2hy6 + y7 = 2hx6











−y6 + 2hy7 + y8 = 2hx7














 −y7 + 2hy8 + y9 = 2hx8









 −y8 + 2hy9 + y10 = 2hx9








 −y0 + 2hy1 + y2 = 2hx1






−y1 + 2hy2 + y3




 = 2hx2






−y2 + 2hy3 + y4




 = 2hx3






−y3 + 2hy4 + y5 = 2hx4











−y4 + 2hy5 + y6 = 2hx5






−y5 + 2hy6 + y7 = 2hx6











−y6 + 2hy7 + y8 = 2hx7














 −y7 + 2hy8 + y9 = 2hx8









 −y8 + 2hy9 + y10 = 2hx9

Representando na forma matricial


182
     
 2h 1 0 0 0 0 0 0 0   y1   2hx1 + y0 
   
 
   
 

 −1 2h 1 0 0 0 0 0   y2 
0    
 2hx2 

     
     

 0 −1 2h 1 0 0 0 0   y3  
0     2hx3 

     
     

 0 0 −1 2h 1 0 0 0 0   y4 
 
 
 2hx4 

     
     
0 0 0 −1 2h 1 0 0  ·  y5  = 
0  2hx5
    
 
     
     

 0 0 0 0 −1 2h 1 0 0   y6 
 
 

2hx6 

     
     
0 0 0 0 0 −1 2h 1 0   y7   2hx7
     
 
     
     
0 0 0 0 0 0 −1 2h 1   y8   2hx8
     
 
     
     
0 0 0 0 0 0 0 −1 2h y9 2hx9 − y10

Entretanto nos pontos x0 e x10 os valores da função são conhecidos, são impostas como condições de
contorno, portanto não são ingónitas y0 e y10 .

     
 2h 1 0 0 0 0 0 0 0   y1   2hx1 + 1 
     
     

 −1 2h 1 0 0 0 0 0 0  
  y2  
  2hx2 

     
     

 0 −1 2h 1 0 0 0 0 0  
  y3  
  2hx3 

     
     

 0 0 −1 2h 1 0 0 0 0  
  y4  
  2hx4 

     
     
 0 0 0 −1 2h 1 0 0 0 · y5 = 2hx5 
     
     
     

 0 0 0 0 −1 2h 1 0 0  
  y6  
  2hx6 

     
     
0 0 0 0 0 −1 2h 1 0 y7 2hx7
     
     
     
     
0 0 0 0 0 0 −1 2h 1 y8 2hx8
     
     
     
     
0 0 0 0 0 0 0 −1 2h y9 2hx9 − 2e−1

Substituindo os valores dos xk ’s e de h,


183
       
 0,2 1 0 0 0 0 0 0 0   y1   0,2 · 0,1 + 1   1,02 
       
       

 −1 0,2 1 0 0 0 0 0 0  
  y2  
  0,2 · 0,2  
  0,04 

       
       

 0 −1 0,2 1 0 0 0 0 0  
  y3  
  0,2 · 0,3  
  0,06 

       
       

 0 0 −1 0,2 1 0 0 0 0  
  y4  
  0,2 · 0,4  
  0,08 

       
       
 0 0 0 −1 0,2 1 0 0 0 · y5 = 0,2 · 0,5 = 0,10 
       
       
       

 0 0 0 0 −1 0,2 1 0 0  
  y6  
  0,2 · 0,6  
  0,12 

       
       
0 0 0 0 0 −1 0,2 1 0 y7 0,2 · 0,7 0,14
       
       
       
       
0 0 0 0 0 0 −1 0,2 1 y8 0,2 · 0,8 0,16
       
       
       
       
0 0 0 0 0 0 0 −1 0,2 y9 0,2 · 0,9 − 2e−1 −0,5557588823

E finalmente temos o sistema linear que resolvido nos dará os valores aproximados da função nos
pontos nodais.

     
 0,2 1 0 0 0 0 0 0 0   y1   1,02 
     
     

 −1 0,2 1 0 0 0 0 0 0  
  y2  
  0,04 

     
     

 0 −1 0,2 1 0 0 0 0 0  
  y3  
  0,06 

     
     

 0 0 −1 0,2 1 0 0 0 0  
  y4  
  0,08 

     
     
 0 0 0 −1 0,2 1 0 0 0 · y5 = 0,10 
     
     
     

 0 0 0 0 −1 0,2 1 0 0  
  y6  
  0,12 

     
     
0 0 0 0 0 −1 0,2 1 0 y7 0,14
     
     
     
     
0 0 0 0 0 0 −1 0,2 1 y8 0,16
     
     
     
     
0 0 0 0 0 0 0 −1 0,2 y9 −0,5557588823

Resolvendo o sistema obtemos:


184
   
 y1   0,911022235 
 
 
 
 

 y2 


 0,837795553 

   
   

 y3  
  0,783463124 

   
   

 y4  
  0,741102928 

   
   
=
y5  0,715242539
  
 
   
   

 y6  
  0,698054421 

   
   
y7   0,695631654
   
 
   
   
y8   0,698928090
   
 
   
   
y9 0,715846036

Resumindo,

k xk yk yexata
0 0,0 1,000000000 1,000000000
1 0,1 0,911022235 0,909674836
2 0,2 0,837795553 0,837461506
3 0,3 0,783463124 0,781636441
4 0,4 0,741102928 0,740640092
5 0,5 0,715242539 0,713061319
6 0,6 0,698054421 0,697623272
7 0,7 0,695631654 0,693170608
8 0,8 0,698928090 0,698657928
9 0,9 0,715846036 0,713139319
10 1,0 0,735758882 0,735758882

Você também pode gostar