新起点
线性方程组
2020-10-14 07:52:58

向量 · 向量空间  · 行列式  · 矩阵

标量 · 向量 · 向量空间 · 向量投影 · 外积 · 内积 · 数量积 · 向量积

矩阵 · 行列式 · 线性方程组 · 秩 · 核 · 迹 · 单位矩阵 · 初等矩阵 · 方块矩阵 · 分块矩阵 · 三角矩阵 · 非奇异方阵 · 转置矩阵 · 逆矩阵 · 对角矩阵 · 可对角化矩阵 · 对称矩阵 · 反对称矩阵 · 正交矩阵 · 幺正矩阵 · 埃尔米特矩阵 · 反埃尔米特矩阵 · 正规矩阵 · 伴随矩阵 · 余因子矩阵 · 共轭转置 · 正定矩阵 · 幂零矩阵 · 矩阵分解 (LU分解 · 奇异值分解 · QR分解 · 极分解 · 特征分解) · 子式和余子式 · 拉普拉斯展开 ·

线性空间 · 线性变换 · 线性子空间 · 线性生成空间 · 基 · 线性映射 · 线性投影 · 线性无关 · 线性组合 · 线性泛函 · 行空间与列空间 · 对偶空间 · 正交 · 特征向量 · 最小二乘法 · 格拉姆-施密特正交化 ·

线性方程组是数学方程组的一种,它符合以下的形式:

其中的 a 1 , 1 , a 1 , 2 {\displaystyle a_{1,1},\,a_{1,2}} 是× 矩阵,x是含有个元素列向量,b是含有 个元素列向量。

这是线性方程组的另一种记录方法。在已知矩阵 A {\displaystyle A} 和)的时候,方程组里面的每一个方程可以看成Oxy平面(正交直角坐标系)上的一条直线的方程。直线上的点的坐标就是满足这个方程的一组数。从这个角度看来,方程组的解就是所有这种直线的公共点。而若干条直线的公共部分要么是一条直线,要么是一个点,要么是空集,因此对应的,线性方程组的解要么有无穷个,要么恰好有一个,要么不存在。

如果未知数有三个,那么每一个方程则代表了三维空间里面的一个平面,而方程组的解集也就是一些平面的共同部分。所有解的集合可以对应一个平面,一条直线,一个点或空集。

这个问题的一般情况可以从线性空间的角度去分析,即我们可以将线性方程组的求解问题看成向量 b {\displaystyle \mathbf {b} } 个的话,可以想象每个方程代表了n维空间里面的一个超平面。而方程组的解就是所有超平面的公共点。

齐次的线性方程组是指向量 b = 0 {\displaystyle \mathbf {b} =0} 纵列换成向量b之后得到的矩阵。

可以看出,这些表达式只有在 D = det ( A ) {\displaystyle D=\det(A)} 存在并且不等于0的时候才是有意义的,这点只有在有效方程数等于未知数的个数的时候才能得到保证。

在实际运算中,当矩阵的维数较高时,计算行列式是非常困难的。也就是说,计算行列式的计算复杂度随维数的增长非常快,对于一个 n × n {\displaystyle n\times n} 的矩阵,用初等的方法计算其行列式,需要的计算时间是 O ( n ! ) {\displaystyle O(n!)} (n的阶乘)。因此,克莱姆法则在实际计算中并未被采用。其意义仅仅在于出现在教材上,用以说明好的数值方法的重要性。

经典的求解线性方程组的方法一般分为两类:直接法和迭代法。前者例如高斯消元法, LU分解等,后者的例子包括共轭梯度法等。这些方法的计算复杂度在可以接受的范围内,因此被广泛采用。例如,高斯消元法的复杂度为 O ( n 3 ) {\displaystyle O(n^{3})} .一般来说,直接法对于阶数比较低的方程组(少于20000至30000个未知数)比较有效;而后者对于比较大的方程组更有效。在实际计算中,几十万甚至几百万个未知数的方程组并不少见。在这些情况下,迭代法有无可比拟的优势。另外,使用迭代法可以根据不同的精度要求选择终止时间,因此比较灵活。在问题特别大的时候,计算机内存可能无法容纳被操作的矩阵,这给直接法带来很大的挑战。而对于迭代法,则可以将矩阵的某一部分读入内存进行操作,然后再操作另外部分。

现实中的问题大多数是连续的,例如工程中求解结构受力后的变形,空气动力学中计算机翼周围的流场,气象预报中计算大气的流动。这些现象大多是用若干个微分方程描述。用数值方法求解微分方程(组),不论是差分方法还是有限元方法,通常都是通过对微分方程(连续的问题,未知数的维数是无限的)进行离散,得到线性方程组(离散问题,因为未知数的维数是有限的)。因此线性方程组的求解在科学与工程中的应用非常广泛。

许多具体的应用会得到结构比较特别的线性方程组,比如用差分方法和有限元方法离散微分方程后通常会得到三对角或五对角的方程组,网络问题有时会得到对称的线性方程组( A = A T {\displaystyle A=A^{T}} ),因此除了通用的线性方程组求解器,在一些专业领域,研究人员们也开发了适用于特定问题的求解器,比如适用于稀疏矩阵的求解器,适用于三对角矩阵的求解器,适用于对称矩阵的求解器等。

由于线性方程组的求解是一个非常普遍的问题,在多年的科学与工程实践中,科学家和工程师们积累很多高效率的线性方程组求解器,例如:LAPACK、BLAS等。这些软件中,许多可以可以在NetLib免费获得。LAPACK和BLAS在大多数Linux的发行版本中都已经预装。目前LAPACK有Fortran(包括90和77版本)、C、C++等几个语言的版本。利用LAPACK和BLAS中的子程序,Matlab对这些线性方程组求解器进行封装。用户不需要选择求解器的类型和问题的类型,Matlab可以根据对矩阵的分析自动选择合适的求解器。

上面讲的是线性方程组的数值解法。对于比较小的线性方程组,求得符号解是可能的。常用的软件有Mathematica, Maple等。在某些领域的研究中,这种需要并且可能求符号解(精确解)的情况偶尔会遇到。未知数的个数一般限制在几十个左右。显然,符号解在对于实际中遇到的有几百万个未知数的问题是无能为力的,比如,大型结构,天气预报,湍流模拟等问题中得到的线性方程组。



网站公告: