关于行列式求值
查看原帖
关于行列式求值
203008
山田リョウ楼主2022/6/18 01:08

不懂就问,我记着如果把行列式某一行全乘上 kk,行列式的值也乘上 kk,而例如这题我写的下面这段代码:

double gauss(int n){
	double d=1.0;
    for(int k=1;k<n;++k){
        int t;
        for(t=k;t<n;++t)
            if(a[t][k])
                break;
        if(t==n)return 0;
        if(t!=k)swap(a[k],a[t]),d*=-1.0;
        d*=a[k][k];
        for(int i=n-1;i>=k;--i)a[k][i]/=a[k][k];
        for(int i=k+1;i<n;++i)
        	for(int j=n-1;j>=k;--j)
        		a[i][j]-=a[k][j]*a[i][k];
    }
    for(int i=1;i<n;++i)d*=a[i][i];
    return d;
}

中为什么是 d*=a[k][k] 而不是 d/=a[k][k],这是整行乘上了个 1a[k][k]\frac{1}{a[k][k]} 吧,但是经过测试,写成 d/=a[k][k] 就挂了

2022/6/18 01:08
加载中...