【发布时间】:2010-09-14 09:58:45
【问题描述】:
我想反转一个 4x4 矩阵。我的数字以定点格式存储(准确地说是 1.15.16)。
使用浮点运算,我通常只构建伴随矩阵并除以行列式(例如,蛮力解决方案)。到目前为止,这对我有用,但是在处理定点数时,由于使用了所有乘法,我得到了不可接受的精度损失。
注意:在定点算术中,我总是丢弃一些立即结果的最低有效位。
那么 - 反转矩阵的最稳定的数值方法是什么?我不太在意性能,但简单地使用浮点会减慢我的目标架构。
【问题讨论】:
-
普通的旧高斯消除会很好用。这取决于您使用的库/类/结构。你可以看看GSL。
-
矩阵中元素的大小是否接近?
-
为了最大限度地减少截断错误和其他不良情况,请使用“旋转” - 请参阅数值配方中关于反转矩阵的章节。他们有我迄今为止找到的最好的解释。
-
不——不幸的是他们到处都是。
-
你有矩阵的近似条件数吗?我在回答中引用的论文成功达到了几百个条件数,尽管这是针对 8x8 或 32x32 矩阵,所以你可能会做得比这更好。
标签: language-agnostic matrix linear-algebra fixed-point matrix-inverse