计算逆矩阵的C语言代码
时间: 2023-08-18 15:17:09 浏览: 102
好的,以下是一个计算逆矩阵的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义矩阵大小
#define N 3
// 计算伴随矩阵
void adjoint(double A[N][N], double adj[N][N]) {
int i, j, k, h;
double temp[N][N];
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
h = 0;
k = 0;
while (h < N - 1) {
if (k == i) {
k++;
}
temp[h][j] = A[k][j];
h++;
k++;
}
}
for (k = 0; k < N; k++) {
h = 0;
for (j = 0; j < N - 1; j++) {
if (h == i) {
h++;
}
adj[k][j] = temp[k][h];
h++;
}
}
}
}
// 计算行列式
double determinant(double A[N][N], int n) {
int i, j, k;
double det = 1, ratio;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (j > i) {
ratio = A[j][i] / A[i][i];
for (k = 0; k < n; k++) {
A[j][k] -= ratio * A[i][k];
}
}
}
}
for (i = 0; i < n; i++) {
det *= A[i][i];
}
return det;
}
// 计算逆矩阵
void inverse(double A[N][N], double inverse[N][N]) {
int i, j;
double det = determinant(A, N);
double adj[N][N];
adjoint(A, adj);
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
inverse[i][j] = adj[i][j] / det;
}
}
}
// 主函数
int main() {
double A[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
double inverse[N][N];
inverse(A, inverse);
printf("The inverse matrix is:\n");
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%f ", inverse[i][j]);
}
printf("\n");
}
return 0;
}
```
这个代码使用了高斯消元法计算行列式,并使用伴随矩阵求解逆矩阵。你可以根据自己的需求进行修改。
阅读全文