Está en la página 1de 6

INTRODUCCION A LAS RUTINAS DE LAPACK

Las rutinas driver y computational tienen su nombre estructurado de la siguiente forma XYYZZ
o XYYZZZ.
La primera letra X, indica el tipo de dato a utilizar, siendo las opciones siguientes:

Tipo de dato
S Real
D Real doble precisión
C Complejo
Z Complejo doble precisión
Las siguiente dos letras YY, indican el tipo de matriz o la más significativa del cálculo. La
mayoría de códigos de dos letras se aplican tanto a matrices reales como complejas, algunas solo
funcionan un tipo en específico, esto se indica en la siguiente tabla.

Tipo de Matrices
BD bidiagonal
DI diagonal
GB general band
GE general (i.e., unsymmetric, in some cases rectangular)
GG general matrices, generalized problem (i.e., a pair of general matrices)
GT general tridiagonal
HB (complex) Hermitian band
HE (complex) Hermitian
HG upper Hessenberg matrix, generalized problem (i.e a Hessenberg and a
triangular matrix)
HP (complex) Hermitian, packed storage
HS upper Hessenberg
OP (real) orthogonal, packed storage
OR (real) orthogonal
PB symmetric or Hermitian positive definite band
PO symmetric or Hermitian positive definite
PP symmetric or Hermitian positive definite, packed storage
PT symmetric or Hermitian positive definite tridiagonal
SB (real) symmetric band
SP symmetric, packed storage
ST (real) symmetric tridiagonal
SY symmetric
TB triangular band
TG triangular matrices, generalized problem (i.e., a pair of triangular matrices)
TP triangular, packed storage
TR triangular (or in some cases quasi-triangular)
TZ trapezoidal
UN (complex) unitary
UP (complex) unitary, packed storage
Por su parte, las últimas dos o tres letras ZZZ indican el cálculo que se va a realizar.
Algo a destacar es que cuando se refiere a una rutina de forma genérica, donde el tipo de dato a
utilizarse es independiente entonces se remplaza la primera letra del nombre de la rutina por la
letra “x”, por ejemplo, xGESV se refiere a algunas o todas las rutinas SGESV, CGESV, DGESV
y ZGESV. También cuando nos referimos a una clase de rutina que realiza la misma función en
diferentes tipos de matrices, reemplazamos las primeras tres letras por “xyy”, por ejemplo,
xyySVX se refiere a todas las rutinas driver expert para sistemas de ecuaciones lineales (SVX).
Para ejemplificar todo lo anterior, tenemos la rutina SGEBRD que sería una rutina que trabaja
con numero reales de precisión simple (S) que realiza una reducción bidiagonal (BRD) de una
matriz general (GE).

RUTINAS PARA CALCULAR VALORES Y VECTORES PROPIOS


En este apartado encontramos dos grandes grupos de rutinas, las cuales depende de la forma en
la que se presenta el problema, estos grupos son:
1. Standard Eigenvalue and Singular Value Problems.
𝐴𝑧 = 𝛾𝑧
Siendo:
𝐴: 𝑀𝑎𝑡𝑟𝑖𝑧
𝛾: 𝑉𝑎𝑙𝑜𝑟 𝑝𝑟𝑜𝑝𝑖𝑜
𝑍: 𝑉𝑒𝑐𝑡𝑜𝑟 𝑝𝑟𝑜𝑝𝑖𝑜

2. Generalized Eigenvalue and Singular Value Problems.


𝐴𝑧 = 𝛾𝐵𝑧
Siendo:
𝐴 𝑦 𝐵: 𝑀𝑎𝑡𝑟𝑖𝑐𝑒𝑠
𝛾: 𝑉𝑎𝑙𝑜𝑟 𝑝𝑟𝑜𝑝𝑖𝑜
𝑍: 𝑉𝑒𝑐𝑡𝑜𝑟 𝑝𝑟𝑜𝑝𝑖𝑜

Ambas forman podrían ser de utilidad, todo dependerá de cómo se decida abordar el problema,
dichas formas se muestran a continuación (Chopra).
Standard Eigenvalue and Singular Value Problems.
En esta forma encontramos tres divisiones distintas, las cuales dependen de la simetría de las
matrices utilizadas.
1. Symmetric Eigenproblems (SEP)

Estas rutinas son aplicables a matrices simétricas cuadradas y hermitiana, cuenta con
cuatro tipos de rutinas para resolver el problema de valores y vectores propios. Siempre
sus valores propios serán números reales.
 Simple driver (nombre termina en EV): Calcula todos los valores propios y
opcionalmente vectores propios.
 Expert driver (nombre termina en EVX): Calcula todos o un subconjunto
seleccionado de valores propios y opcionalmente los vectores propios. Debido a
esto es más rápida a la rutina Simple driver.
 Divide-and-conquer driver (nombre termina en EVD): Resuelve el mismo
