数值模拟导论-第三讲 求解线性系统的基本方法 雅克比·怀特 感谢Deepak Ramaswamy, Michal Rewienski,Karen Veroy and Jacob White 解的存在和唯一性 高斯消元法 LU分解 对角元和等比级数 逐步逼近法 适应条件 摘要 应用范围 SMA-HPC ?2003 MIT ·无电源或刚性支承 ·对角和严格对角占优矩阵 ·n×n方阵 线性方程 SMA-HPC ?2003 MIT 要求加权变量x,使得矩阵M各列的加权和等于右边的b。 线性方程 SMA-HPC ?2003 MIT 疑问解答 ·给定Mx=b -这个方程是否有解? -解是否唯一? ·看是否有解? 存在一组变量x1,…..xn,使得: 由此看出:只有当b在由M各列组成 的向量空间内,解才存在。 11 2 2 ... NN x MxM xM b+++ = nullnull null 11 2 2 ... NN xM xM x M b+++ = nullnull null 线性方程 SMA-HPC ?2003 MIT 疑问解答续 ·解是否唯一? 假设存在非零的变量,使得 又如果,则M(x+y)=b。 由此可见:当且仅当矩阵M的各列向 量线性无关,方程解唯一。 11 2 2 ... NN yM yM y M b+++ = nullnull null 11 2 2 ... NN yM yM y M b+ ++ = nullnull null 1 ,, n yy… 线性方程 SMA-HPC ?2003 MIT 疑问解答续 方阵 ·给定,其中M为N*N方阵 -如果对任意给定的b,方程均有解,那么对每一 个b所对应的解都是唯一的。 因为对任意的b都有解,那么矩阵M列向量所组成的 向量空间必定是N维向量空间。又因为矩阵M有N 列,所以矩阵M的列向量必定线性无关。 各列向量相互线性不相关的方阵称之为非奇 异阵。 高斯消元基础 SMA-HPC ?2003 MIT 重要工具 用高斯消元法解线性方程 Mxb= ·一种“直接”的方法 有限步求准确解(不计 舍入误差)。 ·求解增广矩阵的精确解 ·计算所消耗的机时。 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 3*3方阵 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 解题思路 用矩阵的第一行消去第二和第三行的x 1 1 x 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 矩阵形式 乘子 对角元 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 消去第三行中的X2 乘子 对角元 高斯消元基础 SMA-HPC ?2003 MIT 举例说明 符号简化表示 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 消去第三行的x2 乘子 对角元 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 形成的三角阵 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 右边向量的变化 高斯消元法基础 SMA-HPC ?2003 MIT 举例说明 组合各部分 LU分解基础 SMA-HPC ?2003 MIT 解方程 Mxb= 第一步 第二步消元过程 解方程 Lyb= 第三步回代过程 解方程 Ux y= 回顾线性代数我们可以知道,一个矩阵A可以用高斯消去法分解成一个下三角阵和一个 上三角阵乘积的形式。高斯消去法的基本思想是用第一行消去除第一行外所有行中的 x1,然后用第二行消去除第一,二行外所有行中的x2,依此类推,从而将系统转化成为 上三角矩阵。在这里我们需要了解更多的关于高斯消去的知识。 LU分解基础 SMA-HPC ?2003 MIT 解方程 Mxb= 第一步 第二步消元过程 解方程 Lyb= 第三步回代过程 解方程 Ux y= 回顾线性代数我们可以知道,一个矩阵A可以用高斯消去法分解成一个下三角阵和一个 上三角阵乘积的形式。高斯消去法的基本思想是用第一行消去除第一行外所有行中的 x1,然后用第二行消去除第一,二行外所有行中的x2,依此类推,从而将系统转化成为 上三角矩阵。在这里我们需要了解更多的关于高斯消去的知识。 LU分解基础 SMA-HPC ?2003 MIT 解三角矩阵 矩阵特点 第一个方程只有y1一个未知量第二 个方程只有y1和y2两个未知量 LU分解基础 SMA-HPC ?2003 MIT 解三角矩阵 算法 解三角矩阵方程是直接的但又是费时的。y1可以用一个除法运算直接求得,y2可以用一 乘法,一个减法,一个除法求得。一旦求得yk-1,yk可以由k-1步乘法,k-2步加法,一 减法和一个除法求得。算法的运算数量是: N除法+0加/减+1加/减+、、、、N-1加/减+0乘法+1乘法+………N-1乘法 注释:求y1 求y2 求yn求y1 求y2 求yn =(N-1)(N-2)加/减+(N-1)(N-2)乘+N除 =N 2 步 LU分解基础 SMA-HPC ?2003 MIT 分解 图片 上图便是LU分解的图形表示。第一步,用第一个方程消去第二到第四方程中的x1。这一 过程我们用除第一行外的各行分别减去第一行乘以某个缩放因子,从而使系数a21, a31,a41变为零。再用缩放因子(又称之为乘子)代替这些零位。对于第二行,乘子是 a21/a11,因为第二行减去第一行乘以a21/a11,a21位刚好为零。由于在消去过程中 a22,a23,a24的值也会随之改变,因此我们将他们变成蓝色。同样在消去a31和a41的 过程中,a31和a41也被他们的乘子所代替。在这一过程中第三行其余的位置的值也会随 之改变,因此也将他们变为蓝色。 用同样的方法处理第二行。计算消去第三行和第四行中x2的乘子,并且用这些乘子 代替出现的零。注意在消去过程中改变的量,将他们改为绿色。最后一步,便是用第三 行消去第四行中的x3,更新第四行的各个位置的值,并且将a44变为粉红色。 我们可以看到乘子在代替矩阵中的零的位置之后,在消去过程中他们的值并没有改 变。 LU分解基础 SMA-HPC ?2003 MIT 分解 算法 for i=1到n-1 { 每一行 for j=i+1到n { 每一要消去的目标行 ji ji ii M M M = M ii 为对角元 for k=i+1到n { 对角元后面的元素 jk jk ji jk M MMM← ? 乘子 } } } SMA-HPC ?2003 MIT 分解 对角元为零 LU分解基础 第i步 第i行 第j行 如果Mii=0怎么办?不能得到 ji ii M M 做一下简单变形(部分对角元) 0 0 ii ii If M find M j i = ≠ > 第j行和第i行交换。 LU分解基础 SMA-HPC ?2003 MIT 分解 零对角元 两重要定理 1)只有当M为非奇异矩阵时列主元法(交换行)才 能有效。 2)对严格对角占优矩阵LU分解将不会产生零对角 元。 定理:在对严格对角占优的矩阵进行高斯消元时 不会产生零对角元。 证明:1)求出第一步消元后的矩阵。 2)考察(n-1)×(n-1)的次矩阵。 仍然是完全对角占优矩阵。 第一步 第一步消元后的第二行 由此得出 LU分解基础 SMA-HPC ?2003 MIT 数值问题 小对角元 特例 我们能够解释这种现象吗? 为了求出精确解,我们进行第一步消元: 出 第二步回代: 求出: 在浮点运算中 LU分解基础 SMA-HPC ?2003 MIT 数值问题 小对角元 浮点运算的一个性质 双精度数 主要问题: 结论: 避免大小数之间相加减 符号位 有效数位8 LU分解基础 SMA-HPC ?2003 MIT 数值问题 小对角元 回过头来看这个例子 LU分解基础 SMA-HPC ?2003 MIT 数值问题 小对角元 列主元法减小误差 如果 max ii ji ji M M > < 那么第i行和最大的 ji M 所在行交换 可以看出乘子变小了这一项被圆整 列主元法是怎么起作用的应看下面: 求得 我们知道不用列主元法时是 ,圆整为 右边的数值3被圆整时忽略掉了,而现在他还保 留着。继续回代过程: LU分解基础 SMA-HPC ?2003 MIT 数值问题 小对角元 如果在LU分解过程中,矩阵是对角占优或采 用了列主元法来减小舍入误差那么存在以下的特 点: 1)乘子总是最小的。 2)LU因子各位上的最大值将小于等于原始矩阵各 位最大值的 (1) 2 n? 倍 列主元法是怎么起作用的应看下面: 求得 我们知道不用列主元法时是 ,圆整为 右边的数值3被圆整时忽略掉了,而现在他还保 留着。继续回代过程: 逐步逼近法 SMA-HPC ?2003 MIT 实例 数据表 用一个N次的多项式来近似表示数据: () 2 01 2 ... n n ft t t tα αα α=++ ++ 多项式插值 逐步逼近法 SMA-HPC ?2003 MIT 实例 矩阵形式 逐步逼近法 SMA-HPC ?2003 MIT 实例 1 x 在我们用一个高次的多项式函数来逼近曲线t时。当数据需要一个100次的多项式 来逼近时,我们需要大量的系数来逼近高阶系统,而不是用一两个系数。这里主 要是考虑到问题的精度,不久我们将会学习到。 逐步逼近法 SMA-HPC ?2003 MIT 扰动分析 误差范数 1 x 向量的范数 二范数 2 2 1 n i i xx = = ∑ 一范数 1 1 n i i xx = = ∑ 无穷范数 max i i xx ∞ = 正方形 单位园 逐步求解法 SMA-HPC ?2003 MIT 扰动分析 误差范数 1 x 矩阵的范数 向量导致的误差范数 1 max max xx Ax A Ax x = == 由矩阵A引起误差的范数的最大值等于x被A放大的最大倍数 简单范数的计算 1 1 max n ij j i AA = == ∑ 最大列和 1 max n ij i j AA ∞ = == ∑ 最大行和 2 A = 不易计算 逼近求解法 SMA-HPC ?2003 MIT 扰动分析 1 x 扰动计算 ( )( ) null LU x M MxxMxMxMxMxbδδ δδδδ++=+++= nullnullnullnullnullnullnullnullnullnull 实际值 分解舍入误差的扰动误差 因为Mx-b=0 所以 ( ) ( ) 1 M xMxx xMMxxδ δδδ δδ ? =? + ? =? + 取范数 1 1 xMM Mxx M δ δδ ? ≤+ 其中与误差相关的量为 1 xM MM xx M δδ δ ? ≤ + nullnullnullnullnull 条件数 由线性代数学我们知道解x的变化范围与原始的变化范围之间有一个与矩阵 M有关的倍数,这个倍数是 他被习惯的称之为条件数,由于条件数是基于范数,因此不存在它的准确 值。而是奇异矩阵M的一个比值系数。 奇异矩阵超出本课程的考虑范围,如果想了解请咨询Trefethen或Bau. 逐步逼近法 SMA-HPC ?2003 MIT 扰动分析 1 x 更清晰的几何逼近法 12 M MM ?? = ?? nullnull 解Mx=b我们会得到 11 2 2 xM xM b+ = null null 正交列逼近 当用向量来逼近时很难确定M1和与之对应的M2的值 逐步逼近法 SMA-HPC ?2003 MIT 几何分析 多项是插值 1 x 多项式值得级数接近 线性 问题行的缩放比例是否减小等比级数? 行的缩放比例是否减小了条件数? 定理:如果使用浮点运算,当进行行缩放时在某种意义上不会减少等比级数。 没有舍入误差 条件数 解的存在和唯一性 高斯消元法 LU分解 对角元和等比级数 逐步逼近法 适应条件 总结