?gtsv
求解线性方程组A*X=B,其中系数矩阵A为一般三对角矩阵。
接口定义
C Interface:
void sgtsv(const int *N, const int *NRHS, float *DL, float *D, float *DU, float *B, const int *LDB, int *INFO);
void dgtsv(const int *N, const int *NRHS, double *DL, double *D, double *DU, double *B, const int *LDB, int *INFO);
void cgtsv(const int *N, const int *NRHS, float _Complex *DL, float _Complex *D, float _Complex *DU, float _Complex *B, const int *LDB, int *INFO);
void zgtsv(const int *N, const int *NRHS, double _Complex *DL, double _Complex *D, double _Complex *DU, double _Complex *B, const int *LDB, int *INFO);
Fortran Interface:
SGTSV(N, NRHS, DL, D, DU, B, LDB, INFO);
DGTSV(N, NRHS, DL, D, DU, B, LDB, INFO);
CGTSV(N, NRHS, DL, D, DU, B, LDB, INFO);
ZGTSV(N, NRHS, DL, D, DU, B, LDB, INFO);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
N |
整数型 |
矩阵A的维数,N≥0。 |
输入 |
NRHS |
整数型 |
矩阵B的列数,NRHS≥0。 |
输入 |
DL |
|
输入时,为三对角矩阵A的次对角元素,维度为N-1。 输出时,为U的第二超对角元素。 |
输入、输出 |
D |
|
输入时,为三对角矩阵A的对角元素,维度为N。 输出时,为U的对角元素。 |
输入、输出 |
DU |
|
输入时,为三对角矩阵A的超对角元素,维度为N-1。 输出时,为U的第一超对角元素。 |
输入、输出 |
B |
|
右端项矩阵,维度为(LDB, NRHS)。 |
输入、输出 |
LDB |
整数型 |
矩阵B的主维。 |
输入 |
INFO |
整数型 |
|
输出 |
依赖
include "klapack.h"
示例
C Interface:
const int n = 4; const int ldb = n; const int nrhs = 1; double dl[] = {0.923077, 0.153846, 0.153846}; double d[] = {0.521739, 0.043478, 0.304348, 0.086957}; double du[] = {0.924528, 0.150943, 0.566038}; double b[] = {0.986301, 0.397260, 0.958904, 0.520548}; int info = 0; dgtsv_(&n, &nrhs, dl, d, du, b, &ldb, &info); if (info != 0) { printf("ERROR, info = %d\n", info); } /* * Output: * d: 0.923077 0.899954 0.318932 -0.186088 * dl: 0.150943 0.000000 0.153846 * du: 0.043478 -0.085316 0.566038 * b: -0.239541 1.201996 3.750506 -0.649209 */
Fortran Interface:
PARAMETER (n = 4) PARAMETER (ldb = 4) PARAMETER (nrhs = 1) INTEGER :: info = 0 REAL(8) :: d(n) REAL(8) :: dl(n-1) REAL(8) :: du(n-1) REAL(8) :: b(ldb, nrhs) DATA d / 0.521739, 0.043478, 0.304348, 0.086957 / DATA dl / 0.923077, 0.153846, 0.153846 / DATA du / 0.924528, 0.150943, 0.566038 / DATA b / 0.986301, 0.397260, 0.958904, 0.520548 / EXTERNAL DGTSV CALL DGTSV(n, nrhs, dl, d, du, b, ldb, info); * * Output: * d: 0.923077 0.899954 0.318932 -0.186088 * dl: 0.150943 0.000000 0.153846 * du: 0.043478 -0.085316 0.566038 * b: -0.239541 1.201996 3.750506 -0.649209