数学中的线性方程组是由一组或多组涉及相同未知数的线性方程构成的集合。可以表示为。其中为线性方程组的系数。线性方程组的矩阵表示为[1][4]。
线性方程组的解通常分为无解、有唯一解和有无穷多解三种情况,可以根据其系数矩阵化简得到的阶梯形矩阵判断。数学上,可以用克莱姆法则或矩阵消元法求解[1][2],无解的方程如果是超定方程组,可以通过最小二乘法求近似解。对于阶数较大的线性方程组,可以通过迭代法求解[6][5]。在几何上,方程组的解是方程所表示的点、线、面的相交部分,以向量表示,就是向量可以落在的列向量张成的空间中[7]。
线性方程组构成了线性代数的基础,这门学科在现代数学的多个领域都有广泛应用。求解这些方程的计算方法在数值线性代数中占据重要地位,对工程、物理、化学、计算机科学和经济学等领域有着显著影响[2]。非线性方程组可以通过线性化近似为线性系统,这是一种在构建数学模型或进行计算机模拟时简化问题的有效方法[8][9]。有程序包LAPACK、BLAS、Matlab等可以帮助计算高阶的线性方程组[10][11][12]。
定义
线性方程是包含变量的形如的方程,其中b与系数是实数或复数,通常是已知数,下标n可以是任意正整数。线性方程组是由一个或几个包含相同变量的线性方程组成的[2]。表示如下。
当等于零时,将该方程组称为齐次线性方程组;当不全为零时,将该方程组称为非齐次线性方程组或一般线性方程组[4]。
一个线性方程组包含的主要信息可以表示如下。设
,,,
则线性方程组可表示为矩阵形式[4],称这样的方程为矩阵方程[2]。称为系数矩阵。矩阵的维数说明它包含的行数和列数。若m、n是正整数,矩阵是一个有m行n列的数的矩形阵列。
包含系数和的矩阵称为线性方程组的增广矩阵,表示为
[2]。
线性方程组的解
线性方程组的解是一组数,用这组数分别代替时,所有方程的两边相等。方程组所有可能的解的集合称为线性方程组的解集,若两个线性方程组有相同的解集,则这两个线性方程组称为等价的[2]。
线性方程组的解有如下三种情况:无解、有唯一解、有无穷多解。若方程组有解,则称这个方程组是相容的,否则为不相容[2]。
根据方程组的系数矩阵,可以简单判断线性方程组解的情况,这种方法称为高斯(Gauss)—约当(Jordan)算法,求解流程如下图所示。假设阶梯型方程组有n个未知量,它的增广矩阵有r个非零行,有n+1列,若阶梯型方程组中出现“(b是非零数)”这种方程,则方程组无解。若不出现“(b是非零数)”这种方程,此时,把经过初等变换化成简化行阶梯形矩阵,也有r个非零行,从而有r个主元。当时,方程组有唯一解。当时,方程组有无穷解。非阶梯形方程组可以经过初等变换转化为阶梯形[1]。
根据线性方程组未知量的个数n与方程的个数m的关系,可将方程组分类为:适定方程组 ():存在着唯一的一组解; 欠定方程组 ():方程有无穷解;超定方程组 ():方程无解,但可以求出其近似解[5]。

