MATLAB 2020 从入门到精通
上QQ阅读APP看书,第一时间看更新

3.2 误差分析和方程组的条件数

误差问题是不可避免的,在大量的数据样本中,如果能去掉部分可能造成很大误差的样本,那么应用矩阵得到的结果的可靠性将大大加强。条件数事实上表示了矩阵计算对误差的敏感性。条件数越小,数值稳定性越好。

对一个数值问题本身,如果输入数据的微小扰动(即误差)就会引起输出数据(即问题解)出现很大的相对误差,那么这就是病态问题。条件数是线性方程组Ax=b的解对b中的误差或不确定度的敏感性的度量。

3.2.1 向量和矩阵范数

范数是数值分析中的一个概念,它是向量或矩阵大小的一种度量,在工程计算中有着重要的作用。

1.向量范数

两个点之间的距离为向量元素之差的范数。在几何学上,点之间的距离等于从一个点延伸到另一个点的向量的值。

2.常规向量范数

具有n个元素的向量vp-范数的常规定义是

其中,p是任何正的实数值、Inf或-Inf。这些值得关注的p值包括:

♦如果p=1,则所得的1-范数是向量元素的绝对值之和。

♦如果p=2,则所得的2-范数是向量的模或欧几里得距离。

♦如果p=Inf,则‖v‖∞=maxi(|vi)|)。

♦如果p=-Inf,则‖v‖-∞=mini(|vi)|)。

于向量xRn,常用的向量范数有以下几种。

x的∞-范数:978-7-111-67080-3-Chapter03-40.jpg

x的1-范数:978-7-111-67080-3-Chapter03-41.jpg

x的2-范数(欧氏范数):978-7-111-67080-3-Chapter03-42.jpg

xp-范数:978-7-111-67080-3-Chapter03-43.jpg

在MATLAB中,vecnorm命令用来求解向量范数和计算矩阵中每列的范数,它的使用格式见表3-4。

表3-4 vecnorm命令的使用格式

例3-7:计算向量的1-范数。

解:MATLAB程序如下。

例3-8:计算向量的n-范数。

解:MATLAB程序如下。

例3-9:计算矩阵的列范数。

解:MATLAB程序如下。

3.矩阵范数

对于矩阵ARm×n,常用的矩阵范数有以下几种。

A的行范数(∞-范数):978-7-111-67080-3-Chapter03-51.jpg

A的列范数(1-范数):978-7-111-67080-3-Chapter03-52.jpg

A的欧氏范数(2-范数):978-7-111-67080-3-Chapter03-53.jpg,其中λmaxATA)表示ATA的最大特征值。

A的Frobenius范数(F-范数):978-7-111-67080-3-Chapter03-54.jpg

在MATLAB中,norm命令用来求解向量范数和矩阵范数,它的使用格式见表3-5。

表3-5 norm命令的使用格式

(1)最大绝对列之和

mxn矩阵Xmn>=2)的最大绝对列之和由978-7-111-67080-3-Chapter03-56.jpg定义。

(2)最大绝对行之和mxn矩阵Xmn>=2)的最大绝对行之和由978-7-111-67080-3-Chapter03-57.jpg定义。

(3)Frobenius范数

mxn矩阵Xmn>=2)的Frobenius范数由978-7-111-67080-3-Chapter03-58.jpg定义。

例3-10:计算两个点之间的欧几里得距离。

解:MATLAB程序如下。

在MATLAB中,normest命令用来求解2-范数估值,它的使用格式见表3-6。

表3-6 normest命令的使用格式

例3-11:常用的矩阵函数示例。

解:MATLAB程序如下。

3.2.2 矩阵条件数

矩阵的条件数在数值分析中是一个重要的概念,在工程计算中也是必不可少的,它用于刻画一个矩阵的“病态”程度。

对于非奇异矩阵A,其条件数的定义为

cond(Av=‖A-1vAv,其中v=1,2,…,F

它是一个大于或等于1的实数,当A的条件数相对较大,即cond(Av>>1时,矩阵A是“病态”的,反之是“良态”的。

矩阵条件数估计:

计算A的1-范数条件数。m×n矩阵的1-范数条件数的值为

K1A)=‖A1A-11

其中,1-范数是矩阵的最大绝对列之和,由以下公式计算得出:

在MATLAB中,condest命令用来求解矩阵的1-范数条件数,它的使用格式见表3-7。

表3-7 condest命令的使用格式

例3-12:求矩阵的范数条件数。

解:MATLAB程序如下。

1.矩阵条件数倒数

在MATLAB中,rcond命令用来求解矩阵的条件数,它的使用格式见表3-8。

表3-8 rcond命令的使用格式

例3-13:求矩阵的范数条件数倒数

解:MATLAB程序如下。

2.矩阵条件数

与rcond相比,cond作为估计矩阵条件的方法更有效,但不太稳定。矩阵和计算任务的条件数用于衡量解算过程中答案对输入数据变化和舍入误差的敏感程度。

矩阵的逆运算的条件数用于测量线性方程组的解对数据错误的敏感程度。它指示矩阵求逆结果和线性方程解的精度。

在MATLAB中,cond命令用来求解逆矩阵的条件数,它的使用格式见表3-9。

表3-9 cond命令的使用格式

例3-14:求矩阵的条件数。

解:MATLAB程序如下。

此矩阵的条件数不是太大,因此矩阵对逆运算不是特别敏感。