0
我想檢查一個矩陣是否是正定的。我在網上搜索瞭如何使用matlab來檢查它。我有興趣使用chol
的方式來檢查(不檢查特徵值之一)。下面是代碼:確定一個矩陣是肯定的
[~, r] = chol(A);
r == 0 && rank(A) == size(A,1)
我知道,如果A
不是正定的,則r
爲正。但是,檢查rank(A)==size(A,1)
有什麼意義?它似乎仍然有效,如果我只是使用下面的代碼:
[~, r] = chol(A);
r == 0 % check if r>0
不知A
是半正定矩陣,r==0
。但是,如果我使用A=[1,0;0,0]
作爲示例,請使用上面的代碼進行檢查,r = 2 > 0
。這讓我在檢查排名時感到不舒服。
我發現這個代碼here。
在你的情況,我簡單地認爲r不等於零,因爲「哲」指出,「如果A是正定」不僅半定。 – marcoresk
根據定義,秩虧矩陣不是正定的。這就是爲什麼你的例子'A'給出'r> 0' - 正*半* -definite根本不被'chol'認爲是特殊的。你是對的,明確的排名檢查是多餘的 –