矩阵行列式计算的哪种方法是这样的?

Ada*_*lor 3 math matrix

这是John Carmack用于计算4x4矩阵的行列式的方法.根据我的调查,我已经确定它开始像拉普拉斯扩展定理,然后继续计算3x3决定因素,这似乎与我读过的任何论文都不一致.

    // 2x2 sub-determinants
    float det2_01_01 = mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0];
    float det2_01_02 = mat[0][0] * mat[1][2] - mat[0][2] * mat[1][0];
    float det2_01_03 = mat[0][0] * mat[1][3] - mat[0][3] * mat[1][0];
    float det2_01_12 = mat[0][1] * mat[1][2] - mat[0][2] * mat[1][1];
    float det2_01_13 = mat[0][1] * mat[1][3] - mat[0][3] * mat[1][1];
    float det2_01_23 = mat[0][2] * mat[1][3] - mat[0][3] * mat[1][2];

    // 3x3 sub-determinants
    float det3_201_012 = mat[2][0] * det2_01_12 - mat[2][1] * det2_01_02 + mat[2][2] * det2_01_01;
    float det3_201_013 = mat[2][0] * det2_01_13 - mat[2][1] * det2_01_03 + mat[2][3] * det2_01_01;
    float det3_201_023 = mat[2][0] * det2_01_23 - mat[2][2] * det2_01_03 + mat[2][3] * det2_01_02;
    float det3_201_123 = mat[2][1] * det2_01_23 - mat[2][2] * det2_01_13 + mat[2][3] * det2_01_12;

    return ( - det3_201_123 * mat[3][0] + det3_201_023 * mat[3][1] - det3_201_013 * mat[3][2] + det3_201_012 * mat[3][3] );
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这种方法是如何工作的,还是指向一个使用相同方法的好写作?

注意
如果重要,这个矩阵是行主要的.

lau*_*ura 5

这似乎是涉及使用未成年人的方法.数学方面可以在维基百科上找到

http://en.wikipedia.org/wiki/Determinant#Properties_characterizing_the_determinant

基本上你将矩阵缩小到更小,更容易计算,并将这些结果加起来(它涉及一些(-1)因子,应该在我链接到的页面上描述).