GaussElimination 高斯消元法

问题

用高斯消元法(Gauss Elimination)求拥有唯一解的线性方程组。

可逆矩阵

对于nn阶方阵AA,存在nn阶方阵BB使得

AB=BA=EAB = BA = E

其中EE是单位矩阵,称AA是可逆矩阵或非奇异矩阵(反之不存在的矩阵为不可逆矩阵或奇异矩阵),BBAA的逆矩阵,记作A1=BA^{-1} = B

初等变换

对于矩阵AA

(1)(1) 用非零常数kkk0k \neq 0)乘AA的某行/列的每个元素;

(2)(2) 互换AA的某两行/列;

(3)(3)AA的某行/列元素的kk倍加到另一行/列;

上面三种操作是矩阵的三种初等变换,分别称为初等倍乘、初等互换、初等倍加行/列变换。

由单元矩阵经过一次初等变换得到的矩阵称为初等矩阵,分别是

(1)(1) 倍乘初等矩阵,如

E2(k)=[1000k0001]E_{2} (k) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & k & 0 \\ 0 & 0 & 1 \end{bmatrix}

其中E2(k)E_{2} (k)表示单位矩阵EE的第22行/列乘kkk0k \neq 0)倍得到的矩阵。

(2)(2) 互换初等矩阵,如

E12=[010100001]E_{12} = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}

其中E12E_{12}表示单位矩阵EE的第11行与第22行(或第11列与第22列)互换得到的矩阵。

(3)(3) 倍加初等矩阵,如

E31(k)=[010100001]E_{31} (k) = \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}

其中E31(k)E_{31} (k)表示单位矩阵EE的第11行/列的kk倍加到第33行/列得到的矩阵。

若矩阵AA经过有限次初等变化变成矩阵BB,则称AABB等价,记作ABA \cong B。若A[ErOOO]A \cong \begin{bmatrix} E_{r} & O \\ O & O \end{bmatrix},则称后者为AA的等价标准形。

矩阵的秩

nnmm列的矩阵AnmA_{nm}中存在rr阶子式不等于00,且所有r+1r + 1阶子式(存在的话)都等于00,则称矩阵AA的秩为rr,记作r(A)r(A)。特别的,零矩阵的秩规定为00。其中,在矩阵AnmA_{nm}中任取kk行与kk列(km,knk \leq m, k \leq n)组成的kk阶行列式为AnmA_{nm}的一个kk阶子式。

线性方程组

线性方程组

{a11×x1+a12×x2++a1m×xm=b1a21×x1+a22×x2++a2m×xm=b2an1×x1+an2×x2++anm×xm=bn\begin{cases} a_{11} \times x_1 + a_{12} \times x_2 + \dots + a_{1m} \times x_m = b_1 \\ a_{21} \times x_1 + a_{22} \times x_2 + \dots + a_{2m} \times x_m = b_2 \\ \cdots \\ a_{n1} \times x_1 + a_{n2} \times x_2 + \dots + a_{nm} \times x_m = b_n \end{cases}

可以表示为nnmm列的矩阵AA,第ii行第jj列的元素为aija_{ij}。设X=[x1,x2,,xm]X = [x_1, x_2, \dots, x_m ]是线性方程组的解,B=[b1,b2,,bn]B = [b_1, b_2, \dots, b_n]是线性方程的右边一列系数向量。一般简写作AX=BA \cdot X = B

(AB)=[a11a12a13a1ma21a22a23a2ma31a32a33a3man1an2an3anmb1b2b3bn](A \mid B) = \begin{bmatrix} \begin{array} {c|c} \begin{matrix} a_{11} & a_{12} & a_{13} & \dots & a_{1m} \\ a_{21} & a_{22} & a_{23} & \dots & a_{2m} \\ a_{31} & a_{32} & a_{33} & \dots & a_{3m} \\ \quad & \quad & \dots & \quad & \quad \\ a_{n1} & a_{n2} & a_{n3} & \dots & a_{nm} \end{matrix} & \begin{matrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{n} \end{matrix} \end{array} \end{bmatrix}

上面的线性方程组可以写成增广矩阵

A=[a11a12a13a1ma21a22a23a2ma31a32a33a3man1an2an3anm]B=[b1b2b3bn]A = \begin{bmatrix} a_{11} & a_{12} & a_{13} & \dots & a_{1m} \\ a_{21} & a_{22} & a_{23} & \dots & a_{2m} \\ a_{31} & a_{32} & a_{33} & \dots & a_{3m} \\ \quad & \quad & \dots & \quad & \quad \\ a_{n1} & a_{n2} & a_{n3} & \dots & a_{nm} \end{bmatrix} \quad B = \begin{bmatrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{n} \end{bmatrix}

增广矩阵的左边部分是线性方程组中的矩阵AA,右边部分是线性方程组中的系数向量BB。增广矩阵是一个n×(m+1)n \times (m+1)的矩阵。

高斯消元法的数学含义在于通过初等变化,将线性方程组对应的增广矩阵变化为只有rr行不全为00的矩阵(其中rr为增广矩阵的秩),形如

[c11c12c13c1rc1m021c22c23c2rc2m031032c33c3rc3m0r10r20r3crrcrm0n10n20n30nr0nmb1b2b3br0n]\begin{bmatrix} \begin{array} {c|c} \begin{matrix} c_{11} & c_{12} & c_{13} & \dots & c_{1r} & \dots & c_{1m} \\ 0_{21} & c_{22} & c_{23} & \dots & c_{2r} & \dots & c_{2m} \\ 0_{31} & 0_{32} & c_{33} & \dots & c_{3r} & \dots & c_{3m} \\ \dots \\ 0_{r1} & 0_{r2} & 0_{r3} & \dots & c_{rr} & \dots & c_{rm} \\ \dots \\ 0_{n1} & 0_{n2} & 0_{n3} & \dots & 0_{nr} & \dots & 0_{nm} \end{matrix} & \begin{matrix} b_{1} \\ b_{2} \\ b_{3} \\ \dots \\ b_{r} \\ \dots \\ 0_{n} \end{matrix} \end{array} \end{bmatrix}

经过变换后,不全为00的行有rr行,全为00的行有nrn - r行。当r=nr = n时,线性方程组有唯一解,否则有通解。

本问题只考虑r=nr = n时有唯一解的线性方程组的解法。

数学复习全书(2013年李永乐李正元考研数学 数学一) - 第二篇 线性代数

源码

GaussElimination.h

GaussElimination.cpp

测试

GaussEliminationTest.cpp

Last updated