9.2.1 pvgels

b,info= PySLK.pvgels(a,b[,trans])

La rutina pvgels resuelve sistemas lineales determinados o indeterminados descritos en una matriz $M x N$ o su traspuesta, usando una factorización QR o LQ de $a$. Se asume que $a$ tiene rango máximo.

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()
if PyACTS.iread==1:
        print "Ejemplo de Utilizacion ScaLAPACK: PvGELS"
        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
        b=ones((n,nrhs))
        print "b'=",transpose(b)
else:
        a,b=None,None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
a=Num2PyACTS(a,ACTS_lib)
b=Num2PyACTS(b,ACTS_lib)
#We call PBLAS routine
b,info= PySLK.pvgels(a,b)
b_num=PyACTS2Num(b)
if PyACTS.iread==1:
        print "a*x=b --> x'=",transpose(b_num)
        print "Info:",info
PyACTS.gridexit()
El resultado de este código es el siguiente:
[vgaliano@localhost EXAMPLES]$ mpirun -np 4 mpipython exPyScapvgels.py
Ejemplo de Utilizacion ScaLAPACK: PvGELS
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.]]
b'= [[1 1 1 1 1 1 1 1]
 [1 1 1 1 1 1 1 1]]
a*x=b --> x'= [[ 0.125  0.125  0.125  0.125  0.125  0.125  0.125  0.125]
 [ 0.125  0.125  0.125  0.125  0.125  0.125  0.125  0.125]]
Info: 0

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