美文网首页
高斯消元(行列式)

高斯消元(行列式)

作者: fo0Old | 来源:发表于2017-02-23 15:38 被阅读0次

浮点高斯消元:

int gsxy(int n,int m)
{
    int i=1;
    for(int j=1;i<=n && j<=m;j++)
    {
        int x=i;
        for(int k=i+1;k<=n;k++)
            if(!zero(a[k][j]) && fabs(a[k][j])>fabs(a[x][j]))
               x=k;
        if(zero(a[x][j]))continue;
        for(int k=j;k<=m;k++)
            swap(a[i][k],a[x][k]);
        for(int k=1;k<=n;k++)
        {
            if(k==i || zero(a[k][j]))continue;
            double f=a[k][j]/a[i][j];
            for(int l=j;l<=m;l++)
                a[k][l]-=a[i][l]*f;
        }
        for(int k=m;k>=j;k--)
            a[i][k]/=a[i][j];
        i++;
    }
    return i-1;
}

模意义下高斯消元

int gsxy(int n,int m)
{
    int i=1;
    for(int j=1;i<=n && j<=m;++j)
    {
        int x=i;
        for(int k=i+1;k<=n;++k)
            if(a[k][j] && abs(a[k][j])>abs(a[x][j]))
               x=k;
        if(!a[x][j])continue;
        for(int k=j;k<=m;++k)
            swap(a[i][k],a[x][k]);
        for(int k=1;k<=n;++k)
        {
            if(k==i || !a[k][j])continue;
            ll f=a[k][j]*qpow(a[i][j],mod-2)%mod;
            for(int l=j;l<=m;++l)
            {
                a[k][l]-=a[i][l]*f%mod;
                if(a[k][l]<=-mod)a[k][l]%=mod;
                if(a[k][l]<0)a[k][l]+=mod;
            }
        }
        for(int k=m;k>=j;--k)
            (a[i][k]*=qpow(a[i][j],mod-2))%=mod;
        ++i;
    }
    return i-1;
}

整数行列式求值:

ll a[205][205],mod;

ll det(int n)
{
    ll ans=1,f=1;
    for(int i=1; i<=n; i++)
    {
        for(int j=i+1; j<=n; j++)
        {
            int x=i,y=j;
            while(a[y][i])
            {
                ll t=a[x][i]/a[y][i];
                for(int k=i; k<=n; k++)
                    a[x][k]=(a[x][k]-a[y][k]*t%mod)%mod;
                swap(x,y);
            }
            if(x!=i)
            {
                for(int k=1; k<=n; k++)
                    swap(a[i][k],a[j][k]);
                f=-f;
            }
        }
        ans=ans*a[i][i]%mod;
    }
    return (ans*f+mod)%mod;
}

异或消元:

int xorxy(int n,int m)
{
    int i=1;
    for(int j=1; i<=n && j<=m; j++)
    {
        int x=0;
        for(int k=i; k<=n; k++)
            if(b[k][j])
            {
                x=k;
                break;
            }
        if(!x)continue;
        for(int k=j;k<=m;k++)
            swap(b[i][k],b[x][k]);
        for(int k=1;k<=n;k++)
        {
            if(k==i || !b[k][j])continue;
            for(int l=j;l<=m;l++)
                b[k][l]^=b[i][l];
        }
        i++;
    }
    return i-1;
}

相关文章

  • 高斯消元(行列式)

    浮点高斯消元: 模意义下高斯消元 整数行列式求值: 异或消元:

  • 2019-05-19 线性方程组-高斯消元法

    高斯消元法:(列主元高斯消元法)1.正常的情况下,我们将矩阵化成上三角,然后化成行最简形式,这里算法略微不同;2....

  • 高斯_约旦消元法_线性代数_day30

    高斯-约旦消元法 继续高斯消元法得出每一个未知数的值 前向过程(从上到下)选择最上面的主元,化为1主元下面所有的行...

  • 解方程

    复习一下解方程 0X00 解线性方程 用「高斯消元法」解线性方程 面试题 16.03. 交点 883. 高斯消元解...

  • 【线性代数学习笔记(一)】矩阵表示法和矩阵乘法规则是怎么来的?

    目录 求解线性方程组:高斯消元法简化线性方程组的表示——得到原始的矩阵定义用矩阵的表示方法表示高斯消元法解线性方程...

  • poj1222 高斯消元

    /*Time:2019.12.13Author: Goventype:高斯消元ref:[知识点]https://b...

  • 高斯消元法(约当消元法)

    这个真的烦了我好久啊,可能是我太笨了,最后看了几个模板,和写了好久,终于让我弄懂了.具体看代码咯这个是直接判断是否...

  • 数值代数

    第一次数值代数上机作业 一. (1)不选主元的高斯消元法 (2)列主元 结论:列主元gauss消元法更加精确,且稳...

  • 4.1 顺序高斯消元法

    算法见课本P31直接法的一种,前提是矩阵非奇异,通过有限步运算可以得到精确解注意:Gauss消元法比cramer法...

  • poj1681 高斯消元

    /*Time:2019.12.13Author: Goventype:ref:https://www.cnblog...

网友评论

      本文标题:高斯消元(行列式)

      本文链接:https://www.haomeiwen.com/subject/rodbwttx.html