2012-05-01 33 views
4

正半定矩陣的行列式是否等於0,它在我的情況下會變成零。我有一個對角線元素非零的對角矩陣。當我試圖計算這個矩陣的行列式時,它就是0。爲什麼這樣呢?正半定矩陣的行列式

+0

這兩個不同的問題?一個關於正定矩陣,另一個關於對角矩陣?你能舉個例子嗎? –

回答

6

顧名思義,積極的半正定矩陣可以具有本徵值等於零,所以因此其決定因素可以是零

現在,我看不到你的意思了一句什麼,

我有一個對角線元素非零的對角矩陣。當我嘗試計算...

如果矩陣是對角線,並且對角線上的所有元素都不爲零,那麼行列式應該爲非零。如果您正在計算機中計算它,請注意下溢。 您可以考慮對數的和,而不是對角元素的乘積

+0

是的,它是一個對角線元素等於非零的對角矩陣。仍然行列式等於0 –

+1

@rajansthapit:請爲您的問題添加一個示例。 –

7

這就是爲什麼計算行列式從來就不是一個好主意的原因。是的,我知道。你的書,你的老師,或你的老闆告訴你這樣做。他們可能是錯的。爲什麼?決定因素是規模很小的野獸。即使有效地計算行列式(許多算法甚至無法做到這一點),但大多數時候並不真正需要行列式。

考慮這個簡單的正定矩陣。

A = eye(1000); 

什麼是行列式?我甚至不需要打擾。它是1.但是,如果你堅持...

det(A) 
ans = 
    1 

好吧,這樣的作品。如果我們簡單地將整個矩陣乘以一個小常數(例如0.1),那麼該如何呢?什麼是行列式?你可能會說沒有理由打擾,因爲我們已經知道行列式。它必須只是det(A)* 0.1^1000,所以1e-1000。

det(A*0.1) 
ans = 
    0 

我們在這裏做了什麼錯?如果失敗了,我們忘記記住我們正在進行浮點運算。由於MATLAB中雙精度的動態範圍僅下降到本質上

realmin 
ans = 
     2.2250738585072e-308 

然後較小的數字變成零 - 它們下溢。無論如何,當我們計算一個行列式時,大多數情況下,我們都是這樣做的。如果他們希望你測試一下矩陣是否單數,那麼使用rank或cond,而不是det。