我想要求解一个4x4矩阵的逆。我的数字以定点格式存储(精度为1.15.16)。
使用浮点数运算,我通常只需构建伴随矩阵并除以行列式(即用暴力方法求解)。这在以前对我很有用,但是当处理定点数时,由于所有乘法操作导致了无法接受的精度损失。
注意:在定点运算中,我总是放弃某些最低有效位。
因此,什么是最稳定的求解矩阵逆的方法?我不太关心性能,但仅仅转换为浮点数会在我的目标体系结构上变得太慢。
我想要求解一个4x4矩阵的逆。我的数字以定点格式存储(精度为1.15.16)。
使用浮点数运算,我通常只需构建伴随矩阵并除以行列式(即用暴力方法求解)。这在以前对我很有用,但是当处理定点数时,由于所有乘法操作导致了无法接受的精度损失。
注意:在定点运算中,我总是放弃某些最低有效位。
因此,什么是最稳定的求解矩阵逆的方法?我不太关心性能,但仅仅转换为浮点数会在我的目标体系结构上变得太慢。
元答:它真的是一个通用4x4矩阵吗? 如果您的矩阵有特殊形式,则有直接的反演公式,可以快速并且保持操作计数较低。
例如,如果它是从图形学中的标准齐次坐标变换:
[ux vx wx tx]
[uy vy wy ty]
[uz vz wz tz]
[ 0 0 0 1]
[ux uy uz -dot(u,t)]
[vx vy vz -dot(v,t)]
[wx wy wz -dot(w,t)]
[ 0 0 0 1 ]
(从链接页面中盗取的ASCII矩阵。)
对于定点数精度损失,你可能无法超越那个。
如果您的矩阵来自您知道其具有更多结构的某个领域,则很可能会有一个简单的答案。
在执行正常算法之前,您可以考虑将数字加倍到1.31。这将使乘法的数量增加一倍,但是您正在进行矩阵反演,而您所做的任何事情都将与处理器中的乘数密切相关。
对于任何想要找到4x4反演方程的人,您可以使用符号数学软件来解决它们。TI-89甚至可以做到这一点,尽管需要几分钟的时间。
如果您告诉我们矩阵反演为您做了什么,并且它如何与您的其他处理过程相匹配,我们可能会建议替代方案。
-亚当