浅谈高斯-约旦消元法
适用场景#
高斯-约旦消元用于解线性方程组,其参考了数学中解方程组的过程。
具体过程#
顺次枚举 作为主元。对于未知数 ,将当前系数最大的方程移到第 的位置,然后将 个方程(除了第 个方程)的 的系数都变为 ,这个过程可以通过加减消元来解决。注意我们只用每个方程中 的系数,因为 的系数已经被处理完了。最后方程组会形成形如 。对于每个 求出其解即可。
如果最后存在某一行系数都为 ,就说明并不是唯一解。根据 是否为 判断是无解还是无穷解。
代码#
#include<cmath>
#include<cstdio>
#include<algorithm>
#define N 105
#define db double
using namespace std;
int n;
db a[N][N];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;++i)
for (int j=1;j<=n+1;++j)
scanf("%lf",&a[i][j]);
for (int i=1;i<=n;++i)
{
int mx=i;
for (int j=i+1;j<=n;++j)
if (fabs(a[j][i])>fabs(a[mx][i])) mx=j;
for (int j=1;j<=n+1;++j)
swap(a[i][j],a[mx][j]);
if (!a[i][i])
{
printf("No Solution\n");
return 0;
}
for (int j=1;j<=n;++j)
if (i!=j)
{
db t=a[j][i]/a[i][i];
for (int k=i;k<=n+1;++k)
a[j][k]-=a[i][k]*t;
}
}
for (int i=1;i<=n;++i)
printf("%.2lf\n",a[i][n+1]/a[i][i]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-11-10 7367. 【2021.11.10NOIP提高组联考】可笑的 wenhao801
2021-11-10 7353. 【2021.11.06NOIP提高A组模拟】qaq (qaq)