Map05 - Métodos Matriciais Computacionais Mat01050

Propaganda
Map05 - Métodos Matriciais Computacionais
Mat01050 - Álgebra Matricial Computacional
Primeiro Exercicio Computacional, entregar ao Prof: 22/10/2012
Assunto: Normais vetoriais, BLAS e Fortran90
Objetivo: Completar estudo dirigido que não pode ser apresentado em aula.
Tarefa: entregar ao seu Prof., por e-mail, código de subrotina em Fortran 90 ou C, com
definição: subroutine normap(n,x,p,norma) (ou equivalente, na linguagem C), implementando o cálculo de norma vetorial p de um vetor x dado:
• p = 0: |x|∞ via cálculo próprio;
• p = 1: |x|1 via dasum da BLAS;
• p = 2: |x|2 via dnrm2 da BLAS;
• p > 2: |x|p via via cálculo próprio;
Seu código deve ter comentários e deve ser organizado de maneira a fazer as contas mais
eficientemente.
Para contextualização, faça e complete o Estudo Dirigido abaixo.
Estudo: interface de Scilab com subrotina f90 que chama BLAS
Tarefa: implementar uma funcao normap(x,p) em Scilab, que
chama subrotina em fortran90, que por sua vez chama
BLAS dasum: calculo da norma da soma (p=1)
BLAS dnrm2: calculo da norma Euclidiana (p=2)
e por sua conta calcula as demais normas p
(que nao sao implementadas na biblioteca BLAS)
edite: normap.f90
subroutine normap(n,x,p,norma)
! calcular a norma p de um vetor x(*) dado
real (kind=8) x(*),norma
integer :: i,n,p
real (kind=8) dnrm2,dasum
external dnrm2,dasum
if (p==0) then
! este caso eh Exercicio Computacional
! calcular norma do maximo
1
norma = 0.0
elseif (p<0) then
norma=.0
elseif (p==1) then
!
delegaremos essa tarefa a funcao dasum da BLAS
norma=dasum(n,x,1)
elseif (p==2) then
!
delegaremos essa tarefa a funcao dnrm2 da BLAS
norma=dnrm2(n,x,1)
else
! este caso serah Exercicio Computacional
! p eh inteiro e maior do que 2
norma=.0
end if
end
gfortran -shared -fPIC normap.f90 -lblas -o normap.so
no Scilab:
ilib_for_link("normap","normap.f90",[],"f")
exec loader.sce
function u=normap(x,p)
n = max(size(x,1),size(x,2));
u = call(’normap’,n,1,"i",x,2,"d",p,3,"i","out",[1,1],4,"d");
endfunction
2
Map05 - Métodos Matriciais Computacionais
Mat01050 - Álgebra Matricial Computacional
Segundo Exercicio Computacional, entregar ao Prof: 14/11/2012
Assunto: Decomposição LU de uma matriz
Objetivo: Apresentar método, algoritmo e programa para atualização da fatoração LU
de uma matriz. Se uma matriz A ∈ Rn×n , que tem fatoração A = LU conhecida, tem
a sua última coluna atualizada, queremos poder igualmente atualizar L ou U , ou ambas,
em um procedimento O(n) ou O(n2 ), dessa forma evitando ter que fazer todo o processo
novamente. Para estabelecer notação, queremos encontrar matrizes Lw e Uw tais que
A + weTn = Lw Uw é a fatoração LU de Aw = A + weTn .
Tarefa: entregar ao seu Prof., por e-mail, código de subrotina em Fortran 90 ou C, ou
ainda função Scilab, Matlab:
parametros de entrada:
1. estrutura de dados A com a fatoração LU da matriz A, no formato Lapack (DGE____);
2. dimensão principal da estrutura A;
3. número de colunas da matriz A;
4. vetor w
parametros de saída: estrutura de dados A é re-escrita com as novas matrizes Lw e Uw .
subrotine atualiza_lu(A , lda, n , w )
function A = atualiza_lu(A , w )
3
Map05 - Métodos Matriciais Computacionais
Mat01050 - Álgebra Matricial Computacional
Terceiro Exercicio Computacional, entregar ao Prof: 19/12/2012
Assunto: Técnicas avançadas para sistemas lineares aplicadas a solução da equação de Poisson em 2 dimensões.
Contexto: em anexo, apresentamos o equacionamento da discretização da equação de Poisson
∂2T
∂2T
+
= f (x, y), 0 ≤ x ≤ 1, 0 ≤ y ≤ 1
∂x2
∂y 2
com condições de contorno T (x, y) = g(x, y) , nas fronteiras x = 0, x = 1,y = 0 e y = 1, via △x = △y ,

0 = x0 < x1 < . . . < xn < xn+1 = 1



0 = y0 < y1 < . . . < yn < yn+1 = 1
Ti+1,j + Ti−1,j − 2Tij Ti,j+1 + Ti,j−1 − 2Tij


+
= fij

(△x)2
(△y)2
2
2
que resulta em um grande sistema Ax = b, onde A ∈ Rn ×n é uma matriz esparsa, simétrica , tridiagonal
em blocos, que tem banda n (apenas n subdiagonais não-nulas):


An −In

 −In An . . .




... ... ...
A=


. . . . . . −In 
−In An n2 ×n2
onde

4 −1
 −1 4 −1

−1 4 −1
An = 


. . . . . . . . . −1
−1 4







n×n


, In = 



1
1
1
...
1





