阅读量:0
在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的矩阵,如果需要处理更大的矩阵,则需要进行相应的扩展。