1 / 7
文档名称:

matlab 计算方法 实验指导 误差分析.doc

格式:doc   大小:128KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

matlab 计算方法 实验指导 误差分析.doc

上传人:aluyuw1 2017/2/22 文件大小:128 KB

下载得到文件列表

matlab 计算方法 实验指导 误差分析.doc

相关文档

文档介绍

文档介绍:实验一误差分析实验 1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。问题提出:考虑一个高次的代数多项式)()()20 ()2 )(1()( 201???????? kkxxxxxp?显然该多项式的全部根为 1,2, …,20 共计 20个,且每个根都是单重的。现考虑该多项式的一个扰动)(0)( 19??xxp?其中?是一个非常小的数。这相当于是对( )中 19x 的系数作一个小的扰动。我们希望比较( )和( )根的差别,从而分析方程( )的解对扰动的敏感性。实验内容:为了实现方便,我们先介绍两个 MATLAB 函数:“ roots ”和“ poly ”。 roots(a) u?其中若变量 a存储 n+1 维的向量,则该函数的输出 u为一个 n维的向量。设 a的元素依次为 121,,, ?naaa?,则输出 u的各分量是多项式方程 0 1 121???????nn nnaxaxaxa?的全部根;而函数 poly(v) b?的输出 b是一个 n+1 维向量,它是以 n维向量 v的各分量为根的多项式的系数。可见“ roots ”和“ poly ”是两个互逆的运算函数。))20 :1(( ;)2( );21 ,1( ;000000001 .0 ve poly roots ess ve zeros ve ess????上述简单的 MATLAB 程序便得到( )的全部根,程序中的“ ess ”即是( ) 中的?。实验要求: ( 1)选择充分小的 ess ,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数?很小,我们自然感觉( )和( )的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? ( 2) 将方程( )中的扰动项改成 18x?或其它形式,实验中又有怎样的现象出现? ( 3) (选作部分)请从理论上分析产生这一问题的根源。注意我们可以将方程( )写成展开的形式, )(0),( 19 20????? xxxp??同时将方程的解 x看成是系数?的函数,考察方程的某个解关于?的扰动是否敏感,与研究它关于?的导数的大小有何关系?为什么?你发现了什么现象, 哪些根关于?的变化更敏感? 思考题一:(上述实验的改进) 在上述实验中我们会发现用 roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数 solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数 poly2sym, 函数的具体使用方法可参考 MATLAB 的帮助。思考题二:(二进制产生的误差) 用 MATLAB 计算 100 1000 1???i。结果居然有误差! 因为从十进制数角度分析, 这一计算应该是准确的。实验反映了计算机内部的二进制本质。思考题三:(一个简单公式中产生巨大舍入误差的例子)