数值分析课程设计讲解.docx
《数值分析课程设计讲解.docx》由会员分享,可在线阅读,更多相关《数值分析课程设计讲解.docx(31页珍藏版)》请在三一文库上搜索。
1、实验1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个 水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又 去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰 子分成五堆,恰多一只给猴子,私藏一堆,再去入睡,天亮以后,大家把余下的 椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰 子?算法分析:求解这一问题可以用迭代递推算法。首先分析椰子数目的变化规律, 设最初的椰子数为P 0,即第一个水手所处理之前的椰子数, 用P 1、P 2、p 3、
2、P4、 P5分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有4Pk 1 = 5(Pk一1),(k=0,1,2,3,4)再用x表示最后每个水手平分得到的椰子数,于是有x = 1(P5-1)5所以P5 = 5x 1利用逆向递推的方法,有5PkPk1 1, (k=4,3,2,1,0)4有了逆向递推关系式,求解这一问题似乎很简单,但由于椰子数为一正整数, 用任意的x作为初值递推出的P0数据不一定是合适的。这里用for 循环语句结合break 语句来寻找合适的x和p0 ,对任意的x 递推计算出Po ,当计算结果为正整数时,结果正确,否则选取另外的 x再次 重新递推计算,直到计算出的结果 P
3、o为正整数为止。MATLA射程代码:(1) n=inPut(输出 n 的值:);for x=1:np=5*x+1;for k=1:5 p=5*p/4+1;endif p=fix(p)breakendenddisp(x,p)输出结果:输出 n 的值: 1500102315621(2) for x=1:infp=5*x+1;for k=1:5p=5*p/4+1;endif p=fix(p) breakendenddisp(x,p)输出结果:102315621C语言编程代码:#include int count(int);void main()int i, n, y;printf( 输入水手数: n
4、 );scanf( %d ,&n);y=count(n);for(i=0;i n;i+)printf( %dn ,y); y=(y-1)/5*4;int count(int a)int m,i,k=1,ok=0;for(i=1;)if(i=1) m=k;if(k*5+1)%4=0) k=(k*5+1)/4; i+; else k=+m;i=1;if(i=a&ok 4)ok+; k=+m; i=1;if(i=a&ok=4) break;return(k*5+1);实验1 . 3绘制Koch分形曲线问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5 个结
5、点的新的图形(图 1) ;在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替, 再次形成新的图形(图 2) ,这时,图形中共有17 个结点。这种迭代继续进行下去可以形成 Koch 分形曲线。在迭代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。 Koch 分形曲线的绘制与算法设计和计算机实现相关。问题分析:考虑由直线段( 2 个点) 产生第一个图形( 5 个点)的过程, 设 P1和 P5 分别为原始直线段的两个端点。现在需要在直线段的中间依次插入三个点P2,P3,P4产生第一次迭代的图形(图1)。显然,P2位于P
6、i点右端直线段的三分之一处,R点绕P2旋转60度(逆时针方向)而得到的,故可以处理为向量 P2 P4经正交变换而得到向量P2P3,形成算法如下:(1)P2 =P +(F5 P)/3;(2) R+2(F5P)/3;(3)2=P2 +(P4-P2)X AT ;在算法的第三步中,A为正交矩阵。冗icos3冗 ,sin -3ji sin3in cos3这一算法将根据初始数据(Pi和P5点的坐标),产生图1中5个结点的坐标。 这5个结点的坐标数组,组成一个5X2矩阵。这一矩阵的第一行为为Pi的坐标, 第二行为P的坐标,第二行为PJ勺坐标第五行为P5的坐标。矩阵的第一列 元素分别为5个结点的x坐标,第二列
7、元素分别为5个结点的y坐标。问题思考与实验:(1)考虑在Koch分形曲线的形成过程中结点数目的变化规律。设第 k次迭 代产生结点数为nk,第k+1迭代产生结点数为nk书,试写出nk和nk书之间的递推 关系式;(2)参考问题分析中的算法,考虑图1到图2的过程,即由第一次迭代的5 个结点的结点坐标数组,产生第二次迭代的17个结点的结点坐标数组的算法;(3)考虑由第k次迭代的nk个结点的结点坐标数组,产生第 k+1次迭代的 nk ,个结点的结点坐标数组的算法;(4)设计算法用计算机绘制出如下的 Koch分形曲线(图3)。算法分析:(1)第k次迭代产生的结点数 为 错误!未找到引用源。,第k+1次迭
8、代产生的结点数为错误!未找到引用源。错误!未找 到引用源。(2) 第一次迭代的 5 个结点的结点坐标数组, 错误!未找到引用源。 错误!未找到引用源。 错误!未找到引用源。 错误!未找到引用源。在 错误!未找到引用源。 和 错误!未找到引用源。 之间( 1) 错误! 未找到引用源。 = 错误! 未找到引用源。 + ( 错误! 未找到引用源。 )/3( 2) 错误! 未找到引用源。 = 错误! 未找到引用源。 + 2(错误!未找到引用源。 )/3( 3) 错误! 未找到引用源。 = 错误! 未找到引用源。 + (错误!未找到引用源。 )X错误!未找到引用源。在 错误!未找到引用源。 和 错误!未
9、找到引用源。 之间( 4) 错误! 未找到引用源。 = 错误! 未找到引用源。 + ( 错误! 未找到引用源。 )/3( 5) 错误! 未找到引用源。 = 错误! 未找到引用源。 + 2(错误!未找到引用源。 )/3( 6) 错误! 未找到引用源。 = 错误! 未找到引用源。 + (错误!未找到引用源。 )X错误!未找到引用源。在 错误!未找到引用源。 和 错误!未找到引用源。 之间( 7) 错误! 未找到引用源。 = 错误! 未找到引用源。 + (错误! 未找到引用源。 )/3( 8) 错误! 未找到引用源。 = 错误! 未找到引用源。 + 2(错误!未找到引用源。 )/3( 9) 错误!
10、未找到引用源。 = 错误! 未找到引用源。 + (错误!未找到引用源。 )X错误!未找到引用源。在 错误!未找到引用源。 和 错误!未找到引用源。 之间( 10) 错误! 未找到引用源。 = 错误! 未找到引用源。 + (错误!未找到引用源。 )/3( 11) 错误!未找到引用源。 = 错误!未找到引用源。 + 2(错误!未找到引用源。 )/3( 12) 错误! 未找到引用源。 = 错误! 未找到引用源。 + (错误!未找到引用源。 )X错误!未找到引用源。( 13) 绘图编程代码:p=0 0;10 0;n=2;A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3
11、); for k=1:5d=diff(p)/3;m=4*n-3;q=p(1:n-1,:);p(5:4:m,:)=p(2:n,:);p(2:4:m,:)=q+d;p(3:4:m,:)=q+d+d*A;p(4:4:m,:)=q+2*d;n=m;endplot(p(:,1),p(:,2),k)axis equalaxis off4)运行结果:用高斯消元法的消元过程作矩阵分解。设20 23A= 1812-3 15_消元过程可将矩阵A化为上三角矩阵U,试求出消元过程所用的乘数m2i、m3i、m3i并以如下格式构造下三角矩阵L和上三角矩阵U120 23L = m21 1 ,U =a22) a23(2)口3
12、1 m)32 1 Ja33验证:矩阵A可以分解为L和U的乘积,即A=LU。编程代码:高斯消元过程:function x=nagauss(a,b,flag)if nargin b=11/6;13/12;47/60 b =1.83331.08330.7833(2)b=1.83;1.08;0,783; H=1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5;X=HbX =1.08000.54001.4400结果跟第(1)题的结果相差比较大,则矩阵为变态矩阵实验3.1用泰勒级数的有限项逼近正弦函数y0(x) =sinx, x 0,二yi(x) = x, x 0,二 /23y2(x) =
13、x-x /6,x 0,二 /235_y3(x) =x-x /6 x /120, x 0,二 /2用计算机绘出上面四个函数的图形 算法分析:用泰勒级数逼近正弦函数,从泰勒的一阶展开,到二阶展开,再到三阶展开, 绘制图形,以查看图形的拟合程度。MATLAB中常用的绘制二维图形的函数是 plot函数,其余的函数都是围绕 其发展扩充形成的,但是在二阶展开以后fplot函数得拟合效果比plot函数得要好,图形圆滑度更好,更连贯,而且 fplot函数代码简单,更为便捷。所以二阶 以后使用了 fplot函数快速绘图。程序代码: x=0:0.1:pi; y=sin(x);plot(x,y)x=0:0.1:pi
14、 y=x; piot(x,y)fplot(x-xA3/6,0,pi/2,2e-3)x=0:0.1:pi/2;y=x-(x.A3)/6; plot(x,y,k) |x=0:0.1:pi/2;fplot(x-xA3/6+xA5/120,0,pi/2,2e-3)y=x-(xA3)/6+xA5/120; plot(x,y,k)x=0:0.1:pi;y=sin(x);plot(x,y,k);hold on;x=0:0.1:pi;y=x;plot(x,y,b);hold on;fplot(x-xA3/6,0,pi/2,2e-3,r);hold on;fplotCx-x.A3/6+x.A5/120,0,p
15、i/2,2e-3,y);hold off;结果分析:图中黑色为正弦曲线,蓝色为一阶泰勒逼近,红色为二阶泰勒逼近, 黄色为三阶泰勒逼近,可见黄色逼近效果最好,泰勒级数的阶数越高逼近效果越 好。实验3.2绘制飞机的降落曲线一架飞机飞临北京国际机场上空时,其水平速度为540km/h,飞行高度为1000m。飞机从距机场指挥塔的横向距离 12 000m处开始降落。根据经验,一架 水平飞行的飞机其降落曲线是一条三次曲线。建立直角坐标系,设飞机着陆点为 原点O,降落的飞机为动点P(x,y),则x表示飞机距指挥塔的距离,y表示飞机 的飞行高度,降落曲线为y(x); a0 a1x a2x2 a3x3该函数满足条
16、件:y(0) =0, y(12000) =1 000y(0) =0, y(12000) =0(1)试利用y(x)满足的条件确定三次多项式中的四个系数;(2)用所求出的三次多项式函数绘制出飞机降落曲线。(1) p=a3,a2,a1,a0;(2) f=polyder(p);(3) p(0)=0;p(12000)=1000;f(0)=0;f(12000)=0;a0a1a2a3编程代码:function S=f(x1,y1,x2,y2,x3,y3,x4,y4)format longa1=1,x1,x1A2,x1A3a2=1,x2,x2A2,x2A3a3=0,1,2*x3,3*x3A2a4=0,1,2*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 课程设计 讲解
