0

我正在尝试反转 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?

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

4

1 回答 1

1

您尝试写下 4x4 矩阵的逆矩阵是完全错误的。尝试修复它绝对没有意义,因为它永远无法工作。

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

我不知道您为什么拒绝基于行列式的代码。也许您发现实施起来很棘手。但事实就是如此。您不会缩短这种复杂性。

于 2013-05-04T13:04:04.690 回答