problema que la rutina Simple driver. Es más rápida que la rutina Simple cuando
se trabaja con matrices grandes, pero requiere más espacio de trabajo.
 Relatively Robust Representation driver (nombre termina en EVR): Resuelve el
mismo problema que la rutina Experter dirver, pero es el algoritmo más rápido
de todos y utiliza el menor espacio de trabajo.

2. Nonsymmetric Eigenproblems (NEP)

Estas rutinas son aplicables a matrices no simétricas cuadradas y no hermitiana, cuenta


con cuatro tipos de rutinas para resolver el problema de valores y vectores propios,
haciendo uso de la factorización de Schur. El resultado contará con valores propios
complejos, que se producen en pares conjugados.
 xGEES: Es una rutina Simple drive que calcula todo o parte de la factorización
de Schur de A, con un orden opcional de los valores propios.
 xGEESX: Es una rutina Expert drive capaz de calcular adicionalmente el número
de condición para el promedio de un subconjunto seleccionado de los valores
propios y para el correspondiente subespacio de vectores propios derechos.
 xGEEV: Es una rutina Simple drive que calcula todos los valores propios y
opcionalmente los vectores propios derechos, izquierdo o ambos.
 xGEEVX: Es una rutina Expert drive que además puede equilibrar la matriz para
mejorar el acondicionamiento de los valores propios y vectores propios.

3. Singular Value Decomposition (SVD)


Estas rutinas son aplicables a matrices rectangulares (m x n), cuenta con dos tipos de
rutinas para resolver el problema de valores y vectores propios.
 xGESVD: Es una rutina Simple drive que calcula todos los valores propios y
opcionalmente los vectores propios izquierdos y/o derechos.
 xGESDD: Es una rutina Divide and Conquer resuelve el mismo problema de la
rutina Simple Drive, pero más rápido en matrices grandes el inconveniente es que
usa más espacio de trabajo.
Rutinas Driver para Standard Eigenvalue and Singular Value Problems
Type of Function and storage scheme Single precision Double precision
problem real complex real complex
SEP simple driver SSYEV CHEEV DSYEV ZHEEV
divide and conquer driver SSYEVD CHEEVD DSYEVD ZHEEVD
expert driver SSYEVX CHEEVX DSYEVX ZHEEVX
RRR driver SSYEVR CHEEVR DSYEVR ZHEEVR
simple driver (packed storage) SSPEV CHPEV DSPEV ZHPEV
divide and conquer driver SSPEVD CHPEVD DSPEVD ZHPEVD
(packed storage)
expert driver (packed storage) SSPEVX CHPEVX DSPEVX ZHPEVX
simple driver (band matrix) SSBEV CHBEV DSBEV ZHBEV
divide and conquer driver SSBEVD CHBEVD DSBEVD ZHBEVD
(band matrix)
expert driver (band matrix) SSBEVX CHBEVX DSBEVX ZHBEVX
simple driver (tridiagonal SSTEV DSTEV
matrix)
divide and conquer driver SSTEVD DSTEVD
(tridiagonal matrix)
expert driver (tridiagonal matrix) SSTEVX DSTEVX

RRR driver (tridiagonal matrix) SSTEVR DSTEVR


NEP simple driver for Schur SGEES CGEES DGEES ZGEES
factorization
expert driver for Schur SGEESX CGEESX DGEESX ZGEESX
factorization
simple driver for SGEEV CGEEV DGEEV ZGEEV
eigenvalues/vectors
expert driver for SGEEVX CGEEVX DGEEVX ZGEEVX
eigenvalues/vectors
SVD simple driver SGESVD CGESVD DGESVD ZGESVD
divide and conquer driver SGESDD CGESDD DGESDD

Generalized Eigenvalue and Singular Value Problems.


En esta forma encontramos tres divisiones distintas, las cuales dependen de la simetría de las
matrices utilizadas.
1. Generalized Symmetric Definite Eigenproblems (GSEP)

Para estas rutinas es necesario que ambas matrices (A y B) sean matrices simétricas
cuadradas o hermitiana, además B tiene ser definida positiva. Se tienen tres tipos de
rutinas para resolver el problema de valores y vectores propios. Siempre sus valores
propios serán números reales. Las rutinas hacen exactamente lo mismo que las descritas
en Symmetric Eigenproblems (SEP), por lo tanto, solamente se mostraran sus nombres.

 Simple driver (nombre termina en GV)


 Expert driver (nombre termina en GVX)
 Divide-and-conquer driver (nombre termina en GVD).
2. Generalized Nonsymmetric Eigenproblems (GNEP)

