9.5.1 pvsyevx

m,nz,w,z,ifail,iclustr,gap,info= PySLK.pvsyevx(a[,jobz,range,uplo,orfac,rcond,vl,vu,il,iu])

La rutina "pvsyevx" calcula los valores únicos seleccionados y, opcionalmente los vectores ortogonales de una matriz simétrica real. Los valores únicos y vectores ortogonales puedes ser seleccionados indicando un rango de valores o un conjunto de índices para los deseados valores únicos.

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=8
#Initiliaze the Grid
PyACTS.gridinit()
if PyACTS.iread==1:
        print "Ejemplo de Utilizacion ScaLAPACK: PvSYEVX"
        print "N=",n,";nprow x npcol:",PyACTS.nprow,"x",PyACTS.npcol
        print "Tam. Bloques:",PyACTS.mb,"*",PyACTS.nb
        a=8*identity(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 PBLAS routine
m,nz,w,z,work,ifail,iclustr,gap,info= PySLK.pvsyevx(a)
z_num=PyACTS2Num(z)
if PyACTS.iread==1:
        print "Eigenvalues --> w'=",transpose(w)
        print "Eigenvectors --> z=",z_num
        print "Info:",info
PyACTS.gridexit()
De esta rutina queremos destacar el hecho que w es una matriz de tipo Numeric y será conocida por todos los procesos que intervienen en la malla. Sin embargo, z es una matriz de tipo PyACTS, lo que implica que sus valores se encuentran distribuidos entre los distintos procesos que intervienen en la malla. En el caso que quisieramos obtener toda los valores en un único proceso, éste debería llamar a la función PyACTS2Num tal y como se indica en este ejemplo. El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyScapvsyevx.py
Ejemplo de Utilizacion ScaLAPACK: PvSYEVX
N= 8 ;nprow x npcol: 2 x 2
Tam. Bloques: 32 * 32
a= [[ 8.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  8.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  8.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  8.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  8.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  8.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  8.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  8.]]
Eigenvalues --> w'= [ 8.  8.  8.  8.  8.  8.  8.  8.]
Eigenvectors --> z= [[ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  0.]]
Info: 0

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