Skip to content

作业一:误差 - 实验

1.3 病态问题

实验目的:算法有 “优” 与 “劣” 之分,问题也有 “好” 与 “坏” 之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。

问题提出:考虑一个高次的代数多项式

(1.1)p(x)=(x1)(x2)(x20)=k=120(xk)

显然,该多项式的全部根为 1,2,,20 共计 20 个,且每个根都是单重的。现考虑该多项式的一个扰动

(1.2)p(x)+εx19=0

其中 ε 是一个非常小的数。这相当于是对原多项式中 x19 的系数作一个小的扰动。我们希望比较新多项式 (1.2) 和原多项式 (1.1) 的根的差别,从而分析原方程 (1.1) 的解对扰动的敏感性。

(1)

发现:如果使用实际解与预期解之差的模作为偏差标准,发现随着解数值的增大,偏差非线性增长。数值越大的解的相对偏差显著大于数值小的解。

例如 δx20=1.0820=5.4%,而 δx8=0.00618=0.8%

(2)

发现:随着扰动项的次数变低,解中偏差峰值所对应的解随之变小。

附:代码

matlab
ess = 1e-9
ve = zeros(1,21)
ve(2) = ess
results = roots(poly(1:20)+ve)