Escolar Documentos
Profissional Documentos
Cultura Documentos
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)
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.
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
x0 → x1 → x2 → x3 → x4 → · · · · · · → ξ
| {z } |{z}
aproximações zero
Surgem algumas questões:
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 |<
| xi+1 − xi |
<
| xi+1 |
| f (xi ) |<
4. Rapidez de convergência
Uma análise da rapidez de convergência será feita no final do capı́tulo.
5
y
y = f (x)
f (a) · f (b) < 0
+ x
a a+b b
− 2
| {z }| {z }
subintervalo aonde subintervalo aonde não
há troca de sinal há troca de sinal
y
y = f (x)
f (a) · f (b) < 0
a+b
2
+ x
a − b
−
| {z }
troca de sinal
y
y = f (x)
f (a) · f (b) < 0
a+b
a 2 + x
+
− b
| {z }
troca de sinal
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
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
Observações:
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))
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
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))
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
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
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 ))
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
f (x) = 0
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 )
..
.
y = f (x)
Problema de zero
da função f (x)
f (x) = 0
α é zero de f (x)
x
α
y=x
α = g(α)
y = g(x)
α é ponto fixo de g(x)
x
α
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
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
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.
y=x y = g(x)
x1 = g(x0 )
x2 = g(x1 )
x3 = g(x2 )
α = g(α)
x
α
· · · x3 x2 x1 x0
.. 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 · · · · · ·
y=x
x2 = g(x1 )
α = g(α)
x3 = g(x2 )
y = g(x)
x1 = g(x0 )
x
x1 x3α x2 x0
y=x
x2 = g(x1 )
α = g(α)
x1 = g(x0 )
y = g(x)
x3 = g(x2 )
x
x3 x1 α x0 x2
Observação: Quanto menor for o valor de | g 0 (x) | mais rapidamente a sequência converge.
No Exemplo 7 b)
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
(ξ − 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:
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 )
y
y = f (x)
x
x3 x2 x1 x0
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.
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
f (x) x2 + x − 6 x2 + 6
g(x) = x − = x − =
f 0 (x) 2x + 1 2x + 1
23
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.
y
y = f (x)
x
x4 x3 x2 x1 x0
Exemplo 10:
Seja a função f dada por:
f (x) = x2 + x − 6
e com os valores:
logo
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.
xi+1 = g(xi )
ξ = g(ξ)
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
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
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
Assim
ei+1 1 f 00 (ci )
=
e2i 2 f 0 (xi )
logo
ei+1
lim =C
i→∞ e2i
Portanto, o Método de Newton-Raphson tem convergência quadrática quando temos uma raiz
simples.
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:
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
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
é o vetor de incógnitas e
b1
b2
b3
b=
b4
..
.
bn
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
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;
Definição 1.2.4
Uma norma em IRn é uma função real k.k satisfazendo as seguintes propriedades.
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
Definição 1.2.5 Uma norma em IRm×n é uma função real k.k satisfazendo as seguintes propriedades.
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:
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.
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
− 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
(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
(l3 ) 0x1 + 2
− 10
3 x2 x3 = 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 é
−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
A0 = G1 A, b0 = 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
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
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
a00k3
lk3 =
a0033
da linha (l3 ) da matriz A00 e do vetor b00 . O resultado será o sistema linear desejado A000 x = b000 .
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
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.
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
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
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
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.
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
A = LU =⇒ |{z}
A x = b =⇒ LU x = b =⇒ L |{z}
Ux = b
LU y
Ly = b −→ Sistema Triangular Inferior
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
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
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
−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
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
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
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
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 é,
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 é,
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:
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
12 1
−3 2
−→ Lc = b −→ U x = c −→ c = ex=
23
3
4 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
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
−→ 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
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
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.
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
(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
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→∞
a41 x1 + a42 x2 + a43 x3 + a44 x4 + · · · + a4n xn = b4
.. .. .. .. .. ..
. . . . . .
an1 x1 + an2 x2 + an3 x3 + an4 x4 + · · · + ann xn = bn
69
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
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.
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
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
(1)
x1 1
(1) = 9
x2 6
(1)
2
x3 5
(2) 51
x1 1,275
40
(2) = 36 =
x2 30 1,2
(2)
6
x3 5 1,2
(3)
x1 1
(3) =
x2 0,8875
(3)
x3 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
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.
..
.
β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
Exemplo 1.4.4.1
Seja o sitema linear
5x1 + x2 + x3 = 5
3x1 + 4x2 + x3 = 6
3x1
+ 3x2 + 6x3 = 0
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
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
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
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)
ω 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
Ax = b A ∈ IRn×n , x e b ∈ IRn
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
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
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
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
x(i+1) = R1 x(i) + d
onde
R1 = (I − L)−1 U
d = (I − L)−1 D −1 b
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+1) = Rω x(i) + d
onde
Rω = (I − ωL)−1 [(1 − ω) I + ωU ]
d = ω (I − ωL)−1 D −1 b
EXEMPLOS
Exemplo 1.5.1
1. Jacobi
Seja o sitema linear:
3x1 + x2 + x3 = 5
x1 + 2x2 = 3
1
x1 + 2 x2 + 2x3 = 6
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
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.
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.
lim x(i) = x
i→∞
onde
Teorema 2.6.2 Seja T uma matriz quadrada. As seguintes condições são equivalentes:
(1) lim T i = 0;
i→∞
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→∞
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
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) + .
ρ(Rω ) ≥| ω − 1 | ; ω 6= 0
Como conseqüência, o Método da Relaxação, por pontos ou por blocos, só poderá convergir se 0 < ω < 2.
Mas,
det(Rω ) = det (I − ωL)−1 [(1 − ω)I + ωU ] =
87
det (I − ωL)−1 = 1
Assim,
det(Rω ) = (1 − ω)n
e
n
Y
= (1 − ω)n ≤ ρn (Rω ) (pois | λ |≤ ρ(Rω ) = max | λi |)
i=1
ρ(Rω ) ≥| 1 − ω |
0 ≤| 1 − ω |≤ ρ(Rω ) < 1
| 1 − ω |< 1
−1 < 1 − ω < 1
−2 < −ω < 0
0<ω<2
1
cujo raio espectral ρ(R1 ) = 2 < 1 e portanto o Método de Gauss-Seidel converge.
Demonstração:
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
2) Seja a matriz
2 −1 1
A=
2 2 2
−1 −1 2
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
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
Subdividindo em blocos
5 2 | 2
2
5 | 3
AB =
— —
| —
2 3 | 5
A=D−E−F
Substituindo no sistema
(D − E)x(k+1) = F x(k) + b
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
AB = D B − E B − F B
Substituindo no sistema
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
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
• 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→∞
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
<
kx(i+1) k
ou ainda
kf (x(i) )k <
kxk = max | xk |
1≤k≤n
xi+1 = cos xi , i = 0, 1, 2, . . .
ou seja,
Φ(x) = cos x
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
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).
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 )
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
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, . . .
ou
onde
∆x = x(i+1) − x(i)
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
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
∆x1
" #
0.5
=
0.0
∆x2
Critério de Parada
" #
(1) (0) 0.5
kx −x k = k∆xk = k k = 0.5 >
0.0
Segunda iteração:
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
∆x1
" #
−0.10
=
−0.05
∆x2
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).
A ∈ IRn×n ,
P3 (x) = a0 x3 + a1 x2 + a2 x + a3 ,
k = 1 ⇒ a0 s1 + a1 = 0 ⇒ a1 = −a0 s1 ,
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:
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
a1 = s1 ⇒ a1 = 1,
2a2 = s2 − a1 s1 ⇒ a2 = 2,
3a3 = s3 − a1 s2 − a2 s1 ⇒ a3 = −2.
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:
AX = λk X,
Para k = 1, 2, 3, . . . , n
X (0) = ek ,
Para i = 1, 2, . . . , n − 1
X (i) = λk X (i−1) + bi ,
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:
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 ,
Finalmente, calculamos:
X (2) = λ1 X (1) + b2 ,
110
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)
111
112
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.
onde Lk (x) são polinômios de grau ≤ n. Para cada i, devemos satisfazer a condição pn (xi ) = yi ,
ou seja:
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 (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
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:
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
Assim, podemos reescrever o polinômio de Newton pn (x), dado inicialmente, como sendo:
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:
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.
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
Exemplo 3:
Na aproximação de por um polinômio em [0,2], no Exemplo 1, obtivemos o seguinte polinômio
de Lagrange:
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
Mn+1
|En (x)| = |f (x) − pn (x)| ≤ |(x − x0 )(x − x1 ) · · · (x − xn )| , (4.22)
(n + 1)!
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:
Assim,
2.7183 − 1.1487
p1 (x) = 1.1487 + (x − 0.5)
1.0 − 0.5
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:
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.
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
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
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:
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
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
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
f (x) = c1 x + c0 (5.11)
Para que ni=1 δj2 em (6.11) seja mı́nimo devemos ter que as derivadas parciais deste somatório
P
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
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
Í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
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:
Daı́,
40
ȳ = =5
8
e
2.5454
R2 = 1 − = 0.95455
56
Como R2 é próximo de 1,o ajuste é ótimo.
Y =BX +A (5.21)
onde
Para isto,
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
1
Y = = BX + A
f (x)
Y = BX + A
onde A e B podem ser determinados através do ajuste linear pelos mı́nimos quadrados.
4 – Função do tipo
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
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
Y = 1.5612 e−0.021489x
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.
h = xi+1 − xi , i = 0, 1, 2, · · · , n − 1
127
128
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
Quando aproximamos ab f (x) dx pela regra dos Trapézios, cometemos um erro, e este é deduzido
R
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
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
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
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
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
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
IT r = I + C0 h2 + C2 h4 + C4 h6 + · · · (6.25)
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)
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
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)
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
0.5
I= × (Ix (0) + 4 × Ix (0.5) + 2 × Ix (1) + 4 × Ix (1.5) + Ix (2))
3
• 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
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
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
?
- Solução do modelo
Modificação do modelo
6
Insatisfatório
?
Validação
Satisfatório
?
Pronto para ser utilizado
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 -
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
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:
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
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:
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
Exemplo 3:
Seja o seguinte problema de valor inicial
√
y 0 = y 1/2 = y; x ∈ [0, 1]
y(0) = 0
√ √ √ 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) = α
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
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 )
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
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
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!
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!
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:
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.
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:
• 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).
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)
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 = α
1 1
y1 = y0 + hf (x0 , y0 ) = y0 + h y0 = 1 + 0,1 · 1 = 1,05
2 2
1 1
y2 = y1 + hf (x1 , y1 ) = y1 + h y1 = 1,05 + 0,1 · 1,05 = 1,1025
2 2
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.
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.
h 0
y(xk+1 ) = y(xk ) + h[f (xk , y(xk )) + f (xk , y(xk )) + O(h2 )] (7.21)
2!
µ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
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 = α
h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2
h
y2 = y1 + [f (x1 , y1 ) + f (x1 + h, y1 + hf (x1 , y1 ))] =
2
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.
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
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 )
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
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
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
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.
Onde:
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 .
Métodos Explı́citos
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:
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
∇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
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
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
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
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
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:
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 = α
h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2
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
h
yk+1 = yk + [3fk − fk−1 ]
2
165
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
h
yk+1 = yk + [23fk − 16fk−1 + 5fk−2 ]
12
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 . . .
h
y4 = y3 + [23f3 − 16f2 + 5f1 ]
12
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
...
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.
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
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
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 = α
h
y1 = y0 + [f (x0 , y0 ) + f (x0 + h, y0 + hf (x0 , y0 ))] =
2
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.
h
yk+1 = yk + [23fk − 16fk−1 + 5fk−2 ]
12
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
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
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,
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]).
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,
df ∆f fk − fk−1 fk − fk−1
(xk ) ≈ (xk ) = =
dx ∆x xk − xk−1 h
df ∆f fk+1 − fk fk+1 − fk
(xk ) ≈ (xk ) = =
dx ∆x xk+1 − xk h
Dependendo do número de pontos que usarmos para aproximar a derivada teremos diferenças de
diferentes ordens. Outros exemplos
d2 f fk − 2fk+1 + fk+2
2
≈
dx h2
d2 f fk−2 − 2fk−1 + fk
2
≈
dx h2
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
(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
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
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)
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
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
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
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
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