Matlab 教材:矩陣除法

若 A 和 B 是維度相同的兩個方陣,而且 B 是可逆方陣,則 B-1 是另一個同維度的方陣。但是因為矩陣乘法並沒有交換律,所以

B-1 A     和     A B-1
一般而言並不相等,所以 Matlab 提供兩種除法符號。 如果在 A 的左邊乘 B-1,亦即 B-1A,稱為 B 除 A, 運算符號是
B \ A
如果在 A 的右邊乘 B-1,亦即 A B-1,稱為 A 除以 B, 運算符號是
A / B

凡是按規則可以和 B-1 相乘的矩陣, 都可以根據左乘或右乘而做「除」或「除以」的計算。 例如線性聯立方程式可以寫成 Ax=b 的形式,其中 A 是一個 n 維可逆方陣, b 是一個 n 維向量,則

x = A\b
就是前述聯立方程式的一組解。例如以下線性聯立方程式

\begin{displaymath} \begin{array}{l}
4x_1 + 6x_2 - x_3 = 1\\
5x_1 - 8x_2 + 3x_3 = 0\\
x_1 + 4x_2 + x_3 = 0\\
\end{array}\end{displaymath}

可以如此求解:令
A = [4 6 -1; 5 -8 3; 1 4 1]
b = [1 0 0]'
x = A\b
得到一組數值解
    0.1667
    0.0167
   -0.2333

得到一組數值解之後,讀者可以驗算試試看,例如計算

r = A*x - b
會得到數值很小的向量,這個向量稱為『殘量』(residue)。 理論上殘量應該是零向量,但是因為數值計算無可避免的誤差, 它未必真的是零。

延續前面的例子,殘量就是

   1.0e-15 *
  
   -0.1110
         0
    0.0278
這組數字的意思是
r(1) = -0.1110 * 10-15
r(2) = 0
r(3) = 0.0278 * 10-15
雖然它們都很小,但是 r(1) 和 r(3) 並不是零, 這就是『數值計算無可避免的誤差』所致。 我們經常會計算殘量的向量長度 (norm),例如
norm(r)
得到
1.1444 * 10-16
通常只要殘量的向量長度在 10-14 以下, 我們就認為數值解還蠻接近真解的。

雖然 Matlab 可以計算 B-1, 但是這個指令有嚴重的缺點,如果讀者養成了使用它的習慣, 那就非常不好,所以我們故意不去強調那個指令。 詳細的原因,請讀者在『數值分析』或『矩陣計算』那一類課程中學習。 反正,簡單地說,請用上述方法求解線性聯立方程式,不要用逆矩陣。

讀者如果胡亂做實驗,就會發現,即使 A 不是可逆方陣, 甚至 A 不是方陣,以下指令

x = A\b
也會得到答案。至於這個答案是什麼意思? 也是要請讀者到其他課程去學習,例如線性代數、數值分析、矩陣計算、數學規劃, 甚至統計課程也可能談到。 稍後,在 關於矩陣的基本函式 那一節也會看到一個例子。

習題

  1. 求解以下線性聯立方程式

    \begin{displaymath} \begin{array}{l}
2x_1 + x_2 = 1\\
x_1 + 2x_2 + x_3 = -1\\
x_2 + 2x_3 = 1
\end{array}\end{displaymath}

  2. 求解以下線性聯立方程式

    \begin{displaymath} \begin{array}{l}
x_1 + 2x_2 + 4x_3 = 1\\
2x_1 + 4x_2 + x_3 = -1\\
4x_1 + x_2 + 2x_3 = 1
\end{array}\end{displaymath}

  3. A=[2 -1 -3; 0 -2 1; 1 -3 -2]b=[1; 0; 0], 求解線性方程式 Ax=b,並計算其殘量的向量長度 (norm)
  4. A=[0 -1 1; -3 3 0; 2 3 3]b=[-1; 1; 1], 求解線性方程式 Ax=b,並計算其殘量的向量長度 (norm)
  5. A=[5 3 1; 3 1 2; 5 0 4]b=[1 2 1]x 是一個 1 乘 3 的序列, 求線性方程式
    xA = b
    之解
  6. A=[-1 0 1; 4 3 3; 2 1 2]b=[1 0 1]x 是一個 1 乘 3 的序列, 求線性方程式
    xA = b
    之解
單維彰 (2003/03/11) --- 04/03/18 (單) [Prev] [Next] [Up]