1.4.3分形 雪花曲线 mathematica 程序.doc

上传人:土8路 文档编号:10347243 上传时间:2021-05-10 格式:DOC 页数:12 大小:438KB
返回 下载 相关 举报
1.4.3分形 雪花曲线 mathematica 程序.doc_第1页
第1页 / 共12页
1.4.3分形 雪花曲线 mathematica 程序.doc_第2页
第2页 / 共12页
1.4.3分形 雪花曲线 mathematica 程序.doc_第3页
第3页 / 共12页
1.4.3分形 雪花曲线 mathematica 程序.doc_第4页
第4页 / 共12页
1.4.3分形 雪花曲线 mathematica 程序.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《1.4.3分形 雪花曲线 mathematica 程序.doc》由会员分享,可在线阅读,更多相关《1.4.3分形 雪花曲线 mathematica 程序.doc(12页珍藏版)》请在三一文库上搜索。

1、1.4.3 Koch雪花曲线的MATHEMATIC程序设计(王积社)1.4.3.1 试验问题: Koch雪花曲线的MATHEMATIC程序设计.1.4.3.2 试验目的: 掌握MATHEMATIC迭代程序设计方法; 用MATHEMATIC作出Koch雪花曲线; 通过试验,认识分形的妙处,掌握分形程序设计基本方法。1.4.3.3 问题分析 1.4.3.3.1 算法分析:ABBACD E1o 雪花曲线的生成元为:可见,从几何作图方法来看,生成的方法为:把线段AB三等分,得到分点C、E,再把向量CE绕C逆时针旋转60o得到D点,这样图形就生成了。 2o 为了便于计算和处理,我们把图形放在坐标系中。设

2、线段AB的两端点的坐标为A(x1,y1)、B(x2,y2),则Koch雪花曲线的生成元的关系可用向量表示为:A(x1,y1)C DE B(x2,y2)y xo可见,要想确定雪花曲线的生成元,关键是确定C、D、E点的坐标,为此,应该分析图中的向量关系.3o 分析图中的向量关系: 先分析向量:这样即得: 再分析向量: 是由旋转60o而得,于是令矩阵:,则有: 而又 A(x1,y1)C DE B(x2,y2)y xo,所以从而 于是我们可用来表示.4o 以上过程可以说是从向量出发,求出了向量、,相当于从点集A、B出发求得了点集A、C、D、E、B.5o 对点集A、C、C、D、D、E、E、B分别重复上面

3、的过程(即迭代),如此下去(有限次)6o 将所上面所生成的相应的点对连线,即可做出Koch雪花曲线.1.4.3.3.2 Mathematica的画线功能:要作出雪花曲线,需要将点连线,即需要Mathematica的画线功能,经查可知Mathematica的“画线”功能函数为:Linex1,y1,x2,y2,(P224) 依次连接相邻两点的线段,作如下试验,输入: a=0,0,1,0,1,1,0,1,0,0;Linea如果连线成功的话,应该是一个矩形,然而运行结果如下:未得所想,原因是Linea只是一种“意连”,但不真正画出线条(或者说没有显示出线条),然而我们想到Show可以显示图形,于是试输

4、入:ShowLinea希望显示出图形,可是运行结果却为:可见有错,错误提示的意思是“Line”不是图形元素,于是需要将“Line”转换为图形元素,这需要Graphics来完成,总之于是应输入以下命令:ShowGraphicsLinea这样可得到:请大家注意这种做法。1.4.3.3.3 算法大意:1) 取点a(0,0)、b(0,1),以其坐标做集合ab=a、 babbacd e记: L=|ab|=2 (ab的长度,即元素个数)2) 求点c、e 3) 求点d 4) 令:tmp=a,c,d,e,b。5) 对点集a、c、c、d、d、e、e、b中的每对点分别重复上面的过程(迭代).6) 依次连接上面所生

5、成的相邻的点,即可划出雪花曲线。将1)4)设计成一个从点集ab出发,构作点集tmp的模块(定义为函数“koch”),当“ab”中点较多时,应循环实现。1.4.3.3.4 算法框图: 由上面的分析,可得以下的算法框图 定义模块 说明内部变量:临时表tmp、循环变量iTo L(表ab的长度)、角度变量jd(初值60o)、变换矩阵及c、d、e等 Fori=1,iL,i+ 模块结束,返回“tmp” 计算:c、d、e的值 计算结果依次填入到“tmp”中 迭代,生成雪花曲线的点集 定义函数koch,参数为ab(类型为表),函数体为模块 划线。 1.4.3.4 程序设计kochab_List:= Lengt

