Escolar Documentos
Profissional Documentos
Cultura Documentos
4.1 Introdução
Os métodos numéricos para solução de sistemas de equações lineares podem ser agrupados
em métodos diretos e métodos iterativos. Dentre os métodos diretos podemos citar a regra de
Cramer e o método de eliminação de Gauss que são bem conhecidos. Existem outros métodos
diretos que vamos estudar nesse capítulo, como o método de decomposição LU e o método de
decomposição Cholesky.
Os métodos iterativos, amplamente empregados para sistemas de grande porte, são resultados
importantes cujas demonstrações utilizam o teorema do ponto fixo de Banach. Estudaremos o
método de Gauss-Jacobi e o método de Gauss-Seidel no próximo capítulo.
55
56 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
O método de eliminação de Gauss é um método direto para resolver sistemas de equações lin-
eares, consiste em utilizar operações elementares sobre as linhas da matriz ampliada do sistema
para transformar essa matriz ampliada em uma outra equivalente que seja triangular superior.
Uma vez tendo o sistema na forma triangular superior, a solução é obtida pela substituição
inversa.
Dado o sistema Bx = b,
a11 a12 ... a1n ... a1m x1 b1
a21 a22 ... a2n ... a2m x2 b2
. = .
... ... ... ... ... ... .. ..
an1 an2 ... ann ... anm xm bn
| {z }
=B
Nas operações elementares a serem realizadas a seguir estamos supondo que é sempre possível
obter em cada coluna um elemento não nulo.
(0)
Para iniciar o processo vamos denotar A(0) = A e os seus elementos denotados por aij . Os
multiplicadores são dados por
(0)
ak1
mk1 = (0)
, k = 2, 3, .., n
a11
(0)
A fim de eliminar os elementos ak1 , k = 2, 3, ..., n realizamos as seguintes operações elementares
sobre as linhas
Lk ←− Lk − mk1 L1 , k = 2, 3, ..., n.
4.2. O MÉTODO DE ELIMINAÇÃO DE GAUSS 57
(1)
Após essa etapa obtemos a matriz A(1) cujos elementos são denotados por aij . Note que os
(1)
elementos ak1 = 0, k = 2, 3, ..., n.
(1)
A fim de eliminar os elementos ak2 , k = 3, ..., n precisaremos nessa etapa dos multiplicadores
(1)
ak2
mk2 = (1)
, k = 3, .., n
a22
e realizamos as seguintes operações
Lk ←− Lk − mk2 L2 , k = 3, ..., n.
(2)
Após essa operação obtemos a matriz A(2) cujos elementos são denotados por aij . Note que
(2)
ak2 = 0, k = 3, ..., n.
Continuando esse procedimento, ao final da (n−1)-ésima etapa obteremos uma matriz triangular
superior dada por
(n−1) (n−1) (n−1) (n−1) (n−1) (n−1)
a11 a12 a13 ..... a1n ...... a1m b1
(n−1) (n−1) (n−1) (n−1) (n−1)
0 a22 a23 ...... a2n ...... a2m b2
(n−1) (n−1) (n−1) (n−1)
A(n−1)
= 0 0 a33 ...... a3n ...... a3m b3
0 0 0 ..... ... ...... ... ...
... ... ... ..... ... ...... ... ...
(n−1) (n−1) (n−1)
0 0 0 ...... ann ...... anm bn
O sistema original é equivalente ao sistema triangular superior obtido ao final desse processo.
Ambos os sistemas possuem o mesmo conjunto solução. Assim, o conjunto solução do sistema
original é a exatamente o conjunto solução do sistema triangular superior que pode ser obtido
por substituição inversa.
Note que um sistema triangular superior
10x + 5y + 2z + 1w = 1
2x + 8y − 2z + 1w = 2
4x + 5y + 20z + 1w = 3
2x − 3y + 22z + 2w = 1
A matriz ampliada desse sistema é
10 5 2 1 1
2 8 −2 1 2
A=
4 5 20 1 3
2 −3 22 2 1
Vamos triangularizar a matriz ampliada A utilizando o procedimento apresentado acima.
Os multiplicadores são
2
m21 = = 0.2,
10
4
m31 = = 0.4,
10
2
m41 = = 0.2.
10
As operações elementares para anular as entradas de posição a21 , a31 , a41 são as seguintes:
2
L2 ← L2 − m21 L1 = L2 − L1 ,
10
4
L3 ← L3 − m31 L1 = L3 − L1 ,
10
2
L4 ← L4 − m41 L1 = L4 − L1 .
10
4.2. O MÉTODO DE ELIMINAÇÃO DE GAUSS 59
10x + 5y + 2z + 1w = 1
7y − 2.4z + 0.8w = 1.8
20.2286z + 0.25714w = 1.82857
2w = 0
60 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
w = 0
1.82857 − 0.25714w
z = = 0.090395
20.2286
1.8 + 2.4z − 0.8w
y = = 0.288136
7
1 − 5y + 2z − w
x = = −0.0621469
10
Resumo:
(k)
Em cada passo k denotamos por A(k) = (aij ) a matriz obtida após este passo.
Os passos são os seguintes:
ak1
Passo 1: eliminar ak1 , k = 2, 3, . . . , n, utilizando os multiplicadores mk1 = , k = 2, 3, . . . , n
a11
obtendo a matriz A(1)
(1)
Passo 2: eliminar na matriz A(1) , os elementos ak2 , k = 3, 4, . . . , n utilizando os multiplicadores
(1)
ak2
mk2 = (1) , k = 3, . . . , n.
a22
Prosseguindo até atingir o passo (n − 1) cujo objetivo é eliminar an,n−1
(1) (2) (n−1)
Os elementos a11 , a22 , a33 , . . . , ann são chamados de pivot e os números
(k−1)
aki
mki = (k−1)
, k = 1, 2, . . . , n − 1, i = k + 1, . . . , n (4.2.1)
akk
são chamados de multiplicadores.
> restart:
> with(linalg):
> subinversa:=proc(a)
local n, x, i, j, t, soma:
n:=rowdim(a): # dimensão do espaço linhas.
# Teste para sistema triangular.
for i from 2 to n do
for j from 1 to i-1 do
if a[i,j]<>0 then ERROR(‘Este sistema não é triangular superior‘) fi
od:
od:
4.4. ESTRATÉGIAS DE PIVOTEAMENTO 61
# Substituição inversa.
x[n]:=a[n,n+1]/a[n,n]:
for j from 1 to n-1 do
soma:=0:
for t from n-j+1 to n do
soma:=soma+a[n-j,t]*x[t]:
od:
x[n-j]:=(a[n-j,n+1]-soma)/a[n-j,n-j]:
od:
# Escrevendo vetor solução.
vector( [seq(x[s], s=1..n)] ):
end:
## Exemplo
> A:=matrix([ [2,1,3,2], [0,3,-5,8] , [0,0,2,-2] ]);
> subinversa(A);
A estratégia de pivoteamento parcial consiste em tomar para pivot o maior elemento (em mó-
dulo) dentre os elementos da coluna que ainda atuam no processo. No pivoteamento
completo ou total, toma-se, em cada passo, como pivot o maior elemento (em módulo) den-
tre os elementos da matriz que ainda atuam no processo de eliminação de Gauss. O
pivoteamento completo é pouco utilizado, pois envolve muitas comparações que o torna com-
putacionalmente trabalhoso, consumindo tempo e memória da máquina.
Pode-se provar que as estratégias de pivoteamento parcial e pivoteamento completo minimizam
erros.
Para ilustrar essa técnica, vejamos um exemplo em que a estratégia de pivoteamente não é
empregada e a solução obtida é absurda. Em seguida, a estratégia de pivoteamente é empregada
e a solução obtida é mais próxima do valor exato.
É claro que se utilizarmos precisão infinita, não haverá erros de arredondamento, por isso nesse
62 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
0.0001x − 1y = −0.9999
1.4142x + y = 2.4142
cuja solução é x = y = 1.
Esse exemplo simples mostra a necessidade da utilização de estratégias de pivoteamento.
x1 + x2 + 3x4 = 4,
−x2 − x3 − 5x4 = −7,
3x3 + 13x4 = 13,
−13x4 = −13
x1 + x2 + 3x4 = 4,
2x1 − x2 − x3 + x4 = 1,
3x1 − x2 − x3 + 2x4 = −3,
−x1 + 2x2 + 3x3 − x4 = 4.
4.5. USANDO MAPLE: O MÉTODO DE ELIMINAÇÃO DE GAUSS 63
Use o processo de eliminação de Gauss (sem pivoteamento) para obter a solução deste
sistema usando aritmética com quatro dígitos e arredondamento.
Agora use estratégia de pivoteamento para resolver o sistema e compare as soluções
obtidas.
> EGauss_pivot :=
proc(A,b)
local i,j,k,n,pivot,ind_pivot,ratio,x,Ab;
# i,j,k são indices.
# n é a dimensão da matriz.
# pivot é o pivot.
# ind_pivot é o índice da linha que contém o pivot.
# ratio - usado para armazenar a razão entre dois elementos da matriz
# quando realizar a eliminação.
# Ab é a matriz aumentada.
n := rowdim(A);
Ab := augment(A,b);
for i from 1 to n do
pivot := abs(Ab[i,i]);
ind_pivot := i;
for j from i+1 to n do
if (abs(Ab[j,i]) > pivot) then
pivot := abs(Ab[j,i]);
ind_pivot := j;
fi;
od;
if (pivot = 0) then
#Todos os elementos abaixo RETURN(‘Matriz singular‘); #da linha
atual são nulos.
fi;
if (ind_pivot <> i) then #devemos trocar as linhas.
troca(Ab,i,ind_pivot); #troca linhas.
64 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
fi;
# Eliminação dos elementos na coluna i de todas as linhas
# abaixo do atual.
for j from i+1 to n do
ratio := Ab[j,i]/Ab[i,i];
for k from i to n+1 do
Ab[j,k] := Ab[j,k] - ratio*Ab[i,k];
od;
od;
od;
# a matriz agora é triangular superior e podemos calcular
# a solução por substituição inversa
x := vector(n);
for i from n by -1 to 1 do
x[i] := Ab[i,n+1];
for j from i+1 to n do
x[i] := x[i] - Ab[i,j]*x[j];
od;
x[i] := x[i]/Ab[i,i];
od;
print(‘Matriz aumentada reduzida a triangular superior ‘,
‘é:‘, Ab);
print(‘A solução é :‘, x);
end:
#Exemplo
> A := matrix(3,3,[[-1.414214,2,0],[1,-1.414214,1],[0,2,-1.414214]]);
> b := vector(3,[1,1,1]);
> z := EGauss_pivot(A,b);
4.6 Decomposição LU
A decomposição LU é uma variante do método de eliminação de Gauss. Dizemos que uma
matriz An×n admite uma decomposição LU , se existem matrizes L e U , triangulares inferior e
superior, respectivamente, tais que A = LU. Conhecer a decomposição em LU de uma matriz A
é útil e facilita na resolução de sistemas de equações lineares Ax = b. Esta é a grande utilidade
dos métodos de decomposição ou fatoração.
Vejamos como isso acontece, é muito simples.
Suponha que desejamos obter a solução do sistema de equações lineares Ax = b, mas sabendo
que A se fatora como A = LU . Então resolvemos dois sistemas de equações lineares mais
simples:
Ly = b (4.6.2)
U x = y. (4.6.3)
4.6. DECOMPOSIÇÃO LU 65
Note que o sistema (4.6.2) é simples (pois é um sistema triangular inferior) e o sistema (4.6.3)
é também simples (pois é um sistema triangular superior). Para a solução do sistema (4.6.2)
usamos substituição direta, enquanto que para a solução do sistema (4.6.3) usamos substituição
inversa.
Como saber se uma matriz admite decomposição LU ? Para responder a essa questão precisamos
de alguns conceitos.
Dizemos que uma matriz An×n é diagonalmente dominante se
n
X
|aii | ≥ |aij |, i = 1, 2, .., n.
j=1,j6=i
Teorema 4.6.1 Toda matriz estritamente diagonalmente dominante tem inversa. Além disso,
o processo de eliminação de Gauss pode ser realizado sem a necessidade de permutação de linhas
ou colunas.
Lembramos que a cada operação elementar sobre as linhas de uma matriz A, corresponde uma
matriz chamada elementar E tal que EA é o resultado desta operação. A matriz elementar E
é obtida da matriz identidade realizando sobre ela a mesma operação elementar realizada sobre
a matriz A.
No método de eliminação de Gauss, realizamos operações elementares sobre a matriz A com
o objetivo de triangularizá-la, obtendo em cada passo as matrizes
Teorema 4.6.2 Se o método de eliminação de Gauss pode ser realizado sobre An×n sem trocas
de linhas ou colunas, então A pode ser escrita como A = LU, onde L = (mij ) é triangular
inferior com mii = 1, e U = (uij ) em que U = A(n−1) matriz triangular superior.
Teorema 4.6.3 Se An×n é uma matriz com todos os determinantes de suas submatrizes prin-
cipais diferentes de zero, então, existe uma única matriz triangular inferior L = (mij ) (estes são
os multiplicadores dados em (4.2.1)) com mii = 1, e uma matriz triangular superior U = (uij )
em que U = A(n−1) tal que A = LU.
Suponha que a decomposição seja válida para toda matriz até ordem k = n − 1 que tenha
subdeterminantes
principais
não nulos, isto é, An−1 = Ln−1 Un−1 .
An−1 s Ln−1 0 Un−1 y
Seja A = e de modo análogo sejam L = eU= .
r a x 1 0 unn
nn
Ln−1 × Un−1 Lk−1 y
O produto LU = deve ser igual a A. Isso só é possível se,
xUn−1 xy + unn
Como An−1 = Ln−1 × Un−1 por hipótese e Ln−1 , Un−1 são não-singulares, então temos
y = L−1
k−1 s
−1
x = rUn−1
unn = ann − xy.
x1 + x2 + 3x4 = 4,
2x1 + x2 − x3 − 5x4 = −7,
3x1 − x2 − x3 + 2x4 = −3,
−x1 + 2x2 + 3x3 − x4 = 4.
68 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
3. A matriz A abaixo tem a11 = 0, então não tem uma decomposição LU,
0 1 −1 1
1 1 −1 2
A=
−1 −1 1 2
1 2 0 2
mas permutando as linhas E1 com E2 e E3 com E4 obtemos uma matriz à que admite
uma decomposição LU. Determine P tal que à = P A, decomponha à = LU e finalmente
escreva A = P −1 LU.
> restart:with(linalg):
> LU := proc(A,L,U)
local i,j,k,n,razao;
# i,j,k são índices.
# n é a dimenão da matriz
# razao usado para armazenar os multiplicadores
n := rowdim(A);
L := matrix(n,n,0);
U := matrix(n,n);
U := copy(A);for i from 1 to n do
if (U[i,i] = 0) then RETURN(‘Não existe decomposição LU para A‘);
fi;
L[i,i] := 1;
for j from i+1 to n do
razao := U[j,i]/U[i,i];
L[j,i] := razao;
for k from i to n do
U[j,k] := U[j,k] - razao*U[i,k];
od;
od;
od;
print(‘A matriz L é:‘, L);
print(‘A matriz U é:‘, U);
end:
#exemplo
> A := matrix(3,3,[[3,2,1],[1,-1,-1],[4,-3,-3]]);
> LU(A,L,U);
4.8. DECOMPOSIÇÃO CHOLESKY 69
O seguinte resultado dá um critério que ajuda a decidir se uma matriz é positiva definida.
Teorema 4.8.1 (a) Se An×n é uma matriz simétrica, então A possui n autovalores reais e n
autovetores ortonormais.
(b) Uma matriz simétrica A é definida positiva se, e somente se, seus autovalores são reais e
positivos.
(c) Uma matriz simétrica A é definida positiva se, e somente se, cada uma de suas submatrizes
principais têm determinante positivo.
(d) Uma matriz simétrica A é definida positiva se, e somente se, o processo de eliminação de
Gauss pode ser realizado sem permutação de linhas ou colunas e tem todos os elementos pivots
positivos.
Teorema 4.8.2 (Cholesky) Uma matriz simétrica A é definida positiva se, e somente se,
pode ser fatorada como LLT , onde L é uma matriz triangular inferior com elementos positivos
na diagonal.
70 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
Como obter a matriz L do método de Cholesky? Tomemos uma matriz simétrica e impomos
que ela se decomponha como LLt .
a11 a21 ... an1 l11 0 0 0 ... 0 l11 l21 ... lk1 ... ln1
a21 a22 ... an2 l21 l22 0 0 ... 0 0 l22 ... lk2 ... ... ln2
. .. .. ..
. .. .. ..
.
. .. 0 0 0 ... ... ... ...
. . . . . 0 .
=
... 0 0. 0 ... lkk ... ... lnk
ak1 ak2 ... akn lk1 lk2 ... lkk
. .. .. .. . .. .. .. .. .. .. .. .. .. ..
.. . . . .. . . . . 0 . . . . . .
an1 an2 ... ann ln1 ln2 .. lnk ... lnn 0 0 ... 0 0 lnn
A maneira mais prática para obter os coeficientes (lij ) é começando pela primeira coluna, depois
para a a segunda coluna e assim por diante.
Coluna 1: (aj1 ). Efetuando o produto acima obtemos:
2
a11 l11
a21 l21 l11
.. = ..
. .
an1 ln1 l11
então
√
l11 = a11
aj1
lj1 = , j = 2, 3, ..., n
l11
Coluna k: (ajk ).
Note que nesse passo já são conhecidos todos os elementos lik , i = 1, 2, . . . , k − 1. Efetuando o
4.9. O ALGORITMO PARA A DECOMPOSIÇÃO CHOLESKY 71
produto obtemos
ak1 l11 l1k
ak2 l21 l1k + l22 l2k
.. ..
. .
2 2 2 2
akk lk1 + lk2 + lk3 + ... + lkk
. = ..
.. .
a l l + l l + ... + l l
kj j1 k1 j2 k2 jk kk
. .
.. ..
ank ln1 lk1 + ln2 lk2 + ... + lnk lkk
donde obtemos
2 2 2 2
akk = lk1 + lk2 + lk3 + ... + lkk
akj = lj1 lk1 + lj2 lk2 + ... + ljk lkk , j = k + 1, k + 2, . . . , n
ou ainda,
v
q u k−1
u X
2 2 2 2 2
lkk = akk − (lk1 + lk2 + lk3 + ... + lk,k−1 ) = takk − lki
i=1
h Pk−1 i
ajk− i=1 lji lki
lkj = , j = k + 1, k + 2, ...n.
lkk
Passo 4: Seja
i−1
! 12
X
2
lii = aii − lik
k=1
72 CAPÍTULO 4. SISTEMAS LINEARES: MÉTODOS DIRETOS
#Exemplos
> A:=matrix([[1, 2, 3], [2, 5, 7], [3, 7, 26]]);Cholesky(A);
4. Use o método de Cholesky para decompor a matriz A como um produto LLt , onde L é
triangular inferior,
4 −1 1
A = −1
4.25 2.75
1 2.75 3.75
2. Estratégia de pivoteamento;