我正在尝试解决一些线性方程(对称、三对角和正)。我必须使用拉帕克。我的代码如下:
#include <lapacke.h>
#include <stdio.h>
void print_mtrx(double * mtrx, int n, int m)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
printf("%f ", mtrx[i*m+j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
double matrix[5*5] = {
2, 0, 0, 0, 0,
0, 2, 0, 0, 0,
0, 0, 2, 0, 0,
0, 0, 0, 2, 0,
0, 0, 0, 0, 2
};
double rozw[5] = {1,2,3,4,5};
double matrix2[5*5] = {
7, 0, 0, 0, 0,
0, 7, 0, 0, 0,
0, 0, 7, 0, 0,
0, 0, 0, 7, 0,
0, 0, 0, 0, 7
};
LAPACKE_dptsv(LAPACK_COL_MAJOR, 5, 5, matrix, matrix2, rozw, 5);
print_mtrx(matrix, 5, 5);
print_mtrx(matrix2, 5, 5);
print_mtrx(rozw, 5, 1);
}
LAPACKE 的函数似乎什么都不做,没有任何错误。主要问题是,我不知道函数参数代表什么。我已经搜索了很长时间,但没有真正的文档。这是我设法找到或猜测的:
- int matrix_order -- LAPACK_COL_MAJOR 或 LAPACK_ROW_MAJOR,矩阵在内存中如何表示
- lapack_int n -- 矩阵的大小(即列数)
- lapack_int nrhs -- 不确定,可能是向量 b 的大小
- double* d -- 方程矩阵
- double* e - 不知道。
- double* b -- d 中方程的解向量
- lapack_int ldb -- b 的前导方向(因此?它与 nrhs 不同,nrhs 本身与 n 相同?)
我怎样才能找到这些论点的真正含义?我怎样才能使我的代码工作?