当前课程知识点:数值分析 > 第二章 解线性方程组的直接解法 > 2.6 误差分析(2)条件数 > 误差分析(2)条件数
上一节我们介绍了向量的范数
和矩阵范数的概念
目的是用来分析
在求解线性方程组
线性解的时候误差的大小
现在我们观察两个非常简单的线性方程组
这两个线性方程组的区别很小
右端项只差了一个0.00001
也就是说
如果把第一个方程看成是标准的方程
第二个方程看成是它一个有误差的方程
相当于它的右端项的最大的相对误差
是0.5乘以十的负五次方
但是我们观察一下它们的解
第一个方程的解是2和0
第二方程的解是1和1
解分量的相对误差为50%
所以我们可以看出来
这两个方程非常非常的接近
但是它们的却差得很远
我们可以从几何上去解释
这两个方程很接近
因为它只有两个未知数
所以可以表示为
平面上两条接近于平面的直线
说明这两条直线是近似平行的
它们有一个交点
当其中有一条直线稍微动一下的时候
这个焦点却变化得非常远
我们把这种当系数矩阵
或者是右端项有微小的扰动
而引起了解非常大的变化的情况
我们说这种方程组是病态的
那我们怎么样来判断一个方程组是病态的
还是 不是病态的
这个就需要用到条件数的概念
那条件数是怎么来定义的
我们通过来分析方程解的误差情况来看
条件数是怎样定义的
比方说
我们在解一个线性方程组的时候
右端项和系数矩阵都会有误差
我们把这个误差看成是右端项
和系数矩阵的扰动
我们看带有误差的情况
那么解是怎样变化的
原来的方程是Ax=b
扰动以后的方程
是a乘上x加δx等于b加δb
下面我们来分析一下
当右端项有扰动的时候
对解的影响是怎样的
当右端项有一个扰动δb的时候
x必然也会产生误差
我们把它记成δx
根据扰动后的方程跟原方程比较
我们可以给出x的误差
跟b的扰动项之间的关系
也就是δx等于A逆去乘上δb
然后我们再根据矩阵范数
和向量范数之间的关系
可以给出δx的范数是小于等于A逆
这个矩阵的范数和δb的范数
再根据原方程b等于A乘x
再根据向量范数和矩阵范数之间的关系
可以知道b的范数
是小于等于A的范数乘x的范数
根据这个关系
我们知道x的范数大于等于b的范数
除上矩阵A的范数
从而我们就可以知道x范数
的倒数是小于等于b的范数分之A的范数
我们把这两个不等式放到一起
就可以给出误差的相对误差限
和右端项的相对误差限之间的关系
误差的相对误差限就会小于等于A的范数
乘上A的逆矩阵的范数
这就表明当右端项有一个扰动的时候
解的相对误差是不超过右端项
相对误差的A范数乘上A逆范数的倍数
这说明这个倍数很重要
它来衡量这个误差是不是被放大了
我们下面再看一下
如果系数矩阵有扰动的时候
也就是说如果你的系数矩阵
有变化有误差的时候
对解的误差造成的影响是什么样的
我们也是来把原方程
和扰动后的方程组来解出来
我们把矩阵A的扰动记成δA
它所引起来解的误差记成δx
我们来分析一下它的
相对误差δx的范数
比上x的范数究竟多大
通过简单的计算
我们可以给出误差
和矩阵的扰动之间的关系
就是δx等于负的A的逆
乘上δA再乘上x加δx
那么在计算相对误差的时候
我们也可以用近似值去做分母
通过上面的等式
利用一下向量范数和矩阵范数的关系
我们可以给出δx的范数
是小于等于A幂的范数
去乘上δA的范数再乘上x加上δx
我们可以看到方程组解的相对误差限
和矩阵的相对误差限之间的关系
可以看出来也是被A的范数
和A逆的范数的乘积来控制的
那么这就是说这个系数非常的重要
我们就把这个系数给它拿出来
单独给它个名字就叫矩阵的条件数
因为我们在分析这个误差的时候
无论是右端项还是系数矩阵有扰动
最后这个误差都是由这个系数来控制的
基于它的重要
我们把它定义为条件数
所以条件数的定义就是
矩阵A的范数去乘上矩阵的逆矩阵的范数
这个是我们给出来的 刚才的分析结果
也就是说当右端项有扰动的时候
解的相对误差是小于等于条件数倍的
右端项的相对误差
当系数矩阵有扰动的时候
解的相对误差是小于等于条件数倍的
系数矩阵的相对误差
也就是说看这个误差是不是被放大
就要看这个条件数的大小
当然条件数小的
那么误差就不会被放大
条件数大的误差就会被放大
我们把条件数大的这种线性方程组
叫病态线性方程组
系数矩阵的条件数
实际上就刻画了线性方程组的一个状态
如果条件数越大
就说明它病态的越严重
我们从条件数的定义也可以看出来
它只跟系数矩阵有关系
而跟右端项是没有关系的
它是通过系数矩阵的范数
乘上它逆矩阵的范数来定义的
所以条件数
它也和矩阵的范数有关系
我们可以去求
无穷范数意义下的条件数
也可以去求一范数定义下的条件数
也可以求二范数定义下的条件数
那么我们看一个具体的例子
比方说给一个这样简单的
一个二乘二的方阵
我们看到第四个元素
其中有三个是一
第四个非常接近一
我们来求一下它的条件数
比方说我先把它的逆矩阵求出来
如果我去求它无穷范数的定义下的条件数
就需要去求A的无穷范数
和逆矩阵的无穷范数
无穷范数也叫做行范数
所以去求它行的一范数
我们可以看出这样求出来的条件数
大于四乘以十的五次方的
非常大
一般来说
如果系数矩阵两个向量行向量
或者列向量近似相关的情况下
它的条件数都比较大
对应的线性方程组就一定是病态方程组
实际上
在Matlab里边就有求条件数的命令
直接就是cond
后边你注明是哪个范数意义下的条件数
它就帮你求出哪个范数意义下的条件数
条件数有一些性质
对于任意的n阶的可逆矩阵A
条件数总是大于等于一的
这个主要就是根据矩阵范数
的相容性得来的
因为A乘A的逆是等于单位矩阵
单位矩阵的范数
就一定小于等于A的范数
乘上A幂的范数的乘积
所以说条件数一定是大于等于一的
对于任意的非零实数α乘上方阵A
那么它的条件数
是和A的条件数是一样的
因为α乘上A的范数
和α乘上A的逆矩阵的范数
正好是前面的系数是互为倒数的
相乘以后是一
A如果是正交矩阵
那么它的二范数是一
这个也很容易证明
下面我们看一个线性方程组
这个线性方程组的系数
有自己的特点
第一行是一 二分之一 三分之一
第二行是二分之一 三分之一 四分之一
第三行是三分之一 四分之一 五分之一
在计算机里面
我们是没有办法准确的表示这些分数的
就要需要用小数表示
在这里比方说
我只能把它表示成两位有效数字的小数
你就可以得到下面的这个线性方程组
我们可以把得到的近似的线性方程组
把它的解求出来
两个线性方程组的解作一个比较
大家可以看到这两个组解
相差的特别大
它们的系数矩阵实际上数
相差的并不大
因为你已经取了两位有效数字
所以说系数里边的每一个元素
之间相差的并不大
但是它的解就差了很多
这是为什么
可以用我们刚刚介绍的条件数
来解释这个现象
我们可以求一下
刚才这个线性方程组的条件数
比方说去求无穷范数意义下的条件数
发现它是748
那只要它比一大很多的话
那么这个条件数都是大的
那么这个这个方程组
它的性态就不好
它是一个病态的线性方程组
所以你系数矩阵稍微有一点儿变动
它的解就会变化很大
刚才的例子
实际上是非常有典型的病态方程组
叫Hilbert方程组
Hilbert方程组
它的系数矩阵就有下面的一个特点
就是比方说是n维的Hilbert方程组
那么它的第一行就是一 二分之一
然后一直到n分之一
第二行就从二分之一开始
最后一行就是从n分之一
Hilbert矩阵是典型的病态矩阵
它的二范数实际上是e的3.5的n次方
大家知道这个指数增长的是非常快的
所以接触越高
这个病态的越严重
我们下边可以利用前面
我们给出的误差分析
来看一下怎么样来衡量
在求解线性方程组的时候的误差
通常我们去求解线性方程组的时候
把近似解记成x*
那么把x*带入到原来的方程里面去
它并不会是原来的线性方程组准确成立
我们把b减去A乘x*
记成是残量
大家可能会想
这个残量越小会不会
这个解就越准确
我们可以分析一下
我们先来介绍一下这个结论的内容
x x*分别表示这个线性方程组的
准确解和近似解
r是x*的残量
它告诉我们的是
解的相对误差是
小于等于A的条件数倍的含量的范数
比上b的范数
这说明什么
我们并不敢说
残量越小误差就越小
因为它前面还有一个系数是条件数
只有当条件数比较小的时候
我们才能说残量越小
原来方程的近似解越准确
如果原来的方程组是个病态方程组
残量的大小并不能刻画解的准确程度
我们来看一下这个结论是怎么来证明的
主要就是根据前面
我们给出来的向量范数和矩阵范数的关系
原方程式b等于A乘x
根据向量范数矩阵范数的关系
b的范数就小于等于a的范数乘x的范数
x减去x*就等于
A的幂去乘上b减去Ax*
b减Ax*就是残量
我们给出来了
写的绝对误差跟残量之间的关系
然后再利用一下
前面我们一直用到的一个不等式关系
x的范数分之一是小于等于A的范数
比上b的范数的
这样我们就可以得出这个
定理告诉我的结论就是
相对误差限 是小于等于A的条件数
乘上残量的范数比上右端项的范数
所以这个结论就告诉我们
解的相对误差
主要就是有残量和条件数来决定的
好 这一节
我们主要介绍了条件数的定义
大家知道条件数
是用来刻画线性方程组的性态的
条件数越大
说明线性方程组的性质越不好
条件数越大
说明这个线性方程组
就是一个病态越严重的线性方程组
另外我们给出了一个重要的结论
就是什么时候可以用残量
来衡量解的准确程度
只有当条件数小的时候
我们才可以用残量
来说明求解的线性方程组解的精确度
也就是说
解的相对误差是由残量和条件数来决定的
好
关于误差这一部分的内容我们就介绍到这
-1.1 误差的概念
--误差的概念
-1.2 误差的传播
--误差的传播
-第一章 习题
--第一章 习题
-2.1 Gauss消去法
--Gauss消去法
-2.2 矩阵的三角分解
--矩阵的三角分解
-2.3 直接三角分解法
--直接三角分解法
-2.4 平方根法和改进的平方根法
-2.5 误差分析(1)向量和矩阵范数
-2.6 误差分析(2)条件数
-第二章 习题
--第二章 习题
-3.1 Jacobi迭代法和Gauss-Seidel 迭代法
-3.2 迭代法收敛性的判别
-3.3 误差分析
--误差分析
-第三章 习题
--第三章 习题
-4.1 幂法
--幂法
-4.2 反幂法
--反幂法
-第四章 习题
--第四章 习题
-5.1 多项式插值理论
--多项式插值理论
-5.2 Lagrange 插值多项式
-5.3 Newton 插值多项式(1)差商型
-5.4 Newton 插值多项式(2)差分型
-5.5 分段线性插值
--分段线性插值
-5.6 Hermite 插值
-第五章 习题
--第五章 习题
-6.1 数据拟合的最小二乘法(1)多项式拟合
-6.2 数据拟合的最小二乘法(2)其他函数拟合
-6.3 正交多项式
--正交多项式
-6.4 函数的最佳平方逼近
-第六章 习题
--第六章 习题
-7.1 数值微分
--数值微分
-7.2 Newton-Cotes求积公式(1)数值积分的基本思想、Newton-Cotes公式
--Newton-Cotes求积公式(1)数值积分的基本思想、Newton-Cotes公式
-7.3 Newton-Cotes求积公式(2)误差估计
-7.4 复化求积公式
--复化求积公式
-7.5 Romberg求积公式、Gauss型求积公式
-第七章 习题
--第七章 习题
-8.1 Romberg求积公式、Gauss型求积公式
-8.2 简单迭代法的加速、牛顿法与弦截法
-第八章 习题
--第八章 习题
-9.1 常微分方程数值解法概述
-9.2 Euler方法及其改进方法
-第九章 习题
--第九章 习题