9.6.7 pvgeequ

r,c,rowcnd,colcnd,amax,info= PySLK.pvgeequ(a,[ia=1,ja=1])

La rutina "pvgeequ" computa la ponderación de filas y columna para equilibrar la matriz distribuida $A$ y reducir su numero de condición. $R$ devuelve los factores de escala de filas y $C$ devuelve los factores de escala de columnas. Éstos son elegidos para hacer más grandes las entradas en cada fila y columna de la matriz distribuida $B$ para que sus elementos elementos $B_{ij}=R_{i}A_{ij}C_{j}$ tengan valor absoluto igual a 1.

$R_{i}$ y $C_{j}$ son valores restringidos entre smlnum y bignum. El uso de estos factores de escalado no esta garantizado para lograr una reducción del número de condición A pero en práctica el resultado suele ser bueno.

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: PvGEEQU"
    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
r,c,rowcnd,colcnd,amax,info= PySLK.pvgeequ(a)
if PyACTS.iread==1:
    print "r :",r
    print "c :",c
    print "rowcnd :",rowcnd
    print "colcnd :",colcnd
    print "amax :",amax
    print "Info:",info
PyACTS.gridexit()

El resultado de este código es el siguiente:

vgaliano@nodo0$ mpirun -np 4 mpipython exPyScapvgequ.py 
Ejemplo de Utilizacion ScaLAPACK: PvGEEQU
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.]]
r : [[ 0.11111111]
 [ 0.11111111]
 [ 0.11111111]
 [ 0.11111111]]
c : [[ 1.]
 [ 1.]
 [ 1.]
 [ 1.]]
rowcnd : 1.0
colcnd : 1.0
amax : 9.0
Info: 0

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