Estas rutinas son aplicables a cuando las matrices A y B son matrices cuadradas no
simétricas y no hermitiana, cuenta con cuatro tipos de rutinas para resolver el problema
de valores y vectores propios, haciendo uso de la factorización de Schur. El resultado
contará con valores propios complejos, que se producen en pares conjugados. Las rutinas
realizan lo mismo (solo que ahora para las dos matrices) que las descritas en
Nonsymmetric Eigenproblems (NEP), por lo que solo se dejaran los nombres.
 xGGES: Es una rutina Simple drive.
 xGGESX: Es una rutina Expert drive.
 xGGEV: Es una rutina Simple drive.
 xGGEVX: Es una rutina Expert drive.

3. Generalized Singular Value Decomposition (GSVD)


Estas rutinas son aplicables a matrices rectangulares, la matriz A tendría el tamaño (m x
n) y la matriz B (p x n), cuenta con una única rutina para resolver el problema de valores
y vectores propios. La rutina trabaja igual que la rutina xGESVD.
 xGGSVD: Es una rutina Simple drive que calcula todos los valores propios y
opcionalmente los vectores propios izquierdos y/o derechos.

Rutinas driver para Generalized Eigenvalue and Singular Value Problems


Type of Function and storage scheme Single precision Double precision
problem real complex real complex
GSEP simple driver SSYGV CHEGV DSYGV ZHEGV
divide and conquer driver SSYGVD CHEGVD DSYGVD ZHEGVD
expert driver SSYGVX CHEGVX DSYGVX ZHEGVX
simple driver (packed storage) SSPGV CHPGV DSPGV ZHPGV
divide and conquer driver SSPGVD CHPGVD DSPGVD ZHPGVD
expert driver SSPGVX CHPGVX DSPGVX ZHPGVX
simple driver (band matrices) SSBGV CHBGV DSBGV ZHBGV
divide and conquer driver SSBGVD CHBGVD DSBGV ZHBGVD
expert driver SSBGVX CHBGVX DSBGVX ZHBGVX
GNEP simple driver for Schur SGGES CGGES DGGES ZGGES
factorization
expert driver for Schur SGGESX CGGESX DGGESX ZGGESX
factorization
simple driver for SGGEV CGGEV DGGEV ZGGEV
eigenvalues/vectors
expert driver for SGGEVX CGGEVX DGGEVX ZGGEVX
eigenvalues/vectors
GSVD singular values/vectors SGGSVD CGGSVD DGGSVD ZGGSVD

ALMACENAMIENTO DE MATRICES DE BANDAS


Debido a la forma de las matrices que se generan (masas y rigideces) en el problema del análisis,
son matrices que en su mayoría de sus componentes presentan ceros, entonces, las rutinas de
LAPACK permiten almacenar estas matrices denominadas matrices en bandas o matrices
dispersas estructuradas, con esta forma de almacenamiento se reduce la cantidad de memoria
necesaria al ejecutar los cálculos.
La forma en la que se almacenan estas matrices para posteriormente implementar las rutinas de
cálculos de valores y vectores propios es la siguiente:
Para matrices simétricas o hermitianas en bandas con “kd” subdiagonales (diagonales que cuentan
con valores distintos de cero por encima de la diagonal principal) o superdiagonales (diagonales
que cuentan con valores distintos de cero por encima de la diagonal principal), solamente es
necesario utilizar la parte triangulas superior o inferior (esto se especifica como valor de entrada
de todas las rutinas y se denomina UPLO), el almacenamiento se realiza con la siguiente regla:

 Si UPLO = ‘U’ (parte superior)


𝐴𝑖𝑗 = 𝐴𝐵(𝑘𝑑+1+𝑖−𝑗,𝑗)
 Si UPLO = ‘L’ (parte inferior)
𝐴𝑖𝑗 = 𝐴𝐵(1+𝑖−𝑗,𝑗)

Por ejemplo, para la matriz A (5x5) con kd=2

COMENTARIOS
Me gustaría agregar que considero como más óptimo implementar las rutinas pertenecientes al
grupo de Generalized Eigenvalue and Singular Value Problems esto con el objetivo de no tener
que realizar niguna operación entre matrices que son necesarias para obtener el planteamiento
Standard Eigenvalue and Singular Value Problems. Por su parte, dependiendo de las condiciones
y características que presenten las matrices de rigidez y masa del sistema optar por la más
conveniente, que considerando que las matrices obtenidas serán simétricas con números reales
deberíamos si fuera necesario optar por hace pruebas de velocidad para determinado ejemplo con
las tres opciones que tenemos de rutinas.
Como es claro, todas las matrices serán almacenadas de la forma en que soliciten menor cantidad
de memoria, por lo que si se presentan matrices en bandas será necesario almacenar las matrices
de entrada como se describe en este documento. Esta modificación de las matrices se deberá
realizar antes para cuando sean utilizadas en la rutina ya se encuentren de la forma necesaria.

También podría gustarte