6、hlist,给出表中元素的个数(p215)Blocktmp=,i,L=Lengthab, Degree,度(p212)jd=60Degree,sa=Sinjd,ca=Cosjd,c,d,e,T=ca,-sa,sa,ca,Fori=1,iSqrt3/6Nestf,expr,n f对expr作用n次 AspectRatio-1/GoldenRatio生成图形的纵横比 运行结果:迭代次:迭代次:迭代次:迭代次:迭代次:迭代次:1.4.3.6 结果分析上面只是做出了Koch雪花曲线的一支,做法是对点A(0,0)、B(0,1)迭代生成的,而整个Koch雪花曲线应该是对正三角形:的三边生成,请自己考虑写出

7、做整个Koch雪花曲线的Mathematica程序1.4.3.7 程序进一步认识为了进一步认识程序,我们取2次迭代,且对程序进行跟踪,以分析执行过程。执行以下程序:kochab_List:= Blocktmp=,i,L=Lengthab, jd=60Degree,sa=Sinjd,ca=Cosjd,c,d,e,T=ca,-sa,sa,ca,Fori=1,iSqrt3/6,_=_根据跟踪结果,可整理得如下中间数据:从上述结果可看出执行过程中的主要中间结果: 第一次迭代:tmp=,L=2,jd=60o,i=1 to 1 第二次迭代:tmp=,L=5,jd=60o,i=1 i=2 i=3 i=4 附

8、:用Line画图 莫比乌斯带(Mbius带)的生成Mathematica优秀的图形显示功能CAI教学注入了新的活力,通过精确计算得到的图形比传统方法得到的模拟图形更为准确和更有说服力。我们应充分挖掘它的功能,使其更好地为教学服务。下面用Line函数画出Mobius带,供参考。1、 用Line函数画图设空间曲线的参数方程为,在其上取一点列,利用Line便可得到所需要的曲线(折线):,当然,它只能作为图形表达式而保存下来,我们可以利用Show来显示其图形.2、莫比乌斯带简介莫比乌斯带(Mbius strip或者Mbius band),又譯梅比斯環,是一种拓扑学结构,它只有一个面(表面),和一个边界

9、。它是由德国数学家、天文学家奥古斯都莫比乌斯(August Ferdinand Mbius)和约翰林斯丁(Johhan Benedict Listing)在1858年独立发现的。这个结构可以用一个纸带旋转半圈再把两端粘上之后轻而易举地制作出来。事实上有两种不同的莫比乌斯带镜像,他们相互对称。如果把纸带顺时针旋转再粘贴,就会形成一个右手侧的莫比乌斯带,反之则亦然。如下图示:2、莫比乌斯带的参数方程我们可以得到莫比乌斯带的双参数方程: 其中: .3、莫比乌斯带的生成画法分析设为平面上的圆,考虑过圆上的点 的线段,其端点分别为.在点和轴确定的平面内将线段绕旋转,得线段,设与的夹角为,则由球坐标的意义

10、易知,.假设圆柱面 由有限条母线生成,将这些母线依次按上述方式作相应旋转(旋转角依次增加),使结束位置的母线正好旋转,这样便将圆柱面变换成莫比乌斯带。4、莫比乌斯带的生成画法程序:mobiusm_, n_, r_:=Modulef, g,x1t_=r Cost+Sint/2 Cost;y1t_=r Sint+Sint/2 Sint;z1t_=Cost/2;x2t_=r Cost-Sint/2 Cost;y2t_=r Sint-Sint/2 Sint;z2t_=-Cost/2;f=TableGraphics3DRGBColor1, 0, 0, Thickness0.005,Linex1t, y1

11、t, z1t, x2t, y2t, z2t,RGBColor0, 1, 0, PointSize0.02, Pointx1t, y1t, z1t,RGBColor0,0,1, PointSize0.02, Pointx2t, y2t, z2t,DisplayFunction-Identity, t, 0, 2 Pi m/n, 2Pi/n;g=ParametricPlot3Dr Cost, r Sint, 0, t, 0, 2Pi,PlotRange-r-1, r+1, -r-1, r+1, -1, 1, DisplayFunction-Identity;Showf, g,DisplayFunction-$DisplayFunction, AspectRatio-Automatic, Boxed-False,PlotRange-r-1, r+1, -r-1, r+1, -1, 1;5、运行结果:运行Tablemobiusk, 160, 4,k, 1, 161, 4;可得到一组图形,双击其中任何一幅图便可看到生成Mobius带的动画。上图是其中的三幅,边沿的不同颜色可以让我们清楚看到Mobius带的特征。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1