克莱姆法则
一个包含n个未知数,n个方程的线性方程组
其系数行列式记为,即
克莱姆(Cramer)法则:如果线性方程组的系数矩阵的行列式,则线性方程组有解,并且解是唯一的。此时。其中是把行列式中第j列元素依此用方程组右端的常数代替后得到的n阶行列式,即[4]。
克莱姆法则包含三个结论:方程组有解,解是唯一的,解由上述方法给出[4]。用克莱姆法则求解线性方程组需要方程的个数等于未知量的个数、系数矩阵的行列式不等于零。理论上需要计算个n阶行列式,通常工作量较大,所以该法则很少用于具体求解[6]。
线性方程组的初等变换
把一个方程的倍数加到另一个方程上。互换两个方程的位置;用一个非零数乘某一个方程。
以上三种变换称为线性方程组的初等变换。经过一系列初等变换变成的简化阶梯形方程组与原线性方程组同解[1]。线性方程组的初等变换对应系数矩阵的变换初等行变换。即方程组,经过初等变换化为,则与同解[4]。
消元法
将线性方程组经过初等变换,消元成简化阶梯型方程组,可以求得线性方程组的解。对于齐次线性方程组,常将经过初等变换化为易于求解的,然后解方程组。对于非齐次线性方程组,可以将增广矩阵进行初等行变化,然后求解[4]。
以如下方程为例,演示线性方程组的具体求解[4]。
②写出以为系数矩阵的线性方程组并移项得:
取两组数解得一个基础解系:
,
松弛求解
当方程个数大于未知量个数时,方程称为超定方程组,无解,但可以求解近似解。在把方程数据进行拟合时,常遇到此类问题。设是矩阵,是给定的m维向量,寻求一个n维向量使得。更精确地讲,选择以极小化残量范数的平方,。这就是最小二乘问题,可以通过QR分解法(QR Decomposition)求解[6][5]。
数值分析方法
在实际应用中,许多大型线性方程组来自差分化偏微分方程,消元法所需的工作量和储存量都是不够的,因此人们开发了迭代法来简化运算。对称线性方程的求解以简单迭代和共轭梯度算法为代表。还有广义最小残量法(Generalized minimal residual method,GMRES)[13]、双共轭梯度稳定法[14](Biconjugate gradient stabilized method,BiCGSTAB)等方法用于求解非对称线性方程组[6]。
对线性方程直接进行求解并不十分适合,一个好的近似解需要很多次迭代。通常可以用预优方程组来代替原来的方程组,并把迭代法用于新的方程组。不需要构造矩阵,只要能计算和给定向量的乘积[6]。
称为预优矩阵,可以使用的对角矩阵和的上(或下)三角矩阵等易于求解的矩阵。或通过不完全Cholesky分解等方法构造预优矩阵[6]。
简单迭代
给定初始猜测,计算残量,解求出。对置,计算,解求出[6]。
按照预优矩阵的不同,当等于的对角线矩阵,称它为Gauss-Seidel迭代法;当,式中是的对角线矩阵,是的严格下三角矩阵,是为加速收敛选择的参数,此时称为逐次超松弛(Successive Over Relaxation,SOR)方法[6][15]。
共轭梯度算法
共轭梯度(Conjugate Gradient,CG)算法通常用于求解对称正定问题。给定初始猜测,计算,并置。对于计算。置,这里。计算。置,这里[6][16]。
共轭梯度法在n步内总能求出精确解。因此这种算法实际上被认为是解线性方程组的直接方法。在此基础上,对具有对称正定预优矩阵的对称正定问题,可以用预优共轭梯度(Preconditional Conjugate Gradiem,PCG)算法求解[6]。
几何解释
在解析几何的意义上,一个方程可以表示为一个直线、平面或一个超平面。每个方程的解都在其对应的直线、平面或超平面上,一个方程组的解就在各个方程组的解相交的交点、平面或超平面的交线上[7]。
以二元一次方程组为例,线性方程组三种解的情况列于下图[2]。



对于超定方程组,以二元一次方程组为例,用几何意义表示其近似解,为最接近各个交点、误差最小的一点[6]。

线性方程组表示形式的几何意义
从向量角度,如果对线性方程组引入列向量,那么原线性方程组可以改写为向量方程组。向量方程求解的意义就是求出向量被向量组线性表示的系数 ,向量方程是否有解就是向量能否被向量组所线性表示,线性表示系数唯一就是方程组有唯一解,不唯一则表示方程组有无穷多解[7]。
由矩阵线性变换的意义出发,解线性方程组就是寻找哪些向量可以被一个已知的矩阵变换为一个已知的向量。方程组有唯一解就是只有一个向量被变换为向量,有无穷多解就是可以有一个一根直线上的向量族或一个平面上的向量族被变换成向量[7]。
对于超定方程组,向量不在的列向量空间中,可以在列空间中找到替代向量求解,这个替代向量要求在误差要求的范围内可以接受。例如,可以选择向量向列空间投影得到的向量作为替代向量[7]。

消元法的几何解释
以二元方程组为例。对于方程组
从列向量的角度,重写方程组为向量方程:
,定义向量,,。将向量分别以的倍数放大或缩小后,两向量之和与重合,此时也就得到了方程的解[7]。

具体地,对于方程两边,如果同时点乘向量的正交向量,就可以消去项,也就消去了未知元。即得到,[7]。

同理,如果两边同时点乘向量的正交向量,可以消去未知元,可得,[7]。

应用
参考资料 17
- 参考 1
- https://www.amazon.com/Linear-Algebra-Its-Applications-Global/dp/1292351217/ref=pd_sbs_d_sccl_2_1/137-4526749-6651002?pd_rd_w=u4PlL&content-id=amzn1.sym.89676150-e513-422e-84a9-9c8b85f32b61&pf_rd_p=89676150-e513-422e-84a9-9c8b85f32b61&pf_rd_r=BRDV8X0BDFNN0ARVQ8SK&pd_rd_wg=apMvb&pd_rd_r=2cd2cab1-7118-46fd-a56e-6ae41d9e16d9&pd_rd_i=1292351217&psc=1
- 参考 3
- 参考 4
- 参考 5
- https://www.amazon.com/Numerical-Methods-Analysis-Implementation-Algorithms/dp/0691151229
- 参考 7
- 参考 8
- 参考 9
- Linear Algebra PACKage — lapack
- Basic Linear Algebra Subprograms — BLAS
- MathWorks — MATLAB
- 参考 13
- 参考 14
- 参考 15
- 参考 16
- 计算机数学(Computer Mathematics) — Xin-YU Ou
