计算矩阵的行列式

时间:2012-08-27 11:07:45

标签: matrix determinants

我很惊讶为什么下面的算法告诉我,那个矩阵不可​​逆,我有输入单位矩阵,这里是我的计算teterminant的代码

float determinant(float a[5][5],float k)
{
float s=1,det=0,b[5][5];
    int i,j,m,n,c;
    if(k==1){
        return (a[0][0]);
    }
    else
    {
        det=0;
        for(c=0;c<k;c++)

            m=0;
            n=0;
            for(i=0;i<k;i++)
            {
                for(j=0;j<k;j++){
                    b[i][j]=0;
                    if(i!=0 && j!=c)
                    {
                        b[m][n]=a[i][j];
                        if(n<(k-2))
                            n=n+1;

                        else{
n=0;
                        m++;

                    }



        }
    }

            }
            det=det+s*(a[0][c])*determinant(b,k-1);
            s=-1*s;
        }


   return det;
}

1 个答案:

答案 0 :(得分:2)

在尝试修复可怕的格式时,我意识到你可能会错过第一个for循环(使用c)的大括号。 Protip:正确格式化你的代码,你不会犯这么简单的错误。