计算行列式可以通过多种方法,包括按行展开、高斯消元法、LU分解等。下面我将提供几种编程语言的实现方法。
1. 按行展开法(C语言)
```c
include include double determinant(double matrix, int n) { double det = 0.0; if (n == 1) { return matrix; } if (n == 2) { return matrix * matrix - matrix * matrix; } double submatrix = (double )malloc((n - 1) * sizeof(double *)); for (int i = 0; i < n - 1; i++) { submatrix[i] = (double *)malloc((n - 1) * sizeof(double)); } for (int i = 0; i < n; i++) { for (int j = 1; j < n; j++) { submatrix[i][j - 1] = matrix[i][j]; } } det = determinant(submatrix, n - 1); for (int i = 0; i < n; i++) { det *= matrix[i]; for (int j = 1; j < n; j++) { submatrix[i][j - 1] *= -matrix[j][i]; } } for (int i = 0; i < n - 1; i++) { det += submatrix[i]; } for (int i = 0; i < n - 1; i++) { free(submatrix[i]); } free(submatrix); return det; } int main() { double matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; double matrix_ptr = (double )malloc(3 * sizeof(double *)); for (int i = 0; i < 3; i++) { matrix_ptr[i] = matrix[i]; } double result = determinant(matrix_ptr, 3); printf("Determinant: %f\n", result); free(matrix_ptr); return 0; } ``` 2. 高斯消元法(C语言)