数学实验数据拟合,插值方法,分形实例,回归分析,矩阵的运算,特征值与特征向量及学习感受_第1页
数学实验数据拟合,插值方法,分形实例,回归分析,矩阵的运算,特征值与特征向量及学习感受_第2页
数学实验数据拟合,插值方法,分形实例,回归分析,矩阵的运算,特征值与特征向量及学习感受_第3页
数学实验数据拟合,插值方法,分形实例,回归分析,矩阵的运算,特征值与特征向量及学习感受_第4页
数学实验数据拟合,插值方法,分形实例,回归分析,矩阵的运算,特征值与特征向量及学习感受_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学实验报告学生姓名学科专业任课教师所在学院报告提交日期实验一 斐波那契数列(一)练习题1一实验目的:学会用MATLAB研究调和级数n=11n的变化规律及其性质。学会用MATLAB进行数据的拟合以及图像的绘制。1.研究调和级数观察调和级数的部分数列 Sn 的折线图。实验方法:根据调和级数部分和数列公式:Sn=n=11n,生成以n为自变量和以其部分数列 Sn 为因变量的曲线。代码如下:function fib1(n)fn=1;for i=2:n;fn=fn, fn(i-1)+1./i;endplot (fn)实验过程:选择n=1000,调用上述函数画图,图形如下。选择n=10000,调用上述函数

2、画图,图形如下。得出结论:由其图可知在n=1000和n=10000时有明显上升,Sn是递增数列,不收敛问题二:数列Hn : Hn=S2n-Sn 的变化规律,猜测其是否有极限。实验方法:由公式 Hn=S2n-Sn ,生成以n为自变量和以其部分数列 Hn 为因变量的曲线。代码如下:function fib2(n)fn=1;hn=0.5;for i=2:2*n;fn=fn,fn(i-1)+1./i;endfor j=2:n;hn=hn, fn(2*j)-fn(j);endplot(hn)实验过程:选择n=10000,调用上述函数画图,图形如下得出结论:Hn的增长在n较小时增长速度很快,但当n时,Hn

3、大致收敛于 区间0.68,0.7。问题三:数列Gn : Gn=S2n 的变化规律,寻找恰当的函数拟合。实验方法:由公式 Gn=S2n ,生成以n为自变量和以其部分数列 Gn 为因变量的曲线。代码如下:function fib3(n)fn=1;gn=1.5;for i=2:2*n;fn=fn, fn(i-1)+1./i;endfor j=2:n;gn=gn, fn(2*j);endplot(gn)实验过程:选择n=10000,调用上述函数画图,图形如下图形分析:根据图形初步猜测函数关系式为对数函数,进行图形拟合:代码如下:function fib4(n)fn=1;gn=1.5;for i=2:2

4、*n;fn=fn,fn(i-1)+1./i;endfor j=2:n;gn=gn,fn(2*j);endx=1:n;y=exp(gn);plot(y) 作图:选择n=10000,画出图形,如下 一阶线性拟合编程:function y=fib5(n)fn=1;gn=1.5;for i=2:2*n;fn=fn,fn(i-1)+1./i;endfor j=2:n;gn=gn,fn(2*j);endx=1:n;y=exp(gn);y=polyfit(x,y,1)运行结果:y= 0.2509 -0.0001拟合验证:将拟合表达式式的折线图与Gn的折线图比较,验证猜想。代码如下:function y=fi

5、b6(n)fn1= ;for i=1:n; fn1=fn1,log(3.5617*i+0.8907);endfn=1;gn=1.5;for i=2:2*n; fn=fn,fn(i-1)+1./i;endfor j=2:n;gn=gn,fn(2*j);endx=1:n;plot(x,gn,b,x,fn1,r*)legend(原始数据,拟合数据)得出结论:根据拟合曲线,exp(Gn)为线性函数,所以我们可以据此求其拟合表达式,得:exp(Gn)=3.5617*n+0.8907,即 Gn=ln(3.5617*n+0.8907)问题4讨论部分和数列 Sn 的变化规律。在综合上述实验,可以得出以下结论:

6、部分和数列Sn是一个递增且发散的数列。(二)练习题2实验目的:分析1990-2010年的人口增长规律,建立合理的人口增长模型,预测未来人口数量。问题描述:人年份增长与人口数量可以用哪些曲线进行拟合,且能根据拟合做出哪些预测实验方法:画出散点图,再进行猜测符合那种曲线。实验步骤:输入1990-2010的人口数量,画出散点图。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000;t=t,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010;n=114333,115823,117171

7、,118517,119850,121121,122389,123626,124761,125786,126743;n=n,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091; plot(t,n,r+) xlabel(年份);ylabel(数量);据图,先现以年份为自变量,人口数量为因变量依次进行一阶拟合。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000; t=t,2001,2002,2003,2004,2005,2006,2007,2

8、008,2009,2010;n=114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743;n=n,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091;p1=polyfit(t,n,1)plot(t,n,r+,t,polyval( p1,t)R1=dot(n-polyval(p1,t),n-polyval(p1,t)legend(测量数据,1阶拟合)得图形 且p1 = 1.0e+06 * 0.0010 -1.824

9、3R1 = 1.4525e+07再现以年份为自变量,人口数量为因变量依次进行六阶拟合。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000;t=t,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010;n=114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743;n=n,127627,128453,129227,129988,130756,131448,132129,132802,13

10、3450,134091;p2=polyfit(t,n,6)plot(t,n,r+,t,polyval( p2,t) R2=dot(n-polyval(p2,t),n-polyval(p2,t) legend(测量数据, 6阶拟合)且得p2 = 1.0e+16 * -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0079 -2.6412R2 =280929再现以年份为自变量,人口数量为因变量依次进行双曲拟合。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000; t=t,2001,2002,20

11、03,2004,2005,2006,2007,2008,2009,2010;n=114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743;n=n,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091;p3=polyfit(1./t,1./n,1)plot(t,n,r+,t,1./polyval( p1,1./t)R3=dot(n-1./polyval(p3,1./t),n-1./polyval(p3,1./t) l

12、egend(测量数据, 双曲线拟合)且得p3 = 0.2509 -0.0001R3 = 2.4159e+07再现以年份为自变量,人口数量为因变量依次进行指数拟合。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000; t=t,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010;n=114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743;n=n,127627,128453,12922

13、7,129988,130756,131448,132129,132802,133450,134091;p4=polyfit(1./t,log(n),1)plot(t,n,r+,t,exp(polyval( p4,1./t)R4=dot(n-exp(polyval(p4,1./t),n-exp(polyval(p4,1./t)legend(测量数据, 指数拟合)且得p4 = 1.0e+04 *-3.1262 0.0027R4 = 1.8600e+07再现以年份为自变量,人口数量为因变量依次进行对数拟合。代码如下:t=1990,1991,1992,1993,1994,1995,1996,1997,

14、1998,1999,2000;t=t,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010; n=114333,115823,117171,118517,119850,121121,122389,123626,12476 1,125786,126743;n=n,127627,128453,129227,129988,130756,131448,132129,132802,133450,134091;p5=polyfit(log(t),n,1)plot(t,n,r+, t,polyval( p5,log(t) R5=dot(n-polyval(p5,

15、log(t),n-polyval(p5,log(t)legend(测量数据, 对数拟合)且得p5 = 1.0e+07 * 0.1950 -1.4699R5 = 1.4250e+07对比分析对数,六阶,指数拟合较好,其中对数函数为n=1.950x106ln(t) -1.4699x1o7预测出2011,2012年人口分别为133455万,134425万六阶函数为n=7.9x1013t-2.6421x1016预测出2011,2012年人口分别为1.32x1017明显有误指数函数为n=exp(27-31262/t)预测出2011,2012年人口分别为94324万,95056万明显有误。所以对数函数较准

16、公式:n=1.950x106ln(t) -1.4699x1o7人口趋势分析:中国的人口目前仍在持续增长,但是增速明显放缓,要防备人口老龄化以及未来劳动力短缺的问题,应按实际情况及时制定新的人口政策,适当放开计划生育的约束,优化人口结构。保持人口低速平稳增长。四、总结分析和心得体会1.初步了解了matlab软件的用法。2.学会了编写简单的matlab程序。3.分析算法和调试程序的过程培养了逻辑思维能力。4.认识到在matlab中采用拟合的方法时解决问题的强大之处,了解到学习matlab软件的重要性。 数学实验报告学院: 班级: 学号: 姓名: 提交日期: 数学试验插值一实验目的1、了解插值的基本

17、概念和使用方法以及了解MATLAB做插值的基本方式。2、学会用插值方法来进行函数的拟合以及计算封闭图形的面积。二.问题描述 已知欧洲一个国家的地图,为了算出他的国土面积,对地图进行了如下测量:以由西向东方向为x轴,由南向北方向为y轴,选择方便的原点,并将从最西边界点到最东边界点在x轴上的区间适当的分为若干段,在每个分店的y方向测出南边界点和北边界点的y坐标y1和y2,这样就得到表中的数据(单位:mm)。根据地图的比例,18mm相当于40km。试采用适当的方法,绘制其国界边界图形,并估算其国土面积。表1-1 某国上下国界线测量坐标X7.010.513.017.534.040.544.548.05

18、6.0Y1444547505038303034Y24459707293100110110110X61.068.576.580.591.096.0101.0104.0106.5Y1363441454643373328Y2117118116118118121124121121X111.5118.0123.5136.5142.0146.0150.0157.0158.0Y1326555545250666668Y2121122116838182868568三.第一个问题实验过程1、首先绘制国土轮廓在MATLAB指令框中输入以下代码:x=7,10.5,13,17.5,34,40.5,44.5,48,56,

19、61,68.5,76.5,80.5,91,96,101,104,106.5,111.5,118,123.5,136.5,142,146,150,157,158;y1=44,45,47,50,50,38,30,30,34,36,34,41,45,46,43,37,33,28,32,65,55,54,52,50,66,66,68;y2=44,59,70,72,93,100,110,110,110,117,118,116,118,118,121,124,121,121,121,122,116,83,81,82,86,85,68;plot(x,y1,x,y2)xlabel(东西方向);ylabel(南

20、北方向);legend(边界点散点图)运行之后结果为下图: 2、计算该图形围成的多边形的面积 在MATLAB指令框中输入以下代码:x=7,10.5,13,17.5,34,40.5,44.5,48,56,61,68.5,76.5,80.5,91,96,101,104,106.5,111.5,118,123.5,136.5,142,146,150,157,158;y1=44,45,47,50,50,38,30,30,34,36,34,41,45,46,43,37,33,28,32,65,55,54,52,50,66,66,68;y2=44,59,70,72,93,100,110,110,110,1

21、17,118,116,118,118,121,124,121,121,121,122,116,83,81,82,86,85,68; s1=0; s2=0; for i=1:26 a=(y1(i)+y1(i+1)*(x(i+1)-x(i)/2; s1=s1+a; end for i=1:26 a=(y2(i)+y2(i+1)*(x(i+1)-x(i)/2; s2=s2+a; end s2-s1运行结果为ans =8.5888e+003根据地图的比例,18mm相当于40km,经过换算,其代表的实际国土面积为42413.27平方公里。3、采用拉格朗日插值 对其国界线首先尝试采用拉格朗日插值法来求其近

22、似函数。首先仿照课本中提供的方法来定义一个拉格朗日插值函数: Function yi=itp1(x,y) vx=vander(x); ai=inv(vx)*y; t=7:158; yi=polyval(ai,t);将上述函数保存,然后进行差值函数求取,首先进行上半边的差值函数求取,在MATLAB指令框中输入以下代码: x=7,10.5,13,17.5,34,40.5,44.5,48,56,61,68.5,76.5,80.5,91,96,101,104,106.5,111.5,118,123.5,136.5,142,146,150,157,158;y1=44,45,47,50,50,38,30,

23、30,34,36,34,41,45,46,43,37,33,28,32,65,55,54,52,50,66,66,68;y2=44,59,70,72,93,100,110,110,110,117,118,116,118,118,121,124,121,121,121,122,116,83,81,82,86,85,68;z1=itp1(x,y1);t=7:158;plot(x,y1)hold on然后进行函数的运行,结果如下:从图中可以看出,拉格朗日插值法并不适用与该国界线的绘制。4、最小二乘法拟合 选用最小二乘法来拟合一个与原数据的误差平方和最小的多项式函数。在MATLAB指令框中输入以下代码

24、:p3=polyfit(x,y1,3);p6=polyfit(x,y1,6);p9=polyfit(x,y1,9);t=linspace(7,158,200);plot(t,polyval(p3,t),r,t,polyval(p6,t),b,t,polyval(p9,t),g,x,y1,*)axis equal运行该代码,结果如下图:由图可知,该函数的9次拟合曲线具有较好的拟合效果。接下来,进行上半段的最小二乘法拟合,代码如下: p3=polyfit(x,y2,3); p6=polyfit(x,y2,6); p9=polyfit(x,y2,9); t=linspace(7,158,200);p

25、lot(t,polyval(p3,t),r,t,polyval(p6,t),b,t,polyval(p9,t),g,x,y1,*)axis equal运行该代码,得到的结果为: 从图中可以看出,9次曲线的拟合程度已经很好,因此我们选用9次曲线来作为上半段的拟合曲线。接下来求取该国家的国土面积,方法为求得上下段的拟合函数的积分之后再相减。 首先求得该拟合函数的多项式的系数向量,运行代码: p2=polyfit(x,y2,9); p1=polyfit(x,y1,9); 得到的系数向量为:P2=-0.000000000000009 0.000000000005899 -0.0000000016324

26、38 0.000000239617406 -0.000019994987126 0.000936881446305 -0.021997974863351 0.132556061685575 4.552375129793775 12.417195528516642 P1=-0.000000000000000 0.000000000000108 -0.000000000035521 0.000000006386024 -0.000000682644769 0.000044114832239 -0.001674317971263 0.034467176175997 -0.33050149179964

27、5 1.565041614456265*100 由系数向量,分别求拟合的上曲线和下曲线的积分并且相减求其闭合曲线的面积 z2=inline(-0.000000000000009.*x.9+0.000000000005899.*x.8-0.000000001632438.*x.7+0.000000239617406.*x.6-0.000019994987126.*x.5+0.000936881446305.*x.4-0.021997974863351.*x.3+0.132556061685575.*x.2+4.552375129793775.*x+12.417195528516642,x);a=

28、quadl(z2,7,158);z1=inline(100*(-0.00000000000000.*x.9+ 0.000000000000108*x.8-0.000000000035521.*x.7+0.000000006386024*x.6-0.000000682644769*x.5+ 0.000044114832239*x.4 -0.001674317971263.*x.3+ 0.034467176175997.*x.2 -0.330501491799645*x+1.565041614456265),x);b=quadl(z1,7,158);a-b 运行结果为-1.357186694292

29、413e+07,经过换算,其国土面积为六千多万平方公里,结 果有很大误差,因此选用高次拟合不是特别成功。 下面进行低次的最小二乘法拟合。以三次为例。 p1=polyfit(x,y1,3);p2=polyfit(x,y2,3); 求得p1= 0.000002369457146 0.002942933884077 -0.425411289357590 50.761925869108552 P2= 0.000013877187250 -0.014115761926997 2.100144611654555 37.905981429649714 计算面积的代码如下:z1=inline(0.000002

30、369457146*x.3+0.002942933884077*x.2-0.425411289357590*x+50.761925869108552,x);z2=inline(0.000013877187250*x.3-0.014115761926997*x.2+2.100144611654555*x+37.905981429649714,x); a=quadl(z1,7,158); b=quadl(z2,7,158); a-b 运行结果为:ans=-8.887443711258031e+03 经过换算,求得的国土面积为43888.57平方公里。与实际相近,所以三次拟合合适。四问题一的实验结果

31、与分析 由题意与图像可知,该欧洲国家应该是瑞士,经过上网查找,可知瑞士国家的实际国土面积为41284.14 平方公里,由直接求多边形面积的方法求得的国土面积为42413.27平方公里,由三次多项式拟合求得的国土面积为43888.57平方公里。误差分别为2.7%和6.3%。因此,选用直接求多边形面积的方法求得的面积更加准确。 实验二一实验目的1、了解插值的基本概念和使用方法以及了解MATLAB做插值的基本方式。2、学会用插值方法来进行函数的拟合二.问题描述 已知飞机机翼断面轮廓线如图所示,下轮廓线上部分数据如表所示,根据加工需要,必须得到x坐标每改变0.1时y坐标的值,试选择几种适当方法,完成所

32、需数据,并画出相应的曲线,然后分析所用方法的优劣。 表1-2 飞机机翼断面下轮廓线上部分数据X035791112131415Y01.21.72.02.12.01.81.21.01.6三.第实验过程 1、首先选用分段线性差值法在MATLAB指令框中输入代码如下: x=0,3,5,7,9,11,12,13,14,15;y=0,1.2,1.7,2,2.1,2,1.8,1.2,1,1.6;xi=0:0.1:15;yi=interp1(x,y,xi,linear)plot(x,y,*,xi,yi)axis equal 运行该代码,得到的yi数据向量为: yi = 0 0.0400 0.0800 0.12

33、00 0.1600 0.2000 0.2400 0.2800 0.3200 0.3600 0.4000 0.4400 0.4800 0.5200 0.5600 0.6000 0.6400 0.6800 0.7200 0.7600 0.8000 0.8400 0.8800 0.9200 0.9600 1.0000 1.0400 1.0800 1.1200 1.1600 1.2000 1.2250 1.2500 1.2750 1.3000 1.3250 1.3500 1.3750 1.4000 1.4250 1.4500 1.4750 1.5000 1.5250 1.5500 1.5750 1.6

34、000 1.6250 1.6500 1.6750 1.7000 1.7150 1.7300 1.7450 1.7600 1.7750 1.7900 1.8050 1.8200 1.8350 1.8500 1.8650 1.8800 1.8950 1.9100 1.9250 1.9400 1.9550 1.9700 1.9850 2.0000 2.0050 2.0100 2.0150 2.0200 2.0250 2.0300 2.0350 2.0400 2.0450 2.0500 2.0550 2.0600 2.0650 2.0700 2.0750 2.0800 2.0850 2.0900 2.

35、0950 2.1000 2.0950 2.0900 2.0850 2.0800 2.0750 2.0700 2.0650 2.0600 2.0550 2.0500 2.0450 2.0400 2.0350 2.0300 2.0250 2.0200 2.0150 2.0100 2.0050 2.0000 1.9800 1.9600 1.9400 1.9200 1.9000 1.8800 1.8600 1.8400 1.8200 1.8000 1.7400 1.6800 1.6200 1.5600 1.5000 1.4400 1.3800 1.3200 1.2600 1.2000 1.1800 1

36、.1600 1.1400 1.1200 1.1000 1.0800 1.0600 1.0400 1.0200 1.0000 1.0600 1.1200 得到图形结果为:2、拉格朗日插值 仿照课本上的代码,该插值函数的代码如下: function yi=itp1(x,y,xi) vx=vander(x); ai=inv(vx)*y; yi=polyval(ai,xi); 保存并输入如下代码: x=0,3,5,7,9,11,12,13,14,15; y=0,1.2,1.7,2,2.1,2,1.8,1.2,1,1.6; xi=0:0.1:15; yi=itp1(x,y,xi) plot(x,y,*,

37、xi,yi) axis equal 图像结果为:3.最小二乘法插值拟合 首先,选用三次插值拟合,其实现的代码如下: x=0,3,5,7,9,11,12,13,14,15; y=0,1.2,1.7,2,2.1,2,1.8,1.2,1,1.6; xi=0:0.1:15; p=polyfit(x,y,3); yi=polyval(p,xi); plot(x,y,*,xi,yi) axis equal运行,得图像如下: 然后选用6次多项式拟合,实现的代码为: x=0,3,5,7,9,11,12,13,14,15; y=0,1.2,1.7,2,2.1,2,1.8,1.2,1,1.6; xi=0:0.1:

38、15; p=polyfit(x,y,6); yi=polyval(p,xi) plot(x,y,*,xi,yi)axis equal运行的结果为 运行的结果为:然后进行9次多项式拟合,实现的代码为: x=0,3,5,7,9,11,12,13,14,15; y=0,1.2,1.7,2,2.1,2,1.8,1.2,1,1.6; xi=0:0.1:15; p=polyfit(x,y,9); yi=polyval(p,xi) plot(x,y,*,xi,yi) axis equal 运行的结果为:4、三次样条插值法输入如下代码:x=0,3,5,7,9,11,12,13,14,15;y=0,1.2,1.

39、7,2,2.1,2,1.8,1.2,1,1.6;xi=0:0.1:15;yi=interp1(x,y,xi,spline)plot(x,y,*,xi,yi)axis equal运行该代码,得到的命令窗口结果为向量输出结果为:yi = 0 0.0499 0.0990 0.1474 0.1951 0.2421 0.2884 0.3340 0.3788 0.4230 0.4665 0.5094 0.5515 0.5930 0.6338 0.6739 0.7134 0.7523 0.7904 0.8280 0.8649 0.9012 0.9368 0.9719 1.0063 1.0401 1.0732

40、 1.1058 1.1378 1.1692 1.2000 1.2302 1.2599 1.2889 1.3174 1.3454 1.3727 1.3995 1.4258 1.4515 1.4767 1.5014 1.5255 1.5491 1.5722 1.5947 1.6168 1.6383 1.6594 1.6799 1.7000 1.7196 1.7387 1.7573 1.7754 1.7930 1.8102 1.8269 1.8430 1.8588 1.8740 1.8887 1.9030 1.9168 1.9301 1.9430 1.9553 1.9672 1.9786 1.989

41、5 2.0000 2.0100 2.0195 2.0285 2.0370 2.0450 2.0525 2.0595 2.0660 2.0719 2.0773 2.0822 2.0865 2.0902 2.0933 2.0959 2.0979 2.0994 2.1002 2.1004 2.1000 2.0990 2.0974 2.0952 2.0925 2.0893 2.0857 2.0815 2.0770 2.0721 2.0668 2.0611 2.0552 2.0490 2.0425 2.0358 2.0289 2.0219 2.0147 2.0074 2.0000 1.9924 1.98

42、41 1.9742 1.9621 1.9469 1.9280 1.9046 1.8759 1.8413 1.8000 1.7516 1.6970 1.6377 1.5749 1.5099 1.4442 1.3790 1.3157 1.2556 1.2000 1.1501 1.1063 1.0687 1.0377 1.0134 0.9960 0.9857 0.9828 0.9875 1.0000 1.0205 1.0492 1.0863 1.1320 1.1866 1.2503 1.3233 1.4057 1.4979 1.6000得到图像为: 四、总结分析和心得体会 在本题中,分别选用的是分段

43、线性插值法,拉格朗日插值法,最小二乘法拟合函数插值和三次样条插。对比结果,可以发现,采用三次样条插值法不仅可以满足插值后的函数的插值点与节点的完美吻合,而且也保证了插值后的函数的光滑性,因此,三次样条插值是一个不错的方法。 通过这次的插值方法的课程学习,我了解到了什么是插值,怎样进行差值和几种常见的插值方法:拉格朗日插值,分段线性插值,三次样条插值,最小二乘法拟合插值。体会到了Matlab在图形处理方面的强大应用能力。 数学实验报告学院: 班级: 学号: 姓名: 完成日期: 实验二 分形(一)练习题1一实验目的1了解分形几何的基本情况;2了解通过迭代方式,产生分形图的方法;3了解matlab软

44、件中简单的程序结构。二. 问题描述对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。三实验过程仿照Koch曲线代码对三角形的每条边进行Koch曲线化,建立函数“snow”的输入参数有三角形的边长R和迭代次数k,输出Koch雪花图形以及雪花所围面积S. 源代码如下:function snow(R,k)p=0;R/2+1i*R*sin(pi/3);R;0;S=0;n=3;A=exp(1i*pi/3);for s=1:kj=0;for i=1:nq1=p(i,:);q2=p(i+1,:);d=(q

45、2-q1)/3;j=j+1;r(j,:)=q1;j=j+1;r(j,:)=q1+d;j=j+1;r(j,:)=q1+d+d*A;j=j+1;r(j,:)=q1+2*d;endn=4*n;clear pp=r;q2;endfigureq(:,1)=real(p(:,1);q(:,2)=imag(p(:,1);plot(q(:,1),q(:,2)fill(q(:,1),q(:,2),b)for i=0:k S=S+(3.(0.5-i)*0.25*(R.2);endSaxis equal按照以上程序,输入参数,有以下结果: snow(1,1) S =0.5774 图形如下:snow(1,2) S =

46、0.6255 图形如下:snow(1,3) S =0.6415 图形如下:snow(1,4) S =0.6468 图形如下:snow(1,5) S =0.6486 图形如下:四总结分析和心得体会根据观察迭代的面积规律,即可推得面积递推公式:an=Sn-Sn-1=13*49n-1*S1,(n2),其中S1=0.866即:面积公式Sn=2nan+S1,也就等于1.3856-0.5196*(49)n-1分形维数,根据迭代的规律得到:相似形个数:m=4 边长放大倍数c=3, 维数d=ln m/ln c=ln 6/ln 3=1.631 (二)练习题2一实验目的1了解分形几何的基本情况;2了解通过迭代方式

47、,产生分形图的方法;3了解matlab软件中简单的程序结构。二. 问题描述对一条竖线段,在其三分之一分点处,向左上方向画一条线段,在其三分之二点处,向右上方向画一条线段,线段长度都是原来的三分之一,夹角都为30度,迭代一次后变成图3-22.继续迭代得到分形图,可模拟树木花草,编制程序绘制出它的图形。三实验过程代码如下:function tree(z1,z2,N,n) if nN return end if n=1 d=(z2-z1)/3; q1=z1+d+d*exp(1i*pi/6); q2=z1+2*d+d*exp(-1i*pi/6); plot(z1+d,q1) hold on axis

48、equal plot(z1+2*d,q2) plot(z1,z2) tree(z1,z2,N,n+1) else d=(z2-z1)/3; q1=z1+d+d*exp(1i*pi/6); q2=z1+2*d+d*exp(-1i*pi/6); plot(z1+d,q1) plot(z1+2*d,q2) tree(z1+d,q1,N,n+1); tree(z1+d,z1+2*d,N,n+1); tree(z1+2*d,q2,N,n+1); tree(z1+2*d,z2,N,n+1); end 其中N为迭代次数,n的初始值为1,输入以下代码:tree (0,10i,2,1) 图形如下:tree (0

49、,10i,3,1) 图形如下:tree (0,10i,4,1) 图形如下: tree (0,10i,5,1) 图形如下:tree (0,10i,6,1) 图形如下:四总结分析和心得体会通过本次的实验,我更了解了几合分形图以及用matlab软件产生几合分形图的方法、程序结构。总的来说,通过本次实验,学习到了matlab软件的一种新的用法,对自己的数学实验能力又提升了不少。体验了通过图形迭代方式产生分形图的过程,迭代的规则非常简单,产生的结果却异常奇妙,并且这些图形很好地反映出了分形所具有的自相似的层次结构。数学实验报告学院: 班级: 学号: 姓名: 完成日期: 实验二 分形(一)练习题1一实验目的1了解分形几何的基本情况;2了解通过迭代方式,产生分形图的方法;3了解ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论