410 likes | 635 Views
数学实验. 从一些奇妙. 图象浅谈分形. 海岸线有长度吗?. 法国的 Mandelbrot.B 开创了分形几何. ( fractal geometry )的研究. 1967 年的论文: “ 英国海岸线的长度不确定 ”. 海岸线的长度随测量尺度变化. 对自然几何形态的数学研究. ( 1 ) 具有无限嵌套层次的精细结构. ( 2 ) 在不同尺度下具有某种相似特性. Koch 雪花曲线. 设 E 0 为单位直线段. 三等分后,中间一段用与其组成等边三角形. 的另两边代替,得到 E 1. 对 E 1 的 4 条线段的每一. 条重复以上做法,得到 E 2.
E N D
数学实验 从一些奇妙 图象浅谈分形
海岸线有长度吗? 法国的Mandelbrot.B 开创了分形几何 (fractal geometry)的研究 1967年的论文:“英国海岸线的长度不确定” 海岸线的长度随测量尺度变化 对自然几何形态的数学研究 (1)具有无限嵌套层次的精细结构 (2)在不同尺度下具有某种相似特性
Koch 雪花曲线 设E0为单位直线段 三等分后,中间一段用与其组成等边三角形 的另两边代替,得到E1 对E1的4条线段的每一 条重复以上做法,得到E2 以此方法重复,可得En 当n趋于无穷,得到的极限曲线就是Koch 曲线
redokoch[ptlist_List] := Block[{tmp = {}, i, pnum = Length[ptlist]}, For[i = 1, i < pnum, i = i + 1, tmp = Join[tmp, {ptlist[[i]], ptlist[[i]]*2/3 + ptlist[[i + 1]]/3, (ptlist[[i]] + ptlist[[i + 1]])/ 2 + {ptlist[[i]][[2]] - ptlist[[i + 1]][[2]], ptlist[[i + 1]][[1]] - ptlist[[i]][[1]]}*Sqrt[3]/6, ptlist[[i]]/3 + ptlist[[i + 1]]*2/3, ptlist[[i + 1]]}]]; tmp] Inko01 = {{0, 0}, {1, 0}}; Show[Graphics[Line[Nest[redokoch, Inko01, 4]], AspectRatio -> Sqrt[3]/6]]
Koch 曲线的特点 自相似性 精细结构:复杂性不随尺度减小而消失 处处不光滑,每一点是尖点 长度:En的长度=(4/3)n趋于无穷 本身定义方式简单 问题 Koch曲线在有限区域却长度无限,它是否一维的?
单参数的函数曲线是一维的吗? 设是平面上边长为1/2的正三角形,构造 fn f1 f3 f2 以此方式得到 fn,在[0,1] 一致收敛到极限函数 f 的象将为整个三角形
分形维数 将单位边长的线段,正方形,立方体 分成边长为1/2的同样几何物体,得到21,22,23 个小线段,正方形,立方体 注意:指数给出了几何物体的维数 定义分形维数 若将几何物体的长度(线度)缩小为1/r, 得到N个相似小几何物体,那么维数d满足 d=logN/log r N=rd Koch曲线的维数? 约1.2618
分形的数学实例 Cantor集 从单位区间[0,1]出发,三分去中段,得E1, E1两个区间三分去中得E2,极限集合为Cantor集 数学特例:完备,完全不连通,长度0 自相似,精细结构,简单定义 Sierpinski集合 三角形四等分去中间小三角形所得极限图形 维数=?
redosierpinski[ptlist_List] := Block[{tmp = {}, i, pnum = Length[ptlist]/3}, For[i = 0, i < pnum, i = i + 1, tmp = Join[tmp, {ptlist[[3i + 1]], (ptlist[[3i + 1]] + ptlist[[3i + 2]])/2, (ptlist[[3i + 1]] + ptlist[[3i + 3]])/2, (ptlist[[3i + 1]] + ptlist[[3i + 2]])/2, ptlist[[3i + 2]], (ptlist[[3i + 2]] + ptlist[[3i + 3]])/2, (ptlist[[3i + 1]] + ptlist[[3i + 3]])/2, (ptlist[[3i + 2]] + ptlist[[3i + 3]])/2, ptlist[[3i + 3]]}]]; tmp] Showsierpinski[ptlist_List] := Block[{tmp = {}, i, pnum = Length[ptlist]/3}, For[i = 0, i < pnum, i = i + 1, AppendTo[tmp, Polygon[{ptlist[[3i + 1]], ptlist[[3i + 2]], ptlist[[3i + 3]]}]]]; Show[Graphics[tmp], AspectRatio -> 1/GoldenRatio]] po1 = {{-1, 0}, {1, 0}, {0, Sqrt[3]}}; Showsierpinski[Nest[redosierpinski, po1, 3]]
Weierstrass函数 W(x)=(s-2)ksin(kx) , >1,1<s<2 数学分析中的著名例子:处处连续,但无处可微 的函数,自仿射 使用Mathematica lambda = 2; nmax = 20; s = 1.2; Plot[Sum[lambda^((s - 2)k)Sin[(lambda^k)x], {k, 1, nmax}], {x, -1, 1}] 给s以不同的值
S=1.5 S=1.2 S=1.7 S=1.99
复变函数的迭代 考虑 Zk+1=Zk2+ 给定复数初值Z0,,得到无穷复数序列{Zk} Julia集:固定 J ={Z0序列{Zk}有界} Mandelbrot集:固定Z0 MZ={序列{Zk}有界} 若Zk= xk+ iyk , = p+iq yk+1=2xkyk +q xk+1=xk2-yk2+p
制作Mandelbrot集 • 设定最大迭代次数N,图形分辨率a,b, 使用颜 色数 K 设定一个上界 M 设将矩形域{-M≤x, y≤M}分成ab网格 以每个网格点作为(p,q),以原点作初值作迭代 若对所有n≤N, xn2 + yn2 ≤M2 ,将迭代的 所有 点用黑色显示;而若从迭代某m步起 xn2 + yn2 ≤M2 则将迭代所有点用第m(modK)种颜色显示
使用Mathematica iter[x_, y_, lim_] := Block[{c, z, ct}, c = x + I*y; z = c; ct = 0; While[(Abs[z] < 2.0) && (ct < lim), ++ct; z = z*z + c;]; Return[ct];] Mandelbrot1 = DensityPlot[iter[x, y, 50], {x, -2.0, 1.0}, {y, -1.5, 1.5}, PlotPoints -> 120, Mesh -> False] Mandelbrot2 = Show[Mandelbrot1, Graphics[Line[{{-0.9, -0.25}, {-0.7, -0.25}, {-0.7, -0.05}, {-0.9, -0.05}, {-0.9, -0.25}}]]] Mandelbrot3 = DensityPlot[iter[x, y, 50], {x, -0.9, -0.7}, {y, -0.25, -0.05}, PlotPoints -> 120, Mesh -> False]
前面局部的放大 自相似性,精细结构
Newton分形 • Newton奠定了经典力学、光学和微积分学的基础。 • 但是除了创造这些自然科学的基础学科外,他还建立了一些方法,这些方法虽然比不上整个学科那么有名,但已被证明直到今天还是非常有价值的。 • 例如,牛顿建议用一个逼近方法求解一个方程的根。猜测一个初始点,然后使用函数的一阶导数,用切线逐渐逼近方程的根。如方程 Z^6 + 1 = 0有六个根,用牛顿的方法“猜测”复平面上各点最后趋向方程的那一个根,你就可以得到一个怪异的分形图形。和平常的Julia分形一样,你能永远放大下去,并有自相似性。 • 牛顿分形图形中的颜色显示每个答案的种类及性质,即迭代到目的地花费的时间,
Nova分形 • Paul Derbyshire研究牛顿分形图形时,他把Julia集合的常值C加入进去改变了一下算法,并用同样的方法去估算Z,逼近答案,产生奇特的并称之为"Nova"的分形图形。"
IFS迭代——迭代函数系统 • IFS ——Iterated Function System 迭代函数系统 • IFS方法的魅力在于它是分形迭代生成的“反问题”,根据拼接定理(collagetheorem),对 于一个给定的图形(比如一幅照片),求得几个生成规则,就可以大幅度压缩信息。 • 这里采用确定性算法与随机性算法相结合的办法生成植物杆茎或叶片。“确定性”指用以迭 代的规则是确定性的,它们由一组仿射变换构成;“随机性”指迭代过程是不确定的,每一次究竟迭代哪一个规则,不是预先定好的,而要靠掷骰子的办法来决定。
IFS迭代例子 按上述步骤迭代下去,刚开始可能是一个乱七八糟的图片,但是当迭代次数达到百万次以上时,图形将逐渐开始清晰——Sierpinski三角形的逼近图形。
Mathematica 程序 p1 = 0.3; aaa = 1/2 + I 1 // N; f1[z_] := (z + aaa)/2; p2 = 0.3; bbb = 0 // N; f2[z_] := (z + bbb)/2; p3 = 0.4; ccc = 1 // N; f3[z_] := (z + ccc)/2; f[z_] := Block[{tmp}, tmp = Random[]; Which[tmp < p1, f1[z], tmp < p1 + p2, f2[z], True, f3[z]]]; Array[mu, {150, 150}]; showIFS[z0_, shrage_List, divi_List, nmax_] := Block[{i, j, z = z0, a = divi[[1]], b = divi[[2]], temp1, temp2, mumax = 0}, For[i = a, i >= 1, i--, For[j = b, j >= 1, j--, mu[i, j] = 0]]; For[i = nmax, i >= 1, i--, temp1 = Floor[a*(Re[z] - shrage[[1]][[1]]) /(shrage[[2]][[1]] - shrage[[1]][[1]])] + 1; temp2 = Floor[b*(Im[z] - shrage[[1]][[2]]) /(shrage[[2]][[2]] - shrage[[1]][[2]])] + 1; mu[temp1, temp2]++; z = f[z]; ]; For[i = a, i >= 1, i--, For[j = b, j >= 1, j--, mumax = Max[mumax, mu[i, j]]]]; mu1 = Table[GrayLevel[1 - N[mu[j, i]]/mumax], {i, a}, {j, b}]; Show[Graphics[RasterArray[mu1]]]] showIFS[0 + I 0, {{-0.1, -0.1}, {1.1, 1.1}}, {150, 150}, 10000]
相对来说,L-系统是比较新的制作分形的方法。这项技术是Aristrid Lindenmayer在1968提出来的,最早是用来研究植物生长的生物模型。下面介绍L-系统分形树的制作过程,就能明白为什么用L-系统来表述植物的生长模型。 L 系统
尽管生成一个复杂的L-系统常常需要花费大量的时间,但是指定L-系统的公式往往非常简单。尽管生成一个复杂的L-系统常常需要花费大量的时间,但是指定L-系统的公式往往非常简单。 • 例如,上图中的树,只需要下面的简单输入。 • 公理:F • 增长角: 20 • 初始角: 90 • 规则: F -> {{F}}[+F][-F] • 再有几条简单的命令:直线、向左转、向右转等。 一些基础的命令是: • F = 前进 • - = 向右转 • + = 向左转 • [] = 把元素放入括号内,退回到上一步 • {} = 增加直线的长度。 L 系统(续)
L-系统需要告诉计算机行走的道路,以让计算机明白是向前走、转弯还是其它什么动作。所以说,我们上面提到的公理和规则非常重要。 • 我们使用字符串来告诉计算机怎么移动。 • 开始,字符串里只有公理,所以以“F”开始。这只是作一条简单的直线。 • 然后,把规则“F -> {{F}}[+F][-F] ”应用到定理F上。 字符串变成 {{F}}[+F][-F] • 进一步, 将{{F}}[+F][-F] 中所有的F,再次应用同样的规则,字符串变成{{{{F}}[+F][-F]}}[+ {{F}}[+F][-F]][- {{F}}[+F][-F]] • 依此方法继续迭代,即可得到一个分形图形 L 系统(续)
L 系统(续) L系统生成的树
分形与艺术 • 用数学方法对放大区域进行着色处理,这些区域就变成一幅幅精美的艺术图案,这些艺术图案人们称之为“分形艺术”。 • “分形艺术”以一种全新的艺术风格展示给人们,使人们认识到该艺术和传统艺术一样具有和谐、对称等特征的美学标准。 • 值得一提的是对称特征, • 传统几何:上下、左右及中心对称; • 分形的自相似性揭示了一种新的对称性,即画面的局部与更大范围的局部的对称,或说局部与整体的对称。 • 这种对称不同于欧几里德几何的对称,而是大小比例的对称,即系统中的每一元素都反映和含有整个系统的性质和信息。这一点与:“一头牛身体中的一个细胞中的基因记录着这头牛的全部生长信息”,完全吻合。 • 不管你是从科学的观点看还是从美学的观点看,她都是那么富有哲理,她是科学上的美和美学上的美的有机结合。
关于分形艺术的争论 • 把计算机产生的图形看成是艺术,有人可能要提出一些疑问。这些图形可以利用高品质的打印机产生任意多幅同样质量的“原作”,从而在商业化的艺术市场上造成混乱,因此她没有收藏价值,没有收藏价值的作品还能算得上是艺术吗? • 这是一个十分敏感的问题。早在六十年代初有些数学家和程序设计人员就开始利用计算机及绘图设备从事这方面的工作。但他们大部分人避免将自己的工作与“艺术”一词挂起钩来,以免与艺术界的人们发生冲突。但是有一些人还是挺着腰杆去面对批评,承认计算机是视觉艺术的一种新工具,称他们自己的方法为“计算机艺术”。在批评面前,他们没有受到影响。他们不顾理论界的反对而继续自己的探索。他们积累了大量令人难忘的成果。正因为他们的努力才出现了今天的PhotoShop、Corel DRAW等等著名的软件, 以及各种计算机艺术团体组织。PhotoShop也成了某些美术专业学生的必修课。
关于分形艺术的争论 • 当今时代出现的充满科技含量的“分形艺术”又不同于运用PhotoShop从事的计算机艺术创作。 “分形艺术”是纯数学产物,是否能算得上艺术必然会引起新的争论。争论最活跃的问题是:分形图形是纯数学产物能算得上艺术吗?既然学习数学和程序设计就可以从事艺术创作了,学习美术专业还有什么用处呢? • 这个问题提的好。从事分形艺术创作的人要研究产生这些图形的数学算法,这些算法产生的图形是无限的。他们没有结束,你永远不能看见它的全部。你不断放大她们的局部,也许你可能正在发现前人没曾见到过的图案。这些图案可能是非常精彩的。她们与现实世界相符合,从浩瀚广阔的宇宙空间到极精致的细节,是完全可以用数学结构来描述的。另一个的问题是颜色,好的颜色选择,就可以得到一幅奇妙的图形。糟糕的选择,你得到的就是垃圾。所以说,创造分形艺术,最好再学一点绘画基础、色彩学等,那将是大有益处。 • 分形几何冲击着不同的学术领域,她在艺术领域显示出非凡的作用。创作精美的分形艺术是国内外分形艺术家们的人生追求,总有一天分形艺术会登上大雅艺术殿堂。
实验任务 1、选择制作一个分形的图形 3、谈谈你所认识的分形