zoukankan      html  css  js  c++  java
  • 高斯消元

    学了几天,不会线代的我终于学会了高斯消元。

    其实高斯消元只两步:

    第一步:转化为上三角矩阵。通过加减消元实现( i 从 1 到 N 遍历,把第 j (j  > i )行的 xi 消掉)

    第二步:从底向上代入。

    需要注意的是判断多解和无解的情况,还有减小误差的方法。

    int gauss(){
    	int r;
    	for(int i=1;i<=N;i++){
    		r=i;
    		for(int j=i+1;j<=M;j++)
    			if(fabs(a[j][i])>fabs(a[r][i]))//减小误差
    				r=j;
    		if(r!=i)
    			for(int j=1;j<=N+1;j++)//错了好多次
    				swap(a[r][j],a[i][j]);
    		if(r==i&&fabs(a[i][i])<eps)
    			return 2;//多解
    		for(int j=i+1;j<=M;j++){
    			for(int k=N+1;k>i;k--)
    				a[j][k]-=(a[j][i]/a[i][i])*a[i][k];
    			a[j][i]=0;
    		}
    	}
    	for(int i=N;i<=M;i++){
    		bool flag=0;
    		for(int j=1;j<=N;j++)
    			if(fabs(a[i][j])>eps){
    				flag=1;
    				break;
    			}
    		if((!flag)&&fabs(a[i][N+1])>eps)
    			return 0;//无解
    	}
    	for(int i=N;i>=1;i--){
    		for(int j=i+1;j<=N;j++)
    			a[i][N+1]-=a[i][j]*a[j][N+1];
    		a[i][N+1]/=a[i][i];
    		a[i][i]=1;
    	}
    	return 1;
    }
    //N个未知数,M个等式

    别的不说了,直接上板子,遇到题套进去就行了。

    高斯消元还能用来解异或方程组,这个坑晚上填。

  • 相关阅读:
    Django系列6:Model简介,ORM,字段类型,约束
    Django系列4:数据常规操作级联数据
    Django系列5:脑图总结
    Sorted Adjacent Differences
    C
    E. Sleeping Schedule
    D. Ehab the Xorcist
    C. Game with Chips
    D. Walk on Matrixv
    Circle of Monsters
  • 原文地址:https://www.cnblogs.com/lzhAFO/p/8047362.html
Copyright © 2011-2022 走看看