1.4.3 分形_ 雪花曲线_ Mathematica 程序.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.4.3分形_雪花曲线_Mathematica程序1.4.3分形_雪花曲线_Mathematica程序

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 算法分析: 1o 雪花曲线的生成元为: 可见,从几何作图方法来看,生成的方法为:把线段AB三等分,得到分点C、E,再把向量CE绕C逆时针旋转60o得到D点,这样图形就生成了。 2o 为了便于计算和处理,我们把图形放在坐标系中。设线段AB的两端点的坐标为A(x1,y1)、B(x2,y2),则Koch雪花曲线的生成元的关系可用向量表示为: 可见,要想确定雪花曲线的生成元,关键是确定C、D、E点的坐标,为此,应该分析图中的向量关系. 3o 分析图中的向量关系: ① 先分析向量: 这样即得: ② 再分析向量: 是由旋转60o而得,于是令矩阵:,则有: 而又 , 所以 从而 于是我们可用来表示. 4o 以上过程可以说是从向量出发,求出了向量、,相当于从点集{A、B}出发求得了点集{A、C、D、E、B}. 5o 对点集{A、C}、{C、D}、{D、E}、{E、B}分别重复上面的过程(即迭代),…,如此下去(有限次) 6o 将所上面所生成的相应的点对连线,即可做出Koch雪花曲线. 1.4.3.3.2 Mathematica的画线功能: 要作出雪花曲线,需要将点连线,即需要Mathematica的画线功能,经查可知Mathematica的“画线”功能函数为: Line[{{x1,y1},{x2,y2},…}](P224)—— 依次连接相邻两点的线段,作如下试验,输入: a={{0,0},{1,0},{1,1},{0,1},{0,0}}; Line[a] 如果连线成功的话,应该是一个矩形,然而运行结果如下: 未得所想,原因是Line[a]只是一种“意连”,但不真正画出线条(或者说没有显示出线条),然而我们想到Show[]可以显示图形,于是试输入: Show[Line[a]] 希望显示出图形,可是运行结果却为: 可见有错,错误提示的意思是“Line”不是图形元素,于是需要将“Line”转换为图形元素,这需要Graphics[]来完成,总之于是应输入以下命令: Show[Graphics[Line[a]]] 这样可得到: 请大家注意这种做法。 1.4.3.3.3 算法大意: 1) 取点a(0,0)、b(0,1),以其坐标做集合ab={a、 b} 记: 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) 依次连接上面所生成的相邻的点,即可划出雪花曲线。 将1)~4)设计成一个从点集ab出发,构作点集tmp的模块(定义为函数“koch”),当“ab”中点较多时,应循环实现。 1.4.3.3.4 算法框图: 由上面的分析,可得以下的算法框图 1.4.3.4 程序设计 koch[ab_List]:= Block[{tmp={},i,L=Length[ab], jd=60Degree, sa=Sin[jd],ca=Cos[jd],c,d,e,T={{ca,-sa},{sa,ca}}}, For[i=1,iL,i++, c=ab[[i]]*2/3+ab[[i+1]]/3; e=ab[[i]]/3+ab[[i+1]]*2/3; d=c+T.(e-c); tmp=Join[tmp,{ab[[i]],c,d,e,ab[[i+1]]}] ]; Return[tmp] ] pt={{0,0},{1,0}}; Show[Graphics[Line[Nest[koch,pt,5]],AspectRatio-Sqrt[3]/6]] ⑸ 运行结果:   迭代1次: 迭代2次: 迭代3次: 迭代4次: 迭代5次: 迭代6次: 1.4.3.6 结果分析 上面只是做出了Koch雪花曲线的一支,做法是对点A(0,0)、B(0,1)迭代生成的,而整个Koch雪花曲线应该是对正三角形: 的三边生成,请自己考虑写出做整个Koch雪花曲线的Math

文档评论(0)

ebitjij + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档