9.6.5 pvgerfs

x,ferr,berr,info= PySLK.pvgerfs(a,af,b,x,[trans='N',ia=1,ja=1,ib=1,jb=1,ix=1,jx=1,iaf=1,jaf=1])

La rutina "pvgerfs" implementa la solución a un sistema de ecuaciones lineal y proporciona estimación de error para las soluciones aportadas.

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: PvGERFS"
    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
    af=8*identity(n,Float)+ones([n,n],Float)
    b=ones((n,nrhs))
    print "b'=",transpose(b)
    x=ones((n,nrhs))
    print "x'=",transpose(x)
else:
    a,af,b,x=None,None,None,None
#We convert Numeric Array to PyACTS.Scalapack Array
ACTS_lib=1 # 1=Scalapack
a=Num2PyACTS(a,ACTS_lib)
af=Num2PyACTS(af,ACTS_lib)
b=Num2PyACTS(b,ACTS_lib)
x=Num2PyACTS(x,ACTS_lib)
#We call PBLAS routine
af,info= PySLK.pvgetrf(af)
x,ferr,berr,info= PySLK.pvgerfs(a,af,b,x)
x=PyACTS2Num(x)
if PyACTS.iread==1:
    print "Solución x:",x
    print "ferr:",ferr
    print "berr:",berr
    print "Info:",info
PyACTS.gridexit()

El resultado de este código es el siguiente:

 vgaliano@nodo0$ mpirun -np 2 mpipython exPyScapvgerfs.py 
Ejemplo de Utilizacion ScaLAPACK: PvGERFS
N= 8 ;nprow x npcol: 2 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.]]
b'= [ [1 1 1 1 1 1 1 1]]
x'= [ [1 1 1 1 1 1 1 1]]
Solution x: [[ 0.0625]
 [ 0.0625]
 [ 0.0625]
 [ 0.0625]
 [ 0.0625]
 [ 0.0625]
 [ 0.0625]
 [ 0.0625]]
ferr: [[  9.92261828e-15]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]]
berr: [[  9.43689571e-16]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]
 [  0.00000000e+00]]
Info: 0

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