Você está na página 1de 11

Universidade Federal do Espı́rito Santo - UFES

Centro Universitário Norte do Espı́rito Santo - CEUNES


Departamento de Matemática Aplicada - DMA
Prof. Isaac P. Santos - 2023/1

Sistemas Lineares - Matrizes Bandas

1 Matriz Banda
Muitos problemas de engenharia e outras aplicações resultam em sistemas lineares cujas matrizes são
esparsas, isto é, contém poucos elementos não nulos. Matrizes que não são esparsas são chamadas de
matrizes densas. Matrizes esparsas têm aplicações em problemas de engenharia, fı́sica, matemática,
computação, etc. Existem estruturas de dados eficientes para manipular matrizes esparsas, onde
apenas os elementos não nulos são armazenados. Neste caso, devem ser utilizados algoritmos eficientes
que levam em conta a forma da matriz armazenada. Se todos os elementos não nulos da matriz
estiverem agrupados em torno da diagonal principal, diz-se que a matriz é uma matriz banda ou
matriz de banda.

Definição 1.1 (Matriz Banda). Uma matriz quadrada A = [aij ] de ordem n é chamada de
matriz banda (ou matriz de banda) se existem inteiros p e q, com p > 1 e q < n, tais que

aij = 0, se i > j + p e j > i + q.

Neste caso, os elementos não nulos da matriz banda A são:

• os elementos da diagonal principal;

• os elementos de q diagonais secundárias acima da diagonal principal;

• os elementos de p diagonais secundárias abaixo da diagonal principal.

A estrutura de uma matriz banda é mostrada na Fig. 1. A parte da matriz formada pelos
elementos das diagonais principal e secundárias, com pelo menos um elemento não nulo, é denominada
banda da matriz. O número
lB = p + q + 1
é chamado de largura da banda. O número de elementos na banda de uma matriz banda n × n é
dada por
1 
nB = (q + 1)(2n − q) + p(2n − 1 − p) .
2
Se p = q então
nB = n(2p + 1) − p(1 + p).
Figura 1: Estrutura de uma matriz banda.

Exemplo 1.1. A matriz  


2 5 0 0
 1 7 3 0 
A=
 0

4 2 9 
0 0 1 8
é uma matriz banda com p = q = 1. Note que todos os elementos não nulos estão agrupados em
torno da diagonal principal. A largura da banda dessa matriz é

lB = p + q + 1 = 3.

Essa matriz é chamada de matriz tridiagonal. O número de elementos não nulos da nada dessa
matriz 4 × 4 é
nB = 10.
A matriz  
4 3 0 0
 6 1 2 0 
B= 
 8 7 −3 9 
0 1 0 2
é uma matriz banda com p = 2 e q = 1. De fato

b13 = b14 = b24 = 0,

ou seja, bij = 0 quando j > i + 1. Além disso,

b41 = 0,

ou seja, bij = 0 quando i > j + 2. A largura da banda dessa matriz é lB = 4 e o número de


elementos da banda é nB = 12.
Exemplo 1.2.

• Uma matriz banda com p = q = 0 é uma matriz diagonal;

• Uma matriz banda com p = q = 1 é uma matriz tridiagonal;

• Uma matriz banda com p = q = 2 é uma matriz pentadiagonal;

• Uma matriz banda com p = 0 e q = n − 1 é uma matriz triangular superior;

• Uma matriz banda com p = n − 1 e q = 0 é uma matriz triangular inferior.

2 Matrizes diagonalmente dominantes

Definição 2.1. Uma matriz A n × n é diagonal estritamente dominante (DED) se


n
X
|aii | > |aij |, i = 1, 2, · · · , n
j=1;j6=i

ou n
 X 
|aij | /|aij | < 1, i = 1, 2, · · · , n.
j=1;j6=i

Matrizes diagonais estritamente dominantes são também chamadas de matrizes diagonalmente


dominantes. Cada elemento da sua diagonal é maior, em valores absolutos, do que a soma dos outros
elementos da mesma linha. Por exemplo, a matriz
 
−2 4 −1
 1 −1 3 
4 −2 1

