我想反转一个 4x4 矩阵。我的数字以定点格式存储(准确地说是 1.15.16)。
使用浮点算术,我通常只构建伴随矩阵并除以行列式(例如,蛮力解决方案)。到目前为止,这对我有用,但是在处理定点数时,由于使用了所有乘法,我得到了 Not Acceptable 精度损失。
注意:在定点算术中,我总是丢弃一些立即结果的最低有效位。
那么-反转矩阵的最稳定的数值方法是什么?我不太在意性能,但简单地使用浮点会减慢我的目标架构。
最佳答案
我想支持 Jason S 提出的问题:您确定需要反转矩阵吗?这几乎没有必要。不仅如此,这通常是一个坏主意。如果您需要求解 Ax = b,则直接求解系统比将 b 乘以 A 逆在数值上更稳定。
即使您必须一遍又一遍地解决 Ax = b 的许多 b 值,反转 A 仍然不是一个好主意。您可以分解 A(例如 LU 分解或 Cholesky 分解)并保存这些因子,这样您就不会重做每次都有效,但是您仍然每次使用分解都可以解决系统问题。
关于language-agnostic - 反转 4x4 矩阵 - 需要数值最稳定的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/155670/