9.6.14 pvpotrf

a,info= PySLK.pvpotrf(a,uplo="U")

La rutina "pvpotrf" computa la factorización Cholesky de una matriz simétrica definida positiva. La factorización tiene el siguiente aspecto:

\begin{displaymath}A=U^{T}U, si \ \code{uplo='U'}\end{displaymath}

o

\begin{displaymath}A=L^{T}L, si \ \code{uplo='L'}\end{displaymath}

donde $U$ es una matriz triangular superior, y $L$ es una matriz triangular inferior. 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,2
#Initiliaze the Grid
PyACTS.gridinit(nb=2)
if PyACTS.iread==1:
    print "Ejemplo de Utilizacion ScaLAPACK: PvPOTRF"
    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.pvpotrf(a,uplo="U")
a=PyACTS2Num(a)
if PyACTS.iread==1:
    print "U^T * U =",a
    print "Info:",info
PyACTS.gridexit()

El resultado de este código es el siguiente:

 mpirun -np 2 mpipython exPyScapvpotrf.py 
Ejemplo de Utilizacion ScaLAPACK: PvPOTRF
N= 8 ;nprow x npcol: 2 x 1
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.]]
U^T * U = [[ 3.          0.33333333  0.33333333  0.33333333  0.33333333  0.33333333
        0.33333333  0.33333333]
 [ 1.          2.98142397  0.2981424   0.2981424   0.2981424   0.2981424 
        0.2981424   0.2981424 ]
 [ 1.          1.          2.96647939  0.26967994  0.26967994  0.26967994
        0.26967994  0.26967994]
 [ 1.          1.          1.          2.95419578  0.24618298  0.24618298
        0.24618298  0.24618298]
 [ 1.          1.          1.          1.          2.94392029  0.22645541
        0.22645541  0.22645541]
 [ 1.          1.          1.          1.          1.          2.93519754
        0.20965697  0.20965697]
 [ 1.          1.          1.          1.          1.          1.        
        2.92770022  0.19518001]
 [ 1.          1.          1.          1.          1.          1.        
        1.          2.92118697]]
Info: 0

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