---
title: ?ptsv
description: "求解线性方程组，其中系数矩阵A为实（共轭）对称正定三对角矩阵。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0737.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/kunpengaccel_kml_0737.html
indexId: b0e4e80c3990f0e95477c8306a6a8d95c7b104fb516aa44d1e849f73c45dfe3d61
---
# ?ptsv

求解线性方程组，其中系数矩阵A为实（共轭）对称正定三对角矩阵。

#### 接口定义

C Interface：

void sptsv_(const int *N, const int *NRHS, float *D, float *E, float *B, const int *LDB, int *INFO);

void dptsv_(const int *N, const int *NRHS, double *D, double *E, double *B, const int *LDB, int *INFO);

void cptsv_(const int *N, const int *NRHS, float *D, float _Complex *E, float _Complex *B, const int *LDB, int *INFO);

void zptsv_(const int *N, const int *NRHS, double *D, double _Complex *E, double _Complex *B, const int *LDB, int *INFO);

Fortran Interface：

SPTSV(N, NRHS, D, E, B, LDB, INFO);

DPTSV(N, NRHS, D, E, B, LDB, INFO);

CPTSV(N, NRHS, D, E, B, LDB, INFO);

ZPTSV(N, NRHS, D, E, B, LDB, INFO);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| N | 整数型 | 矩阵A的维数，N≥0。 | 输入 |
| NRHS | 整数型 | 矩阵B的列数，NRHS≥0。 | 输入 |
| D | 在sptsv/cptsv中为单精度浮点型数组。 在dptsv/zptsv中为双精度浮点型数组。 | 输入时，为三对角矩阵A的对角元素，维度为N。 输出时，为分解后的对角元素D。 | 输入、输出 |
| E | 在sptsv中为单精度浮点型数组。 在dptsv中为双精度浮点型数组。 在cptsv中为单精度复数型数组。 在zptsv中为双精度复数型数组。 | 输入时，为三对角矩阵A的次对角元素，维度为N\-1。 输出时，为分解后矩阵A的次对角元素。 | 输入、输出 |
| B | 在sptsv中为单精度浮点型数组。 在dptsv中为双精度浮点型数组。 在cptsv中为单精度复数型数组。 在zptsv中为双精度复数型数组。 | 输入时，为右端项矩阵，维度为(LDB, NRHS)。 输出时，为结果X，维度为(LDB, NRHS)。 | 输入、输出 |
| LDB | 整数型 | 矩阵B的主维。 | 输入 |
| INFO | 整数型 | 等于0：成功退出。 小于0：第\-info个参数值不合法。 大于0：表示第INFO阶顺序主子式不正定。 | 输出 |


#### 依赖

#include "klapack.h"


#### 示例

C Interface：

```
const int n = 4;
    const int ldb = n;
    const int nrhs = 1;
    double d[] = {7.608696,7.739130, 7.347826,4.652174};
    double e[] = {0.352941,0.000000,0.823529};
    double b[] = {0.300000,0.100000,0.700000,0.200000};
    int info = 0;
    
    dptsv_(&n, &nrhs, d, e, b, &ldb, &info);
/* 
* Output: 
*   d: 7.608696        7.722759        7.347826        4.559874
*   e: 0.046387        0.000000        0.112078
*   b: 0.038912        0.011147        0.092279        0.026655
*/
```

Fortran Interface：

```
PARAMETER (n = 4)
PARAMETER (ldb = 4)
PARAMETER (nrhs = 1)
INTEGER :: info = 0
REAL(8) :: d(n)
REAL(8) :: e(n-1)
REAL(8) :: b(ldb, nrhs)
DATA d / 7.608696,7.739130, 7.347826,4.652174 /
DATA e / 0.352941,0.000000,0.823529 /
DATA b / 0.300000,0.100000,0.700000,0.200000 /
EXTERNAL DPTSV
CALL DPTSV(n, nrhs, d, e, b, ldb, info);
*
* Output:
*   d: 7.608696        7.722759        7.347826        4.559874
*   e: 0.046387        0.000000        0.112078
*   b: 0.038912        0.011147        0.092279        0.026655
```
