高斯消元
高斯消元,其实初中老师就讲过
有加减消元和代入消元两种
这里用的是用加减消元把矩阵消成一个单位矩阵
矩阵
这里的矩阵就是把系数写成一个矩阵,并把常数项扔到等式右边的一个
如图中的第一行,他的式子就为
消元
步骤大致是这样的(可以对照上图看):
-
每列选一个数(这里选最大的并要求非 0),把他所在的行移到第 1 行去
-
等式两边同时除以这个数,使这个数变为 1
-
用这行去消其他行,把其他行的这一列的数全部变为 0
哪里没讲明白请在评论区留言
代码
#include <bits/stdc++.h>
using namespace std;
const int N=55;
int n;
long double a[N][N],eps=1e-7;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
int maxn=i;
for(int j=i+1;j<=n;j++){
if(fabs(a[j][i])>fabs(a[maxn][i]))maxn=j;
}
for(int j=1;j<=n+1;j++){
swap(a[maxn][j],a[i][j]);
}
if(fabs(a[i][i])<eps){
cout<<"No Solution";
return 0;
}
for(int j=n+1;j>=1;j--){
a[i][j]/=a[i][i];
}
for(int j=1;j<=n;j++){
if(j!=i){
double temp=a[j][i];
for(int k=1;k<=n+1;k++){
a[j][k]-=temp*a[i][k];
}
}
}
}
for(int i=1;i<=n;i++)printf("%.2llf\n",a[i][n+1]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】