2010年3月19日 星期五

特殊矩陣 (12):對角佔優矩陣

本文的閱讀等級:初級

如果一 $$n\times n$$ 階矩陣 $$A=[a_{ij}]$$ 每一列其主對角元的絕對值大於該列非主對角元絕對值之和,也就是說,對於 $$i=1,2,\ldots,n$$,滿足

$$\vert a_{ii}\vert>\sum_{j\neq i}\vert a_{ij}\vert$$

我們稱 $$A$$ 為對角佔優(diagonally dominant)。例如,

$$B=\begin{bmatrix}

-4&-2&1\\

1&2&0\\

3&1&5

\end{bmatrix}$$

是對角佔優矩陣因為

$$\vert b_{11}\vert=4>\vert b_{12}\vert+\vert b_{13}\vert=2+1=3$$

$$\vert b_{22}\vert=2>\vert b_{21}\vert+\vert b_{23}\vert=1+0=1$$

$$\vert b_{33}\vert=5>\vert b_{31}\vert+\vert b_{32}\vert=3+1=4$$



$$C=\begin{bmatrix}

-2&-2&1\\

1&1&0\\

3&1&5

\end{bmatrix}$$

不為對角佔優矩陣,計算檢查得知

$$\vert b_{11}\vert=2<\vert b_{12}\vert+\vert b_{13}\vert=2+1=3$$

$$\vert b_{22}\vert=1\ge\vert b_{21}\vert+\vert b_{23}\vert=1+0=1$$

$$\vert b_{33}\vert=5>\vert b_{31}\vert+\vert b_{32}\vert=3+1=4$$

 


對角佔優矩陣常出現於實際應用中,它有什麼特性?對角佔優矩陣是可逆矩陣,亦即 $$A$$ 的零空間僅包含零向量,$$\mathcal{N}(A)=\{\mathbf{0}\}$$。利用反證法,假設有 $$\mathbf{x}\neq\mathbf{0}$$ 使得 $$A\mathbf{x}=\mathbf{0}$$。設 $$x_k$$ 為向量 $$\mathbf{x}$$ 的最大元,$$\vert x_k\vert\ge\vert x_j\vert$$,$$j\neq k$$。乘開 $$A\mathbf{x}=\mathbf{0}$$ 並取其第 $$k$$ 元,就有

$$a_{k1}x_1+a_{k2}x_2+\cdots+a_{kn}x_n=0$$

將第 $$k$$ 項抽離出來,

$$a_{kk}x_k=-\sum_{j\neq k}a_{kj}x_j$$

等號左右取絕對值,再利用三角不等式可得

$$\vert a_{kk}\vert\cdot\vert x_k\vert=\left|\sum_{j\neq k}a_{kj}x_j\right|\le\sum_{j\neq k}\vert a_{kj}x_j\vert=\sum_{j\neq k}\vert a_{kj}\vert\cdot\vert x_j\vert$$

$$\le\left(\sum_{j\neq k}\vert a_{kj}\vert\right)\vert x_k\vert$$

上面最後一個步驟使用已知條件 $$\vert x_k\vert\ge\vert x_j\vert$$,$$j\neq k$$。消除 $$\vert x_k\vert$$ 後便有

$$\vert a_{kk}\vert\le\sum_{j\neq k}\vert a_{kj}\vert$$

這個結果違反了對角佔優條件,推論最初假設存在非零向量 $$\mathbf{x}$$ 滿足 $$A\mathbf{x}=\mathbf{0}$$ 是錯的,證得 $$A$$ 是可逆矩陣。

  


對角佔優的另一個實用價值在於解線性方程。當 $$A^T$$ 為對角佔優矩陣時,以高斯消去法解 $$A\mathbf{x}=\mathbf{b}$$ 的過程不需要執行部分軸元法(partial pivoting)。不過這個證明相當瑣碎,在此省略,以下僅討論部分軸元法的意義與其功能。看下面這個線性方程組:

$$0x+y=1$$

$$x+y=2$$

其解為 $$x=y=1$$。如果將方程組改為

$$10^{-4}x+y=1$$

$$x+y=2$$

明顯地,$$x$$ 和 $$y$$ 都應該近似 $$1$$,精確的解為

$$x=\frac{1}{1-0.0001}$$,$$y=2-\frac{1}{1-0.0001}$$

  


考慮使用電腦程式求解大尺寸線性方程所遭遇的問題;由於電腦程式採用浮點算術,所以無法避免捨去誤差(round-off error)。舉例來說,假設浮點數僅允許儲存三個位元,如 $$\pm .d_{1}d_{2}d_{3}\times 10^{e}$$。對上例的增廣矩陣執行消去法得到梯型矩陣:

$$\begin{bmatrix}

0.0001&1&\vert&1\\

1&1&\vert&2

\end{bmatrix}\sim\begin{bmatrix}

0.0001&1&\vert&1\\

0&-9999&\vert&-9998

\end{bmatrix}$$

但精確度至三位元浮點數的儲存內容為

$$\begin{bmatrix}

0.1\times 10^{-3}&1&\vert&1\\

0&-(0.1)\times 10^{5}&\vert&-(0.1)\times 10^{5}

\end{bmatrix}$$

再使用反向迭代法,由第二式解出 $$y=1$$,代回第一式解出 $$x=0$$,計算結果錯的離譜!

  


捨去誤差造成災難的原因出在軸元的數值太小,最簡單的解決方法是將方程組的兩列對調,然後再執行消去法,如下:

$$\begin{bmatrix}

1&1&\vert&2\\

0.0001&1&\vert&1

\end{bmatrix}\sim\begin{bmatrix}

1&1&\vert&2\\

0&0.9999&\vert&0.9998

\end{bmatrix}$$

這時第二式以 $$0x+(0.1)\times 10^{-4}y=(0.1)\times 10^{-4}$$ 形式儲存,解出 $$y=1$$,代回第一式得到 $$x=1$$,比較此結果與實際的 $$x$$ 解 $$1.\overline{0001}$$,計算誤差為 $$0.\overline{0001}$$。

  


部分軸元法是指在每一次消去法進行之前,我們先搜尋軸元所在位置及其底下的各個元,從其中挑選出絕對值最大的元,然後交換兩列將絕對值最大的元置於軸元位置,見下例:

$$\begin{bmatrix}

\ast&\ast&\ast&\ast&\ast\\

0&3&\bullet&\bullet&\bullet\\

0&1&\blacktriangle&\blacktriangle&\blacktriangle \\

0&5&\star&\star&\star

\end{bmatrix}\sim\begin{bmatrix}

\ast&\ast&\ast&\ast&\ast\\

0&5&\star&\star&\star\\

0&1&\blacktriangle &\blacktriangle &\blacktriangle \\

0&3&\bullet&\bullet&\bullet

\end{bmatrix}$$

若 $$A^T$$ 為對角佔優矩陣,每次消去步驟遇到的軸元都比下面各個元的絕對值大,因此不需要執行部分軸元法。

沒有留言:

張貼留言