【发布时间】:2013-06-23 18:23:16
【问题描述】:
作为数据,我得到一个矩阵 A,但在我的算法中,我需要处理它的逆矩阵。我要做的是:
C = inv(A) + B;
然后在另一行中我更新 A。在接下来的循环中,我还需要(更新)A 逆,再次用于该算法。等等。在后来的周期中,我得到了这个:
Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.425117e-019
或者这个:
Warning: Matrix is singular to working precision.
或者这个:
Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. RCOND = NaN.
你能帮我如何避免这种奇点吗?矩阵总是平方的。
【问题讨论】:
-
-1 用于使用
inv@RodyOldenhuis - 你能从这里拿走吗? -
@Shai 你可能想链接到这个问题:Matlab inverse operation and warning(而不是 Rody 的个人资料),对吧?
-
@EitanT 抱歉。我的意思是this评论
-
你可以找到here 相当长的讨论,为什么永远不要使用matlab 的inv() 函数。请向我们展示更多算法,以便我们就如何消除 inv 的使用向您提供建议,并用更高效、更健壮的函数代替它。
-
@SamRoberts:逆向有很多理论价值,但没有多少实际价值。 MATLAB 对
inv()的实现并不差,使用它 只是程序设计不佳的标志(在任何非教育环境中)。此声明不限于 MATLAB;它是一系列经过验证的数值数学定理的结果。在有限精度数字系统的上下文中,这就像试图证明aether 优于general relativity。
标签: matlab matrix linear-algebra matrix-inverse