请用c语言写出一个求3*3矩阵的逆的代码
时间: 2024-04-30 08:24:31 浏览: 78
以下是使用高斯-约旦消元法求3x3矩阵逆的C语言代码示例:
```c
#include <stdio.h>
void print_matrix(float matrix[3][3]) {
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
printf("%.2f\t", matrix[i][j]);
}
printf("\n");
}
}
void inverse_matrix(float matrix[3][3]) {
float identity_matrix[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
float temp;
int pivot;
// Perform row operations to get the identity matrix on the left
for(int i=0; i<3; i++) {
// Find pivot element
pivot = i;
for(int j=i+1; j<3; j++) {
if(matrix[j][i] > matrix[pivot][i]) {
pivot = j;
}
}
// Swap rows
if(pivot != i) {
for(int k=0; k<3; k++) {
temp = matrix[i][k];
matrix[i][k] = matrix[pivot][k];
matrix[pivot][k] = temp;
temp = identity_matrix[i][k];
identity_matrix[i][k] = identity_matrix[pivot][k];
identity_matrix[pivot][k] = temp;
}
}
// Divide pivot row by pivot element
temp = matrix[i][i];
for(int k=0; k<3; k++) {
matrix[i][k] /= temp;
identity_matrix[i][k] /= temp;
}
// Eliminate other rows
for(int j=0; j<3; j++) {
if(j != i) {
temp = matrix[j][i];
for(int k=0; k<3; k++) {
matrix[j][k] -= temp * matrix[i][k];
identity_matrix[j][k] -= temp * identity_matrix[i][k];
}
}
}
}
// Print inverse matrix
printf("Inverse Matrix:\n");
print_matrix(identity_matrix);
}
int main() {
float matrix[3][3] = {{1, 2, 3}, {0, 1, 4}, {5, 6, 0}};
printf("Original Matrix:\n");
print_matrix(matrix);
inverse_matrix(matrix);
return 0;
}
```
这个程序可以对一个3x3的矩阵进行逆矩阵的计算,并输出结果。你可以将矩阵的值修改为你需要计算的矩阵。
阅读全文