9.3.1 pvsyev

w,z,info= PySLK.pvsyev(a,jobz,uplo)

La rutina pvsyev resuelve todos los valores únicos y, opcionalmente, los vectores únicos de una matriz $A$ simétrica de tipo real llamando a una secuencia adecuada de las rutinas de PyScaLAPACK.

pvsyev asume un sistema homogeneo y no realiza las comprobaciones de la consistencia de los valores unicos y de los vectores unicos en los diferentes procesos. Por tanto, es posible que un sistema heterogéneo pueda devolver resultados incorrectos sin mensajes de error.

Esta rutina se provee para matrices con elementos únicamente de tipo real.

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: PvSYEV"
        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 ScaLAPACK routine
w,z,info= PySLK.pvsyev(a,jobz='V')
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 exPyScapvsyev.py
Ejemplo de Utilizacion ScaLAPACK: PvSYEV
N= 8 ;nprow x npcol: 2 x 2
Tam. Bloques: 2 * 2
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= [[ 1.  0.  0.  0.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  1.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  1.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  1.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.  1.  0.]
 [ 0.  0.  0.  0.  0.  0.  0.  1.]]
Info: 0

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