模板高斯消元
Posted zcysky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板高斯消元相关的知识,希望对你有一定的参考价值。
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; }
以上是关于模板高斯消元的主要内容,如果未能解决你的问题,请参考以下文章