高斯约旦消元法

高斯-约旦消元法

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];
        }//对每一行进行加减消元
    }
}

模板

*外星千足虫:异或消元

转载于:https://www.cnblogs.com/Zerosking/p/10011095.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值