我正在尝试反转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?
(不确定这是否相关,但我的矩阵是行专业的)
答案 0 :(得分:1)
你试图记下4x4矩阵的逆矩阵是完全错误的。尝试修复它绝对没有意义,因为它永远不会起作用。
你问1/0
的结果是什么。那么,这是除零,结果没有定义。没有满足x
的实数1/0 == x
。如果那时1 == x*0 == 0
,那就是矛盾。在计算机上,尝试执行除零有时会导致错误,或者有时会导致返回特殊的浮点值Inf
。后者似乎是在您的环境中发生的事情。
我不知道您拒绝determinant based code的原因。也许你发现实施起来很棘手。但就是这样。你不会简化这种复杂性。