---
title: ?ptts2
description: "求解三对角方程AX=B，其中系数矩阵A由?pttrf分解而来。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_kml_16_0340.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_kml_16_0340.html
indexId: 5c347dc2c348c600f0657569d3f307b7bd418742bf940202cfdd790b3f23758774
---
# ?ptts2

求解三对角方程AX=B，其中系数矩阵A由?pttrf分解而来。

#### 接口定义

C Interface：

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

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

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

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

Fortran Interface：

SPTTS2(N, NRHS, D, E, B, LDB);

DPTTS2(N, NRHS, D, E, B, LDB);

CPTTS2(IUPLO, N, NRHS, D, E, B, LDB);

ZPTTS2(IUPLO, N, NRHS, D, E, B, LDB);


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| IUPLO（复数类型特有） | 整数型 | 1：A=U\*\*H\*D\*U 0：A=L\*D\*L\*\*H | 输入 |
| N | 整数型 | 矩阵A的维数，N ≥ 0。 | 输入 |
| NRHS | 整数型 | 矩阵B的列数，NRHS ≥ 0。 | 输入 |
| D | 在sptts2/cptts2中为单精度浮点型数组。 在dptts2/zptts2中为双精度浮点型数组。 | 三对角矩阵A的对角元素，维度为N。 | 输入 |
| E | 在sptts2中为单精度浮点型数组。 在dptts2中为双精度浮点型数组。 在cptts2中为单精度复数型数组。 在zptts2中为双精度复数型数组。 | 三对角矩阵A的次对角元素，维度为N\-1。 | 输入 |
| B | 在sptts2中为单精度浮点型数组。 在dptts2中为双精度浮点型数组。 在cptts2中为单精度复数型数组。 在zptts2中为双精度复数型数组。 | 输入时，为右端项矩阵，维度为(LDB, NRHS)。 输出时，为解X，维度为(LDB, NRHS)。 | 输入、输出 |
| LDB | 整数型 | 矩阵B的主维。 | 输入 |


#### 依赖

#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};
dptts2_(&n, &nrhs, d, e, b, &ldb);
/*
* Output:
*   b: 0.039697        -0.000760       0.161909        -0.080924
*/
```

Fortran Interface：

```
PARAMETER (n = 4)
PARAMETER (ldb = 4)
PARAMETER (nrhs = 1)
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 DPTTS2
CALL DPTTS2(n, nrhs, d, e, b, ldb);
*
* Output:
*  b: 0.039697        -0.000760       0.161909        -0.080924
```
