数值分析(5)-方程组的固有性态和误差

本文围绕方程组的固有性态和误差展开。介绍了方程组放大或缩小误差的固有性态,引出病态方程组和病态矩阵概念。用条件数衡量方程组对原始数据变动的敏感程度。还给出病态矩阵的可能情况,并介绍预条件和迭代改善两种解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5 方程组的固有性态和误差


这里说的 固有性态实际上就是方程组自身参数对计算中误差的大小的影响。数学中的线性方程组 A x = b Ax=b Ax=b的计算是精确的,但是计算机计算却有种种精确度的限制,导致最终得到的结果会和真实值有所偏差,而有的方程偏差小,有的方程偏差大,这一节就是讨论的这个。


5.1 固有性态与其度量

5.1.1 固有性态

举个数值分析-张轶 中的例子,如下方程组 A x = b Ax=b Ax=b

A = [ 1 , 0.99 0.99 , 0.98 ] , b = [ b 1 b 2 ] A=\left[ \begin{array}{c}{1\quad\quad, 0.99}\\{0.99\quad,0.98} \end{array}\right], b=\left[ \begin{array}{c}{b_1}\\{b_2} \end{array}\right] A=[1,0.990.99,0.98],b=[b1b2]

其精确解(你可以自己试着解下)为:

x = ( − 9800 b 1 + 9900 b 2 , 9900 b 1 − 10000 b 2 ) T x=(-9800b_1+9900b_2,9900b_1-10000b_2)^T x=(9800b1+9900b2,9900b110000b2)T
这时如果方程右端有一个微小的扰动误差,则 b b b变成:
b ~ = ( b 1 + ε , b 2 ) T \widetilde{b} = (b_1+\varepsilon,b_2)^T b =(b1+ε,b2)T
那么方程 A x ~ = b ~ A\widetilde{x} = \widetilde{b} Ax =b 新的解误差大小为:
x ~ − x = ( − 9800 ε , 9900 ε ) T \widetilde{x}-x=(-9800\varepsilon,9900\varepsilon)^T x x=(9800ε,9900ε)T
由此可知,方程组的解将方程中参数微小误差放大了将近一万倍,当然有的矩阵可能就不会放大误差。这种计算解过程中放大或缩小误差的特性,就叫做方程组本身的固有性态

而由原始数据微小变化而导致解严重失真的方程组成为病态方程组(非常形象),相应的系数矩阵 A A A就被成为病态矩阵

5.1.2 条件数

为了衡量方程组的固有性态,这里使用条件数来表示方程组对原始数据变动的敏感程度。其记为:
C o n d ( A ) = ∣ ∣ A ∣ ∣   ∣ ∣ A − 1 ∣ ∣ Cond(A)=||A||\space||A^{-1}|| Cond(A)=A A1
上面的 ∣ ∣ . ∣ ∣ ||.|| .表示任意(因为范数的等价性,所以任意)一种矩阵范数。所以结合上一小节,条件数过大的方程组就是病态方程组,其系数矩阵就是病态矩阵。

另外,根据矩阵2范数的计算,如果 A A A是对称矩阵,那么有如下计算公式:
C o n d 2 ( A ) = ∣ λ 1 ∣ ∣ λ n ∣ Cond_2(A)=\frac{|\lambda_1|}{|\lambda_n|} Cond2(A)=λnλ1
其中 λ 1 , λ n \lambda_1,\lambda_n λ1,λn分别是 A A A绝对值最大和最小的特征值。


5.2 病态矩阵解决方法

前面说了,固有性态是由方程组自身数值确定的,而一般下面这些情况的矩阵就有可能是病态的:

  • 矩阵元素大的特别大,小的特别小,并且没有一定规律;
  • 矩阵行列式值很小,或者某些行(列)近似线性相关;
  • 上一节的消去法过程中,出现数量级很小的主元素;
  • 计算解 x ~ \widetilde{x} x 的剩余向量很小,但是仍然不符合要求。

这里讲两种方法避免病态矩阵,预条件迭代改善是分别在计算矩阵之前和之后的方法

5.2.1 预条件

预条件方法,基本思想就是把一个病态方程组,转换成一个等价的非病态的,求解转换后的解,在根据这个解求原始解,比如有如下的转化:
A ~ x ~ = b ~ \widetilde{A}\widetilde{x}=\widetilde{b} A x =b

A ~ = C − 1 A C − 1 , x ~ = C x , b ~ = C − 1 b \widetilde{A}=C^{-1}AC^{-1},\quad\widetilde{x}=Cx,\quad\widetilde{b}=C^{-1}b A =C1AC1,x =Cx,b =C1b

这样进行转换之后,方程组与原始方程组等价,称之为预条件方程组,其中可逆矩阵 C C C称为预条件矩阵。先根据这个方程组求解得到 x ~ \widetilde{x} x ,再求解 C x = x ~ Cx=\widetilde{x} Cx=x 即可以得到原方程组的解。一般按照下面两个规则选取预条件矩阵:

  • C o n d ( A ~ ) &lt; C o n d ( A ) Cond(\widetilde{A}) &lt; Cond(A) Cond(A )<Cond(A),也就是转换后的条件数要明显小于原始条件数
  • 方程组 C z = d Cz=d Cz=d容易求解,减少计算量。

特别的,如果 A A A是对称正定矩阵,那么可以选用 C = D 1 2 C=D^{\frac{1}{2}} C=D21,其中D是A的对角元素构成的对角矩阵。

5.2.2 迭代改善

迭代改善,是根据每一步的求解误差,反复利用误差计算新的解,使精度更高,误差更小。比如方程组 A x = b Ax=b Ax=b的近似解为 x ( 1 ) x^{(1)} x(1),其剩余向量:
r ( 1 ) = b − A x ( 1 ) r^{(1)}=b-Ax^{(1)} r(1)=bAx(1)
再求解方程组:
A x = r ( 1 ) Ax=r^{(1)} Ax=r(1)
得到解 x ~ ( 1 ) \widetilde{x}^{(1)} x (1),这时原始解的迭代改善解为: x ( 2 ) = x ( 1 ) + x ~ ( 1 ) x^{(2)}=x^{(1)}+\widetilde{x}^{(1)} x(2)=x(1)+x (1)。此时一般迭代改善解更为精确甚至就是精确解,如果对当前解还不满意,那么可以重复上面的步骤进行迭代,这就是迭代改善

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值