não é DED, pois na primeira linha temos 2 = | − 2| < |4| + | − 1| = 5, na segunda linha, 1 = | − 1| <
|1| + |3| = 4, e na terceira linha, 1 = |1| < |4| + | − 2| = 6. Mas se permutarmos as linhas dessa
matriz de forma a obter  
4 −2 1
 −2 4 −1  ,
1 −1 3
temos dessa forma uma matriz DED (confira!).

Observação 2.1. Se uma matriz é DED o sistema linear associado não tem nenhum benefı́cio
se pivotamento parcial for utilizado. De fato, em um sistema com matriz DED, as equações já
estão rearranjadas em forma ótima. Se a matriz não é DED, as linhas do sistema podem ser
permutadas para obter uma matriz mais próxima possı́vel de ser DED.

Muitas matrizes bandas proveniente de aplicações em engenharia são simétricas e diagonalmente


dominantes. Neste caso, não é aconselhável a utilização de pivotamento parcial. Além disso, o
pivotamento parcial pode destruir a simetria e a estrutura em banda da matriz.
3 Armazenamento de matrizes bandas
A solução de sistemas lineares de grande porte e esparsos se depara com o problema de armazena-
mento da matriz dos coeficientes. Estruturas de dados eficientes devem ser utilizadas. De fato, a
economia em armazenamento obtida pode resultar em sobrecarga de processamento, pois algumas
vezes os elementos não nulos dependerão de referência e acesso mais elaborados.
O armazenamento de matrizes bandas pode se feito de várias formas. O problema é escolher o
esquema mais econômico para uma solução eficiente do sistema, por determinado método. Além do
armazenamento econômico da matriz dos coeficientes, é necessário adaptar os métodos numéricos
para o esquema de armazenamento utilizado. A seguir mostraremos alguns armazenamentos para
matrizes tridiagonais e pentadiagonais.

3.1 Matriz tridiagonal


Uma matriz tridiagonal é uma matriz banda com p = q = 1. Uma matriz tridiagonal de ordem n
tem a forma  
a11 a12 0 0 ... 0 0 0
 a21 a22 a23 0 . . . 0 0 0 
 
 0 a32 a33 a34 . . . 0 0 0 
AT =  .. .
 
.. .. .. . . .. .. ..
 . . . . . . . . 
 
 0 0 0 0 . . . an−2,n−1 an−1,n−1 an−1,n 
0 0 0 0 ... 0 an,n−1 an,n
Os elementos não nulos de uma matriz tridiagonal podem ser armazenados em 3 vetores, um
vetor para cada diagonal, ou em uma matriz n × 3, na forma
 
0 a11 a12
 a21 a22 a23 
 
 a32 a 33 a 34

BT =  . (1)
 
.. .. ..

 . . . 

 an−2,n−1 an−1,n−1 an−1,n 
an,n−1 an,n 0

O armazenamento de uma matriz tridiagonal utilizando a matriz BT resulta em uma economia


em espaço de memória que pode ser significativa. Por exemplo, uma matriz tridiagonal de tamanho
100×100, contém 10.000 elementos. Estes elementos podem ser armazenados em apenas 3×100 = 300
posições de memória, representando uma taxa de compressão de dados de cerca de 33 : 1.
Um sistema linear cuja matriz é tridiagonal pode ser chamado de sistema linear tridiagonal. A
adaptação do processo de eliminação do método de eliminação de Gauss para resolver o sistema
tridiagonal, Ax = b, de forma que operações desnecessárias não sejam realizadas, é dada por

i = 1, 2, · · · , n − 1;
ai+1,i
mi+1,i = ;
aii
ai+1,i+1 = ai+1,i+1 − mi+1,i ai,i+1 ;
bi+1 = bi+1 − mi+1,i bi .

Se a banda de A é armazenada na matriz BT = [Bij ]n×3 , conforme Eq. (1), então o processo de
eliminação para este tipo de armazenamento resulta em

i = 1, 2, · · · , n − 1;
Bi+1,1
mi+1 = ;
Bi2
Bi+1,2 = Bi+1,2 − mi+1 Bi3 ;
bi+1 = bi+1 − mi+1 bi .

A solução do sistema triangular superior resultante é


bn
xn = ;
Bn2
bi − Bi3
xi = , i = n − 1, n − 2, · · · , 2, 1.
Bi2

3.2 Algoritmo de Thomas para sistemas lineares tridiagonais


