数值分析上机实验报.pdf
《数值分析上机实验报.pdf》由会员分享,可在线阅读,更多相关《数值分析上机实验报.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).1.实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton 法及改进的 Newton 法。前言:(目的和意义)掌握二分法与Newton 法的基本原理和应用。数学原理:对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和 Newton法。对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在 a,b上连续,f(a)f(b)0,且 f(x)在a,b内仅有一个实根
2、x*,取区间中点c,若,则 c 恰为其根,否则根据 f(a)f(c)5e-6);c=(a+b)/2;if f12(a)*f12(c)0;a=c;else b=c;end R=b-a;%求出误差k=k+1;end x=c%给出解Newton 法及改进的 Newton 法源程序:clear%输入函数f=input(请输入需要求解函数,s)%求解 f(x)的导数df=diff(f);%改进常数或重根数miu=2;%初始值 x0 x0=input(input initial value x0);k=0;%迭代次数max=100;%最大迭代次数R=eval(subs(f,x0,x);%求解 f(x0),
3、以确定初值x0 时否就是解while(abs(R)1e-8)x1=x0-miu*eval(subs(f,x0,x)/eval(subs(df,x0,x);R=x1-x0;x0=x1;哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).3.k=k+1;if(eval(subs(f,x0,x)max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值ss=input(maybe result is error,choose a new x0,y/n?,s);if strcmp(ss,y)x0=input(input initia
4、l value x0);k=0;else break end end endk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.用二分法计算方程02sin2xx在1,2内的根。(610*5,下同)计算结果为x=1.40441513061523;f(x)=-3.797205105904311e-007;k=18;由 f(x)知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。2.用二分法计算方程013xx在1,1.5内的根。计算结果为x=1.32471847534180;f(x)=2.209494846194815e-006;k=17;由 f(x)知结果满足要求,但迭代次数还是比较多。3.
5、用 Newton 法求解下列方程a)01xxex0=0.5;计算结果为x=0.56714329040978;哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).4.f(x)=2.220446049250313e-016;k=4;由 f(x)知结果满足要求,而且又迭代次数只有4 次看出收敛速度很快。b)013xxx0=1;c)0)12()1(2xxx0=0.45,x0=0.65;当 x0=0.45 时,计算结果为x=0.49999999999983;f(x)=-8.362754932994584e-014;k=4;由 f(x)知结
6、果满足要求,而且又迭代次数只有4 次看出收敛速度很快,实际上该方程确实有真解 x=0.5。当 x0=0.65 时,计算结果为x=0.50000000000000;f(x)=0;k=9;由 f(x)知结果满足要求,实际上该方程确实有真解x=0.5,但迭代次数增多,实际上当取x00.68 时,x 1,就变成了方程的另一个解,这说明Newton 法收敛与初值很有关系,有的时候甚至可能不收敛。4.用改进的 Newton 法求解,有 2 重根,取20)12()1(2xxx0=0.55;并与 3.中的 c)比较结果。当 x0=0.55 时,程序死循环,无法计算,也就是说不收敛。改5.1时,结果收敛为x=0
7、.50000087704286;f(x)=4.385198907621127e-007;k=16;显然这个结果不是很好,而且也不是收敛至方程的2 重根上。当 x0=0.85 时,结果收敛为x=1.00000000000489;f(x)=2.394337647718737e-023;k=4;这次达到了预期的结果,这说明初值的选取很重要,直接关系到方法的收敛性,实际上直接用 Newton 法,在给定同样的条件和精度要求下,可得其迭代次数k=15,这说明改进后的 Newton 法法速度确实比较快。结论:对于二分法,只要能够保证在给定的区间内有根,使能够收敛的,当时收敛的速度和哈工大 A16 公寓 1
8、214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).5.给定的区间有关,二且总体上来说速度比较慢。Newton 法,收敛速度要比二分法快,但是最终其收敛的结果与初值的选取有关,初值不同,收敛的结果也可能不一样,也就是结果可能不时预期需要得结果。改进的Newton 法求解重根问题时,如果初值不当,可能会不收敛,这一点非常重要,当然初值合适,相同情况下其速度要比Newton 法快得多。哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).6.实验报告二题目:Gauss列主元消去法摘要:求解线性
9、方程组的方法很多,主要分为直接法和间接法。本实验运用直接法的Guass消去法,并采用选主元的方法对方程组进行求解。前言:(目的和意义)1.学习 Gauss消去法的原理。2.了解列主元的意义。3.确定什么时候系数阵要选主元数学原理:由于一般线性方程在使用Gauss消去法求解时,从求解的过程中可以看到,若)1(kkka=0,则必须进行行交换,才能使消去过程进行下去。有的时候即使)1(kkka0,但是其绝对值非常小,由于机器舍入误差的影响,消去过程也会出现不稳定得现象,导致结果不正确。因此有必要进行列主元技术,以最大可能的消除这种现象。这一技术要寻找行r,使得)1()1(max|kikkikrkaa
10、并将第 r 行和第 k 行的元素进行交换,以使得当前的)1(kkka的数值比 0 要大的多。这种列主元的消去法的主要步骤如下:1.消元过程对 k=1,2,n-1,进行如下步骤。1)选主元,记ikkirkaamax|若|rka很小,这说明方程的系数矩阵严重病态,给出警告,提示结果可能不对。2)交换增广阵 A 的 r,k 两行的元素。kjrjaa(j=k,n+1)3)计算消元kkkjikijijaaaaa/(i=k+1,n;j=k+1,n+1)2.回代过程对 k=n,n-1,1,进行如下计算哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要
11、太雷同).7.)/(11,nkjkkjkjnkkaxaax至此,完成了整个方程组的求解。程序设计:本实验采用 Matlab 的 M 文件编写。Gauss消去法源程序:clear a=input(输入系数阵:n)b=input(输入列阵 b:n)n=length(b);A=a b x=zeros(n,1);%函数主体for k=1:n-1;%是否进行主元选取if abs(A(k,k)abs(t)p=r;else p=k;end end%交换元素if p=k;for q=k:n+1;s=A(k,q);A(k,q)=A(p,q);A(p,q)=s;哈工大 A16 公寓 1214室 院士之家团队之作品
12、(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).8.end end end%判断系数矩阵是否奇异或病态非常严重if abs(A(k,k)yipusilong disp(矩阵奇异,解可能不正确)end%计算消元,得三角阵for r=k+1:n;m=A(r,k)/A(k,k);for q=k:n+1;A(r,q)=A(r,q)-A(k,q)*m;end end end%求解 x x(n)=A(n,n+1)/A(n,n);for k=n-1:-1:1;s=0;for r=k+1:n;s=s+A(k,r)*x(r);end t=(A(k,n+1)-s)x(k)=(A(k,n+1)-s
13、)/A(k,k)end 结果分析和讨论:例:求解方程10342212357562zyx。其中为一小数,当201410510,10,10,10时,分别采用列主元和不列主元的Gauss消去法求解,并比较结果。记 Emax为求出的解代入方程后的最大误差,按要求,计算结果如下:当510时,不选主元和选主元的计算结果如下,其中前一列为不选主元结果,后一列为选主元结果,下同。0.99999934768391 0.99999934782651 哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).9.2.00000217421972 2.000
14、00217391163 2.99999760859451 2.99999760869721 Emax=9.301857062382624e-010,0 此时,由于不是很小,机器误差就不是很大,由Emax可以看出不选主元的计算结果精度还可以,因此此时可以考虑不选主元以减少计算量。当1010时,不选主元和选主元的计算结果如下1.00001784630877 0.99999999999348 1.99998009720807 2.00000000002174 3.00000663424731 2.99999999997609 Emax=2.036758973744668e-005,0 此时由 Ema
15、x可以看出不选主元的计算精度就不好了,误差开始增大。当1410时,不选主元和选主元的计算结果如下1.42108547152020 1.00000000000000 1.66666666666666 2.00000000000000 3.11111111111111 300000000000000 Emax=0.70770085900503,0 此时由Emax可以看出,不选主元的结果应该可以说是不正确了,这是由机器误差引起的。当2010时,不选主元和选主元的计算结果如下NaN 1 NaN 2 NaN 3 Emax=NaN,0 不选主元时,程序报错:Warning:Divide by zero.。
16、这是因为机器计算的最小精度为10-15,所以此时的2010就认为是 0,故出现了错误现象。而选主元时则没有这种现象,而且由 Emax可以看出选主元时的结果应该是精确解。结论:采用 Gauss 消去法时,如果在消元时对角线上的元素始终较大(假如大于10-5),那么本方法不需要进行列主元计算,计算结果一般就可以达到要求,否则必须进行列主元这一步,以减少机器误差带来的影响,使方法得出的结果正确。哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).10.实验报告三题目:Rung 现象产生和克服摘要:由于高次多项式插值不收敛,会产生Run
17、ge 现象,本实验在给出具体的实例后,采用分段线性插值和三次样条插值的方法有效的克服了这一现象,而且还取的很好的插值效果。前言:(目的和意义)1.深刻认识多项式插值的缺点。2.明确插值的不收敛性怎样克服。3.明确精度与节点和插值方法的关系。数学原理:在给定 n+1 个节点和相应的函数值以后构造n 次的 Lagrange 插值多项式,实验结果表明(见后面的图)这种多项式并不是随着次数的升高对函数的逼近越来越好,这种现象就是 Rung 现象。解决 Rung 现象的方法通常有分段线性插值、三次样条插值等方法。分段线性插值:设在区间 a,b上,给定 n+1 个插值节点a=x0 x1xn=b 和相应的函
18、数值y0,y1,yn,求作一个插值函数)(x,具有如下性质:1)jjyx)(,j=0,1,n。2)(x在每个区间 xi,xj上是线性连续函数。则插值函数)(x称为区间 a,b上对应 n个数据点的分段线性插值函数。三次样条插值:给定区间 a,b一个分划:a=x0 x1xN=b若函数 S(x)满足下列条件:1)S(x)在每个区间 xi,xj上是不高于 3 次的多项式。2)S(x)及其 2 阶导数在 a,b上连续。则称S(x)使关于分划的三次样条函数。程序设计:本实验采用 Matlab 的 M 文件编写。其中待插值的方程写成function 的方式,如下哈工大 A16 公寓 1214室 院士之家团队
19、之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).11.function y=f(x);y=1/(1+25*x*x);写成如上形式即可,下面给出主程序Lagrange 插值源程序:n=input(将区间分为的等份数输入:n);s=-1+2/n*0:n;%给定的定点,Rf 为给定的函数x=-1:0.01:1;f=0;for q=1:n+1;l=1;%求插值基函数for k=1:n+1;if k=q;l=l.*(x-s(k)./(s(q)-s(k);else l=l;end end f=f+Rf(s(q)*l;%求插值函数end plot(x,f,r)%作出插值函数曲线gri
20、d on hold on 分段线性插值源程序clear n=input(将区间分为的等份数输入:n);s=-1+2/n*0:n;%给定的定点,Rf 为给定的函数m=0;hh=0.001;for x=-1:hh:1;ff=0;for k=1:n+1;%求插值基函数switch k case 1 if xs(n);l=(x-s(n)./(s(n+1)-s(n);else l=0;end otherwise if x=s(k-1)&x=s(k)&xR);%精度控制j=j+1;s=0;for p=1:2(j-2);s=s+f(a+(2*p-1)*h/(2(j-1);end T(1,j)=T(1,j-1
21、)/2+h*s/(2(j-1);%梯形公式应用for m=2:j;k=(j-m+1);T(m,k)=(4(m-1)*T(m-1,k+1)-T(m-1,k)/(4(m-1)-1);end end%给出 Romberg积分法的函数表哈工大 A16 公寓 1214室 院士之家团队之作品(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同).23.I=T(m,1)结果分析和讨论:进行具体的积分时,精度取R=1e-8。1.求积分dxx10063。精确解 I=24999676。运行程序得 Romberg积分法的函数表为1.0e+007*4.70101520000000 3.05022950000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 上机 实验
限制150内