gpt4 book ai didi

在 C 中使用 lapack 计算矩阵的逆

转载 作者:太空狗 更新时间:2023-10-29 16:25:07 27 4
gpt4 key购买 nike

我希望能够使用 lapack 在 C/C++ 中计算一般 NxN 矩阵的逆。

我的理解是,在 lapack 中进行反转的方法是使用 dgetri 函数,但是,我无法弄清楚它的所有参数应该是什么。

这是我的代码:

void dgetri_(int* N, double* A, int* lda, int* IPIV, double* WORK, int* lwork, int* INFO);

int main(){

double M [9] = {
1,2,3,
4,5,6,
7,8,9
};

return 0;
}

如何使用 dgetri_ 完成它以获得 3x3 矩阵 M 的逆矩阵?

最佳答案

这是在 C/C++ 中使用 lapack 计算矩阵逆的工作代码:

#include <cstdio>

extern "C" {
// LU decomoposition of a general matrix
void dgetrf_(int* M, int *N, double* A, int* lda, int* IPIV, int* INFO);

// generate inverse of a matrix given its LU decomposition
void dgetri_(int* N, double* A, int* lda, int* IPIV, double* WORK, int* lwork, int* INFO);
}

void inverse(double* A, int N)
{
int *IPIV = new int[N];
int LWORK = N*N;
double *WORK = new double[LWORK];
int INFO;

dgetrf_(&N,&N,A,&N,IPIV,&INFO);
dgetri_(&N,A,&N,IPIV,WORK,&LWORK,&INFO);

delete[] IPIV;
delete[] WORK;
}

int main(){

double A [2*2] = {
1,2,
3,4
};

inverse(A, 2);

printf("%f %f\n", A[0], A[1]);
printf("%f %f\n", A[2], A[3]);

return 0;
}

关于在 C 中使用 lapack 计算矩阵的逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com