为方便线性代数运算,现将LAPACK中的函数介绍如下:
1.函数的命名规则:
  LAPACK里的每个函数名已经说明了该函数的使用规则。所有函数都是以XYYZZZ的形式命名,对于某些函数,没有第六个字符,只是XYYZZ的形式。
    第一个字母X代表以下的数据类型:
S
REAL,单精度实数
D
DOUBLE PRECISION,双精度实数
C
COMPLEX,单精度复数
Z
COMPLEX*16 或 DOUBLE COMPLEX
    注:
    在新版LAPACK中含有使用重复迭代法的函数DSGESV和ZCDESV。
    头2个字母表示使用的精度:
DS
输入数据是double双精度,算法使用单精度
ZC
输入数据是complex*16,算法使用complex单精度复数
    接下面两个字母YY代表数组的类型。
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,(复数)压缩储存的酉矩阵
    最后三个字母ZZZ代表计算方法。比如,SGEBRD是一个单精度函数,用于把一个实数一般阵压缩为双对角阵(a bidiagonal reduction,即BRD)。
2.函数讲解
2.1  dgesv_()函数    用来求解对称矩阵问题,否则真的要出错!
int dgesv_(
integer *n,
integer *nrhs,
doublereal *a,
integer *lda,
integer *ipiv,
doublereal *b,
integer *ldb,
integer *info
);
从名字的意义上可以看出是用来解决双精度一般型的线性方程(组)的问题。
DGESV是用来求解实数的线性方程组AX=B的。A是N×N型矩阵,X和B是N×NRHS型矩阵。
    参数介绍  :
    N      (input) INTEGER 
            . 线性方程组的个数,例如A矩阵的行数。N >= 0. 
    NRHS    (input) INTEGER 
            右边矩阵的尺寸, 例如:B矩阵的列数.  NRHS >= 0. 
    A      (input/output) 双精度数组, 尺寸为LDA×N。 
            输入时为矩阵A的系数。 
            输出时, L和U是来自 A = P*L*U的因式分解;L对角线的元素不被存储。. 
    LDA    (input) INTEGER 
            数组A的主尺寸  LDA >= max(1,N). 
    IPIV    (output) INTEGER数组, 尺寸是N维。 
            The pivot indices that define the permutation matrix P; 
            row i of the matrix was interchanged with row IPIV(i). 
    B      (input/output) 双精度数组, 尺寸为N×NRHS 。
            输入时, 输入的是N×NRHS的B数组。 
            输出时, 如果 INFO = 0, 输出N×NRHS为数组,即为方程组的解。 
    LDB    (input) INTEGER 
            B数组的主尺寸。 LDB >= max(1,N). 
    INFO    (output) INTEGER 
            = 0:  成功退出。 
            < 0:  如果 INFO = -i, 第i各自变量是一个不可接受的数值。 
            > 0:  如果INFO = i, U(i,i) 为0。  因式分解已经完成,但是因式U是一个单            数,所以是不能够给出答案的。 
与之对应的单精度方式为:sgesv_()方程,只是把双精度的化为单精度就可以,另外一个就是zgesv _()方程,它解的是复数形式。
2.2 dgeev_()
对于非对称矩阵特征向量密集复杂的问题应用此函数,此函数的工能是求特征值。
d表示double。
ge表示general,说明是普通矩阵,按照列主序存储。
ev表示eigenvector(猜测),表达的是函数的功能。
int dgeev_(
char *jobvl,
char *jobvr,
integer *n,
doublereal *a,
integer *lda,
doublereal *wr,
doublereal *wi,
doublereal *vl,
integer *ldvl,
doublereal *vr,
integer *ldvr,
doublereal *work,
integer *lwork,
integer *info
);
ZGEEV是用来求解N×N的非对称矩阵A,特征向量,或左面的特征向量或右边的特征向量是不对称的。
矩阵A的有特征向量满足:
A*V(j)= λ(j)*V(j);    λ(j)是A的特征向量。
矩阵A的左特征向量满足:
u(j)**H * A = λ(j) * u(j)**H ;u(j)**H 表示的意思是u(j)的共轭转置。
参数介绍: 
    JOBVL  (input) CHARACTER*1 
            = 'N': A的左特征向量没有被计算; 
            = 'V':A的左特征向量被计算了。
    JOBVR  (input) CHARACTER*1 
            = 'N': A的右特征向量没有被计算; 
            = 'V':A的右特征向量被计算了。
    N      (input) INTEGER 
            A矩阵的维数. N >= 0. 
    A      (input/output) DOUBLE PRECISION数组, 尺寸是LDA×N。 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。