首页 > 代码库 > 【模板】高斯消元
【模板】高斯消元
Gauss消元,我在线代书上学会的……
大概就是每次把每行第一个元素消掉,直到成为上三角矩阵为止。
此时从最后一个元素反代回去,就可以求出线性方程组的解。
#include<bits/stdc++.h> #define N 205 using namespace std; const double eps=1e-8; int n; double a[N][N],del; bool gauss(){ for(int i=1;i<=n;i++){ int k=i; for(int j=i+1;j<=n;j++)if(fabs(a[j][i])>fabs(a[k][i]))k=j; if(fabs(del=a[k][i])<eps)return 0; for(int j=i;j<=n+1;j++)swap(a[i][j],a[k][j]); for(int j=i;j<=n+1;j++)a[i][j]/=del; for(k=1;k<=n;k++)if(k!=i){ del=a[k][i]; for(int j=i;j<=n+1;j++)a[k][j]-=a[i][j]*del; } } return 1; } 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]); bool flag=gauss(); if(!flag)puts("No Solution"); else for(int i=1;i<=n;i++)printf("%.2lf\n",a[i][n+1]); return 0; }
【模板】高斯消元
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。