(完整word版)数值分析上机作业1-1解析_第1页
(完整word版)数值分析上机作业1-1解析_第2页
(完整word版)数值分析上机作业1-1解析_第3页
(完整word版)数值分析上机作业1-1解析_第4页
(完整word版)数值分析上机作业1-1解析_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数值计算方法上机题目 11、实验 1. 病态问题实验目的 : 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身 的解对数据变化的比较敏感, 反之属于好问题。 希望读者通过本实验对此有一个初步的体会。数值分析的大部分研究课题中, 如线性代数方程组、 矩阵特征值问题、 非线性方程及方 程组等都存在病态的问题。 病态问题要通过研究和构造特殊的算法来解决, 当然一般要付出 一些代价(如耗用更多的机器时间、占用更多的存储空间等)。问题提出 : 考虑一个高次的代数多项式20p(x) (x 1)(x 2).( x 20) (x k)(E1-1)k1显然该多项式的全部根为 1, 2

2、,,20,共计20个,且每个根都是单重的(也称为简单的)。现考虑该多项式方程的一个扰动(E1-2)p(x)x19 0其中 是一个非常小的数。这相当于是对(E1-1 )中X19的系数作一个小的扰动。我们希望11E1-1 )的解对扰动的敏感性。比较(E1-1)和(E1-2 )根的差别,从而分析方程(实验内容 :为了实现方便,我们先介绍两个Matlab函数:"roots ”和"poly ",输入函数u=roots(a)其中若变量a存储n 1维的向量,则该函数的输出u为一个n维的向量。设 a的元素依次为 a1,a2,.,an 1 ,则输出 u 的各分量是多项式方程na1X

3、a2Xn1.anX an 1的全部根,而函数b=poly(v)的输出b是一个n+1维变量,它是以n维变量v的各分量为根的多项式的系数。可见“roots”和“ Poly ”是两个互逆的运算函数.ve=zeros(1,21); ve(2)=ess;roots(poly(1:20)+ve)上述简单的Matlab程序便得到(E1-2)的全部根,程序中的“esS'即是(E1-2)中的 。 实验要求 :(1)选择充分小的ess,反复进行上述实验,记录结果的变化并分析它们。如果扰动项 的系数很小,我们自然感觉(E1-1 )和(E1-2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如

4、此的扰动敏感性如何?(2)将方程(E1-2)中的扰动项改成x18或其他形式,实验中又有怎样的现象出现?实验步骤:(1)程序function t_charpt1_1 clcresult=inputdlg(' 请输入扰动项 : 在0 20 之间的整数 :' , 'charpt1_1' ,1, '19' );Numb=str2num(char(result);if (Numb>20)|(Numb<0)errordlg( 数 !' ); return ; end' 请输入正确的扰动项 :0 20 之间的整result=inpu

5、tdlg(' 请输入 (0 1)之间的扰动常数 :' , 'charpt1_1' ,1,'0.00001');ess=str2num(char(result);ve=zeros(1,21);ve(21-Numb)=ess;root=roots(poly(1:20)+ve);x0=real(root); y0=imag(root);plot(x0',y0',1*1);disp( ' 对扰动项 ' ,num2str(Numb), 为:' );' 加扰动 ' ,num2str(ess),'

6、 得到的全部根disp(num2str(root); 二、实验结果分析ess 分别为 1e-6,1e-8.1e-10,1e-12.对扰动项19加扰动1e-006得到的全部根为:21.3025+1.56717i21.3025-1.56717i18.5028+3.6004i18.5028-3.6004i15.1651+3.76125i15.1651-3.76125i12.4866+2.88278i12.4866-2.88278i10.5225+1.71959i10.5225-1.71959i9.04485+0.594589i9.04485-0.594589i7.9489+0i7.00247+0i对

7、扰动项19加扰动1e-010得到的全部根为:5.99995+0i5+0i4+0i3+0i2+0i1+0i19.9953+0i19.0323+0i17.8696+0i17.2186+0i15.4988+0.0211828i15.4988-0.0211828i13.7707+0i13.1598+0i11.9343+0i11.029+0i9.99073+0i9.00247+0i7.99952+0i7.00007+0i5.99999+0i5+0i4+0i3+0i2+0i1+0iess分别为 1e-6,1e-8.1e-10,1e-12 的图像如下:1,1上函数f(x)11 25x2从实验的图形中可以看出

8、,当ess充分小时,方程E.1.1和方程E.1.2的解相差很小,当ess逐渐增大时,方程的解就出现了病态解,这些解都呈现复共轭性质。(2)将扰动项加到x18上后,ess=1e-009时方程的解都比较准确,没有出现复共轭现象。 ess=1e-008时误差与x19(ess=1e-009)时相当,即扰动加到 x18上比加到x19小一个数量级。对 x8的扰动ess=1000时没有出现复共轭,误差很小;对x的扰动ess=10e10时没有出现复共轭, 误差很小。因此,扰动作用到xn上时,n越小,扰动引起的误差越小。2、实验2。多项式插值的振荡现象,即插值的龙格(Runge)现象问题提出:考虑在一个固定的区

9、间上用插值逼近一个函数。显然,拉格朗日插值中使用的节点越多,插值多项式的次数就越高、自然关心插值多项式的次数增加时,Ln (x)是否也更加靠近被逼近的函数。龙格给出的一个例子是极著名并富有启发性的。设区间实验内容:考虑区间1,1的一个等距划分,分点为xi 1i ,i 0,1,2,.,nn则拉格朗日插值多项式为Ln(X)i 0125x2 li(x)其中的h(x),i 0,1,2,., n是n次拉格朗日插值基函数。实验要求:(l)选择不断增大的分点数目n 2,3,.,画出原函数f (x)及插值多项式函数Ln(x)在1,1上的图像,比较并分析实验结果。(2) 选择其他的函数,例如定义在区间-5 ,

10、5上的函数Xh(x) 4,g(x)arcta nx1 x重复上述的实验看其结果如何。(3) 区间a,b上切比雪夫点的定义为Xkb a 心cosLJL ,k2(2(n 1)1,2,.,n 1以X1 ,X2,Xn 1为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。实验步骤:(1)试验程序:fun cti on y=Lagra nge(xO, yO, x);% Lagra nge插值n= len gth(x0); m=le ngth(x);for i=1:mz=x(i);s=0.0;for k=1: np=1.0;for j=1: nif (j = k)p = p*(z - x0(j)/(

11、x0(k) - x0(j);ends = s + p*y0(k);endy(i) = s;endfun cti ont_charpt2promps = '请选择实验函数,若选 f(x),请输入f,若选 h(x),请输入h,若选g(x),请输入 g:' ;titles ='charpt_2'result = in putdlg(promps,'charpt 2',1,'f' );Nb_f = char(result);if (Nb_f ='f'& Nb_f ='h'& Nb_f =&#

12、39;g' )errordlg('实验函数选择错误!');return;endresult = inputdlg('请输入插值结点数N:' ,'charpt_2',1, '10');Nd = str2 num(char(result);endif (Nd <1)errordlg(结点输入错误!); return ; endswitch Nb_f case 'f' f=i nline( case 'h' f=i nline( case 'g' f=i nline('

13、;1./(1+25*x.A2)'); a = -1;b = 1;'x./(1+x.A4)'); a = -5; b = 5;'ata n( x)'); a = -5; b= 5;end x0 = linspace(a, b, Nd+1); yO = feval(f, x0);x = a:0.1:b; y = Lagra nge(xO, yO, x);fplot(f, a b,'co');hold on;plot(x, y,'b-'););xlabel( 'x'); ylabel( 'y = f(x)

14、 o and y = Ln (x)-'增大分点n=2 , 3,时,拉格朗日插值函数曲线如图所示。439 rCfefi.13 D g >.406n=7n=8从图中可以看出,随着 n的增大,拉格朗日插值函数在x=0附近较好地逼近了原来的函数f(x),但是却在两端 x= -1和x=1处出现了很大的振荡现象。通过分析图形,可以看出, 当n为奇数时,虽然有振荡,但振荡的幅度不算太大,n为偶数时,其振荡幅度变得很大。(2)将原来的f(x)换为其他函数如h(x)、g(x),结果如图所示。其中h(x), g(x)均定义在-5,5区间上,h(x)=x/(1+x 4), g(x)=arctan x

15、。 Az:wlli£«_.=“ a 1h(x), n=84? 5 1 s 口 打*合|匸5|3 宜!_戊 ai5o4Jg(x), n=13g(x), n=12分析两个函数的插值图形,可以看出:随着n的增大,拉格朗日插值函数在x=0附近较好地逼近了原来的函数f(x),但是却在两端x= -5和x=5处出现了很大的振荡现象。通过图形可以看出,当n为偶数时,虽然有振荡,但振荡的幅度不算太大,n为奇数时,其振荡幅度变得很大。原因和上面f(x)的插值类似,h(x)、g(x)本身是奇函数,如果 n为偶数,那么Lagrange插值函数Ln(x)的最高次项xn-1 是奇次幕,比较符合h(x)

16、、g(x)本身是奇函数的性质;如果 n为奇数,那么Lagrange插值函数Ln(x)的最高次项xn-1是偶次幕,与h(x)、g(x)本身是奇函数的性质相反,因此振荡可能更 剧烈。3、实验3。样条插值的收敛性问题提出般的多项式插值不能保证收敛性,即插值的节点多,效果不一定就好。对样条函数插也超出了本课程的内容。通过本并不断增加插值节点的个数。考Matab的函数“ spine "作此函数的值又如何呢?理论上证明样条插值的收敛性是比较困难的, 实验可以验证这一理论结果。实验内容:请按一定的规则分别选择等距或者非等距的插值节点,虑实验2中的函数或选择其它你有兴趣的函数,可以用三次样条插值。在

17、较新版本的Matlab中,还提供有spline工具箱,你可以找到极丰富的样条工具,包括B-样条。实验要求:(1)随节点个数增加,比较被逼近函数和样条插值函数误差变化情况。分析所得结果 并与拉格朗目多项式插值比较。(2)样条插值的思想最早产生于工业部门。作为工业应用的例子,考虑如下问题:某 汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:Xk012345678910yk0.00.791.532.192.713.033.272.893.063.193.29y'k0.80.2实验步骤:(1)程序:fun cti ont_charpt2promps = '请选择实验函数,若

18、选f(x), 请输入f,若选h(x), 请输入h,若选g(x), 请输入 g:' ;titles = 'charpt_2' ;result = in putdlg(promps,'charpt 2',1,'f');Nb_f = char(result);if (Nb_f ='f'& Nb_f ='h'& Nb_f ='g' )errordlg( '实验函数选择错误!');return ; end,1, '10' );result = input

19、dlg('请输入插值结点数N:' , 'charpt_2'Nd = str2 num(char(result);if (Nd <1)errordlg('结点输入错误!' ); return ; endswitch Nb_f case 'f' f=i nline( case 'h' f=i nline('1./(1+25*x.A2)');a = -1;b = 1;'x./(1+x.A4)'); a = -5; b = 5;case 'g' f=i nline('ata n( x)'); a = -5; b= 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论