数值分析实验报告1

上传人:优*** 文档编号:47821644 上传时间:2021-12-25 格式:DOC 页数:31 大小:303.50KB
收藏 版权申诉 举报 下载
数值分析实验报告1_第1页
第1页 / 共31页
数值分析实验报告1_第2页
第2页 / 共31页
数值分析实验报告1_第3页
第3页 / 共31页
资源描述:

《数值分析实验报告1》由会员分享,可在线阅读,更多相关《数值分析实验报告1(31页珍藏版)》请在装配图网上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。 实验一 误差分析实验1.1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。问题提出:考虑一个高次的代数多项式显然该多项式的全部根为1,2,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动其中是一

2、个非常小的数。这相当于是对(1.1)中的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。实验内容:为了实现方便,我们先介绍两个Matlab函数:“roots”和“poly”。其中若变量a存储n+1维的向量,则该函数的输出u为一个n维的向量。设a的元素依次为,则输出u的各分量是多项式方程的全部根;而函数的输出b是一个n+1维变量,它是以n维变量v的各分量为根的多项式的系数。可见“roots”和“poly”是两个互逆的运算函数。上述简单的Matlab程序便得到(1.2)的全部根,程序中的“ess”即是(1.2)中的。实验要求:(1) 选择充

3、分小的ess,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数很小,我们自然感觉(1.1)和(1.2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何?(2) 将方程(1.2)中的扰动项改成或其它形式,实验中又有怎样的现象出现?(3) (选作部分)请从理论上分析产生这一问题的根源。注意我们可以将方程(1.2)写成展开的形式,同时将方程的解x看成是系数的函数,考察方程的某个解关于的扰动是否敏感,与研究它关于的导数的大小有何关系?为什么?你发现了什么现象,哪些根关于的变化更敏感?思考题一:(上述实验的改进)在上述实验中我们会发现用roots函数求解多项

4、式方程的精度不高,为此你可以考虑用符号函数solve来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab的帮助。实验过程:程序:a=poly(1:20);rr=roots(a);for n=2:21 n for m=1:9 ess=10(-6-m);ve=zeros(1,21); ve(n)=ess;r=roots(a+ve); -6-m s=max(abs(r-rr) endend利用符号函数:(思考题一)a=poly(1:20);y=poly2sym(a);rr=solve(y)for n=2:21 n for m=1:8 ess

5、=10(-6-m); ve=zeros(1,21); ve(n)=ess; a=poly(1:20)+ve; y=poly2sym(a); r=solve(y); -6-m s=max(abs(r-rr) endend数值实验结果及分析:30 / 31format long-6-m n-7-8-9-1022.797226874783311.867536320091581.060527623807480.2527314421904731.693766997674240.923106667069640.084716145697410.4080402640941140.854013934155360

6、.199410220200610.03972935295834050.110311005388710.042965323628440060000700008000090000100000110000120000130000140000150000160000170000180000190000200000210000-6-m n-11-12-13-1420.038776764393800.162565848682800.13322664013598030.0216425831754600040000500006000070000800009000010000011000012000013000

7、0140000150000160000170000180000190000200000210000讨论:利用这种方法进行这类实验,可以很精确的扰动敏感性的一般规律。即当对扰动项的系数越来越小时,对其多项式扰动的结果也就越来越小,即扰动敏感性与扰动项的系数成正比,扰动项的系数越大,对其根的扰动敏感性就越明显,当扰动的系数一定时,扰动敏感性与扰动的项的幂数成正比,扰动的项的幂数越高,对其根的扰动敏感性就越明显。实验总结: 利用MATLAB来进行病态问题的实验,虽然其得出的结果是有误差的,但是可以很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这

8、类病态问题可以借助于MATLAB来进行问题的分析。学号:06450210姓名:万轩实验二 插值法实验2.1(多项式插值的振荡现象)问题提出:考虑一个固定的区间上用插值逼近一个函数。显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。 我们自然关心插值多项式的次数增加时,L(x)是否也更加靠近被逼近的函数。龙格给出了一个极著名例子。设区间-1,1上函数 f(x)=1(1+25x2)实验内容:考虑区间-1,1的一个等距划分,分点为: x(i)=-1+2i/n,i=0,1,2,n泽拉格朗日插值多项式为: L(x)=l(i)(x)/(1+25x(j)2 ) i=0,1,n其中l(i)(x), i

9、=0,1,n,n是n次拉格朗日插值基函数。实验要求: 选择不断增大的分点数目n=2,3,画出f(x)及插值多项式函数L(x)在-1,1上的图象,比较分析实验结果。(2)选择其它的函数,例如定义在区间-5,5上的函数 h(x)=x/(1+x4) , g(x)=arctanx 重复上述的实验看其结果如何。 (3)区间a,b上切比雪夫点的定义为: xk=(b+a)/2+(b-a)/2)cos(2k-1)/(2(n+1),k=1,2,n+1 以x1,x2x(n+1)为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。实验过程:程序:多项式插值的震荡现象(实验2.1)for m=1:6 subpl

10、ot(2,3,m) %把窗口分割成2*3大小的窗口 largrang(6*m) %对largrang函数进行运行 if m=1 title(longn=6) elseif m=2 title(longn=12) elseif m=3 title(longn=18) elseif m=4 title(longn=24) elseif m=5 title(longn=30) elseif m=6 title(longn=36) end %对每个窗口分别写上标题为插值点的个数end保存为:chazhi.mfunction largrang(longn)mm=input(please input mm

11、(运行第几个函数就输入mm为几):mm=)if mm=1 %d表示定义域的边界值 d=1;elseif mm=2|mm=3 d=5;endx0=linspace(-d,d,longn); %x的节点if mm=1 y0=1./(1.+25.*x0.2);elseif mm=2 y0=x0./(1.+x0.4);elseif mm=3 y0=atan(x0);endx=sym(x);n=length(x0); s=0.0;for k=1:n p=1.0; for j=1:n if j=k p=p*(x-x0(j)/(x0(k)-x0(j); end end s=p*y0(k)+s;endy=s;

12、if mm=1 ezplot(1/(1+25*x2)elseif mm=2 ezplot(x/(1+x4)elseif mm=3 ezplot(atan(x)endhold onezplot(y,-d,d)hold off保存为:largrang.m数值实验结果及分析:对于第一个函数f(x)=1/(1+25x2)对于第二个函数h(x)=x/(1+x4)对于第三个函数g(x)=arctan(x)讨论:通过对三个函数得出的largrang插值多项式并在数学软件中的运行,得出函数图象,说明了对函数的支点不是越多越好,而是在函数的两端而言支点越多,而largrang插值多项式不是更加靠近被逼近的函数,

13、反而更加远离函数,在函数两端的跳动性更加明显,argrang插值多项式对函数不收敛。实验总结:利用MATLAB来进行函数的largrang插值多项式问题的实验,虽然其得出的结果是有误差的,但是增加支点的个数进行多次实验,可以找出函数的largrang插值多项式的一般规律,当支点增加时,largrang插值多项式对函数两端不收敛,不是更加逼近,而是更加远离,跳动性更强。所以对于函数的largrang插值多项式问题可以借助于MATLAB来进行问题的分析,得到比较准确的实验结规律。学号:06450210姓名:万轩实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性)问题提出:Gaus

14、s消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss消去过程。实验要求:(1)取矩阵,则方程有解。取n=10计算矩阵的条件数。让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选

15、取按模最大的元素作为主元,结果又如何?分析实验的结果。(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。实验过程:程序:建立M文件:function x=gauss(n,r)n=input(请输入矩阵A的阶数:n=)A=diag(6*ones(1,n)+diag(ones(1,n-1),1)+diag(8*ones(1,n-1),-1)b=A*ones(n,1)p=input(条件数对应的范数

16、是p-范数:p=)pp=cond(A,p)pausem,n=size(A);nb=n+1;Ab=A br=input(请输入是否为手动,手动输入1,自动输入0:r=)for i=1:n-1 if r=0 pivot,p=max(abs(Ab(i:n,i); ip=p+i-1; if ip=i Ab(i ip,:)=Ab(ip i,:);disp(Ab); pause end end if r=1 i=i ip=input(输入i列所选元素所处的行数:ip=); Ab(i ip,:)=Ab(ip i,:);disp(Ab); pause end pivot=Ab(i,i); for k=i+1:

17、n Ab(k,i:nb)=Ab(k,i:nb)-(Ab(k,i)/pivot)*Ab(i,i:nb); end disp(Ab); pauseendx=zeros(n,1);x(n)=Ab(n,nb)/Ab(n,n);for i=n-1:-1:1 x(i)=(Ab(i,nb)-Ab(i,i+1:n)*x(i+1:n)/Ab(i,i);end数值实验结果及分析:取矩阵A的阶数:n=10,自动选取主元: format long gauss请输入矩阵A的阶数:n=10n = 10条件数对应的范数是p-范数:p=1p = 1pp = 2.557500000000000e+003请输入是否为手动,手动输

18、入1,自动输入0:r=0r = 0取矩阵A的阶数:n=10,手动选取主元:选取绝对值最大的元素为主元: gauss请输入矩阵A的阶数:n=10n = 10条件数对应的范数是p-范数:p=2p = 2pp= 1.727556024913903e+003请输入是否为手动,手动输入1,自动输入0:r=1r = 1ans= 1 1 1 1 1 1 1 1 1 1选取绝对值最小的元素为主元: gauss请输入矩阵A的阶数:n=10n = 10条件数对应的范数是p-范数:p=2p = 2pp = 1.727556024913903e+003请输入是否为手动,手动输入1,自动输入0:r=1r = 1ans

19、= 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 0.99999999999999 1.00000000000001 0.99999999999998 1.00000000000003取矩阵A的阶数:n=20,手动选取主元: 选取绝对值最大的元素为主元: gauss请输入矩阵A的阶数:n=20条件数对应的范数是p-范数:p=1p = 1pp = 2.621437500000000e+006ans = 1 1 1 1 1 1 1 1 1 1

20、 1 1 1 1 1 1 1 1 1 1 选取绝对值最小的元素为主元: gauss请输入矩阵A的阶数:n=20.n = 20条件数对应的范数是p-范数:p=2p = 2pp = 1.789670565881683e+006请输入是否为手动,手动输入1,自动输入0:r=1r = 1ans = 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000001 0.99999999999997 1.00000000000006 0

21、.99999999999989 1.00000000000023 0.99999999999955 1.00000000000090 0.99999999999821 1.00000000000352 0.99999999999318 1.00000000001273 0.99999999997817 1.00000000002910将M文件中的第三行:A=diag(6*ones(1,n)+diag(ones(1,n-1),1)+diag(8*ones(1,n-1),-1)改为:A=hilb(n) gauss请输入矩阵A的阶数:n=7n = 7条件数对应的范数是p-范数:p=1p = 1pp

22、= 9.851948872610030e+008请输入是否为手动,手动输入1,自动输入0:r=1r = 1ans = 1.00000000000051 0.99999999997251 1.00000000031354 0.99999999864133 1.00000000268805 0.99999999754181 1.00000000084337 gauss请输入矩阵A的阶数:n=7n = 7条件数对应的范数是p-范数:p=2p = 2pp = 4.753673569067072e+008请输入是否为手动,手动输入1,自动输入0:r=1r = 1ans = 0.9999999999986

23、9 1.00000000004337 0.99999999964299 1.00000000121143 0.99999999803038 1.00000000152825 0.99999999954491该问题在主元选取与算出结果有着很大的关系,取绝对值大的元素作为主元比取绝对值小的元素作为主元时产生的结果比较准确,即选取绝对值小的主元时结果产生了较大的误差,条件数越大产生的误差就越大。讨论:在gauss消去法解线性方程组时,主元的选择与算法的稳定性有密切的联系,选取绝对值大的元素作为主元比绝对值小的元素作为主元时对结果产生的误差较小。条件数越大对用gauss消去法解线性方程组时,对结果产生

24、的误差就越大。实验总结:对用gauss消去法解线性方程组时,主元的选取与算法的稳定性有密切的联系,选取适当的主元有利于得出稳定的算法,在算法的过程中,选取绝对值较大的主元比选取绝对值较小的主元更有利于算法的稳定,选取绝对值最大的元素作为主元时,得出的结果相对较准确较稳定。条件数越小,对用这种方法得出的结果更准确。在算除法的过程中要尽量避免使用较小的数做为除数,以免发生结果数量级加大,使大数吃掉小数,产生舍入误差。学号:06450210姓名:万轩实验5.2(线性代数方程组的性态与条件数的估计)问题提出:理论上,线性代数方程组的摄动满足 矩阵的条件数确实是对矩阵病态性的刻画,但在实际应用中直接计算

25、它显然不现实,因为计算通常要比求解方程还困难。实验内容:Matlab中提供有函数“condest”可以用来估计矩阵的条件数,它给出的是按1-范数的条件数。首先构造非奇异矩阵A和右端,使得方程是可以精确求解的。再人为地引进系数矩阵和右端的摄动,使得充分小。实验要求:(1)假设方程Ax=b的解为x,求解方程,以1-范数,给出的计算结果。(2)选择一系列维数递增的矩阵(可以是随机生成的),比较函数“condest”所需机器时间的差别.考虑若干逆是已知的矩阵,借助函数“eig”很容易给出cond2(A)的数值。将它与函数“cond(A,2)”所得到的结果进行比较。(3)利用“condest”给出矩阵A

26、条件数的估计,针对(1)中的结果给出的理论估计,并将它与(1)给出的计算结果进行比较,分析所得结果。注意,如果给出了cond(A)和的估计,马上就可以给出的估计。(4)估计著名的Hilbert矩阵的条件数。实验过程:程序:n=input(please input n:n=) %输入矩阵的阶数a=fix(100*rand(n)+1 %随机生成一个矩阵ax=ones(n,1) %假设知道方程组的解全为1b=a*x %用矩阵a和以知解得出矩阵bdata=rand(n)*0.00001 %随即生成扰动矩阵datadatb=rand(n,1)*0.00001 %随即生成扰动矩阵datbA=a+dataB

27、=b+datbxx=geshow(A,B) %解扰动后的解x0=norm(xx-x,1)/norm(x,1) %得出的理论结果保存为:fanshu.mfunction x=geshow(A,B) %用高斯消去法解方程组m,n=size(A);nb=n+1;AB=A B;for i=1:n-1 pivot=AB(i,i); for k=i+1:n AB(k,i:nb)=AB(k,i:nb)-(AB(k,i)/pivot)*AB(i,i:nb); endendx=zeros(n,1);x(n)=AB(n,nb)/AB(n,n);for i=n-1:-1:1 x(i)=(AB(i,nb)-AB(i,

28、i+1:n)*x(i+1:n)/AB(i,i);end保存为:geshow.mfunction cond2(A) %自定义求二阶条件数B=A*A;V1,D1=eig(B);V2,D2=eig(B(-1);cond2A=sqrt(max(max(D1)*sqrt(max(max(D2)end保存为:cond2.mformat longfor n=10:10:100n=n %n为矩阵的阶 A=fix(100*randn(n); %随机生成矩阵A condestA=condest(A) %用condest求条件数 cond2(A) %用自定义的求条件数 condA2=cond(A,2) %用cond

29、求条件数 pause %运行一次暂停end保存为:shiyan52.mn=input(please input n:n=) %输入矩阵的阶数a=fix(100*rand(n)+1; %随机生成一个矩阵ax=ones(n,1); %假设知道方程组的解全为1b=a*x; %用矩阵a和以知解得出矩阵bdata=rand(n)*0.00001; %随即生成扰动矩阵datadatb=rand(n,1)*0.00001; %随即生成扰动矩阵datbA=a+data;B=b+datb;xx=geshow(A,B); %利用第一小问的geshow.m求出解阵x0=norm(xx-x,1)/norm(x,1)

30、%得出的理论结果x00=cond(A)/(1-norm(inv(A)*norm(xx-x)*(norm(xx-x)/(norm(A)+norm(datb)/norm(B) %得出的估计值datx=abs(x0-x00) %求两者之间的误差保存为:sy5_2.mformat longfor n=4:11 n=n %n为矩阵的阶数Hi=hilb(n); %生成Hilbert矩阵cond1Hi=cond(Hi,1) %求Hilbert矩阵得三种条件数 cond2Hi=cond(Hi,2) condinfHi=cond(Hi,inf) pauseend数值实验结果及分析: fanshuplease i

31、nput n:n=6n = 6a = 14 25 16 88 19 89 32 93 85 48 92 60 14 40 88 50 13 16 23 52 19 29 2 32 40 10 100 7 37 24 14 3 72 27 70 1x = 1 1 1 1 1 1b = 251 410 221 157 218 187data = 1.0e-005 * 0.39690379186910 0.78196184196050 0.63712194084590 0.82064368228574 0.66093213223947 0.51488031898783 0.6498681305925

32、0 0.23756508204022 0.54592415509902 0.97047237460911 0.35801711338781 0.22157934638561 0.08500060621463 0.19573076378328 0.84805722441693 0.48692499554190 0.93819943010121 0.72500937095222 0.76880950325876 0.26321391517561 0.80209765848011 0.81746853554695 0.48766697476487 0.06824661097009 0.9697017

33、0497170 0.71378506459614 0.66830641006672 0.64157116784600 0.09099035774397 0.96412426837254 0.71479723187621 0.97759973943565 0.67098263396985 0.30634935951390 0.67383411686207 0.20765658836866datb = 1.0e-005 * 0.16111822555138 0.63822138259275 0.00022817289162 0.33563294335217 0.27509982146621 0.0

34、4452752039203A = 1.0e+002 * 0.14000003969038 0.25000007819618 0.16000006371219 0.88000008206437 0.19000006609321 0.89000005148803 0.32000006498681 0.93000002375651 0.85000005459242 0.48000009704724 0.92000003580171 0.60000002215793 0.14000000850006 0.40000001957308 0.88000008480572 0.50000004869250

35、0.13000009381994 0.16000007250094 0.23000007688095 0.52000002632139 0.19000008020977 0.29000008174685 0.02000004876670 0.32000000682466 0.40000009697017 0.10000007137851 1.00000006683064 0.07000006415712 0.37000000909904 0.24000009641243 0.14000007147972 0.03000009775997 0.72000006709826 0.270000030

36、63494 0.70000006738341 0.01000002076566B = 1.0e+002 * 2.51000001611182 4.10000006382214 2.21000000002282 1.57000003356329 2.18000002750998 1.87000000445275xx = 0.99999830779720 1.00000022569555 1.00000019341555 0.99999909388073 0.99999996894021 1.00000066032794x0 = 6.181368174725440e-007的计算结果为:6.181

37、368174725440e-007(2)NcondestAcond2AcondA2101.152530883943102e+00232.8905456307542132.89054563075420203.470959631940668e+00265.5412238417896665.54122384178720306.050503865112835e+0021.126539755706398e+0021.126539755706322e+002403.549487892582470e+00261.3753756968344861.37537569683365506.8550181847794

38、08e+00281.1213899375359481.12138993753482601.082004656409367e+0041.704830815154781e+0031.704830815108527e+003703.234679145192132e+0033.878481155980936e+0023.878481155978439e+002808.318226153918658e+00286.2381429985251386.23814299853018902.063634143407935e+0032.120696380331705e+0022.120696380331079e+

39、0021001.536592818758897e+0031.559132035738491e+0021.559132035738373e+002 sy5_2please input n:n=8n = 8x0 = 1.095033343195828e-006x00 = 1.705456352162135e-005datx = 1.595953017842553e-005给出对的估计是:1.705456352162135e-005的理论结果是: 1.095033343195828e-006结果相差: 1.595953017842553e-005(4)ncond1Hicond2HicondinfHi

40、42.837499999999738e+0041.551373873892786e+0042.837499999999739e+00459.436559999999364e+0054.766072502414135e+0059.436559999999336e+00562.907027900294878e+0071.495105864009243e+0072.907027900294064e+00779.851948897194700e+0084.753673565864586e+0089.851948897198483e+00883.387279082022742e+0101.5257575

41、45841988e+0103.387279081949470e+01091.099650993366047e+0124.931544439891016e+0111.099650991701052e+012103.535372424347474e+0131.602528637652488e+0133.535372455375642e+013111.230369955362001e+0155.223946340715823e+0141.230369938308720e+015讨论:线性代数方程组的性态与条件数有着很重要的关系,既矩阵的条件数是刻画矩阵性质的一个重要的依据,条件数越大,矩阵“病态”性

42、越严重,在解线性代数方程组的过程中较容易产生比较大的误差,则在实际问题的操作过程中,我们必须要减少对条件数来求解,把条件数较大的矩阵化成条件数较小的矩阵来进行求解。实验总结:在本次实验中,使我们知道了矩阵条件数对线性代数方程组求解的影响,条件数越大,对最后解的影响的越大,hilbert矩阵是一个很”病态”的矩阵,他的条件数随着阶数的增加而增大,每增加一阶,条件数就增大一个数量级,在求解的过程中要尽量避免hilbert矩阵学号:06450210姓名:万轩实验七 非线性方程求根实验7.1(迭代法、初始值与收敛性)实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收

43、敛性的关系。问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。实验内容:考虑一个简单的代数方程 针对上述方程,可以构造多种迭代法,如 在实轴上取初始值x0,请分别用迭代(7.1)-(7.3)作实验,记录各算法的迭代过程。实验要求:(1)取定某个初始值,分别计算(7.1)-(7.3)迭代结果,它们的收敛性如何?重复选取不同的初始值,反复实验。请自选设计一种比较形象的记录方式(如利用Matlab的图形功能),分析三种迭代法的收敛性与初值选取的关系。(2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何

44、?试分析迭代法对不同的初值是否有差异?(3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。实验过程:程序:clearclcs=input(请输入要运行的方程,运行第几个输入几s=);clfif s=1 %决定坐标轴的范围和初始值a=-1.5;b=2.5; y00=0; x00=input(请输入第一个函数的初值:x00=);elseif s=2a=0.1;b=6.5; y00=0; x00=input(请输入第二个函数的初值:x00=);elseif s=3a=0;b=2; y00=0; x00=input(请输入第三个函数的初值:x00=);e

45、ndx=linspace(a,b,80);y0=x; %计算直线y=xy1=zxy7f(x,s); %计算迭代函数y=f(x)clear y;y=y0;y1;if s=1 %画图plot(x,y,linewidth,1)legend(y=x,y=f1) title(x(n+1)=x(n)2-1) %输出标题elseif s=2plot(x,y,linewidth,2)legend(y=x,y=f2) title(x(n+1)=1+1/x(n)elseif s=3plot(x,y,linewidth,3)legend(y=x,y=f3) title(x(n+1)=sqrtx(n)+1)endho

46、ld onplot(a b,0,0,k-,0 0,a b,k-)axis(a,b,a,b) %画坐标轴z=;for i=1:15 %画蛛网图,迭代过程为n=15次xt(1)=x00;yt(1)=y00; %决定始点坐标xt(2)=zxy7f(xt(1),s); %决定终点坐标yt(2)=zxy7f(xt(1),s);zxyplot7(xt,yt,0.6) %画蛛网图 if i=5 pause %按任意键逐次观察前5次迭代的蛛网图 endx00=xt(2);y00=yt(2); %将本次迭代的终点作为下次的始点z=z,xt(1); %保存迭代点end保存为:zxy7.mfunction y=zx

47、y7f(x,s)if s=1 y=(x.*x-1);elseif s=2 y=(1+1./x);elseif s=3 y=sqrt(x+1);end保存为:zxy7f.mfunction out=zxyplot7(x,y,p)%画一次迭代的蛛网图,改变p调节箭头的大小u(1)=0;v(1)=(y(2)-y(1); %画出始点(x(1),y(1)终点(x(2),y(2)的有向折线段u(2)=eps;v(2)=eps;h=quiver(x(1) x(1),y(1) y(2),u,v,p);set(h,color,red);hold onu(1)=(x(2)-x(1);v(1)=0;u(2)=eps

48、;v(2)=eps;h=quiver(x(1) x(2),y(2) y(2),u,v,p);set(h,color,red);plot(x(1) x(1) x(2),y(1) y(2) y(2),r.-)保存为:zxyplot7.m数值实验结果及分析:对于第一个迭代方程x00=1.5x00=0.5x00=0.8 x00=1.2对于第二个迭代方程x00=0.5x00=3.0x00=0.2 x00=5.0对于第三个迭代方程x00=0.2 x00=1.0x00=0.6 x00=1.4对于这三种迭代方程,第一个迭代方程不收敛,第二个和第三个迭代方程收敛。对于同一个迭代方程,去不同的初植,收敛的速度也是

49、不相同的,对于第二个迭代方程,取得初始值点处对应迭代方程点处的斜率的绝对值越小,收敛速度越快。讨论:用迭代法来求非线性方程的根,对于同一个方程有多种不同的迭代方程,用不同的迭代法进行迭代,得到的结果也有所不同,有的收敛有的不收敛,通过上面的实验,可以得出:迭代方程收敛性与迭代方程的坡度有关,即曲线的斜率有关,斜率越小的收敛性就越好,收敛速度越快,得到真解所需要的迭代数就越少;对同一个迭代方程取不同的初始值,对迭代方程的收敛速度也有一定的影响。对于解线性方程组用迭代法的收敛性,取决于迭代方法的系数矩阵的普半径的大小,普半径小于1就收敛,于初值的选取无关,而对于解非线性方程的根用迭代法求解的收敛性取决于迭代方程的斜率,取定初始点的斜率小于1就收敛,于初值的选取有关。实验总结:对于非线性方程的迭代法求根,有多种迭代方法,适当的选取迭代方程和适合的初值,有利于提高迭代方程的迭代速度,减少计算量,较快的得到理想到答案。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!