9.8.1 pvsytrd

a,tau,d,e,info= PySLK.pvsytrd(a[uplo='U'])
La rutina "pvsytrd" reduce una matriz simétrica $A$ a una forma tridiagonal T simétrica mediante una transformación del siguiente tipo:


\begin{displaymath}Q' A Q=T\end{displaymath}

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: PvSYTRD"
    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,tau,info= PySLK.pvsytrd(a,uplo='U')
a=PyACTS2Num(a)
if PyACTS.iread==1:
    print " Q' * sub( A ) * Q = T-->",a
    print "Tau:",transpose(tau)
    print "Info:",info
PyACTS.gridexit()
El resultado de este código es el siguiente:
mpirun -np 3 mpipython exPyScapvsytrd.py 
Ejemplo de Utilizacion ScaLAPACK: PvSYTRD
N= 8 ;nprow x npcol: 3 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.]]
 Q' * sub( A ) * Q = T--> 
 [[  7.99999905e+00  -6.47092293e-07   4.14213568e-01   3.66025418e-01
         0.00000000e+00   0.00000000e+00   2.89897949e-01   2.74291903e-01]
 [  1.00000000e+00   7.99999952e+00   4.21468485e-07   3.66025418e-01
         0.00000000e+00   0.00000000e+00   2.89897949e-01   2.74291903e-01]
 [  1.00000000e+00   1.00000000e+00   8.00000000e+00  -3.09714807e-07
         0.00000000e+00   0.00000000e+00   2.89897949e-01   2.74291903e-01]
 [  1.00000000e+00   1.00000000e+00   1.00000000e+00   8.00000000e+00
         0.00000000e+00   0.00000000e+00   2.89897949e-01   2.74291903e-01]
 [  1.00000000e+00   1.00000000e+00   1.00000000e+00   1.00000000e+00
         8.00000000e+00  -4.76837158e-07   2.89897949e-01   2.74291903e-01]
 [  1.00000000e+00   1.00000000e+00   1.00000000e+00   1.00000000e+00
         1.00000000e+00   7.99999619e+00   5.84003885e-07   2.74291903e-01]
 [  1.00000000e+00   1.00000000e+00   1.00000000e+00   1.00000000e+00
         1.00000000e+00   1.00000000e+00   1.50000000e+01  -2.64575124e+00]
 [  1.00000000e+00   1.00000000e+00   1.00000000e+00   1.00000000e+00
         1.00000000e+00   1.00000000e+00   1.00000000e+00   9.00000000e+00]]
Tau: [ [ 0.          0.          1.70710683  1.57735026  0.          0.        
        1.40824831  1.3779645 ]]
Info: 0

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