Llewellyn Thomas 1 propôs um algoritmo, baseado em uma forma simplificada da eliminação de Gauss
e conhecido como Algoritmo de Thomas ou método TDMA (do inglês tridiagonal matrix algorithm),
para resolver sistemas lineares tridiagonais. O custo computacional do algoritmo de Thomas é inferior
ao custo dos métodos de eliminação. Para um sistema linear tridiagonal de ordem n, o algoritmo de
Thomas requer apenas 8n−7 operações, sendo 3(n−1) operações para a fatorização e 5n−4 operações
para o procedimento de substituição, ou seja, é um algoritmo como complexidade computacional de
ordem O(n), enquanto que a eliminação de Gauss é de ordem O(n3 ).
Note que um sistema tridiagonal pode ser escrito como

ai xi−1 + bi xi + ci xi+1 = di , i = 1, · · · , n,

com a1 = 0 e cn = 0. Em forma matricial, terı́amos


    
b1 c1 0 x1 d1
 a2 b2 c2  x2   d2 
.
    
a3 b3 . . x3 = d3 . (2)
    
 
 ... ...  ..   .. 
 cn−1  .   . 
0 an b n xn dn

O algoritmo de Thomas para resolver o sistema linear tridiagonal (2) é descrito a seguir,

• Construa os vetores c̃ = [c̃i ]n−1 e d̃ = [d˜i ]n ;

