为什么Matlab的inv缓慢且不准确?

sim*_*ark 16 matlab linear-algebra matrix-inverse numerical-analysis

我在几个地方(在文档和这篇博文中阅读:http://blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/)中读到,在Matlab中使用inv不是建议因为它很慢而且不准确.

我试图找出这种不准确的原因.截至目前,谷歌没有给出有趣的结果,所以我认为有人可以指导我.

谢谢 !

小智 32

我提到的不准确性是方法INV,而不是MATLAB的实现.您应该使用QR,LU或其他方法来求解方程组,因为这些方法通常不需要求平方系统的条件数.使用inv通常需要通过平方原始系统的条件数来失去准确性的操作.

--Loren


Edr*_*ric 19

我认为Loren博客的观点并不是MATLAB的inv函数比计算矩阵逆的任何其他数值实现特别慢或更不准确; 相反,在大多数情况下,不需要逆本身,并且您可以通过其他方式继续(例如使用\反斜杠运算符求解线性系统- 而不是计算逆运算).

  • 为了明确那里的学生,你想写'x = A\b`而不是`x = inv(A)*b`​​来解决线性系统Ax = b.计算A的倒数不是必需的,不是鲁棒的,也不是快的.在你看到A ^ -1的数学公式的大部分中,算法可以在不计算A的倒数的情况下实现.也就是说,对于小的,满秩矩阵,计算inv(A)几乎总是很好.对于大型矩阵或病态条件矩阵,它可能会出现问题. (2认同)