簡體   English   中英

為什么Matlab的inv緩慢且不准確?

[英]Why is Matlab's inv slow and inaccurate?

我在一些地方(在文檔中以及在此博客文章中: http : //blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/ )中都讀到,在Matlab中使用inv不是推薦,因為它緩慢且不准確。

我試圖找到這種不准確的原因。 截至目前,Google並未給出有趣的結果,因此我認為這里有人可以指導我。

謝謝 !

我提到的不准確之處在於方法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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM