b,info= PySLK.pvgels(a,b[,trans])
La rutina pvgels
resuelve sistemas lineales determinados o indeterminados descritos
en una matriz o su traspuesta, usando una factorización QR o LQ de . Se asume que
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:
Parámetros de Entrada
a
: Matriz de dimensiones .
b
: Matriz de dimensiones .
trans
: Operación que se realiza sobre la matriz .
trans='N'
y m=n
: Encuentra la raiz al sistema determinado, por ejemplo
resuelve el problema minimize
.
trans='N'
y m<n
: Encuentra la solución mínima del sistema indeterminado
trans='T'
y m>=n
: Encuentra la solución mínima del sistema indeterminado
trans='T'
y m<n
: Encuentra la raiz al sistema determinado, por ejemplo
resuelve el problema minimize
.
Parámetros de Salida
b
: Vector de tipo PyACTS donde se almacena el resultado.
info
: Resultado global de la ejecución
= 0
: Ejecución con éxito
< 0
: Si el argumento i-esimo es un vector y la entrada j-esima
tuvo un valor ilegal, entonces info=-(i*100+j)
. Si el argumento i-esimo es un
escalar y tuvo un valor ilegal, entonces info=-1
.
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()
[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.