我有尺寸10800x10800的在Matlab基質和我計算其逆 直接與功能:在Matlab中快速的方法來計算大矩陣的倒數10800x10800?
inv(A)
它需要3至4分鐘僅一個這樣的計算。這是迭代算法的一部分,需要超過20次迭代,所以總的來說, 會很慢。有一個更好的方法嗎?也許一些數學公式 或者更好的Matlab函數?
編輯:矩陣是對角線。每次迭代時,根據擬合因子分析器的公式更新對角元素 。但這並不重要,重要的是它是一個對角矩陣,它會改變每次迭代。
感謝
我有尺寸10800x10800的在Matlab基質和我計算其逆 直接與功能:在Matlab中快速的方法來計算大矩陣的倒數10800x10800?
inv(A)
它需要3至4分鐘僅一個這樣的計算。這是迭代算法的一部分,需要超過20次迭代,所以總的來說, 會很慢。有一個更好的方法嗎?也許一些數學公式 或者更好的Matlab函數?
編輯:矩陣是對角線。每次迭代時,根據擬合因子分析器的公式更新對角元素 。但這並不重要,重要的是它是一個對角矩陣,它會改變每次迭代。
感謝
如果你的矩陣的確是對角,可以很明顯的只是做
Ainv = diag(1./diag(A));
這應該是非常快的。
非常感謝你! – user2225930 2013-04-25 21:39:11
反斜槓操作\
據說是faster,也可以更準確。沒有MATLAB我真的不知道,但你可以嘗試運行A \ eye(10800)
而不是inv(A)
,看看它是否可行。
通常,避免使用顯式的'inv()',但是我們需要看到更多的代碼來理解它。 – Oleg 2013-04-25 20:46:21
每次迭代會發生什麼變化?有各種各樣的東西的逆矩陣的增量公式。這真的取決於你在每次迭代中做的特定操作。 – Shai 2013-04-25 20:57:13
我編輯了我的原始文章並提供了更多信息。 – user2225930 2013-04-25 21:02:10