.
n×n
Técnicas avançadas para solução do sistema linear Ax = b visam trazer grande desempenho explorando
tanto a estrutura simétrica quanto a estrutura tridiagonal em blocos (ou ainda a estrutura em banda) e ainda
a esparsidade da matriz A.
Tarefa A: Implemente a solução da equação de Poisson para f (x, y) = −x2 y 2, g(x, y) = 273 − 50x2 y 2 ,
n = 101 , 102 , 103 (opcional), usando a seguinte estratégia:
• usando decomposição Cholesky tridiagonal em blocos (algoritmo dado em aula, que você poderá
implementar, na forma de subrotina ou função, usando a linguagem ou ambiente que quiser) que faça
chamadas a rotinas das bibliotecas BLAS e LAPACK para solução dos sub-problemas de tamanho n
(rotinas DTRSM e DPOTRF);
• plote suas soluções usando mesh (em Matlab ou Scilab) ou equivalente.
4
Map05 - Métodos Matriciais Computacionais
Mat01050 - Álgebra Matricial Computacional
Terceiro Exercicio Computacional, entregar ao Prof: 19/12/2012
Assunto: Técnicas avançadas para sistemas lineares aplicadas a solução da equação de Poisson em 2 dimensões.
Contexto: em anexo, apresentamos o equacionamento da discretização da equação de Poisson
∂2T
∂2T
+
= f (x, y), 0 ≤ x ≤ 1, 0 ≤ y ≤ 1
∂x2
∂y 2
com condições de contorno T (x, y) = g(x, y) , nas fronteiras x = 0, x = 1,y = 0 e y = 1, via △x = △y ,

0 = x0 < x1 < . . . < xn < xn+1 = 1



0 = y0 < y1 < . . . < yn < yn+1 = 1
Ti+1,j + Ti−1,j − 2Tij Ti,j+1 + Ti,j−1 − 2Tij


+
= fij

(△x)2
(△y)2
2
2
que resulta em um grande sistema Ax = b, onde A ∈ Rn ×n é uma matriz esparsa, simétrica , tridiagonal
em blocos, que tem banda n (apenas n subdiagonais não-nulas):


An −In

 −In An . . .




... ... ...
A=


. . . . . . −In 
−In An n2 ×n2
onde

4 −1
 −1 4 −1

−1 4 −1
An = 


. . . . . . . . . −1
−1 4







n×n

1


, In = 


1
1
...
1





.
n×n
Técnicas avançadas para solução do sistema linear Ax = b visam trazer grande desempenho explorando
tanto a estrutura simétrica quanto a estrutura tridiagonal em blocos (ou ainda a estrutura em banda) e ainda
a esparsidade da matriz A.
Tarefa B: Implemente a solução da equação de Poisson para f (x, y) = −x2 y 2, g(x, y) = 273 − 50x2 y 2 ,
n = 101 , 102 , 103 (opcional), usando a seguinte estratégia:
• fazendo chamadas as rotinas DPBTRF e DPBTRS da biblioteca LAPACK, que tratam da decomposição Cholesky de uma matriz banda, e posterior solução do respectivo sistema linear;
• você poderá escolher linguagem ou ambiente computacional;
• plote suas soluções usando mesh (em Matlab ou Scilab) ou equivalente.
5
Map05 - Métodos Matriciais Computacionais
Mat01050 - Álgebra Matricial Computacional
Terceiro Exercicio Computacional, entregar ao Prof: 19/12/2012
Assunto: Técnicas avançadas para sistemas lineares aplicadas a solução da equação de Poisson em 2 dimensões.
Contexto: em anexo, apresentamos o equacionamento da discretização da equação de Poisson
∂2T
∂2T
+
= f (x, y), 0 ≤ x ≤ 1, 0 ≤ y ≤ 1
∂x2
∂y 2
com condições de contorno T (x, y) = g(x, y) , nas fronteiras x = 0, x = 1,y = 0 e y = 1, via △x = △y ,

0 = x0 < x1 < . . . < xn < xn+1 = 1



0 = y0 < y1 < . . . < yn < yn+1 = 1
Ti+1,j + Ti−1,j − 2Tij Ti,j+1 + Ti,j−1 − 2Tij


+
= fij

(△x)2
(△y)2
2
2
que resulta em um grande sistema Ax = b, onde A ∈ Rn ×n é uma matriz esparsa, simétrica , tridiagonal
em blocos, que tem banda n (apenas n subdiagonais não-nulas):


An −In

 −In An . . .




... ... ...
A=


. . . . . . −In 
−In An n2 ×n2
onde

4 −1
 −1 4 −1

−1 4 −1
An = 


. . . . . . . . . −1
−1 4







n×n


, In = 



1
1
1
...
1





.
n×n
Técnicas avançadas para solução do sistema linear Ax = b visam trazer grande desempenho explorando
tanto a estrutura simétrica quanto a estrutura tridiagonal em blocos (ou ainda a estrutura em banda) e ainda
a esparsidade da matriz A.
Tarefa C (valor máximo 8/10): Implemente a solução da equação de Poisson para f (x, y) = −x2 y 2 ,
g(x, y) = 273 − 50x2 y 2 , n = 101 , 102 , 103 (opcional), usando a seguinte estratégia:
• como o ambiente Matlab possui ferramentas para tratamento de matrizes esparsas, mesmo a fatorização Cholesky via chol pode ser feita nesse contexto; você então irá construir uma representação
da parte superior da grande matriz A, usando sparse, e depois usar chol e \ para resolver o grande
sistema;
• plote suas soluções usando mesh (em Matlab ou Scilab) ou equivalente.
6
Download