1 “数值计算方法”上机实验指导书 重庆交通大学计算机与信息学院 邹昌文编 实验一 误差分析 实验1
1 (病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题
通过本实验可获得一个初步体会
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)
问题提出:考虑一个高次的代数多项式 )1
1()()20()2)(1()(201kkxxxxxp 显然该多项式的全部根为 1,2,…,20 共计20 个,且每个根都是单重的
现考虑该多项式的一个扰动 )2
1(0)(19 xxp 其中 是一个非常小的数
这相当于是对(1
1)中19x的系数作一个小的扰动
我们希望比较(1
2)根的差别,从而分析方程(1
1)的解对扰动的敏感性
实验内容:为了实现方便,我们先介绍两个 MATLAB 函数:“roots”和“poly ”
roots(a)u 其中若变量 a 存储 n+1 维的向量,则该函数的输出 u 为一个 n 维的向量
设 a 的元素依次为121,,,naaa,则输出 u 的各分量是多项式方程 01121nnnnaxaxaxa 的全部根;而函数 p o l y ( v )b 的输出 b 是一个 n+1 维向量,它是以 n 维向量 v 的各分量为根的多项式的系数
可见“roots”和“poly ”是两个互逆的运算函数
2 ))20:1((;)2();21,1(;000000001
0vepolyrootsessvezerosveess 上述简单的MATL