MAP3121 - Segunda tarefa computacional - 2016
Matrizes pertencentes a certas classes oriundas de aplica¸c˜oes podem ser tri- angularizadas pelo M´etodo de Elimina¸c˜ao de Gauss sem trocas de linhas e sem a necessidade de condensa¸c˜ao pivotal para a estabilidade num´erica. Por exemplo, matrizes diagonais dominantes, matrizes sim´etricas definidas positivas e algu- mas matrizes em problemas de aproxima¸c˜ao por splines est˜ao nesta situa¸c˜ao.
Suponha queA´e uma matriz triangulariz´avel pelo M´etodo de Elimina¸c˜ao de Gauss sem trocas de linhas. Se denotarmos porU a matriz triangular superior obtida da triangulariza¸c˜ao, e por L a matriz triangular inferior formada pelos multiplicadoresLij,i > j, abaixo da diagonal e com elementos diagonais iguais a 1, ent˜ao pode-se mostrar que
A=LU,
chamada de decomposi¸c˜aoLU deA.
Podemos ent˜ao resolver qualquer sistema linear Ax = b resolvendo-se um sistema triangular inferior e outro triangular superior da seguinte forma (por que?):
Ly= b, U x= y.
Esta metodologia pode ser usada para a resolu¸c˜ao de v´arios sistemas lineares com a mesma matrizAe lados direitos diferentes.
Matrizes tridiagonaisMatrizes tridiagonais possuem elementos diferentes de zero somente na diagonal principal e nas diagonais secund´arias acima e abaixo da diagonal principal, ou seja,aij = 0 se|i−j|>1. Elas aparecem frequentemente em aplica¸c˜oes e por isso merecem um tratamento especial. A sua estrutura pode ser explorada para obtermosLeU de forma eficiente.
Se A ´e uma matriz tridiagonal triangulriz´avel pelo M´etodo de Elimina¸c˜ao de Gauss sem trocas de linhas, os ´unicos elementos deU que podem ser n˜ao nulos s˜aoUii eUi,i+1, e os ´unicos multiplicadores que podem ser n˜ao nulos s˜ao Li+1,i. Al´em disso,Ui,i+1=ai,i+1(tente demonstrar estas afirma¸c˜oes). Conse- quentemente, o n´umero de opera¸c˜oes aritm´eticas ´e reduzido consideravelmente ao descartarmos contas cujos resultados sabemos que s˜ao nulos.
O armazenamento tamb´em pode ser feito de forma eficiente, sendo desne- cess´ario guardar os valores que sabemos que s˜ao nulos. A matriz tridiagonal
A=
b1 c1
a2 b2 c2
. .. . .. . ..
an−1 bn−1 cn−1 an bn
pode ser armazenada em trˆes vetores
a= (0, a2, . . . , an−1, an), b= (b1, b2, . . . , bn−1, bn) c= (c1, c2, . . . , cn−1,0)
1
e os coeficientes ui = Uii e li+1 = Li+1,i da decomposi¸c˜ao LU podem ser calculados pelo algoritmo (exerc´ıcio)
u1=b1
parai= 2,· · ·, nfa¸ca
li=ai/ui−1(multiplicador) ui =bi−lici−1
fim
sendo poss´ıvel armazen´a-los tamb´em em vetores. Lembre-se queUi,i+1=ci. Tendo LeU (armazenados como descrito acima), a solu¸c˜ao de um sistema Ax=d´e ent˜ao obtida de
Ly=d:
y1=d1
parai= 2,· · · , nfa¸ca yi=di−liyi−1
fim U x=y:
xn =yn/un
parai=n−1,· · ·,1fa¸ca xi = (yi−cixi+1)/ui
fim
Sistemas tridiagonais c´ıclicosNo tratamento num´erico de certos problemas envolvendo periodicidade, aparecem sistemas tridiagonais c´ıclicosAx=donde a matriz tem a seguinte estrutura:
A=
b1 c1 a1
a2 b2 c2
. .. . .. . ..
an−1 bn−1 cn−1
cn an bn
E poss´ıvel obter a decomposi¸´ c˜aoLU deA de maneira eficiente, mas aqui esta- mos interessados na resolu¸c˜ao do sistema linear aproveitando o algoritmo para matrizes tridiagonais. O sistemaAx=dpode ser escrito como
Tx˜+xnv= ˜d wtx˜+xnbn=dn
2
ondeT ´e a submatriz principal (n−1)×(n−1),que ´e tridiagonal,v ews˜ao os vetores deRn−1 definidos porv= (a1,0, . . . ,0, cn−1)t ew= (cn,0, . . . ,0, an)t, respectivamente, ˜x= (x1, . . . , xn−1)t e ˜d = (d1, . . . , dn−1)t. A solu¸c˜ao ´e dada por
xn= dn−cny˜1−any˜n−1 bn−cnz˜1−anz˜n−1
e x˜= ˜y−xnz˜
onde ˜y ´e a solu¸c˜ao do sistema linear Ty˜= ˜de ˜z ´e a solu¸c˜ao do sistema linear Tz˜=v, ambos com a mesma matriz tridiagonalT de ordemn−1.
Tarefa Implemente o algoritmo descrito acima para a decomposi¸c˜ao LU de uma matriz tridiagonalA n×n. As matrizes A,LeU devem ser armazenadas em vetores conforme descrito no texto. Implemente tamb´em o algoritmo para a resolu¸c˜ao de um sistema linear tridiagonal usando a decomposi¸c˜ao LU da matriz. Fa¸ca as implementa¸c˜oes de forma que elas possam ser usadas como partes de outros programas.
Teste os algoritmos na resolu¸c˜ao do sistema linear tridiagonal c´ıclicoAx=d, onde os coeficientes da matrizA s˜aoai =ci = 0.5 e bi = 2, e o lado direito ´e di = cos(iπ/10), 1≤i≤20.
Entrega da tarefa
Sua tarefa deve ser entregue no sistema Moodle (grauna@ime.usp.br) at´e o dia 26/04. Vocˆe entregar´a o fonte do programa (escrito em C ou em Python).
Pense em uma forma adequada para o programa apresentar os dados e as res- postas. Esta tarefa ´e individual.
3