Métodos Directos de Resolução de Sistemas Lineares
Objectivo: resolver o sistema de equações lineares Ax=b em que A é uma matriz quadrada n x n
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
n n nn n
n
n n
b
b
b
x
x
x
a
a
a
a
a
a
a
a
a
M
M
L
M
O
M
L
L
2 1 2 1
2 1
2 22
21
1 12
11
O sistema Ax = b é possível e determinado se e só se a matriz A é invertível, i.e., se det(A) ≠ 0.
Podemos resolver os sistemas de equações lineares usando métodos directos e indirectos.
Métodos directos: permitem calcular a solução exacta num número finito de passos.
1. Método de eliminação de Gauss 2. Método de factorização LU 3. Método de Cholesky
Na prática é possível a acumulação de erros de arredondamento, etc., pelo que muitas vezes é calculada uma solução aproximada em vez da solução exacta.
1-
Método de eliminação de Gauss
Requer: det(A) ≠ 0
Ideia base: transformar o sistema original
Ax
=
b
num outro sistema equivalenteb
x
A
~
=
~
com matriz A~ triangular superior, evitando assim o cálculo da matriz inversa. O sistema equivalente será muito fácil de resolver pois bastará usarsubstituição ascendente (de “baixo para cima” calcular o valor de cada incógnita)
para obter à solução pretendida.
Assim, o objectivo é obter uma matriz triangular superior a partir da matriz
ampliada do sistema A′, efectuando apenas operações elementares sobre as linhas
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
′
n nn n n n nb
a
a
a
b
a
a
a
b
a
a
a
L
M
M
O
M
M
L
L
2 1 2 2 22 21 1 1 12 11A
-
matriz ampliada do sistema
Método de Eliminação de Gauss: consiste em
n-1
passos
Como resultado obtemos um sistema triangular superior equivalente:
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
n n nn n n n nb
b
b
x
x
x
a
a
a
a
a
a
a
a
a
M
M
L
M
O
M
L
L
2 1 2 1 2 1 2 22 21 1 12 11⇔
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎣
⎡
) ( ) 2 ( 2 ) 1 ( 1 2 1 ) ( ) 2 ( 2 ) 2 ( 22 ) 1 ( 1 ) 1 ( 12 ) 1 ( 110
0
0
0
n n n n nn n nb
b
b
x
x
x
a
a
a
a
a
a
M
M
L
M
O
O
M
L
L
que se pode resolver facilmente por substituição ascendente:
) ( ) ( n nn n n n
a
b
x
=
,
1
1
para
,
)
(
) ( 1 ) ( ) (, ...,
n-k
a
a
b
x
k kk n k j k kj k k k=
−
=
∑
= +PASSO k (k=1,... n-1)
1. Definir como pivot o elemento da diagonal a(kkk)
2. se akk(k) =0
efectuar troca de linhas
caso contrário
a)calcular multiplicador
) ( ) ( k kk k ik ik
a
a
m
=
Exemplo 1: Considere-se o sistema linear
⎪
⎪
⎩
⎪
⎪
⎨
⎧
−
=
−
+
+
=
+
+
−
=
+
+
−
=
+
+
−
38
18
4
6
-27
3
9
13
3
34
0
1
6
8
12
12
4
2
2
6
4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Podemos escrever este sistema em notação matricial
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − − − − − = 38 27 34 12 , , 18 1 4 6 3 9 13 3 10 6 8 12 4 2 2 6 4 3 2 1 b x x x x x A
Como o det(A) = 144 ≠ 0, este sistema tem uma solução única que pode ser determinada pelo método de eliminação de Gauss.
Passo 1: pivot
a
11=6
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
=
′
38
18
1
4
6
27
3
9
13
3
34
10
6
8
12
12
4
2
2
6
A
2 6 12 11 2121 = = =
a a
m
e
L
2(1)←
L
2(1)–
m
21L
1(1)2 1 6 3 11 31
31 = = =
a a
m
e
L
3(1)←
L
3(1)–
m
31L
1(1)1 6
6
11 41
41 =−
− = =
a a
m
e
L
4(1)←
L
4(1)–
m
41L
1(1)Como resultado obtemos o seguinte sistema equivalente:
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
38
18
1
4
6
27
3
9
13
3
34
10
6
8
12
12
4
2
2
6
⎯⎯⎯⎯⎯⎯→
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
26
14
3
2
0
21
1
8
12
0
10
2
2
4
0
12
4
2
2
6
L2(1) ←
L2 (1)
– m21 L1 (1)
L3 (1) ←
L3 (1)
– m31 L1 (1)
L4 (1) ←
L4 (1)
Passo 2: pivot
a
22=-4
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
26
14
3
2
0
21
1
8
12
0
10
2
2
4
0
12
4
2
2
6
3 4 12
22 32
32 =
− − = =
a a
m
e
L
3(2)←
L
3(2)–
m
32L
2(2)2 1 4 2
22 42
42 = =− =− a
a
m
e
L
4(2)←
L
4(2)–
m
42L
2(2)e obtemos o seguinte sistema equivalente
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
26
14
3
2
0
21
1
8
12
0
10
2
2
4
0
12
4
2
2
6
⎯⎯⎯⎯⎯⎯→
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
21
13
4
0
0
9
5
2
0
0
10
2
2
4
0
12
4
2
2
6
Passo 3: pivot
a
33=2
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
21
13
4
0
0
9
5
2
0
0
10
2
2
4
0
12
4
2
2
6
2 2 4
33 43
43 = = =
a a
m
e
L
4(3)←
L
4(3)–
m
43L
3(3)Como resultado obtemos o último sistema equivalente:
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
21
13
4
0
0
9
5
2
0
0
10
2
2
4
0
12
4
2
2
6
⎯⎯⎯⎯⎯⎯→
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
−
−
3
3
0
0
0
9
5
2
0
0
10
2
2
4
0
12
4
2
2
6
O sistema resultante é um sistema triangular superior e equivalente ao sistema
original (as soluções de ambos os sistemas coincidem). L3
(2) ←
L3 (2)
– m32 L2 (2)
L4 (2) ←
L4 (2)
– m42 L2 (2)
L4 (3) ←
L4 (3)
⎪
⎪
⎩
⎪
⎪
⎨
⎧
−
=
−
−
=
−
=
+
+
−
=
+
+
−
3
3
9
5
2
10
2
2
4
12
4
2
2
6
4 4 3
4 3 2
4 3 2 1
x
x
x
x
x
x
x
x
x
x
Este sistema pode ser facilmente resolvido se aplicamos substituição ascendente
.
A solução é:x = [ 1, -3, -2, 1 ]
T⇒
x
1= 1,
x
2= -3,
x
3= -2,
x
4= 1.
2. Método de Factorização LU
Teorema: Seja A uma matriz de ordem n com todos os menores principais de A diferentes de zero, ou seja,
det (Ak)≠ 0, k=1,…, n-1,
onde
A
k é a matriz formada pelas primeiras k linhas e k colunas de A. Então é sempre possível decompor a matriz A numa forma única, A = L U em que :L - é uma matriz triangular inferior com diagonal principal unitária U - é uma matriz triangular superior
Alem disso, se durante o método de eliminação de Gauss todos os pivots akk(k) ≠0
(não foram efectuadas trocas de linhas) então podemos sempre obter esta
factorização da matriz A na forma LU com:
Como Ax=b ⇔ LU x = b, tomando U x = y podemos resolver o sistema em dois passos:
1º. Resolver L y = b (por substituição descendente)
2º . Resolver U x = y (por substituição ascendente)
Exemplo 1 (continuação)
Resolver pelo método de factorização LU:
⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
− = ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
= ⎥
⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
− −
− − −
=
38 27
34
12
,
,
18 1 4 6
3 9 13 3
10 6 8 12
4 2 2 6
4 3 2 1
b
x x x x
x A
Todos os métodos directos requerem que o determinante da matriz A seja não nulo. (det(A) = 144). Alem disso, para poder encontrar uma factorização LU de A todos os menores principais devem ser diferentes de zero.
0
48
9
13
3
6
8
12
2
2
6
,
0
24
24
48
8
12
2
6
,
0
6
6
2 31
=
−
≠
−
−
−
=
≠
−
=
+
−
=
−
−
=
≠
=
=
A
A
A
Como os menores principais de A são todos diferentes de zero então é possível decompor a matriz A na forma LU. Por outro lado, durante o método de eliminação de Gauss não foram efectuadas trocas de linhas, o que também prova que é
possível decompor a matriz A em duas matrizes LU onde a matriz triangular superior U é a matriz obtida com o método de eliminação de Gauss
⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
− − −
−
=
3 0 0 0
5 2 0 0
2 2 4 0
4 2 2 6
U
Durante o processo de eliminação de Gauss foram utilizados os seguintes
multiplicadores:
2 6 12
11 21
21= = =
a a
m
,
2 1 6 3
11 31
31 = = =
a a
m
,
16 6
11 41
41 =−
− = =
a a
m
,
← no passo 13 4 12
22 32
32 =
− − = =
a a
m
,
2 1 4 2
22 42
42 =−
− = =
a a
m
← no passo 2
2 2 4
33 43
43 = = =
a a
m
← no passo 3
Então, a matriz triangular inferior L é definida como:
⎥ ⎥ ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎣ ⎡
− − = ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
=
1 2 2 1 1
0 1 3 2 1
0 0 1 2
0 0 0 1
1 0 1
0 0 1
0 0 0 1
43 42 41
32 31 21
m m m
m m m L
Assim obtemos a seguinte factorização LU para a matriz A:
= ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
− −
− − −
18 1 4 6
3 9 13 3
10 6 8 12
4 2 2 6
⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
−
−1 1 2 2 1 0 1 3 2 1
0 0 1 2
0 0 0 1
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎣
⎡
−
−
−
−
3
0
0
0
5
2
0
0
2
2
4
0
4
2
2
6
Uma vez encontrada a factorização LU podemos proceder à resolução do sistema.
Como A x = b ⇔ LU x = b, tomando y =U x podemos resolver o sistema Ax=b em dois passos:
1º. Resolver Ly = b (determinar y por substituição descendente)
⇒ ⇒
y
1 = 12,y
2 = 10,y
3 = -9,y
4 = -3
2º. Resolver Ux = y (determinar x por substituição ascendente)
⇒
x
1 = 1,x
2 = -3,x
3 = -2,x
4 = 16
x
1– 2
x
2+ 2
x
3+ 4
x
4= 12
-4
x
2+ 2
x
3+ 2
x
4=
10
2
x
3- 5
x
4= -9
- 3
x
4= -3
y
1=
12
2
y
1+
y
2= 34
1/2
y
1+ 3
y
2+
y
3= 27
% Exemplo 1, Resolução em MatLab
A=[6 -2 2 4; 12 -8 6 10; 3 -13 9 3; -6 4 1 -18]
b=[12 34 27 -38]'
disp('Factorizando a matriz A na forma LU');
[L, U]=lu(A)
disp('Resolver o sistema de equaçoes Ax=b usando a
factorizaçao LU');
disp('Passo 1: resolver o sistema de equações Ly=b');
y=L\b
disp('Passo 2: resolver o sistema de equações Ux=y');
x=U\y
disp('Vector resíduo');
r=b-A*x
norma_residuo = norm(r,inf)
2.1. Método de Factorização LU com pivotagem
Caso 1) ∃ det Ak = 0 (k=1,…, n-1), onde Ak – menores de A ou 2) ∃ pivot a(k)kk = 0 (foram efectuadas trocas de linhas) a factorização é da forma P A = L U
em que P é uma matriz de permutação
(P obtém-se da matriz identidade por troca de linhas)
Então: Ax=b ⇔ PA x =P b ⇔ L U x = P b Podemos resolver o sistema Ax=b em dois passos:
1º. Resolver L y = P b (por substituição descendente)
Exemplo 2 (exercício 4 da FP nº2)
Resolver pelo método de factorização LU:
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
.5
0
1
1
,
,
3
5
3
7
4
2
3
2
1
3 2 1
b
x
A
x
x
x
Todos os métodos directos requerem que o determinante da matriz A seja não nulo. (det(A) = 1). Alem disso, para poder encontrar uma factorização LU de A todos os menores principais devem ser diferentes de zero.
0
4
4
4
2
2
1
,
1
1
21
=
=
A
=
=
−
=
A
Como |A2| = 0 esta matriz não admite a factorização LU ⇒ temos de encontrar uma matriz de permutação P e determinar a factorização LU de PA em vez da permutação de A.
Neste caso:
Ax=b ⇔ PA x =P b ⇔ L U x = P b
Se um dos menores é nulo, então durante o processo da eliminação de Gauss um dos pivots deverá também ser nulo.
3
5
3
7
4
2
3
2
1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
0
1
6
1
0
0
3
2
1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
Neste caso podemos trocar a linha L2 com a linha L3 o que corresponde à matriz de
permutação
0
1
0
1
0
0
0
0
1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
P
(P obtém-se da matriz identidade pela troca da linha L2 com a linha L3)
Vamos resolver Ax=b ⇔ PA x =P b com
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
1
.5
0
1
,
7
4
2
3
5
3
3
2
1
b
A
P
P
L2 ← L2 – m21 L1
L3 ← L3 – m31 L1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
=
3
5
.
0
2
31
x
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
=
3
2.5
1
y
Por eliminação de Gauss:
2
4
7
3
5
3
3
2
1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
0
0
1
6
1
-0
3
2
1
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
3 1 3
11 21
21= = =
a a
m 2
1 2 ,
11 31
31= = =
a a
m , 0
22 33
32 = =
a a m
Assim podemos encontrar uma factorização LU para PA, i.e., PA= L U com
1
0
2
0
1
3
0
0
1
1
0
1
0
0
1
32 31 21
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
m
m
m
L
0
0
1
6
1
-0
3
2
1
,
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
=
U
Uma vez encontrada a factorização LU podemos proceder à resolução do sistema.
Como PA x = Pb ⇔ LU x = Pb, tomando y =U x podemos resolver o sistema em dois passos:
1º. Resolver Ly = Pb (determinar y por substituição descendente)
2º. Resolver Ux = y (determinar x por substituição ascendente)
L2 ← L2 – m21 L1
L3 ← L3 – m31 L1
y
1=
1
3
y
1+
y
2= 0.5
⇒
2
y
1+
+
y
3= -1
x
1+ 2
x
2+ 3
x
3= 1
-
x
2- 6
x
3=
-2.5
⇒
3. Método de Cholesky
Teorema: Seja A uma matriz simétrica definida positiva de ordem n.
Então existe uma matriz triangular inferior L com elementos diagonais positivos tal
que T
LL
A
=
.Como Ax=b ⇔ L LT x = b, tomando y = LT x podemos resolver o sistema em dois passos:
1º. Resolver L y = b (por substituição descendente) 2º. Resolver LT x = y (por substituição ascendente)
Então para poder aplicar o método de Cholesky temos de verificar se:
1. A é simétrica ⇔ A = AT 2. A é definida positiva:
devemos verificar uma das seguintes condições suficientes e necessárias:
i) todos os menores principais incluindo o determinante de A são positivos: det (Ak)> 0,
k
=1,…, n
ou
ii) todos os valores próprios λi de A são positivos % FP 2 Exercício 4, resolução em MatLab
A=[1 2 3; 2 4 7; 3 5 3] b=[1 -1 0.5]'
disp('Factorizando a matriz A na forma LU com matriz de
permutação');
[L, U, P]=lu(A)
disp('Resolver o sistema de equaçoes Ax=b por factorizaçao LU');
disp('com a matriz de permutação P');
disp('Passo 1: resolver o sistema de equações Ly=Pb');
y=L\P*b
disp('Passo 2: resolver o sistema de equações Ux=y');
x=U\y
disp('Vector residuo');
A matriz triangular inferior L é então determinada pelas seguintes fórmulas:
Passo 1:
Passo
k: (k
= 2, …, n)
Exemplo 3: (exercício 6 da FP nº2)
Resolver o seguinte sistema linear pelo método de Choleski
⎪
⎪
⎩
⎪
⎪
⎨
⎧
=
+
+
+
=
+
+
+
−
=
+
+
+
−
=
+
+
+
39
0
3
14
5
23
4
1
4
1
5
4
5
5
5
4
4 3
2 1
4 3 2
1
4 3 2
1
4 3 2 1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
.
Podemos escrever este sistema em notação matricial
⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡ − −
= ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
= ⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
=
39 23 4 4
, ,
30 14 5 1
14 14 5 1
5 5 5 1
1 1 1 1
4 3 2 1
b
x x x x
x A
Para poder aplicar o método de Choleski temos de verificar se:
1. A é simétrica? Sim, pois A = AT 2. A é definida positiva?
Temos de verificar se todos os menores principais, incluindo o determinante de A, são positivos
det(A) = 576 > 0
36
0
14
5
1
5
5
1
1
1
1
,
0
4
5
1
1
1
,
0
1
1
2 31
=
=
>
A
=
=
>
A
=
=
>
Como as duas condições são satisfeitas, então existe uma matriz L triangular inferior com elementos da diagonal positivos tal que L LT = A.
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
Podemos agora facilmente determinar todos os elementos
l
ij da matriz L. Esteselementos são calculados de cima para baixo e de esquerda para direita, ou seja
neste ordem:
l
11,
l
21,
l
31,
l
41,
l
22,
l
32,
l
42,
l
33,
l
43,
l
44 1º. Determinar 4 elementos da 1ª colunalinha 1 x coluna 1:
l
11×
l
11=
1
⇒
l
11=
1
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
linha 2 x coluna 1:
l
21×
l
11=
1
⇒
l
21=
1
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
linha 3 x coluna 1:
l
31×
l
11=
1
⇒
l
31=
1
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
linha 4 x coluna 1:
l
41×
l
11=
1
⇒
l
41=
1
2º. Determinar 3 elementos da 2ª coluna
linha 2 x coluna 2: l212 +l222 =5⇒l222 =5−1⇒l22 = 4 ⇒l22 =2
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
linha 3 x coluna 2:
l
31×
l
21+
l
32×
l
22=
5
⇒
1
×
1
+
l
32×
2
=
5
⇒
l
32=
2
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
linha 4 x coluna 2:
l
41×
l
21+
l
42×
l
22=
5
⇒
1
×
1
+
l
42×
2
=
5
⇒
l
42=
2
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 30 14 5 1 14 14 5 1 5 5 5 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 44 34 33 42 32 22 41 31 21 11 44 43 42 41 33 32 31 22 21 11 l l l l l l l l l l l l l l l l l l l l
3º. Determinar 2 elementos da 3ª coluna
linha 3 x coluna 3:
14
14
1
5
339
333
2 33 2 33 2 32 231
+
l
+
l
=
⇒
l
=
−
−
⇒
l
=
⇒
l
=
l
linha 4 x coluna 3:
l
41×
l
31+
l
42×
l
32+
l
43×
l
33=
14
⇒
1
×
1
+
2
×
2
+
l
43×
3
=
14
⇒
l
43=
3
4º. Determinar o único elemento da 4ª colunalinha 4 x coluna 4:
4
16
9
4
1
30
30
442 44 442 44 2 43 2 42 2
41
+
l
+
l
+
l
=
⇒
l
=
−
−
−
⇒
l
=
⇒
l
=
l
Como resultado obtém-se a matriz
L
triangular inferior com elementos da diagonalpositivos tal que L LT = A.
y
1=
-4
y
1+ 2
y
2= -4
y
1+ 2
y
2+ 3
y
3= 23
y
1+ 2
y
2+ 3
y
3+ 4
y
4= 39
% FP 2 Exercício 6 (resolução em MatLab)
A=[1 1 1 1; 1 5 5 5; 1 5 14 14; 1 5 14 30] b=[-4 -4 23 39]'
if A'== A
disp('A matriz A e simétrica');
end;
if (eig(A)>0)
disp('A matriz A é positiva definida');
end;
if (A'== A) & (min(eig(A)) > 0)
R = chol(A) % obtém-se a matriz triangular superior R=LT
y = R'\b % RT=L – a matriz triangular inferior
x = R\y end;
Uma vez encontrada a matriz
⎥ ⎥ ⎥ ⎥
⎦ ⎤
⎢ ⎢ ⎢ ⎢
⎣ ⎡
=
4 3 2 1
0 3 2 1
0 0 2 1
0 0 0 1
L
podemos proceder à resolução do sistema.
Como A x = b ⇔ L LT x = b, substituindo por y = LT x
1º. Resolver Ly = b (determinar y por substituição descendente)
⇒
y
1 = -4,y
2 = 0,y
3 = 9,y
4 = 4
2º. Resolver LTx = y (determinar x por substituição ascendente)
⇒
x
1= -4,
x
2= -3,
x
3= 2,
x
4= 1
A solução exacta do sistema Ax = b é 4 3 2 1 .
x
1+
x
2+
x
3+
x
4= - 4
2
x
2+ 2
x
3+ 2
x
4=
0
3
x
3+ 3
x
4= 9
Exemplo 4: (exercício 12 a) da FP nº2)
Considere o seguinte sistema de equações lineares
⎪
⎩
⎪
⎨
⎧
−
=
−
+
=
+
+
−
=
+
−
3
2
3
-3
1
3
12
5
2
3 2
1
3 2
1
3 2
1
x
x
x
x
x
x
x
x
x
Atendendo a que ATA (com A singular) é uma matriz simétrica definida positiva,
resolva o método pelo método de Cholesky.
Podemos escrever este sistema em notação matricial, A x = b com
2
1 1 3
5 1
3 2
1
,
12
13
3
Para poder aplicar o método de Choleski temos de verificar se:
1. A é simétrica? Não, pois A ≠ AT 2. A é definida positiva?
Todos os menores principais, incluindo o determinante de A, são positivos ?
0
31
1
1
3
3
1
1
1
5
2
,
0
7
1
1
5
2
,
0
2
2
2 31
=
>
−
−
−
−
=
>
=
−
=
>
=
=
A
A
A
Não é possível aplicar o método de Choleski para esta matriz A pois ela não é simétrica.
Por outro lado, podemos provar que se A é uma matriz singular, a matriz AT A é
uma matriz simétrica e definida positiva
1) AT A é simétrica
pela propriedade (A B)T = BT AT ⇒(AT A)T = (AT A)
1) AT A é definida positiva
% FP 2 Exercício 12 a) (resolução em MatLab)
A=[2 -5 1; 1 1 3; -3 2 -1] b=[-12 13 -3]'
C=A'*A % calcular C
R=chol(C) % a matriz triangular superior R=LT
y=R'\A'*b % RT=L – a matriz triangular inferior
x=R\y
Multiplicando por AT ambos os membros do sistema Ax = b e definindo C = AT A obtém-se
Ax = b⇔ AT Ax = AT b ⇔ C x = AT b
podemos agora aplicar o método de Choleski para o sistema equivalente pois a
matriz C é simétrica e definida positiva.
2 1 3
5 1 2
1 3 1
2 5 1 1 1 3 3 2 1
14 15 8 15 30 4 8 4 11
Então, existe uma matriz triangular inferior L com elementos diagonais positivos tal que C = L LT. A matriz triangular inferior L, pode ser determinada pelas fórmulas explicadas no exemplo 3.
4.0089 3.7321
3.7417
0
0
0
2.1381
1.2249
2.2200
Como C x = AT b ⇔ L LT x = AT b, tomando y = LT x podemos resolver o
sistema em dois passos:
1º. Resolver L y = AT b (por substituição descendente) ⇒ 0.5345 17.3782 4.4399
2º. Resolver LT x = y (por substituição ascendente)
⇒ 3 4 2
A solução exacta do sistema Ax = b é 3 4 2 .