数值分析实验报告128737.pdf

上传人:得****3 文档编号:83942355 上传时间:2023-03-31 格式:PDF 页数:38 大小:1.25MB
返回 下载 相关 举报
数值分析实验报告128737.pdf_第1页
第1页 / 共38页
数值分析实验报告128737.pdf_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《数值分析实验报告128737.pdf》由会员分享,可在线阅读,更多相关《数值分析实验报告128737.pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、的一个扰动)2.1(0)(19 xxp 其中是一个非常小的数。这相当于是对()中19x的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。实验内容:为了实现方便,我们先介绍两个Matlab函数:“roots”和“poly”。roots(a)u 其中若变量 a 存储 n+1 维的向量,则该函数的输出 u 为一个 n 维的向量。设 a的元素依次为121,naaa,则输出 u 的各分量是多项式方程 01121nnnnaxaxaxa 的全部根;而函数 poly(v)b 的输出 b 是一个 n+1 维变量,它是以 n 维变量 v 的各分量为根的多项式的系数。可见“r

3、oots”和“poly”是两个互逆的运算函数。;000000001.0ess);21,1(zerosve;)2(essve)20:1(vepolyroots 上述简单的 Matlab 程序便得到()的全部根,程序中的“ess”即是()中的。实验要求:(1)选择充分小的 ess,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何(2)将方程()中的扰动项改成18x或其它形式,实验中又有怎样的现象出现(3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将方程()写成展开

4、的形式,)3.1(0),(1920 xxxp 同时将方程的解 x 看成是系数的函数,考察方程的某个解关于的扰动是否敏感,与研究它关于的导数的大小有何关系为什么你发现了什么现象,哪些根关于的变化更敏感 思考题一:(上述实验的改进)在上述实验中我们会发现用 roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考 Matlab 的帮助。实验过程:程序:a=poly(1:20);rr=roots(a);for n=2:21 n for m=1:9 ess=10(-6-m);ve=z

5、eros(1,21);ve(n)=ess;r=roots(a+ve);-6-m s=max(abs(r-rr)end end 利用符号函数:(思考题一)a=poly(1:20);y=poly2sym(a);rr=solve(y)for n=2:21 n for m=1:8 ess=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)end end 数值实验结果及分析:format long-6-m n-7-8-9-10 2 3 4 0 5 0 0 6 0 0

6、 0 0 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 10 0 0 0 0 11 0 0 0 0 12 0 0 0 0 13 0 0 0 0 14 0 0 0 0 15 0 0 0 0 16 0 0 0 0 17 0 0 0 0 18 0 0 0 0 19 0 0 0 0 20 0 0 0 0 21 0 0 0 0 -6-m n-11-12-13-14 2 0 3 0 0 0 4 0 0 0 0 5 0 0 0 0 6 0 0 0 0 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0 10 0 0 0 0 11 0 0 0 0 12 0 0 0 0 13 0 0 0

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

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

9、)=l(i)(x)/(1+25x(j)2)i=0,1,n 其中 l(i)(x),i=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)为插值节点构造上述各函数的拉格朗日插值多项式,比较其

