本文的閱讀等級:中級
若 為一
階實對稱矩陣且任一
維非零實向量
滿足
,則
稱為正定矩陣 (見“特殊矩陣 (6):正定矩陣”)。如果
為一 Hermitian 複矩陣,將上述實向量改成複向量,轉置
替換為共軛轉置
即可。正定矩陣有多種判別方式,當下列任一條件成立時,
是正定矩陣 (見“正定矩陣的性質與判別方法”):
的特徵值皆為正數;
的軸元 (pivot) 皆為正數;
的領先主子陣 (leading principal submatrix) 的行列式皆為正數;
可分解為
,其中
是一可逆矩陣。
本文介紹一個基於領先主子陣的行列式的正定矩陣判別法,稱為 Bareiss 算法[1]。在開始討論前,我們先說明本文所使用的子陣表達記號。令 代表
階矩陣
的一個
階子陣,其中
是列 (row) 指標集合,
是行 (column) 指標集合,
和
分別表示列指標集合的基數 (cardinal number) 和行指標集合的基數。見下例,
包含的四個領先主子陣依序是
Bareiss 算法將 ,
,的計算整合成一套演算程序:以二階行列式運算實現高斯消去法,化簡
至上三角矩陣
,
其中主對角元即為 的領先主子陣的行列式。
Bareiss 算法建立在 Sylvester 恆等式之上。令 為一
階矩陣,以分塊矩陣表示為
,
其中 是
階領先主子陣。假設
是可逆矩陣。使用基本列運算將方陣
的左下分塊
消去,算式如下:
,
其中 階分塊
稱為
的 Schur 互補 (complement)。使用矩陣乘積的行列式可乘公式和分塊三角矩陣的行列式性質 (見“分塊矩陣的行列式”),可得
,
稱之為 Schur 恆等式。直白地說,一方陣的行列式等於任一可逆領先主子陣與其 Schur 互補的行列式乘積。為簡化記號,以下令 Schur 互補 的列指標
和行指標
為該元於
中所在位置,即
。
按同樣方式,、
和
也沿用方陣
的列行指標。在這個規範下,Schur 互補
的每一元可表示為
。
對於 ,考慮包含
階
分塊的
階共邊矩陣 (bordered matrix)
,
其中 是一
維行向量,
是一
維列向量,
。因為
,共邊矩陣
的 Schur 恆等式如下:
。
定義 階矩陣
,
,其中
。
合併上面二式,可得 ,矩陣表達式為
。使用 Schur 恆等式,推得
這個結果稱為 Sylvester 恆等式。以上推論雖假設 為可逆矩陣,但 Sylvester 恆等式對於不可逆矩陣
依然成立 (使用連續論證法即可證明,見“連續論證法”)。值得注意的是
,
故 Sylvester 恆等式可以明確地表示為
。
由於 是一
階行列式,套用 Sylvester 恆等式,將
替換為
,可得下列表達式:
。
如果 的所有元都是整數,子陣
的行列式
必定是整數,也就是說,上式
整除等號右邊的行列式。
剩下來的問題是設計一個算法求出 的
階領先主子陣
的行列式,即
,
。使用 Sylvester 恆等式導出的
表達式,設
,可得
的二階行列式算式:
。
根據這個遞迴關係式,設定初始值,我們得到下列算法。
Bareiss 算法
初始化 ,
,
對於
對於
對於
如何利用 Bareiss 算法判別正定矩陣?我們需要一個易於操作的簿記方法。因為 值隨演算程序遞增,且
,我們可以將算得的
取代
。上例中,當
,計算過程如下:
符號 表示該元不影響下一階段的計算,故可忽略。另外,軸元
底下的所有元都是
,原因在於 Bareiss 算法其實是高斯消去法的一種變形 (見“高斯消去法”)。對於每一列,Bareiss 算法包含三個基本列運算步驟:伸縮、取代,並再次伸縮。以第二列為例,先令第二列通乘
,將第二列減去
通乘第一列的結果,最後第二列再通除
,如下所示:
除開引進通除運算步驟,Bareiss 算法無異於我們曾經介紹過的一個基於二階行列式的矩陣秩算法 (見“利用行列式計算矩陣秩”)。當 和
,Bareiss 算法的結果如下:
從上三角矩陣的主對角元讀出
,
因此判定 是一正定矩陣。
最後我們討論關於 Bareiss 算法的幾個問題。第一,演算過程中如發現 ,表明
不是正定矩陣,即可停止計算。第二,因為
是實對稱矩陣,不難驗證
,
,故實際計算量幾可減半。第三,針對正定矩陣判定問題,高斯消去法計算軸元,Bariess 算法計算領先主子陣的行列式。Bariess 算法的計算量是高斯消去法的三倍,Bariess 算法具備甚麼優點?若給定矩陣的所有元都是整數,Bariess 算法必產生整數,而且數值不會無節制地變大 (因為通除步驟抑制了數值增長)。最後一個問題:Bareiss 算法是否適用於計算一般
階矩陣的行列式?當然可行,不過前提是所有的除數,即
階領先主子陣的行列式
,
,必須不等於零。這個問題與 Dodgson 縮合法的遭遇極類似 (見“Dodgson 縮合法──奇特的行列式運算法”),為了避免麻煩,讀者不妨選用效果相當的 Chiò 算法 (見“Chiò 演算法──另類行列式計算法”)。
參考來源:
[1] Erwin Bareiss, Sylvester’s Identity and Multistep Integer-Preserving Gaussian Elimination, Mathematics of computation, (PDF) vol. 22, 1968, pp 565–578.