• Faça (
c1
b1
, se i = 1,
c̃i = ci (3)
bi −ai c̃i−1
, se i = 1, 2, · · · , n − 1,
e (
d1
, se i = 1,
d˜i = b1
di −ai d˜i−1 (4)
bi −ai c̃i−1
, se i = 1, 2, · · · , n − 1, n.

1
Llewellyn Hilleth Thomas (Londres, 21 de outubro de 1903 - 20 de abril de 1992) foi um fı́sico e matemático
britânico.
• A solução é dada por substituição retroativa,
(
d˜n , se i = n,
xi = (5)
d˜i − c̃i xi+1 , se i = n − 1, n − 2, · · · , 2, 1.

A seguir apresentaremos a demonstração deste algoritmo. Para isso, vamos aplicar a eliminação
de Gauss, sem pivotamento parcial, usando a matriz ampliada do sistema (2), isto é,
 
b1 c 1 d1
 a2 b 2 c 2 d2 
.
 
a3 b3 . . d3  . (6)
 

 ... ... .. 
 cn−1 . 
an b n dn

Estamos supondo que todas as operações são possı́veis, isto é, não há divisões por zero.

• Iteração 1 (eliminar a posição (2, 1)): Façamos


1
L̃1 ←− L1 .
b1
A primeira linha resulta em
d˜1
 
L̃1 = 1 c̃1 ,
onde
c1
c̃1 = , (7)
b1
d1
d˜1 =
. (8)
b1

Agora, façamos
L̃2 ←− L2 − a2 L̃1
para obter
d¯2
 
L̃2 = 0 b̄2 c2 ,
onde b̄2 = b2 − a2 c˜1 e d¯2 = d2 − a2 d˜1 . Dividindo a linha L̃2 por b̄2 , obtemos a matriz resultante
 
1 c̃1 d˜1
 0 1 c̃
 2 d˜2 

 . ..

,

 a 3 b 3 d 3 
.. .. . 
. cn−1 .. 

 .
an bn dn

onde
c2
c̃2 = (9)
b2 − a2 c˜1
d2 − a2 d˜1
d˜2 = . (10)
b2 − a2 c˜1
• Iteração 2 (eliminar a posição (3, 2)): Façamos
L̃3 ←− L3 − a3 L2
para obter
d¯3 ,
 
L̃3 = 0 b̄3 c3
onde b̄3 = b3 − a3 c˜2 e d¯3 = d3 − a3 d˜2 . Dividindo a linha L̃3 por b̄3 , obtemos a matriz resultante

d˜1
 
1 c̃1
 0 1 c̃
 2 d˜2 


 0 1 c̃3 d˜3 ,

 ... ... .. 
 cn−1 . 
an b n dn
onde
c3
c̃3 = (11)
b3 − a3 c˜2
d3 − a3 d˜2
d˜3 = . (12)
b3 − a3 c˜2
• Iteração k (eliminar a posição (k + 1, k)): Façamos
L̃k+1 ←− Lk+1 − ak+1 Lk
para obter
d¯k+1 ,
 
L̃k+1 = · · · 0 b̄k+1 ck+1 · · ·
onde b̄k+1 = bk+1 − ak+1 c˜k e d¯k+1 = dk+1 − ak+1 d˜k . Dividindo a linha L̃k+1 por b̄k+1 , obtemos a
matriz resultante

d˜1
 
1 c̃1
 0 1 c̃
 2 d˜2 

0 1 c̃3 d˜3
 
 
. . . .. ,
.. .. ..


 . 


 0 1 c̃k+1 ˜
dk+1 

.. .. .. ..
. . . .
onde
ck+1
c̃k+1 = (13)
bk+1 − ak+1 c˜k
dk+1 − ak+1 d˜k
d˜k+1 = . (14)
bk+1 − ak+1 c˜k
Este procedimento é repetido até a iteração n − 1, obtendo a matriz ampliada final
d˜1
 
1 c̃1
 0 1 c̃2
 d˜2  
 0 1 c̃ 3 d˜ 
3 
, (15)

 ... ... .. .. 
 . . 
0 1 c̃n−1 d˜n−1 
 

0 1 d˜n
onde

dn − an d˜n−1
d˜n = . (16)
bn − an c̃n−1

Como o sistema linear associado a matriz ampliada (15) é triangular superior, a solução é obtida
da seguinte forma,

xn = d˜n , (17)
xi = d˜i − c̃i xi+1 , i = n − 1, n − 2, · · · , 2, 1. (18)

Utilizando as equações (7)-(18), obtemos o algoritmo de Thomas, dado pelas equações (3)-(5).

Exemplo 3.1. Resolva o seguinte sistema linear tridiagonal, de ordem n = 5, pelo algoritmo de
Thomas,     
2 1 x1 4
 1 2 1  x2   4 
    

 1 2 1 
 x3 =
  0 .

 1 2 1  x4   0 
1 2 x5 2
Os vetores a, b, c e d são

a = (a1 , a2 , a3 , a4 , a5 ) = (0, 1, 1, 1, 1)T ,


b = (b1 , b2 , b3 , b4 , b5 ) = (2, 2, 2, 2, 2)T ,
c = (c1 , c2 , c3 , c4 , c5 ) = (1, 1, 1, 1, 0)T ,
d = (d1 , d2 , d3 , d4 , d5 ) = (4, 4, 0, 0, 2)T .

Utilizando as equações (3) e (4) obtemos os vetores c̃ e d̃:


c1 1 c3 1 3
c̃1 = = , c̃3 = = = ,
b1 2 b3 − a3 c̃2 2 − 1(2/3) 4
c2 1 2 c4 1 4
c̃2 = = = , c̃4 = = = ,
b2 − a2 c̃1 2 − 1(1/2) 3 b4 − a4 c̃3 2 − 1(3/4) 5

d1 4 d4 − a4 d˜3 0 − 1(−1) 4
d˜1 = = = 2, d˜4 = = = ,
b1 2 b4 − a4 c̃3 2 − 1(3/4) 5
d2 − a2 d˜1 4 − 1(2) 4 ˜
d 5 − a5 d 4 2 − 1(4/5)
d˜2 = = = , d˜5 = = = 1.
b2 − a2 c̃1 2 − 1(1/2) 3 b5 − a5 c̃4 2 − 1(4/5)
d3 − a3 d˜2 0 − 1(4/3)
d˜3 = = = −1,
b3 − a3 c̃2 2 − 1(2/3)

O vetor solução é obtido usando a equação (5):


x5 = d˜5 = 1,
4 4(1)
x4 = d˜4 − c̃4 x5 = − = 0,
5 5
3(0)
x3 = d˜3 − c̃3 x4 = −1 − = −1,
4
4 2(−1)
x2 = d˜2 − c̃2 x3 = − = 2,
3 3
1(2)
x1 = d˜1 − c̃1 x2 = 2 − = 1,
2
isto é, x = (1, 2, −1, 0, 1)T .

Observação 3.1. Existem outros tipos de armazenamento para matrizes tridiagonais, como
armazenamento unidimensional. Neste caso, os elementos da banda são armazenados em uma
vetor. Se a matriz for simétrica, apenas uma parte da banda precisa ser armazenada. Para cada
tipo de armazenamento há uma adaptação dos algoritmos de solução do sistema linear para a
estrutura de dados utilizada.

4 Matriz pentadiagonal
Matrizes pentadiagonais aparecem na solução de equações diferenciais ordinárias de quarta ordem e
equações diferenciais parciais em 2D usando o método de diferenças finitas. Uma matriz pentadia-
gonal de ordem n é dada por
 
a11 a12 a13 0 0 0 ... 0
 a21 a22 a23 a24 0 0 ... 0 
 
 a31 a32 a33 a 34 a 35 0 . . . 0 
 
 0 a41 a42 a43 a44 a45 ... 0 
AP =  .. ,
 
.. .. .. .. .. . . ..
 . . . . . . . . 
 
 0 . . . 0 an−2,n−4 an−2,n−3 an−2,n−2 an−2,n−1 an−2,n 
 
 0 ... 0 0 an−1,n−3 an−1,n−2 an−1,n−1 an−1,n 
0 ... 0 0 0 an,n−2 an,n−1 ann
isto é, é uma matriz banda onde p = q = 2. A largura da banda dessa matriz é
lB = p + q + 1 = 5
e o número de elementos de sua banda é
nB = 5n − 6.
O armazenamento da banda dessa matriz pode ser feita em uma matriz n × 5.

5 Matriz com diagonal flutuante


Um caso especial de matriz com diagonal flutuante é a matriz com 5 diagonais, sendo que as diagonais
secundárias mais distantes são flutuantes. Essa matriz, que aparece na solução numérica de equações
diferenciais parciais bidimensionais, tem a forma
a11 a12 0 0 ... a1,q 0 0 ... 0
 
 a21 a22 a23 0 ... 0 a2,q+1 0 ... 0 
 
 0 a32 a33 a34 ... 0 0 a3,q+2 ... 0 
 .. .. .. .. .. .. .. .. .. .. 

 . . . . . . . . . .


AqP =  aq,1 0 0 0 . . . aq,q aq,q+1 0 ... aq,n  ,
 
 0 aq+1,2 0 0 . . . aq+1,q aq+1,q+1 aq+1,q+2 ... 0 
 
 0 0 aq+2,3 0 ... 0 aq+2,q+1 aq+2,q+2 ... 0 
 
 . .. .. .. .. .. .. .. .. .. 
 .. . . . . . . . . . 
0 0 0 0 . . . an,q 0 0 ... ann
onde o parâmetro q define a distância entre a diagonal principal e as duas diagonais mais distantes
(essas diagonais são flutuantes). Neste caso dizemos que as duas diagonais mais distantes distam q
linhas/colunas da diagonal principal. As diagonais não nulas da matriz AqP podem ser armazenadas
na matriz BPq , de ordem n × 5,

0 0 a11 a12 a1,q


 
 0 a21 a22 a23 a2,q+1 
 
 0 a32 a33 a34 a3,q+2 
 .. .. .. .. ..


 . . . . . 

 aq,1 aq,q−1 aq,q aq,q+1 aq,n
 
q
BP =  .

a
 q+1,2 a q+1,q a q+1,q+1 a q+1,q+2 0 
 .. .. .. .. .. 

 . . . . . 

 a
 n−2,q−2 an−2,n−3 an−2,n−2 an−2,n−1 0 

 an−1,q−1 an−1,n−2 an−1,n−1 an−1,n 0 
an,q an,n−1 an,n 0 0
6 Referências Bibliográficas
1. Frederico F. Campos. Algoritmos Numéricos. LTC, 2a Ed. Rio de Janeiro, 2007.

2. Décio S., João T. Mendes e Luiz H. M. Silva. Cálculo Numérico: caracterı́sticas ma-
temáticas e computacionais do métodos numéricos. Pearson Prentice Hall, São Paulo,
2003.

3. Neide B. Franco. Cálculo Numérico. Pearson Prentice Hall, São Paulo, 2006.

4. Endre Süli and David F. Mayers. An Introduction to Numerical Analysis. University of


Oxford, 2003

5. Jaan Kiusalaas. Numerical Methods in Engineering with Python 3. Cambridge Uni-


versity Press, 2013.

Você também pode gostar