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

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)。此时一般迭代改善解更为精确甚至就是精确解,如果对当前解还不满意,那么可以重复上面的步骤进行迭代,这就是迭代改善

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值