?pptrs
求解三对角方程A*X=B或A**T *X=B或A**H *X=B。其中系数矩阵A由?gttrf分解而来。
接口定义
C Interface:
void spptrs_(const char *UPLO, const int *N, const int *NRHS, float *AP, float *B, const int *LDB, int *INFO);
void dpptrs_(const char *UPLO, const int *N, const int *NRHS, double *AP, double *B, const int *LDB, int *INFO);
void cpptrs_(const char *UPLO, const int *N, const int *NRHS, float _Complex *AP, int *IPIV, float _Complex *B, const int *LDB, int *INFO);
void zpptrs_(const char *UPLO, const int *N, const int *NRHS, double _Complex *AP, int *IPIV, double _Complex *B, const int *LDB, int *INFO);
Fortran Interface:
SPPTRS(UPLO, N, NRHS, AP, B, LDB, INFO);
DPPTRS(UPLO, N, NRHS, AP, B, LDB, INFO);
CPPTRS(UPLO, N, NRHS, AP, B, LDB, INFO);
ZPPTRS(UPLO, N, NRHS, AP, B, LDB, INFO);
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
UPLO |
字符型 |
|
输入 |
N |
整数型 |
矩阵A的阶数,N ≥ 0。 |
输入 |
NRHS |
整数型 |
矩阵B的列数,NRHS ≥ 0。 |
输入 |
AP |
|
压缩存储矩阵A的Cholesky分解得到的L和U。大小为N*(N+1)/2。 |
输入 |
B |
|
右端项矩阵,大小为LDB*NRHS。
|
输入、输出 |
LDB |
整数型 |
矩阵B的主维,LDB ≥ max(1, N)。 |
输入 |
INFO |
整数型 |
|
输出 |
依赖
include "klapack.h"
示例
C Interface:
const char uplo = 'U'; const int n = 4; const int nrhs = 1; const int ldb = n; double ap[] = {231.8009,33.9545,162.2902,9.4143,6.6684,100.322,11.1156,53.2033,71.5384,106.5638}; int info = 0; double b[]={1.0, 2.0, 3.0, 4.0}; dpptrf_(&uplo, &n, ap, &info); dpptrs_(&uplo, &n, &nrhs, ap, b, &ldb, &info); if (info != 0) { printf("ERROR, info = %d\n", info); } /* * Output: * ap: 0.002361 0.000904 0.006432 0.032521 */
CHARACTER::uplo = "U" PARAMETER (n = 4) PARAMETER (nrhs = 4) PARAMETER (ldb = n) INTEGER :: info = 0 REAL(8) :: ap(n*(n+1)/2) DATA ap / 231.8009,33.9545,162.2902,9.4143,6.6684,100.322,11.1156,53.2033,71.5384,106.5638 / DATA b / 1.0, 2.0, 3.0, 4.0 / EXTERNAL DPPTRF,DPPTRS CALL DPPTRF(uplo, n, ap, info); CALL DPPTRS(uplo, n, nrhs, ap, b, ldb, info); * * Output: * ap: 0.002361 0.000904 0.006432 0.032521