数值分析课程设计要点.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只给猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? 算法分析:求解这一问题可以用迭代递推算法。首先分析椰子数目的变化规律,设最初的椰子数为p 0,即第一个水手所处理之前的椰子数,用p 1、p 2、p 3、p4、p 5 再用x表示最后每个水手平分得到的椰子数,于是有 所以 利用逆向递推的方法,有 有了逆向递推关系式,求解这一问题似乎很简单,但由于椰子数为一正整数,用任意的x作为初值递推出的p0数据不一定是合适的。 这里用 for 循环语句结合 break 语句来寻找合适的 x 和 p0 ,对任意的 x 递推计算出 p0 ,当计算结果为正整数时,结果正确,否则选取另外的?x 再次重新递推计算,直到计算出的结果 p0 为正整数为止。 MATLAB编程代码: n=input(输出n的值:); for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p) break end end disp([x,p]) 输出结果: 输出n的值:1500 15621 for x=1:inf p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p) break end end disp([x,p]) 输出结果: 15621 C语言编程代码: #include stdio.h int ? count(int); void ? main() { int ? i, n, y; printf( 输入水手数:\n ); scanf( %d ,n); y=count(n); for(i=0;i n;i++) { printf( %d\n ,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==aok 4) { ok++; k=++m; i=1; } if(i==aok==4) break; } return(k*5+1); } 实验1.3 绘制Koch分形曲线 问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5个结点的新的图形(图1);在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替,再次形成新的图形(图2),这时,图形中共有17个结点。这种迭代继续进行下去可以形成Koch分形曲线。在迭代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。Koch分形曲线的绘制与算法设计和计算机实现相关。 问题分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程,设和分别为原始直线段的两个端点。现在需要在直线段的中间依次插入三个点产生第一次迭代的图形(图1)。显然,位于点右端直线段的三分之一处,点绕旋转60度(逆时针方向)而得到的,故可以处理为向量经正交变换而得到向量,形成算法如下: (1); (2); (3); 在算法的第三步中,A为正交矩阵。 ; 这一算法将根据初始数据(和点的坐标),产生图1中5个结点的坐标。这5个结点的坐标数组,组成一个5×2矩阵。这一矩阵的第一行为为的坐标,第二行为的坐标,第二行为的坐标……第五行为的坐标。矩阵的第一列元素分别为5个结点的x坐标 ,第二列元素分别为5个结点的y坐标。 问题思考与实验: (1)考虑在Koch分形曲线的形成过程中结点数目的变化规律。设第k次迭代产生结点数为,第迭代产生结点数为,试写出和之间的递推关系式; (2)参考问题分析中的算法,考虑图1到图2的过程,即由第一次迭代的5个结点的结点坐标数组,产生第二次迭代的17个结点的结点坐标数组的算法; (3)考虑由第k次迭代

文档评论(0)

四娘 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档