分享
分享赚钱 收藏 举报 版权申诉 / 8

类型建模实例.doc

  • 上传人:fmgc7290
  • 文档编号:9020049
  • 上传时间:2019-07-20
  • 格式:DOC
  • 页数:8
  • 大小:285.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    建模实例.doc
    资源描述:

    1、1matlab 上机实习 1 例 1 被古希腊人称为几何三大难题之一的“立方倍积”问题可叙述为:求作一个立方体,使其体积为已知立方体的二倍。不妨设已知立方体体积为 V0=1,要作的立方体体积为V=2,则所求立方体高度应该为 ,由于 h 是无理数,既无法表示为分数形式也不h23能表示为有限位实数形式。用数值试验可以显示出“立方倍积”问题计算过程中的误差。用 MATLAB 的长型数据格式保留 h 的前 n 位(n= 2,9) ,舍去第 n 位以后的数,并计算 V1 的近似值,将试验结果列表如下位数 h近似值 V近似值2 1.2 1.7283 1.25 1.9531254 1.259 1.99561

    2、69795 1.2599 1.9998997577996 1.25992 1.999995000191497 1.259921 1.999999762390498 1.259921 1.999999762390499 1.25992104 1.99999995287860表中第二列数据所形成的数列以单调增加的方式逼近准确值,即准确值介于 1.25992104到 1.25992105 之间。MATLAB 程序如下(文件名: ex1.m)y=2(1/3);b=1;d=1;for k=1:8b=b*10;d=d/10;x=d*fix(b*y);v(k)=x3;h(k)=x;endformat lon

    3、gh,v例 2 利用递推式计算定积分 ( n = 0,1,20 ) 的值。Iexdnn10解:当 x0,1时,成立不等式 1 e x e ,以及 xn+1x n,故 In 具有如下性质(1) ;(2)I n+1 I n;(3)I n=1 n In 1 Inen性质(1)和(2)说明数列 In 是单调下降的有界(既有下界也有上界)数列。由性质(3)可得到顺向递推和逆向递推两种不同的算法。利用的I 0 的表达式直接积分,可得初值I 0 的值I 0 = 1 e-1,由性质(3)递推有算法1( n = 1,20 )10nIIe计算并输出 In (n =0,1,20)20 个积分值的近似值如下表。2n

    4、Sn n Sn1 0.3679 11 0.07742 0.2642 12 0.07183 0.2073 13 0.06694 0.1709 14 0.06275 0.1455 15 0.05906 0.1268 16 0.05557 0.1124 17 0.05728 0.1009 18 -0.02959 0.0916 19 1.559610 0.0839 20 -30.1924表中第 18 和第 20 个数据分别为负值 0.0295 和30.1924,这与性质(1)矛盾,显然与定积分值相差较大。利用性质(1)得 I30 的近似值 I301/30,再由性质(3)得逆向递推,有算法2( n =

    5、30,29,2 )Snn/)1(/30计算并输出 Sn (n =0,1,20)20 积分值的近似值如下表所示n Tn n Tn1 0.3679 11 0.07742 0.2642 12 0.07183 0.2073 13 0.06694 0.1709 14 0.06275 0.1455 15 0.05906 0.1268 16 0.05577 0.1124 17 0.05288 0.1009 18 0.05019 0.0916 19 0.047710 0.0839 20 0.0455表中第 18 和第 20 个数据分别为 0.0501 和 0.0455,可以用复合梯形公式验证其精度很好(见第七

    6、次上机实习)MATLAB 程序如下(文件名: ex2.m)s0=1-exp(-1);for n=1:20s0=1-n*s0;s(n)=s0;endspauset(30)=1/31;for n=30:-1:2t(n-1)=(1-t(n)/n;endtt=t(1:20)例 3 绘制 Koch 分形曲线从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的两边代替,形成山丘形图形如下3在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的两条边代替,再次形成新的图形如此迭代,形成 koch 分形曲线。 算法分析:由一条线段产生四条线段,故算法中由 n 条线段迭代一次后将产生 4

    7、n 条线段。算法针对每一条线段逐步进行,将计算新的三个点。第一个点位于线段三分之一处,第三个点位于线段三分之二处,第二个点以第一个点为轴心,将第一和第三个点形成的向量正向旋转 600 而得。正向旋转由正交矩阵 3/cos/siniA实现。MATLAB 程序如下clearp=0 0;10 0;n=1;A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3);for k=1:5j=0;for i=1:nq1=p(i,:);q2=p(i+1,:);d=(q2-q1)/3;j=j+1;r(j,:)=q1;j=j+1;r(j,:)=q1+d;j=j+1;r(j,:)=q1+d

    8、+d*A;j=j+1;r(j,:)=q1+2*d;endn=4*n;clear p4p=r;q2;endplot(p(:,1),p(:,2)上机实习题一、数值实验1 “画圆为方”问题也是古希腊人所提出几何三大难题中的另一个问题。即求作一个正方形,使其面积等于已知圆的面积。不妨设已知圆的半径为 R = 1,试用数值试验显示“画圆为方”问题计算过程中的误差。2 算法的数值稳定性实验设, 由 xn = xn + 5 xn 1 5 xn 1 可得递推式Idnn501In = 5In 1 + 1/ n(1)从 I0 尽可能精确的近似值出发,利用递推公式:( n = 1,2,20)n1计算从 I1 到 I

    9、20 的近似值;(2)从 较粗糙的估计值出发,用递推公式:30( n= 30,29, , 3, 2 )IInn15计算从 到 的近似值;I120(3) 分析所得结果的可靠性以及出现这种现象的原因。3 分形曲线的实验(1)参考例 2 的方法,由四边形四个初始点出发绘制如下分形曲线制作的图案5(2)在分形算法中取两种生成元第二种生成元 第三种生成元用这两种图形生成元绘制出另外的分形曲线 6二、MATLAB编程练习1 求平方根算法是历史上著名的算法之一。对于任意正实数 C,取初始近似值 x00(例如取 x0=2) ,利用迭代计算公式, (n =1, 2,)211nxCx编写程序对输入数据 C=2,

    10、3,5,7,分别计算数列 xn 的前八项,观察计算过程中有效数字位数变化的规律。2 由反正切函数的 Tylor 级数展开式 ,取 x = 1,得收敛级012)(arctn数 。编写程序对输入的误差界 eps=10-3,10 -715312)(40n6,10 -8 分别计算 的近似值,并输出求和项数 n。3 由正弦函数的 Tylor 展开式取前 n 项,得 ,编写程序实现knxx112)!()si如下功能:对 n=1,2,3,绘制出区间0 ,2.5 上的近似函数的图形以及 sin x 本身的图形(共四条曲线) 。0 1 2 3 4-0.500.511.522.54 多项式求值的快速算法是一种嵌套

    11、乘法,例如一个 4 次多项式可改写为 )()( 43210432104 xaxaxaxaxP 形式。这种方法是秦九韶于 1247 年提出,而霍纳(Horner)于 1819 年也提出同样方法。在MATLAB 中有多项式求值命令 polyval,编写程序实现如下功能:输入正整数 n,由计算机产生 n+1 个随机实数(介于 0 到 20 之间)a0,a 1,a 2,,,a n代表 n 次多项式(升幂)的系数,用秦九韶算法实现对应多项式在 x=1,1.5,2,2.5,3处 5 个函数值的计算并与 MATLAB 命令 polyval 计算结果作比较。5在 MATLAB 对多项式计算的命令中, root

    12、s 可以求得多项式的零点,而 poly 则可以由多项式零点求得该多项式的系数。著名的 Wilkinsons 算例如下,对于 20 次多项式P(x) = (x 1) (x 2) (x 3)(x 19) (x 20)7多项式的零点分别为 xk = k,(k = 1,2,20 )。现将方程中系数有微小改变(扰动) ,则新的多项式的根将有很大的变化。例如命令:roots(poly(1:20) 所得到的根为k xk k xk1 1.0000 11 11.01072 2.0000 12 11.97253 3.0000 13 13.05654 4.0000 14 13.92205 5.0000 15 15.

    13、08426 6.0000 16 15.93197 7.0000 17 17.03608 7.9999 18 17.98579 9.0005 19 19.003210 9.9972 20 19.9997这说明高次方程的根对方程中系数的微小变化是非常敏感。试修改 P(x)中的系数,例如变方程为 Q(x)=P(x) 0.01x19 用 MATLAB 命令重新计算多项式 Q(x)的根。6将一个八位二进制数 (10111101)2 转换成十进制数时,可以用公式:C020176543(1)用多项式求值的秦九韶方法设计程序,将任意一个二进制正整数转换为十进制数;(2)设计将任意一个八进制正整数转换成十进制数

    14、的程序;(3)设计将任意一个二进制小数(例如:0.110110)转化为十进制小数的程序。7给定两个正整数 m 和 n,它们的最小公倍数 q 和最大公约数 p 之间关系为:mn=pq。故如果求得 p 便可非常方便的求得 q,反之也一样。欧几里德展转相除法求最大公约数是历史上著名的算法之一。另一个简单算法如下:(1) 输入:m,n;p m,q n;(2) 如果 p = q,则转( 4) ,否则转(3) ;(3) 如果 pq,则 pp+m;否则 qq+n;转(2) ;(4) qmn/p,输出最小公倍数 p 和最大公约数 q 结束。试利用上面算法(欧几里德算法)编写 MATLAB 程序,并将结果与用

    15、MATLAB 求最大公约数命令:gcd 和最小公倍数命令: lcm 计算结果作比较。8在有关计数的问题中,组合数 是一类重要的数,利用等式knC1kn可以只用加法计算出对给定的 n(2)的所有的组合数 (k=0,1,n) 。试编写CMATLAB 程序,对任意输入的正整数 n,计算出 n+1 个组合数(k =0,1,n)并将结果与用 MATLAB 求组合数命令: nchoosek 计算结果作比较。9裴波拉奇数列是历史上有名的数列,其初值为:F 0=1,F 1=1 ,而递推关系如下Fn = Fn 1+ Fn 2 ( n=2,3, )(1)试编程计算出该数列前 10 项的数据;(2)试计算数列的第

    16、20 项,分析该数据不是正整数的原因;(3)设计算法计算数列第 n 项以及前 n 项和,要求将数据表现为正整数形式。10*对给定的正整数 n,求阶乘 n! 可用 MATLAB 命令 factorial(n) 求得。但是MATLAB 的长型数据格式表示双精度的数据时,只有 15 位数字,所以只能精确求得 n 21 的阶乘数。例如 factorial(20)的结果为 ans =2.432902008176640e+018。而对于大的正整8数,命令所求得的数据具有较大的量级,只能精确到答案的前 15 位数据,例如 factorial(25)的结果为 ans =1.551121004333099e+0

    17、25,这只是一个近似数据。试设计算法编写程序实现对任意的较大整数 n200,都能准确计算出 n 的阶乘数。11水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子.由于旅途的颠簸,大家都很疲倦,很快就入睡了.第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了.第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只给猴子,私藏一堆,再去入睡.天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子.试问原先最少有多少只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题(15

    18、621)。12摩托车问题:在一次军事演习中,A 、B 两队约好同一时间从相距离 S 公里的各自的驻地出发相向运动,A 队行进速度为 v1(公里/ 小时) ,B 队行进速度为 v2(公里/ 小时) 。行军开始时,一通讯员骑摩托车从 A 队驻地出发为行进中的两队传递消息。摩托车的速度为v0(公里/小时)(v0 大于 v1 和 v2),往返于两队之间,每遇一队,立即折回驶向另一队。当两队距离小于 0.5 公里时,摩托车停止。编写一程序计算通讯员驾驶摩托车跑了多少趟n(从一队驶向另一队为一趟) 。输入数据有两行,第一行有一个实数 S,表示两队驻地的距离,第二行有三个实数:v1,v2,v0,分别表示 A

    19、 队行进速度、 B 队行进速度,以及摩托车行驶速度。输出数据有一行,共两个整数 n,s1 分别表示摩托车跑的趟数,以及两队相会时 A 队行进的路程。例如Sample Input 10010 8 60Sample Output18 55.3151 13角谷猜想:某学生发现一个奇妙的现象,任给一个正整数 n,如果它是偶数则将它除以 2,如果它是奇数则将它乘以 3 并加上 1。如此重复操作,最后这个数总变为 1。他请教于角谷教授,教授无能为力。于是产生了角谷猜想。也称为 3n+1 问题,用算法描述如下:第一步:输入 n;第二步:输出 n;第三步:如果 n=1 则终止算法;否则转第四步;第四步:如果 n 是奇数,则 n3n+1,否则 nn/2;第五步;转第三步。按上面算法,输入一个自然数 n,可得到一个包括 1 在内的数列。如输入 5 得数列5,16,8,4,2,1该数列有 6 个数。此时,称 5 的周期为 6。编写程序实现如下功能,输入两个正整数 i 和j,输出区间i, j中数的最大周期 T。观察是否有特殊规律。

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:建模实例.doc
    链接地址:https://www.docduoduo.com/p-9020049.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开