在C語言中,可以使用高斯-約當消元法(Gauss-Jordan elimination)來實現矩陣求逆算法。以下是一個簡單的實現示例:
#include <stdio.h>
#define N 3
void printMatrix(float matrix[N][N*2]) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < 2*N; j++) {
printf("%f ", matrix[i][j]);
}
printf("\n");
}
}
void gaussJordan(float matrix[N][N*2]) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == j) {
matrix[i][j+N] = 1;
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i != j) {
float ratio = matrix[j][i] / matrix[i][i];
for (int k = 0; k < 2*N; k++) {
matrix[j][k] -= ratio * matrix[i][k];
}
}
}
}
for (int i = 0; i < N; i++) {
float divisor = matrix[i][i];
for (int j = 0; j < 2*N; j++) {
matrix[i][j] /= divisor;
}
}
}
int main() {
float matrix[N][N*2] = {
{2, 3, -1, 1, 0, 0},
{1, 5, -2, 0, 1, 0},
{4, 2, 1, 0, 0, 1}
};
printf("Original Matrix:\n");
printMatrix(matrix);
gaussJordan(matrix);
printf("\nInverse Matrix:\n");
printMatrix(matrix);
return 0;
}
在這個示例中,我們首先定義了一個3x3的矩陣,然后調用gaussJordan
函數對矩陣進行求逆操作。最后打印出原始矩陣和求逆后的矩陣。這個示例只適用于3x3的矩陣,如果需要處理更大的矩陣,則需要進行相應的擴展。