用C语言写一个随机生成任一矩阵求其秩用高斯消元法至少4阶
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 4 // 矩阵阶数
void printMatrix(int matrix[N][N]) { // 打印矩阵
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int rank(int matrix[N][N]) { // 计算矩阵的秩
int i, j, k, r = 0;
for (i = 0; i < N; i++) { // i表示列
for (j = r; j < N; j++) { // j表示行
if (matrix[j][i] != 0) { // 找到一个非零元素
if (j != r) { // 如果不在第r行,则交换行
for (k = i; k < N; k++) {
int temp = matrix[j][k];
matrix[j][k] = matrix[r][k];
matrix[r][k] = temp;
}
}
break;
}
}
if (j == N) // 如果第i列全是0,则跳过
continue;
for (j = r+1; j < N; j++) { // 将第i列下面的元素消为0
if (matrix[j][i] != 0) {
int m = matrix[j][i], n = matrix[r][i];
for (k = i; k < N; k++) {
matrix[j][k] = matrix[j][k] * n - matrix[r][k] * m;
}
}
}
r++;
}
return r;
}
int main() {
int matrix[N][N];
srand(time(NULL)); // 设置随机数种子
for (int i = 0; i < N; i++) { // 随机生成矩阵
for (int j = 0; j < N; j++) {
matrix[i][j] = rand() % 10;
}
}
printf("矩阵为:\n");
printMatrix(matrix);
printf("秩为:%d\n", rank(matrix));
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/fJzJ 著作权归作者所有。请勿转载和采集!