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

?tbsv

线性方程组求解,系数矩阵为三角带状矩阵。

即:。b和x为包含n个元素的向量,A为n*n的单元或非单元、上三角或下三角的带状矩阵。

接口定义

C interface:

void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const blasint N, const blasint K, const float *A, const blasint lda, float *X, const blasint incX);

void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const blasint N, const blasint K, const double *A, const blasint lda, double *X, const blasint incX);

void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const blasint N, const blasint K, const void *A, const blasint lda, void *X, const blasint incX);

void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLOUplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const blasint N, const blasint K, const void* A, const blasint lda, void *X, const blasint incX);

Fortran interface:

CALL STBSV(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)

CALL DTBSV(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)

CALL CTBSV(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)

CALL ZTBSV(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)

参数

参数名

类型

描述

输入/输出

order

枚举类型CBLAS_ORDER

表示矩阵是行主序或列主序。

输入

Uplo

枚举类型CBLAS_UPLO

表示矩阵A是上三角或下三角矩阵。

  • 如果Uplo=CblasUpper,则A是上三角矩阵。
  • 如果Uplo=CblasLower,则A是下三角矩阵。

输入

TransA

枚举类型CBLAS_TRANSPOSE

矩阵A为常规矩阵,转置矩阵或共轭矩阵。

  • 如果trans=CblasNoTrans,则
  • 如果trans=CblasTrans,则
  • 如果trans=CblasConjTrans,则

输入

Diag

枚举类型CBLAS_DIAG

表示A是否是单元三角阵。

  • 如果Diag=CblasUnit,则A是单元三角矩阵。
  • 如果Diag=CblasNonUnit,则A不是单元三角矩阵。

输入

N

整型数

表示矩阵A的阶数,要求N大于或等于零。

输入

K

整型数

表示矩阵A的超对角阶数,要求K大于或等于零。

输入

A

  • 在stbsv中是单精度浮点类型。
  • 在dtbsv中是双精度浮点类型。
  • 在ctbsv中是单精度复数类型。
  • 在ztbsv中是双精度复数类型。

三角带状矩阵A(lda, n)。

输入

lda

整型数

矩阵A中每列存储的地址距离,要求lda大于或等于(k+1)。

输入

X

  • 在stbsv中是单精度浮点类型。
  • 在dtbsv中是双精度浮点类型。
  • 在ctbsv中是单精度复数类型。
  • 在ztbsv中是双精度复数类型。

向量X,向量规模至少是(1+(N-1)*abs(incX))。

输入/输出

incX

整型数

表示X中向量增长步长,不能为零。

输入

依赖

#include "kblas.h"

示例

C interface:

    int n = 7, k = 3, lda = 5, incx = 1; 
    /** 
     *        |  .    .    .   2.0  2.0  3.0 1.0 | 
     *        |  .    .   2.0  1.0  2.0  4.0 0.0 | 
     *        |  .   2.0  2.0  3.0  4.0  2.0 1.0 | 
     *  A  =  | 1.0  3.0  3.0  3.0  3.0  3.0 3.0 | 
     *        |  .    .    .    .    .    .   .  | 
     */ 
    float a[35] = {0, 0, 0, 1.0, 0, 
                   0, 0, 2.0, 3.0, 0, 
                   0, 2.0, 2.0, 3.0, 0, 
                   2.0, 1.0, 3.0, 3.0, 0, 
                   2.0, 2.0, 4.0, 3.0, 0, 
                   3.0, 4.0, 2.0, 3.0, 0, 
                   1.0, 0.0, 1.0, 3.0, 0}; 
    float x[7] = {12.0, 12.0, 20.0, 26.0, 9.0, 13.0, 12.0}; 
 
    cblas_stbsv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit, n, k, a, lda, x, incx); 
    /** 
     * Output x = |2.000000 2.000000 1.000000 2.000000 1.000000 3.000000 4.000000| 
     */

Fortran interface:

      PROGRAM TBMV 
      INTEGER :: N=7, K=3 
      INTEGER :: LDA=5, INCX=1 
      REAL(4) :: A(35), X(7) 
      DATA A/0, 0, 0, 1.0, 0, 
     $       0, 0, 2.0, 3.0, 0, 
     $       0, 2.0, 2.0, 3.0, 0, 
     $       2.0, 1.0, 3.0, 3.0, 0, 
     $       2.0, 2.0, 4.0, 3.0, 0, 
     $       3.0, 4.0, 2.0, 3.0, 0, 
     $       1.0, 0.0, 1.0, 3.0, 0/ 
      DATA X/12.0, 12.0, 20.0, 26.0, 9.0, 13.0, 12.0/ 
      EXTERNAL STBMV 
      CALL STBSV('U', 'N', 'N', N, K, A, LDA, X, INCX) 
      WRITE(*,*) X 
      END 
 
*     Output X = |2.00000000, 2.0000000, 1.00000000, 2.00000000, 1.00000000, 3.00000000, 4.00000000|
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词