



本节介绍的应用实例是编程绘出的一种规则分形——Koch曲线。
分形(fractal)是法国数学家曼德勃罗(Benoit B.Mandelbort)在 20 世纪 70 年代为表征复杂图形和复杂过程引入自然科学领域的,其原意表示不规则的、支离破碎的物体。分形可分为规则分形和不规则分形。规则分形有Koch曲线、 Sierpinski Gasket等,它们具有严格的自相似性,是一种无限多层次自相似的、支离破碎的、奇异的图形,它们的几何维数是分数。
自相似性是指从不同的空间尺度或时间尺度观测到的某种结构或过程的特征是相似的,或者某系统或结构的局域性质或局域结构与整体类似。
例 1.4 采用Matlab语言编程,绘出分形中的Koch曲线。
解 :(1) Koch曲线是最简单的确定分形。Koch曲线质量 M 与长度 L 的关系为 M ( bL ) = b d M ( L ) ;其分维 d= ln4 /ln3 = 1.3,具有自相似性( n 层);每次循环( n 重自相似),其线长以 4 /3 因子增长,原一条线段变为四条更小的等长线段;循环次数 n →∞,其线长 L →∞;Koch曲线可视为海岸线的数学模型。
(2) Koch曲线的数学模型。对于图 1-6 中的线段 ae ,由式(1-1)计算出 a 、 b 、 c 、 d 、 e 五个端点坐标, a 是线段 ae 的起端点, e 是末端点, b 和 d 是线段 ae 长度的 1 /3 和 2 /3 点, c 是等边三角形 cbd 的一个顶点。用如上同样的方法进行循环,得到进一层 n =2 时线段 ab 、 bc 、 cd 、 de 的四条线段及 a 、 b 、 c 、 d 、 e 五个端点坐标(见图 1-6)。根据自相似性,进一步地得到 n >2的四条线段的五个端点坐标。
edge( j ,1 ∶4)是一条线段的起末点
图 1-6 Koch曲线
(3)程序流程。由Koch曲线数学模型构建绘出Koch曲线的程序流程,见图 1-7。
图 1-7 n 重自相似Koch曲线绘图程序流程图
(4)程序编制及运行结果。根据图 1-7 所示的计算流程,编制Matlab程序ex1_4_1.m,绘出一个 n 重自相似的Koch曲线图。
在Matlab命令行窗口运行ex1_4_1(8),得到 n =8 的Koch曲线,见图 1-8。
图 1-8 n =8 的Koch曲线
为绘出不同 n 重自相似的Koch曲线图,编制函数文件ex1_4_2.m,其中,主函数ex1_4_2 调用子函数KochCurve,程序如下。
在Matlab命令行窗口运行ex1_4_2,得到 n =0 ~5 的Koch曲线,见图 1-9。
图 1-9 自相似 n =0 至 5 的Koch曲线
(5)结果说明。Matlab是值得学习和掌握的编程语言。由Koch曲线的Matlab编程可以看出,Matlab程序代码编写容易,代码简练、易读,运行得到的结果图可被存为bmp、 tif、 jpg、png、 pdf等多种形式的文件。