31 数论 高斯消元

1 高斯消元(线性代数)

1)找出一列c中的最大的那个数,定义该行为t

2)交换当前的第一行r与找到最大数的那行t

3)将第t行的第一个数变成一,当然该行的每一个数也得跟着变

4)将第r行后面的数的第c列都消成0,当然其他也跟着变化

5)继续处理下一列r++

6)判断是否是唯一解和无穷解或者无解

7)最后重下往上消掉每一个未知数,这样每个方程就变成了一个未知数和一个答案

/*
学acwing的算法基础课学来的,喜欢的话多多支持呀。
*/
//高斯消元求线性方程组的解
#include
using namespace std;
const double eps=1e-6;//因为浮点数的0可能变成0.000000032,因为浮点数不够精确,所以用这个来判断是否为0
int n;
double a[101][101];
int gauss()//高斯消元法
{int c,r;for(c=0,r=0;cfabs(a[t][c]))t=i;//找出该列c中的最大的那个数,记录该行为tif(fabs(a[t][c])=c;i--) a[r][i]/=a[r][c];//将该行的第一个数变成1,当然其余也跟着变化for(int i=r+1;ieps)//假如不是0for(int j=n;j>=c;j--)//则把该行的第c个数都按照第r行处理为0,当然该行其他数也跟着变换a[i][j]-=a[r][j]*a[i][c];r++;//在处理下一列}if(reps)//假如某一行的最后一列的数不是0return 2;//则无解return 1;//反之无穷多组解}for(int i=n-1;i>=0;i--)for(int j=i+1;j


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部