int n;
double a[N][N]; // 增广矩阵/*
1 2 -4 0
0 0 3 3
0 0 2 2
*/intGauss(int n, int m)// n行m列的增广矩阵{
int r = 0; // 增广矩阵的秩for (int j = 1; j <= m - 1; ++j) // 枚举系数矩阵的列
{
int mx = r + 1; // 当前所在行号for (int i = mx; i <= n; ++i) // 枚举行来找到该列绝对值最大非0系数
{
if (fabs(a[i][j]) > fabs(a[mx][j]))
mx = i;
}
if (fabs(a[mx][j]) < eps) // 对角线上主元素为0,没有唯一解,矩阵的秩不用加1continue;
for (int i = 1; i <= m; ++i) // 将这最大系数这一行和对角线那一行进行交换swap(a[r + 1][i], a[mx][i]);
for (int i = m; i >= j; --i) // 将这一行的主元素系数变为1
a[r + 1][i] /= a[r + 1][j];
for (int i = 1; i <= n; ++i) // 消去主元所在列的其他行的主元
{
if (i != r + 1)
{
double t = a[i][j] / a[r + 1][j];
for (int k = 1; k <= m; ++k)
a[i][k] -= t * a[r + 1][k];
}
}
r++;
}
if (r < m - 1) // 矩阵的秩小于未知量的个数(m - 1)
{
for (int i = r + 1; i <= n; ++i)
{
if (fabs(a[i][m]) > eps)
return0; // 无解
}
return2; // 有无穷多组解
}
return1;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了