10、结果。实验过程:程序:多项式插值的震荡现象(实验)for m=1:6 subplot(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 保存为:function largrang(l

11、ongn)mm=input(please input mm(运行第几个函数就输入mm 为几):mm=)if mm=1%d表示定义域的边界值 d=1;elseif mm=2|mm=3 d=5;end x0=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);end x=sym(x);n=length(x0);s=;for k=1:n p=;for j=1:n if j=k p=p*(x-x0(j)/(x0(k)-x0(j);end e

12、nd s=p*y0(k)+s;end y=s;if mm=1 ezplot(1/(1+25*x2)elseif mm=2 ezplot(x/(1+x4)elseif mm=3 ezplot(atan(x)end hold on ezplot(y,-d,d)hold off 保存为:数值实验结果及分析:对于第一个函数 f(x)=1/(1+25x2)-10100.20.40.6xlongn=6-10100.51xlongn=12-101-0.500.51xlongn=18-101-0.500.511.5xlongn=24-101-2-1012xlongn=30-101-0.500.511.5xlo

13、ngn=36 对于第二个函数 h(x)=x/(1+x4)-505-0.500.5xlongn=6-505-101xlongn=12-505-101xlongn=18-505-4-2024xlongn=24-505-202xlongn=30-505-20020 xlongn=36 对于第三个函数g(x)=arctan(x)-505-101xlongn=6-505-2-1012xlongn=12-505-202xlongn=18-505-202xlongn=24-505-202xlongn=30-505-202xlongn=36 讨论:通过对三个函数得出的 largrang 插值多项式并在数学软件

14、中的运行,得出函数图象,说明了对函数的支点不是越多越好,而是在函数的两端而言支点越多,而largrang 插值多项式不是更加靠近被逼近的函数,反而更加远离函数,在函数两端的跳动性更加明显,argrang 插值多项式对函数不收敛。实验总结:利用 MATLAB 来进行函数的 largrang 插值多项式问题的实验,虽然其得出的结果是有误差的,但是增加支点的个数进行多次实验,可以找出函数的 largrang 插值多项式的一般规律,当支点增加时,largrang 插值多项式对函数两端不收敛,不是更加逼近,而是更加远离,跳动性更强。所以对于函数的 largrang 插值多项式问题可以借助于 MATLAB

15、 来进行问题的分析,得到比较准确的实验结规律。学号:06450210 姓名:万轩 实验五 解线性方程组的直接方法 实验(主元的选取与算法的稳定性)问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保 Gauss 消去法作为数值算法的稳定性呢 Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。实验内容:考虑线性方程组 nnnRbRAbAx,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的 Gauss 消去过程。实验要求:(1)取矩阵141

16、5157,6816816816bA,则方程有解Tx)1,1,1(*。取 n=10计算矩阵的条件数。让程序自动选取主元,结果如何 (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何分析实验的结果。(3)取矩阵阶数 n=20 或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。实验过程:程序:建立 M 文件

17、: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(条件数对应的范数是 p-范数:p=)pp=cond(A,p)pause m,n=size(A);nb=n+1;Ab=A b r=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(i

18、p 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:n Ab(k,i:nb)=Ab(k,i:nb)-(Ab(k,i)/pivot)*Ab(i,i:nb);end disp(Ab);pause end x=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

19、,i);end 数值实验结果及分析:取矩阵 A 的阶数:n=10,自动选取主元:format long gauss 请输入矩阵 A 的阶数:n=10 n=10 条件数对应的范数是 p-范数:p=1 p=1 pp=+003 请输入是否为手动,手动输入 1,自动输入 0:r=0 r=0 取矩阵 A 的阶数:n=10,手动选取主元:选取绝对值最大的元素为主元:gauss 请输入矩阵 A 的阶数:n=10 n=10 条件数对应的范数是 p-范数:p=2 p=2 pp=+003 请输入是否为手动,手动输入 1,自动输入 0:r=1 r=1 ans=1 1 1 1 1 1 1 1 1 1 选取绝对值最小的

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

21、p=+006 请输入是否为手动,手动输入 1,自动输入 0:r=1 r=1 ans=将 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=7 n=7 条件数对应的范数是 p-范数:p=1 p=1 pp=+008 请输入是否为手动,手动输入 1,自动输入 0:r=1 r=1 ans=gauss 请输入矩阵 A 的阶数:n=7 n=7 条件数对应的范数是 p-范数:p=2 p=2 pp=+008 请输入是否为手动,手动输入 1,自动输入 0:r

22、=1 r=1 ans=该问题在主元选取与算出结果有着很大的关系,取绝对值大的元素作为主元比取绝对值小的元素作为主元时产生的结果比较准确,即选取绝对值小的主元时结果产生了较大的误差,条件数越大产生的误差就越大。讨论:在 gauss 消去法解线性方程组时,主元的选择与算法的稳定性有密切的联系,选取绝对值大的元素作为主元比绝对值小的元素作为主元时对结果产生的误差较小。条件数越大对用 gauss 消去法解线性方程组时,对结果产生的误差就越大。实验总结:对用 gauss 消去法解线性方程组时,主元的选取与算法的稳定性有密切的联系,选取适当的主元有利于得出稳定的算法,在算法的过程中,选取绝对值较大的主元比

23、选取绝对值较小的主元更有利于算法的稳定,选取绝对值最大的元素作为主元时,得出的结果相对较准确较稳定。条件数越小,对用这种方法得出的结果更准确。在算除法的过程中要尽量避免使用较小的数做为除数,以免发生结果数量级加大,使大数吃掉小数,产生舍入误差。学号:06450210 姓名:万轩 实验(线性代数方程组的性态与条件数的估计)问题提出:理论上,线性代数方程组bAx 的摄动满足 bbAAAAAcondxx11)(矩阵的条件数确实是对矩阵病态性的刻画,但在实际应用中直接计算它显然不现实,因为计算1A通常要比求解方程bAx还困难。实验内容:Matlab 中提供有函数“condest”可以用来估计矩阵的条件

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

25、)给出的计算结果进行比较,分析所得结果。注意,如果给出了 cond(A)和A的估计,马上就可以给出1A的估计。(4)估计著名的 Hilbert 矩阵的条件数。njijihhHjinnji,2,1,11,)(,实验过程:程序:n=input(please input n:n=)%输入矩阵的阶数 a=fix(100*rand(n)+1%随机生成一个矩阵 a x=ones(n,1)%假设知道方程组的解全为 1 b=a*x%用矩阵 a 和以知解得出矩阵 b data=rand(n)*%随即生成扰动矩阵 data datb=rand(n,1)*%随即生成扰动矩阵 datb A=a+data B=b+da

26、tb xx=geshow(A,B)%解扰动后的解 x0=norm(xx-x,1)/norm(x,1)%得出xxxxx的理论结果 保存为:function 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);end end x=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)*

27、x(i+1:n)/AB(i,i);end 保存为:function cond2(A)%自定义求二阶条件数 B=A*A;V1,D1=eig(B);V2,D2=eig(B(-1);cond2A=sqrt(max(max(D1)*sqrt(max(max(D2)end 保存为:format long for n=10:10:100 n=n%n为矩阵的阶 A=fix(100*randn(n);%随机生成矩阵 A condestA=condest(A)%用 condest 求条件数 cond2(A)%用自定义的求条件数 condA2=cond(A,2)%用 cond 求条件数 pause%运行一次暂停

28、end 保存为:n=input(please input n:n=)%输入矩阵的阶数 a=fix(100*rand(n)+1;%随机生成一个矩阵 a x=ones(n,1);%假设知道方程组的解全为1 b=a*x;%用矩阵 a 和以知解得出矩阵 b data=rand(n)*;%随即生成扰动矩阵 data datb=rand(n,1)*;%随即生成扰动矩阵 datb A=a+data;B=b+datb;xx=geshow(A,B);%利用第一小问的求出解阵 x0=norm(xx-x,1)/norm(x,1)%得出xxxxx的理论结果 x00=cond(A)/(1-norm(inv(A)*nor

29、m(xx-x)*(norm(xx-x)/(norm(A)+norm(datb)/norm(B)%得出xxxxx的估计值 datx=abs(x0-x00)%求两者之间的误差 保存为:format long for n=4:11 n=n%n为矩阵的阶数 Hi=hilb(n);%生成 Hilbert 矩阵 cond1Hi=cond(Hi,1)%求 Hilbert 矩阵得三种条件数 cond2Hi=cond(Hi,2)condinfHi=cond(Hi,inf)pause end数值实验结果及分析:fanshu please input n:n=6 n=6 a=14 25 16 88 19 89 32

30、 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 1 x=1 1 1 1 1 1 b=251 410 221 157 218 187 data=*datb=*A=+002*B=+002*xx=x0=xxxxx的计算结果为:(2)N condestA cond2A condA2 10 e+002 20 e+002 30 e+002 e+002 e+002 40 e+002 50 e+002 60 e+004 e+003 e+003 70 e+003 e+002 e+002 80 e

31、+002 90 e+003 e+002 e+002 100 e+003 e+002 e+002 sy5_2 please input n:n=8 n=8 x0=x00=datx=给出对xxxxx的估计是:xxxxx的理论结果是:结果相差:(4)n cond1Hi cond2Hi condinfHi 4 e+004 e+004 e+004 5 e+005 e+005 e+005 6 e+007 e+007 e+007 7 e+008 e+008 e+008 8 e+010 e+010 e+010 9 e+012 e+011 e+012 10 e+013 e+013 e+013 11 e+015

32、e+014 e+015 讨论:线性代数方程组的性态与条件数有着很重要的关系,既矩阵的条件数是刻画矩阵性质的一个重要的依据,条件数越大,矩阵“病态”性越严重,在解线性代数方程组的过程中较容易产生比较大的误差,则在实际问题的操作过程中,我们必须要减少对条件数来求解,把条件数较大的矩阵化成条件数较小的矩阵来进行求解。实验总结:在本次实验中,使我们知道了矩阵条件数对线性代数方程组求解的影响,条件数越大,对最后解的影响的越大,hilbert 矩阵是一个很”病态”的矩阵,他的条件数随着阶数的增加而增大,每增加一阶,条件数就增大一个数量级,在求解的过程中要尽量避免 hilbert 矩阵 学号:0645021

33、0 姓名:万轩 实验七 非线性方程求根 实验(迭代法、初始值与收敛性)实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收敛性的关系。问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。实验内容:考虑一个简单的代数方程 012 xx 针对上述方程,可以构造多种迭代法,如)1.7(121nnxx)2.7(111nnxx)3.7(11nnxx 在实轴上取初始值 x0,请分别用迭代()-()作实验,记录各算法的迭代过程。实验要求:(1)取定某个初始值,分别计算()-()迭代结果

34、,它们的收敛性如何重复选取不同的初始值,反复实验。请自选设计一种比较形象的记录方式(如利用Matlab的图形功能),分析三种迭代法的收敛性与初值选取的关系。(2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何试分析迭代法对不同的初值是否有差异(3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。实验过程:程序:clear clc s=input(请输入要运行的方程,运行第几个输入几s=);clf if s=1%决定坐标轴的范围和初始值 a=;b=;y00=0;x00=input(请输入第一个函数的初值:x00=);elseif s=2 a=

35、;b=;y00=0;x00=input(请输入第二个函数的初值:x00=);elseif s=3 a=0;b=2;y00=0;x00=input(请输入第三个函数的初值:x00=);end x=linspace(a,b,80);y0=x;%计算直线y=x y1=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=2 plot(x,y,linewidth,2)legend(y=x,y=f2)title(x

36、(n+1)=1+1/x(n)elseif s=3 plot(x,y,linewidth,3)legend(y=x,y=f3)title(x(n+1)=sqrtx(n)+1)end hold on plot(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,%画蛛网图 if i=5 pause%按任意键逐次观察前 5

37、次迭代的蛛网图 end x00=xt(2);y00=yt(2);%将本次迭代的终点作为下次的始点 z=z,xt(1);%保存迭代点 end 保存为:function y=zxy7f(x,s)if s=1 y=(x.*x-1);elseif s=2 y=(1+1./x);elseif s=3 y=sqrt(x+1);end 保存为:function 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=quive

38、r(x(1)x(1),y(1)y(2),u,v,p);set(h,color,red);hold on u(1)=(x(2)-x(1);v(1)=0;u(2)=eps;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),)保存为:数值实验结果及分析:对于第一个迭代方程 x00=-1.5-1-0.500.511.522.5-1.5-1-0.500.511.522.5x(n+1)=x(n)2-1y=xy=f1 x00=-1.5-1-0.500.511.522.5-1.5

39、-1-0.500.511.522.5x(n+1)=x(n)2-1y=xy=f1x00=-1.5-1-0.500.511.522.5-1.5-1-0.500.511.522.5x(n+1)=x(n)2-1y=xy=f1 x00=-1.5-1-0.500.511.522.5-1.5-1-0.500.511.522.5x(n+1)=x(n)2-1y=xy=f1 对于第二个迭代方程 x00=123456123456x(n+1)=1+1/x(n)y=xy=f2 x00=123456123456x(n+1)=1+1/x(n)y=xy=f2 x00=123456123456x(n+1)=1+1/x(n)y=

40、xy=f2 x00=123456123456x(n+1)=1+1/x(n)y=xy=f2 对于第三个迭代方程 x00=00.20.40.60.811.21.41.61.8200.20.40.60.811.21.41.61.82x(n+1)=sqrtx(n)+1y=xy=f3 x00=00.20.40.60.811.21.41.61.8200.20.40.60.811.21.41.61.82x(n+1)=sqrtx(n)+1y=xy=f3 x00=00.20.40.60.811.21.41.61.8200.20.40.60.811.21.41.61.82x(n+1)=sqrtx(n)+1y=xy

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