9.6.6 pvgetri

a, info = PySLK.pvgetri(a,[ia=1,ja=1])

La rutina "pvgetri" computa la inversa de una matriz distribuida mediante la factorización LU computada mediante pvgetrf. Este método invierte la matriz $U$ y entonces computa la inversa de $A$ denotada como $A^{-1}$ mediante la resolución del sistema $A^{-1}L=U^{-1}$.

Esta rutina se provee para matrices con elementos de tipo real y complejo. Las características de cada uno de los parámetros son las siguientes:

A continuación mostramos un ejemplo en la utilización de esta rutina:


from PyACTS import *
import PyACTS.PyScaLAPACK as PySLK
from RandomArray import *
from Numeric import *
n,nrhs=8,1
#Initiliaze the Grid
PyACTS.gridinit(nb=2)
if PyACTS.iread==1:
    print "Ejemplo de Utilizacion ScaLAPACK: PvGETRI"
    print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
    print "Tam. Bloques:",PyACTS.mb,"*",PyACTS.nb
    a=8*identity(n,Float)+ones([n,n],Float)
    print "a=",a
else:
    a=None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
a=Num2PyACTS(a,ACTS_lib)
#We call ScaLAPACK routine
a,info= PySLK.pvgetri(a)
a=PyACTS2Num(a)
if PyACTS.iread==1:
    print "Inverse :",a
    print "Info:",info
PyACTS.gridexit()

El resultado de este código es el siguiente:

vgaliano@nodo0$ mpirun -np 4 mpipython exPyScapvgetri.py 
Ejemplo de Utilizacion ScaLAPACK: PvGETRI
N= 8 ;nprow x npcol: 2 x 2
Tam. Bloques: 2 * 2
a= [[ 9.  1.  1.  1.  1.  1.  1.  1.]
 [ 1.  9.  1.  1.  1.  1.  1.  1.]
 [ 1.  1.  9.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  9.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  9.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  9.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.  9.  1.]
 [ 1.  1.  1.  1.  1.  1.  1.  9.]]
Inverse : [[ -1.37174211e-03  -1.21932632e-03  -1.08384562e-03  -9.63418329e-04
        -8.56371848e-04  -7.61219420e-04  -6.08975536e-03   1.23456790e-01]
 [  1.23456790e-01  -1.37174211e-03  -1.21932632e-03  -1.08384562e-03
        -9.63418329e-04  -8.56371848e-04  -6.85097478e-03  -1.11111111e-01]
 [ -1.11111111e-01   1.23456790e-01  -1.37174211e-03  -1.21932632e-03
        -1.08384562e-03  -9.63418329e-04  -7.70734663e-03   0.00000000e+00]
 [  0.00000000e+00  -1.11111111e-01   1.23456790e-01  -1.37174211e-03
        -1.21932632e-03  -1.08384562e-03  -8.67076496e-03   0.00000000e+00]
 [ -1.38777878e-17   0.00000000e+00  -1.11111111e-01   1.23456790e-01
        -1.37174211e-03  -1.21932632e-03  -9.75461058e-03   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00  -1.11111111e-01
         1.23456790e-01  -1.37174211e-03  -1.09739369e-02   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
        -1.11111111e-01   1.23456790e-01  -1.23456790e-02   0.00000000e+00]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
         0.00000000e+00  -1.11111111e-01   1.11111111e-01   0.00000000e+00]]
Info: 0

See Sobre este documento... para sugerencias en cambios.