我需要一个对矩阵求逆的c语言代码
时间: 2024-05-10 14:17:41 浏览: 7
以下是一个简单的矩阵求逆的C语言代码,使用了高斯-约旦消元法:
```c
#include <stdio.h>
#define N 3
void print_matrix(float mat[N][N*2]) {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N*2; j++) {
printf("%f ", mat[i][j]);
}
printf("\n");
}
}
void swap_row(float mat[N][N*2], int i, int j) {
int k;
float temp;
for (k = 0; k < N*2; k++) {
temp = mat[i][k];
mat[i][k] = mat[j][k];
mat[j][k] = temp;
}
}
void forward_elimination(float mat[N][N*2]) {
int i, j, k;
float pivot;
for (i = 0; i < N; i++) {
if (mat[i][i] == 0) {
for (j = i+1; j < N; j++) {
if (mat[j][i] != 0) {
swap_row(mat, i, j);
break;
}
}
}
pivot = mat[i][i];
for (j = i+1; j < N; j++) {
float factor = mat[j][i] / pivot;
for (k = i; k < N*2; k++) {
mat[j][k] -= factor * mat[i][k];
}
}
}
}
void backward_substitution(float mat[N][N*2], float inv[N][N]) {
int i, j, k;
float pivot, temp;
for (i = N-1; i >= 0; i--) {
pivot = mat[i][i];
for (j = i-1; j >= 0; j--) {
temp = mat[j][i];
for (k = i; k < N*2; k++) {
mat[j][k] -= (temp / pivot) * mat[i][k];
}
}
for (j = N; j < N*2; j++) {
mat[i][j] /= pivot;
}
}
for (i = 0; i < N; i++) {
for (j = N; j < N*2; j++) {
inv[i][j-N] = mat[i][j];
}
}
}
void inverse(float mat[N][N], float inv[N][N]) {
int i, j;
float temp[N][N*2];
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
temp[i][j] = mat[i][j];
temp[i][j+N] = (i == j) ? 1 : 0;
}
}
forward_elimination(temp);
backward_substitution(temp, inv);
}
int main() {
float mat[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
float inv[N][N];
inverse(mat, inv);
print_matrix(inv);
return 0;
}
```
在这个代码中,我们首先将原矩阵和单位矩阵拼接成一个增广矩阵,然后使用高斯-约旦消元法将增广矩阵化为上三角矩阵,最后通过回代求解出逆矩阵。在实际使用时,我们可以将N定义为需要求逆的矩阵的维数。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)