首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是哪种矩阵行列式计算方法?

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

Stack Overflow用户
提问于 2009-08-14 08:06:30
回答 2查看 2.4K关注 0票数 3

这是John用来计算4x4矩阵行列式的方法。从我的研究中,我确定它开始像拉普拉斯展开定理,但接着计算3x3行列式,这似乎与我读过的任何论文都不一致。

代码语言:javascript
复制
    // 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] );

有人能给我解释一下这个方法是如何工作的吗?或者给我指一篇好的文章,其中使用同样的方法?

注意事项

如果重要的话,这个矩阵是主要的行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-14 08:31:39

这似乎是一种利用未成年人的方法。数学方面可以在维基百科上找到

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

基本上,您可以将矩阵简化为更小、更容易计算的东西,并将这些结果加起来(它涉及一些(-1)因素,应该在我链接到的页面上描述)。

票数 5
EN

Stack Overflow用户

发布于 2009-08-14 09:47:57

他使用了标准公式,你可以用伪码来计算,

代码语言:javascript
复制
det(M) = sum(M[0, i] * det(M.minor[0, i]) * (-1)^i)

这里,minor[0, i]是从原始矩阵中删除0、-th、行和i-th列获得的矩阵,(-1)*i表示-1i-th幂。

如果使用不同的行或对列进行循环,则相同的公式(直至整个符号)将有效。如果您想一想det是如何定义的,这是非常不言自明的。请注意,对于2-矩阵,这是如何变成:

代码语言:javascript
复制
det(M) = M[0, 0] * M[1, 1] * (+1) + M[0, 1] * M[1, 0] * (-1)

或者,在第1行而不是0,

代码语言:javascript
复制
-det(M) = M[1, 0] * M[0, 1] * (+1) + M[1, 1] * M[0, 0] * (-1)

-你应该承认2x2矩阵行列式的标准公式。

类似地,对于组成为N = [[a, b, c], [d, e, f], [g, h, i]]的3-矩阵,这将导致公式。

代码语言:javascript
复制
det(N) = a * det([[e, f], [h, i]]) - b * det([[d, f], [g, i]]) + c * det([[d, e], [g, h]])

哪一个成为教科书的公式?

代码语言:javascript
复制
a*e*i + b*f*g +  c*d*h - c*e*g - a*f*h - b*d*i

一旦你扩展了每一个2x2决定因素。

现在,如果你取一个4-矩阵X,你会看到,要计算det(X),你需要计算4个未成年人的行列式,每个次要的是一个3x3矩阵,但是你也可以进一步扩展它们,这样你就有了一些系数的6个2x2矩阵的行列式。您应该亲自尝试一下,类似于上面对于3x3矩阵的内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1276611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档