c++中怎么求一个矩阵的逆矩阵
时间: 2023-09-24 07:13:40 浏览: 43
在C语言中,可以使用第三方库(如LAPACK)来求解矩阵的逆矩阵。下面是一个使用LAPACK库的示例代码:
```c
#include <stdio.h>
#include <lapacke.h>
int main() {
double A[4] = {1, 2, 3, 4}; // 2x2矩阵
double A_inv[4];
int n = 2, lda = 2, ipiv[2], info;
// 求解矩阵的逆矩阵
info = LAPACKE_dgetrf(LAPACK_ROW_MAJOR, n, n, A, lda, ipiv);
if (info == 0) {
info = LAPACKE_dgetri(LAPACK_ROW_MAJOR, n, A, lda, ipiv, A_inv, lda);
if (info == 0) {
printf("The inverse matrix is:\n");
printf("%.2f %.2f\n%.2f %.2f\n", A_inv[0], A_inv[2], A_inv[1], A_inv[3]);
} else {
printf("Failed to compute inverse matrix (dgetri), info = %d\n", info);
}
} else {
printf("Failed to factorize matrix (dgetrf), info = %d\n", info);
}
return 0;
}
```
这个示例代码使用了LAPACKE库中的 `LAPACKE_dgetrf` 和 `LAPACKE_dgetri` 函数分别进行矩阵的 LU 分解和求逆操作。需要注意的是,这个示例代码中矩阵的存储方式是按行存储的,如果你的矩阵是按列存储的,需要将 `LAPACK_ROW_MAJOR` 改为 `LAPACK_COL_MAJOR`。同时,为了方便,这里的矩阵大小和元素值都是硬编码的,实际使用时需要根据自己的需求进行修改。