0 写在前面
关于 LU 分解的背景知识介绍,参见:GSL 系列 6 — 线性代数 1 — 背景知识 1 (LU 分解) 节,本篇只说明相关函数
1 LU 分解相关对象和函数
1.1 转置矩阵对象
转置矩阵对象存储着一列索引。第 j j j 个数为 k k k ,表示转置矩阵第 j j j 列是相应单位矩阵的第 k k k 列,定义如下:
// gsl_permutation.h
struct gsl_permutation_struct
{
size_t size;
size_t *data;
};
typedef struct gsl_permutation_struct gsl_permutation;
1.2 LU 分解函数
将矩阵 A
进行 LU 分解,然后得到转置矩阵 p
,LU
矩阵储存在 A
中,signum
为 1 或 -1,代表交换的次数,奇数次为 -1,偶数次为 1
因为下三角(梯形)矩阵对角线为 1,不储存,A
刚好可以方向 LU
// gsl_linalg.h
int gsl_linalg_LU_decomp(gsl_matrix * A, gsl_permutation * p, int *signum