文档介绍:数值分析实验题理学院应用数学研究生实验 1 病态问题与数值稳定性实验 病态问题实验目的: 算法有“优”与“劣”之分, 问题也有“好”和“坏”之别. 对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题. 希望读者通过本实验对此有一个初步的体会. 数值分析的大部分研究课题中, 如线性代数方程组, 矩阵特征值问题, 非线性方程及方程组等都存在病态的问题. 病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间,占用更多的存储空间等) 问题提出: 考虑一个高次的代数多项式?????????? 201 1 2 20 k p x x x x x k ?? ???????,(1) 显然该多项式的全部根为 1,2 ,?, 20 共计 20个, 且每个根都是单重的( 也称为简单的). 现考虑该多项式的一个扰动?? 190 p x x ?? ?,(2) 式中,?是一个非常小的数. 这相当于是对(1)中 19x 的系数作一个小的扰动. 希望比较式(1) 和( 2 )根的差别,从而分析方程( 1 )的解对扰动的敏感性. 实验内容: 为了实现方便,介绍两个 Matlab 函数: "roots" 和"p ol y". u =roots(a) ,其中若变量 a 存储 n +1 维的向量,则该函数的输出 u 为一个 n a 的元素依次为 121,,, ?naaa?,则输出 u 的各分量是多项式方程 0 1 121???????nn nnaxaxaxa?的全部根;而函数 b=poly(v) 的输出 b 是一个 1?n 维变量,它是以 n 维变量 v 的各分量为根的多项式系数. 可见"roots" 和"p ol y" 是两个互逆的运算函数. ve=zeros(1,21); ve(2)=ess; roots(poly(1:20)+ve) 上述简单的 Matlab 程序便得到( 2 )的全部根,程序中的“ ess ”即是( 2 )中的?. 实验要求: (1 )选择充分小的 ess ,反复进行上述实验,记录结果的变化并分析它们. 如果扰动项的系数?很小,我们自然感觉式( 1 )和式( 2 )的解应当相差很小. 计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? (2 )将方程( 2 )中的扰动项改成 18x?或其他形式,实验中又有怎样的现象出现? (3 )请从理论上分析产生这一问题的根源. 注意我们可以将方程( 2 )写成展开的形式?? 20 19 , 0 p x x x ? ?? ????.(3) 同时将方程的解 x 看成是系数?的函数,考察方程的某个解关于?的扰动是否敏感,与研究它关于?的导数的大小有何关系?为什么?你发现了什么现象,哪些根关于?的变化更敏感? 实验 : 体会稳定性在选择算法中的地位, 误差扩张的算法是不稳定的, 是我们所不期望的;误差衰竭的算法是稳定的,是我们努力寻求的,这是贯穿本课程的目标. 问题提出: 考虑一个简单的由积分定义的序列 110 d ( 1, 2, ) n x n I x e x n ?? ???. 显然 0, 1, 2, n I n ? ??利用分部积分易得 1110 d 1/ x I xe x e ?? ??,1 1 , 2, 3, n n I nI n ?? ? ??.(1) 又有 1 1 1 0 0 d d 1/ ( 1) n x n n I x e x x x n ?? ??? ?≤. 实验内容: 由递推关系( 1) ,可以得到计算积分序列{nI } 的两种算法算法 1: 1 1 1/ , 1 , 2, 3, , n n I e I nI n ?? ????(2) 算法 2:1 0, (1 ) / , , 1, , 3, 2. N n n I I I n n N N ?? ?????(3) 实验要求: (1) 分别用算法 1、算法 2 并在计算中分别采用 5位、6 位和 7 位有效数字, 请判断哪种算法能给出更精确的结果.(2 )两种算法的优劣