- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 基础化学高职高专第五版高琳第六章第一节化学平衡与平衡常数.pptx VIP
- 输电线路全寿命周期设计建设技术导则.pdf VIP
- 基础化学高职高专第五版高琳第十章氧化还原平衡.pptx VIP
- 人教B版高中数学必修二同步讲义:平面向量线性运算的应用(学生版+解析).pdf VIP
- 人教B版高中数学必修二讲义:向量的坐标及其运算(学生版+解析).pdf VIP
- 人教B版高中数学必修二同步讲义:向量的基本定理(学生版+解析).pdf VIP
- 基础化学高职高专第五版高琳第十一章脂肪烃.pptx VIP
- 浅谈搅拌站与精细化管理 - 管理文章.docx VIP
- 混凝土精细化管理.docx VIP
- 一种调料售货机的自动售货方法.pdf VIP
文档评论(0)