?tpsv
线性方程组求解,系数矩阵是压缩的三角矩阵。
即: 或 或 。b和x为包含n个元素的向量,A为n*n的单元或非单元按照三角展开的矩阵。
接口定义
C interface:
void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const float *Ap, float *X, const BLASINT incX);
void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const double *Ap, double *X, const BLASINT incX);
void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const void *Ap, void *X, const BLASINT incX);
void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const BLASINT N, const void *Ap, void *X, const BLASINT incX);
Fortran interface:
CALL STPSV(UPLO, TRANS, DIAG, N, AP, X, INCX)
CALL DTPSV(UPLO, TRANS, DIAG, N, AP, X, INCX)
CALL CTPSV(UPLO, TRANS, DIAG, N, AP, X, INCX)
CALL ZTPSV(UPLO, TRANS, DIAG, N, AP, X, INCX)
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
order |
枚举类型CBLAS_ORDER |
表示矩阵是行主序或列主序。 |
输入 |
Uplo |
枚举类型CBLAS_UPLO |
表示使用矩阵A存储展开方式上三角或下三角。
|
输入 |
TransA |
枚举类型CBLAS_TRANSPOSE |
矩阵A为常规矩阵,转置矩阵或共轭矩阵。
|
输入 |
Diag |
枚举类型CBLAS_DIAG |
表示A是否是单元三角阵。
|
输入 |
N |
整型数 |
表示矩阵A的阶数,要求N大于或等于零。 |
输入 |
Ap |
|
压缩的三角矩阵,矩阵规模至少是(N*(N+1)/2)。 |
输入 |
X |
|
向量X,向量规模至少是(1+(N-1)*abs(incX))。 获得方程解后更新输出。 |
输入/输出 |
incX |
整型数 |
表示X中向量增长步长,不能为零。 |
输入 |
依赖
#include "kblas.h"
示例
C interface:
int n = 4,incx = 1; float x[4] = {4.0, 3.0, 2.0, 1.0}; /** * | 1.0 1.0 1.0 3.0 | * A = | . 3.0 3.0 2.0 | * | . . 2.0 3.0 | * | . . . 1.0 | */ float ap[10] = {1.0, 1.0, 3.0, 1.0, 3.0, 2.0, 3.0, 2.0, 3.0, 1.0}; cblas_stpsv(CblasColMajor, CblasUpper, CblasTrans, CblasNonUnit, n, ap, x, incx); /** * Output x = |4.000000, -0.333333, -0.500000, -8.833333| */
Fortran interface:
INTEGER :: N=4, INCX=1 REAL(4) :: X(4), AP(10) DATA X/4.0, 3.0, 2.0, 1.0/ DATA AP/1.0, 1.0, 3.0, 1.0, 3.0, 2.0, 3.0, 2.0, 3.0, 1.0/ EXTERNAL STPSV CALL STPSV('U', 'T', 'N', N, AP, X, INCX) * Output X = |4.000000, -0.333333, -0.500000, -8.833333|