鲲鹏社区首页
EN
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

?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

字符型

  • 'U':存储矩阵A的上三角部分。
  • 'T':存储矩阵A的下三角部分。

输入

N

整数型

矩阵A的阶数,N ≥ 0。

输入

NRHS

整数型

矩阵B的列数,NRHS ≥ 0。

输入

AP

  • 在spptrs中为单精度浮点型数组。
  • 在dpptrs中为双精度浮点型数组。
  • 在cpptrs中为单精度复数型数组。
  • 在zpptrs中为双精度复数型数组。

压缩存储矩阵A的Cholesky分解得到的L和U。大小为N*(N+1)/2。

输入

B

  • 在spptrs中为单精度浮点型数组。
  • 在dpptrs中为双精度浮点型数组。
  • 在cpptrs中为单精度复数型数组。
  • 在zpptrs中为双精度复数型数组。

右端项矩阵,大小为LDB*NRHS。

  • 调用前:右端项矩阵B。
  • 调用后:解矩阵X。

输入、输出

LDB

整数型

矩阵B的主维,LDB ≥ max(1, N)。

输入

INFO

整数型

  • 等于0:成功退出。
  • 小于0:第-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
*/
Fortran Interface:
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