反转4x4矩阵算法

时间:2013-05-04 12:51:17

标签: math matrix matrix-inverse

我正在尝试反转4x4矩阵,我已经看到了一些用几十次计算来计算行列式的例子,这对我来说似乎没有用,我可能只是搞砸了某个地方,但我'我一直试图找到解决这个问题的另一种方法,我的回答是:

public Matrix inverse()
{
    double[] array = new double[]{
        1/m[0], m[4],   m[8],       0,
        m[1],   1/m[5], m[9],       0,
        m[2],   m[6],   1/m[10],    0,
        -m[12], -m[13], -m[14],     1/m[15]
    };
    return new Matrix(array);
}

基本上我所做的是,计算所有它的组件的反转,这已经很好地工作,期望15号,最后一个数字,它出于某种原因喷出无穷大,有没有人知道为什么?我唯一的猜测就是除以零,但接下来的问题是,0的倒数是多少?答案是0?

(不确定这是否相关,但我的矩阵是行专业的)

1 个答案:

答案 0 :(得分:1)

你试图记下4x4矩阵的逆矩阵是完全错误的。尝试修复它绝对没有意义,因为它永远不会起作用。

你问1/0的结果是什么。那么,这是除零,结果没有定义。没有满足x的实数1/0 == x。如果那时1 == x*0 == 0,那就是矛盾。在计算机上,尝试执行除零有时会导致错误,或者有时会导致返回特殊的浮点值Inf。后者似乎是在您的环境中发生的事情。

我不知道您拒绝determinant based code的原因。也许你发现实施起来很棘手。但就是这样。你不会简化这种复杂性。