Matlab 教材:基本列運算

讓我們用三個所謂的「基本列運算」(elementary row operations) 來結束這一篇教材。 所謂基本列運算就是

  1. 矩陣的兩列交換。例如交換第一列和第三列
    tmp = A(1,:);
    A(1,:) = A(3,:);
    A(3,:) = tmp
  2. 矩陣的某一列乘上一個常數。例如將第一列乘上 -2
    A(1,:) = (-2)*A(1,:)
  3. 矩陣的第 i 列,加上某常數乘上第 j 列,然後置換掉第 i 列。例如將第一列乘上 -2, 加去第二列並且置換它
    A(2,:) = A(2,:) + (-2)*A(1,:)
這三個運算是以「列交換高斯消去法」 (Gaussian elimination with row pivoting) 求解線性聯立方程式的基本動作。

例如,考慮以下線性聯立方程式

\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}

我們將係數和右端項排列整齊,寫成一個合併矩陣
B = [4  6 -1  1
     5 -8  3  0
     1  4  1  0]
然後執行列交換的「高斯消去法」。
  1. B(:,1) 觀察絕對值最大元素,是 b21, 故決定交換第一列和第二列
    tmp = B(1,:); B(1,:)=B(2,:); B(2,:)=tmp;
    交換後的 B 矩陣是
         5    -8     3     0
         4     6    -1     1
         1     4     1     0
    
  2. 將第一列乘上 -4/5 加去第二列
    B(2,:) = B(2,:) - 4*B(1,:)/5;
    得到
        5.0000   -8.0000    3.0000         0
             0   12.4000   -3.4000    1.0000
        1.0000    4.0000    1.0000         0
    
  3. 將第一列乘上 -1/5 加去第三列
    B(3,:) = B(3,:) - B(1,:)/5;
    得到新的 B 矩陣
        5.0000   -8.0000    3.0000         0
             0   12.4000   -3.4000    1.0000
             0    5.6000    0.4000         0
    
  4. 觀察 B(2:end,2) 之絕對最大值,發現是 b22 故不需交換。
  5. 將第二列乘上 -b32/22 加去第三列
    B(3,:) = B(3,:) - B(3,2)*B(2,:)/B(2,2);
    得到
        5.0000   -8.0000    3.0000         0
             0   12.4000   -3.4000    1.0000
             0         0    1.9355   -0.4516
    
  6. 以上就是對 B 做「列交換高斯消去法」的結果。 以下根據上述結果求解 x1, x2, x3.
  7. 則 x3 = b34/b33
    x(3) = B(3,4)/B(3,3)
    得到 -0.2333
  8. 代入前一列,得到 x2 = (b24 - b23*x3)/b22
    x(2) = (B(2,4) - B(2,3)*x(3))/B(2,2)
    得到 0.0167
  9. 再代入前一列,得到 x1 = (b14 - b12*x2 - b13*x3)/b11
    x(1) = (B(1,4) - B(1,2)*x(2) - B(1,3)*x(3))/B(1,1)
    得到 0.1667
以上得到的數值解,和我們在 矩陣除法 那一節得到的答案一樣。

習題

  1. B=[7 5 5 3; 6 7 1 7; 4 1 4 1],對 B 做「列交換高斯消去法」。
  2. B=[17 11 7 1; 11 8 4 2; 7 4 3 3],對 B 做「列交換高斯消去法」。
  3. B=[2 1 0 0 1; 1 2 1 0 1; 0 1 2 1 1; 0 0 1 2 1], 對 B 做「列交換高斯消去法」。
[BCC16-B]
單維彰 (2003/03/11) --- 04/03/19 (單)
[Prev] [Next] [Up]