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