跳转到内容

数值方法/线性方程组的解

来自维基教科书,开放的书籍,开放的世界

定义和基础

[编辑 | 编辑源代码]

线性方程组是指一组需要同时求解的线性方程。线性方程的形式为

其中个系数是常数,而是n个未知数。根据上面的符号,线性方程组可以表示为

该系统包含个线性方程,每个方程有个系数,并有个未知数,这些未知数必须同时满足这组方程。为了简化符号,可以使用矩阵符号重写上述方程

矩阵 的元素是方程的系数,,向量 的元素分别为 。在这个记号中,每行都构成一个线性方程。

超定和欠定系统

[edit | edit source]

为了使解 是唯一的,必须至少有与未知数一样多的方程。用矩阵表示法来说,这意味着 。但是,如果一个系统包含的方程比未知数多 (),则很有可能(不说是规律)根本不存在解。这样的系统被称为 **超定系统**,因为它们包含的方程比未知数多。它们需要特殊的数学方法来近似求解。最常用的方法是 **最小二乘法**,它旨在将试图求解系统时每个未知数产生的误差平方和最小化。这种问题通常出现在测量或数据拟合过程中。

示例
假设一个任意三角形:假设一个人用 的精度测量了所有三个内角 。此外,假设边 a、b 和 c 的长度是精确已知的。从三角学可知,使用余弦定理,如果已知所有其他边和角,则可以计算角或边的长度。但众所周知,平面三角形的内角之和始终为 。因此,我们有三个余弦定理和角之和规则。这总共构成了四个方程和三个未知数,形成了一个超定问题。

a triangle

另一方面,如果 ,则会出现问题,即解不是唯一的,因为可以自由选择一个未知数。同样,也存在数学方法来处理这类问题。但是,这些方法在本课文中将不予介绍。

本章主要集中讨论 的情况,除非另有说明,否则默认此条件成立。

线性系统的精确解

[编辑 | 编辑源代码]

用线性代数求解方程组 很容易:只需从左侧乘以 ,得到 。但是,求解 (除了平凡的情况)非常困难。以下部分将介绍几种求解该问题精确解(直到舍入误差)的方法。

对角和三角形系统

[编辑 | 编辑源代码]

对角矩阵只有主对角线上有元素

在这种情况下, 的逆矩阵就是一个对角矩阵,其元素为逆元素,即

因此,对角系统的解为 ,这很容易计算。

上三角系统定义为

而下三角系统定义为

回代法是求解上三角系统的过程

另一方面,前代法是对下三角系统执行相同过程。


高斯-约旦消元法

[edit | edit source]

该方法不求解 ,而是依赖于行操作。根据线性代数的定律,方程组的行可以乘以一个常数而不改变解。此外,行之间可以相加和相减。这引出了改变方程组结构的想法,使得 具有便于求解 的结构。其中一个结构是如上所述的对角矩阵。

高斯-约旦消元法将矩阵 转换为对角形式。为了简化过程,人们通常使用一种改进的方案。首先,将矩阵 和右端向量 组合成增广矩阵


为了说明,考虑一个易于理解但有效的算法,它可以由四个基本部分构成

  • gelim:主函数遍历一个简化方程组的堆栈,通过一系列部分解,一次构建一个变量的完整解。
  • stack:重复调用reduce,生成一个 堆栈,包含简化方程组,从小到大排序(例如,包含 2 个元素,如 <ax = b>)。
  • solve:在给定简化方程组和部分解的情况下,求解一个变量。例如,给定简化方程组 <aw bx cy = d> 和部分解 <x y>,则 w = (d - bx - cy)/a。现在,部分解 <w x y> 可用于下一轮,例如 <au bv cw dx , e>。
  • reduce:从顶部获取第一个方程并将其压入堆栈;然后生成一个残差 - 简化矩阵,通过从剩余较下方程的对应元素中减去第一个原始方程的元素,例如 b[j][k]/b[j][0] - a[k]/a[0]。正如您所见,这通过将一个元素从一个元素中减去来消除每个较下方程的第一个元素,并且只需要保留剩余的元素 - 最终,残差是一个输出矩阵,其行和列比输入矩阵少一行和一列。然后将其用作下一次迭代的输入。

需要注意的是,乘法也可以用作除法的替代;但是,对于较大的矩阵(例如 n=10),这会产生级联效应,导致产生 NAN(无穷大)。从统计学上看,除法具有将简化矩阵归一化的效果 - 生成均值更接近零且标准差更小的数字;对于随机生成的数据,这会生成具有接近 +-1 的条目的简化矩阵。


继续的内容仍待撰写

正如它所示,将方程组转换为完全对角形式并非必要。将其转换为三角形形式(上三角或下三角)就足够了,因为然后可以通过反向或正向替换分别求解它。

LU分解

[edit | edit source]
本节内容待撰写

线性方程组的近似解

[edit | edit source]
本节内容待撰写

雅可比迭代法

[edit | edit source]

这是一个迭代方案。

高斯-赛德尔迭代法

[edit | edit source]
本节内容待撰写
10v+w+x-2y+z=-1
v-20w-2x+y+z=20
v+w+10x-y-z=-1
-v-2w+x+50y+z=2
v+w+x+y+100z=-1 
;find result:

超松弛迭代法 (SOR)

[编辑 | 编辑源代码]

SOR 是连续超松弛法的缩写。它是一种迭代方案,使用松弛参数 ,并且是 特殊情况下的高斯-赛德尔方法的推广。

给定一个具有未知数 xn 个线性方程的方阵系统

其中

那么 A 可以分解为一个 对角 分量 D,以及 严格的下三角和上三角 分量 LU

其中

线性方程组可以改写为

其中ω > 1为常数。

逐次超松弛法是一种迭代技术,它使用表达式右侧的x先前值求解左侧的x。用分析方法表示,可以写成

但是,利用(D+ωL)的三角形式,可以使用前向替换按顺序计算x(k+1)的元素

松弛因子的选择并不容易,它取决于系数矩阵的性质。对于对称正定 矩阵,可以证明0 < ω < 2将导致收敛,但我们通常更关注更快地收敛而不是仅仅收敛。

共轭梯度法

[编辑 | 编辑源代码]
本节内容待撰写

多重网格法

[编辑 | 编辑源代码]
本节内容待撰写

主页 - 数学书架 - 数值方法

华夏公益教科书