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

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

谢谢!

有帮助吗?

解决方案

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

- 洛伦

其他提示

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

inv()肯定比 \ 慢,除非您有多个右侧向量要求解决。但是,MathWorks关于不准确性的建议是由于数值线性代数结果中的过于保守的界限。换句话说, inv()并不准确。该链接进一步阐述: http://arxiv.org/abs/1201.6035

  

几种广泛使用的教科书使读者相信通过将向量b乘以计算的逆inv(A)来求解线性方程组Ax = b是不准确的。实际上,所有其他关于数值分析和数值线性代数的教科书都建议不要使用计算的逆,而不说明这是否准确。事实上,在对如何计算逆的合理假设下,x = inv(A)* b与最佳后向稳定求解器计算的解一样精确。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top