1. 线性方程组问题

形如:$\sum\limits_{i=1}^n a_ix_i=b$ 的方程即线性方程;由关于一系列未知变量 $x_1, x_2, ...x_n$的同时成立的线性方程的集合构成线性方程组,即:$\sum\limits_{i=1}^n a_{ki}x_i=b_k, (k=1,2,...m)$ 即为一个由关于n个未知量的m个线性方程所构成的线性方程组。 利用线性代数中矩阵和向量的一系列标记,可以将以上线性方程组写为:$$A_{m\times n}x_n=b_m,\quad或 Ax=b, \quad A = [a_{ij}] $$ 相当于 $m\times n$ 维矩阵A和 $n$ 维向量x的一次内积等于 $m$ 维向量b。其中A和b都是已知量,x为未知量,线性方程组问题就是求出可以使得方程成立的向量x。

线性方程组问题可以有很多种看法:可以看作是系数对于未知数的线性组合后形成 一列 新的数(b);也可以看作是未知数对于系数矩阵的列向量进行线性组合,形成 一个 新的列向量(b),因此如果要方程组有解,b一定要可以被系数矩阵A的列向量线性表出,换言之即 $b\in span(A)$ 。第二种看法对于理解第二部分解的存在唯一性是很有帮助的。

线性方程组问题及其数值解法在数值计算中有着基础而重要的地位。一方面,线性方程组本身就可以代表现实世界中的一大类模型,比如在小学初中课本上常常出现的给定预算规划购买方案等。另一方面,化曲为直的思想在数学的应用中常常表现为用线性在小范围内近似替代非线性,线性方程组问题能比较让人满意地通过数值方法解决可以说是讨论 非线性方程(组)问题 ,当然也包括 优化问题 的基本前提;而对于数值计算中可能更为常用的一些问题,包括 微(积)分方程边值问题 (大气和水体的流动、岩石圈振动、静电场或电磁波传播等)等,这一系列问题的多种解决方法无一例外以回归到解线性方程组(很多时候是大型甚至超大型,这也意味着解线性方程组的数值方法在实践意义上必须足够高效迅速)问题告终。因此线性方程组的数值解法是重要的基础。

2. 解的性质:存在/唯一性

除了 $b\in span(A)$ 以外,线性代数知识还给出任意线性方程组解 存在性 的普遍判别法:记系数矩阵为 $A$ ,增广矩阵为 $\tilde{A}$ ,若 $rank(A)=rank(\tilde{A})$ 则线性方程组存在解。

对于线性方程组的系数矩阵 $A_{m\times n}$ ,若 $m<n$ ,则为 欠定 方程组,即“条件不足”,若满足存在性条件,解一定不唯一;若 $m>n$ ,则为 超定 方程组,即“条件过剩”,即使 $A$ 已经列满秩,也总是存在一个空间,任意这一空间中的向量 $b$ 都能使得方程组无解。一般来讲在现实模型中,能够形成超定方程组的问题没有准确的解,但是可以通过最小二乘法或者其他优化方法获得残差最小的解。

当 $m=n$ 时,线性方程组的系数矩阵为方阵,在 $A$ 非奇异时,解有存在唯一性。 所谓 非奇异(Nonsingular) 是指以下四个等价条件:$$A^{-1}存在\quad \Leftrightarrow \quad det(A)\neq 0 \quad \Leftrightarrow \quad rank(A)=n \quad \Leftrightarrow \quad Az\neq 0, \forall z\neq 0$$  相反,任意违反一个条件(也就违反了所有四个条件)的矩阵均属奇异矩阵。

可以看出,当这四个等价条件满足时,由于 $A$ 的列向量已经构成了n维空间的一组基,$b\in span(A)$ 自动满足;类似地,因为矩阵的秩不能超过行/列维度,作为 $A$ 的扩充的增广矩阵 $rank(\tilde{A})=n$ 也自动满足,因此存在性无疑。另由于 $A$ 列向量线性无关,表出b的方法也唯一,因此方程组有唯一解。

3. 问题的性质:奇异性

奇异性的几何解释:线性方程组的每个方程均为n维空间中的一个平面(这里的平面指的是比空间维数少一维的集合,在二维空间中就是直线)。如果系数矩阵奇异,则行向量线性相关,那么也就是说存在一条行向量代表的平面,和其他行向量的一个线性组合所代表的平面,平行或者重合。线性方程组问题本身就是利用所有平面的交集来确定解的,若平面平行那么永无交集;若平面重合那么交集不唯一。

因此 当系数矩阵奇异时,考虑到b的变化,方程组要么无解(平行),要么有无穷多组解(重合)

