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

    高斯-约旦消元法

    G-J 消元法通过这样的方法来进行初等变换:在每一个循环过程中,先寻找到主元,并将主元通过行变换 (无需列变换) 移动到矩阵的主对角线上, 然后将主元所在的行内的所有元素除以主元,使得主元化为 1;然后观察主元所在的列上的其他元素,将它们所在的行减去主元所在的行乘以一定的倍数, 使得主元所在的列内、 除主元外的其他元素化为 0,这样就使得主元所在的列化为了单位矩阵的形式。

    (code)

    void Gauss_Jordan()
    {
    	int line=0;
    	for(int i=1;i<=n;i++)
    	{
    		if(s[i][i]==0)
    		{
    			for(int j=i+1;j<=n;j++)
    				if(s[j][i])
    				{line=j;break;}
    			for(int j=i;j<=n+1;j++)
    				swap(s[line][j],s[i][j]);//交换行,保证对角线上系数不为0
    		}
    		if(s[i][i] && s[i][i]!=1)
    		{
    			for(int k=i+1;k<=n+1;k++)
    				s[i][k]/=s[i][i];//系数化为1
    			s[i][i]=1;//不能从i一直除到n+1!因为要保存s[i][i]的值
    		}
    		for(int j=1;j<=n;j++)
    		{
    			if(i==j)continue;
    			db K=s[j][i]/s[i][i];
    			for(int k=i;k<=n+1;k++)
    				s[j][k]-=K*s[i][k];
    		}//对每一行进行加减消元
    	}
    }
    

    模板

    *外星千足虫:异或消元

    Desperados no way back.
  • 相关阅读:
    欧拉函数的一个性质及其证明
    【机器人M号】题解
    【求和】题解
    uva11292贪心基础题目
    hdu 1009 贪心基础题
    近期计划,理清思路,大步向前
    hdu1712 分组背包
    TOJ3596 二维背包
    hdu1114 完全背包
    BestCoder Round #81 (div.2)1001
  • 原文地址:https://www.cnblogs.com/Zerosking/p/10011095.html
Copyright © 2011-2022 走看看