2010-07-09 183 views
-1

MATLAB計算INV錯誤有時:MATLAB計算INV錯誤(奇異矩陣)

見這個例子

[ 8617412867597445*2^(-25), 5859840749966268*2^(-28)] 
[ 5859840749966268*2^(-28), 7969383419954132*2^(-32)] 

如果你把這個在MATLAB它沒有逆但在計算器不但具有一。

這是怎麼回事?

+7

MATLAB告訴你矩陣對於工作精度是單數的。無論如何,你爲什麼需要反向? MATLAB的反斜槓運算符更有用。 – Edric 2010-07-09 10:30:04

回答

9

請仔細閱讀What every scientist should know about floating point arithmetic

下,不反正計算倒數。一個逆矩陣幾乎是不必要的,除了在書寫方便的教科書中。可悲的是,許多作者無論如何都不理解這個事實,因爲他們從其他人的教科書中學到了東西,他們也沒有意識到逆矩陣一般是不好的。

由於該矩陣是在雙精度算術數值奇異,該矩陣的逆是無意義的。

使用MATLAB中的反斜槓運營商將普遍比將逆更好更快發展。或者使用pinv,這會對問題更加強大。

1

您好我想對木片的回答發表評論,但因爲我是一個新用戶,我似乎無法做到這一點,這是一個非常有趣的文章,我必須詳細閱讀它,當我有時間。 ..

至於矩陣求逆,你總是可以使用「COND」命令來計算矩陣的條件數,對於一個非奇異矩陣的值應該接近1。正如Woodchips所建議的那樣,如果你需要找到一個非方陣矩陣的僞逆,'pinv'就派上用場了。

+1

你說cond對於一個非奇異的矩陣將是一個接近統一的東西。這種說法可能會讓一些人感到困惑,因爲它只是一個罕見的矩陣,它的條件編號接近於1.問題是當條件編號比1大幾個數量級時。你是正確的,cond是診斷問題的非常有用的工具。 – 2012-07-31 01:59:03