奇异矩阵满足四个等价条件中的任意一条:$$A不可逆 \quad \Leftrightarrow \quad det(A)=0 \quad \Leftrightarrow \quad rank(A)<n \quad \Leftrightarrow \quad \exists z\neq 0,Az=0$$  然而对于线性方程组的数值求解而言,除了理论上就是奇异的矩阵不可计算以外, “接近奇异” 的矩阵也会给计算造成很大困难,甚至同样不可计算。几何图像表现为两个几乎平行的平面。如果将两个平面加上一定的厚度变成三维图像,则接近平行的平面将会有很大的一片交集区域,越接近平行问题越严重,这就相当于数值计算中遇到的问题。定量地考虑这个问题需要用到矩阵/向量的范数和矩阵的条件数。

向量的p-范数 定义式:$||x||_p=(\sum\limits_{i=1}^n|x_i|^p)^{1/p}$ 。任意范数满足:$$||x||\geq 0, 当且仅当x=0时取等(非负性),\quad ||ax||=|a|\cdot ||x||(标量乘法线性),\quad ||x+y||\leq ||x|| + ||y||(三角不等式)$$  n维空间的向量2-范数 $|x|=(\sum\limits_{i=1}^n|x_i|^2)^{1/2}$ 即一般说的欧几里得距离。其他常用的范数包括1-范数(向量的各分量绝对值和)和无穷范数(向量绝对值最大的分量)。三者之间有不等式关系:$$||x||_1\geq ||x||_2\geq ||x||_{\infty},\quad ||x||_1\leq \sqrt{n}||x||_2 \leq n||x||_{\infty}$$  范数定义的是某种意义上的 向量长度

矩阵的范数 定义式:$||A||=\max\limits_{x\neq 0} \frac{||Ax||}{||x||}$ 。矩阵范数定义的是矩阵对于维度适配的向量,按照p范数计算的 最大放大率 。特别地,对于1-范数和无穷范数,矩阵范数分别是最大列绝对值和,以及最大的行绝对值和。此外,矩阵范数的定义下也符合向量范数的三个性质(非负、标量线性乘法、三角不等式),此外还符合:$||AB||\leq ||A||\cdot ||B||,\quad ||Ax||\leq ||A||\cdot ||x||$ 。

最后, 线性方程组问题中 ,问题的 条件数 也可写为 矩阵的条件数 $cond(A)=||A||\cdot||A^{-1}||$ 。数值问题中,条件数(condition number)是问题条件(conditioning)好坏的量度,它的普遍定义是:解的相对扰动量/条件的相对扰动量,即当条件(输入)发生微小变化对解(输出)造成的变化。在一般的数值问题中,解的途径一般是反解而不是正向计算,总是控制条件的约束求得需要的解,因此只能够保证条件距离真实条件变化较小。条件数很大,意味着即使条件(输入)几乎完全符合要求,其解(输出)也有可能和真解差距很大。 条件数大则问题病态 ,难以求得真解; 条件数小则问题良态 。在线性方程组问题中,输入是 $A$ 和 $b$ ,输出是 $x$,因此条件数就表征了当前者发生微小变化时求得的解会如何变化:$$ A(x+\delta x)=b+\delta b,\quad A\delta x=\delta b,\quad cond(A)=||A||\cdot ||A^{-1}||$$

$$ cond(A)=(\max\limits_{x \neq 0}\frac{||Ax||}{||x||})\cdot (\max\limits_{\delta b \neq 0}\frac{||A^{-1}\delta b||}{||\delta b||})$$

$$cond(A)\geq \frac{||Ax||}{||x||}\cdot \frac{||A^{-1}\delta b||}{||\delta b||}=\frac{||b||\cdot ||\delta x||}{||x||\cdot ||\delta b||}=\frac{||\delta x||/||x||}{||\delta b||/||b||}$$  即 $(||\delta x||/||x||)/(||\delta b||/||b||)\leq cond(A)$ ,意味着cond(A)正是解的相对扰动/条件的相对扰动的上限。

4. 线性方程组的理论解法

线性代数给出了两种基本的解法:适用于 $A_{n\times n}$ 系数方阵的 克莱姆(Cramer)法则 ,和适用于解方阵/超定方程组(即 $m\geq n$ )、并且可以给出欠定方程组解空间的 高斯-约当(Gauss-Jordan)算法 。克莱姆法则可以说是一种书写符号解的方式,定义量:$D=det(a_{ij}), D_k=det(d_{ij}), (d_{ij}=a_{ij}, 若j\neq k; d_{ik}=b_i)$ ,并运用公式:$x_k=D_k/D$ 就可以计算出对应于一个满足唯一性条件的系数方阵的解。但是 除了可以作为理论法则,克莱姆法则不论是在手算过程中还是作为一种算法都非常没有优势 。高斯-约当算法本质也是一种算法而不是一种符号表达式,其主要思想是将稠密矩阵直接化为一个标准阶梯型矩阵,随着问题的扩大也需要更多的步骤,但 高斯-约当算法可操作性较好,可以用于手算很小规模的线性方程组问题,而且可以判断无解和无穷多解的情况(若存在非零非阶梯元素则无解,若存在零行则有无穷多解)当然也可以用于编程 。这两个方法任何一本线性代数的课本就讲得非常清楚,不再赘述。