门格尔的海绵分形
门格尔的海绵是一种流行的分形,概括了康托尔集和Sierpinski三角形。其分形维数在2和3之间。
内容
卡尔·门格尔
卡尔·门格尔(1902 - 1985)是20世纪Austrian-American数学家。他的大部分职业生涯是在芝加哥伊利诺理工大学。他对几何学和博弈理论的贡献。但他最出名的是立方体状分形称为“海绵”。
海绵
从一个大坚实的多维数据集。这是零水平。
三等分的大数据集分成子集要= 27个小方块,像一个没有标签的魔方。去除中心立方体的六个面的和立方体的中心。离开这些27 - 7 = 20小一级的多维数据集。
重复这个过程在每一个20立方体生成20 x20 = 400更小的数据集在两个水平。
一次。这是与800年水平三个小立方体和大量的漏洞。
下一个级别呢?
分辨率可在我们的电脑屏幕,或者在打印页面中,几乎没有被超越了三个水平。每个多维数据集只占几个像素和水平四个方块将小20倍。
还有20倍。160000亚像素大小的方块。虽然我不能够把它,我做了完整的一个计算四个级别。它与主存超过32 gb的RAM,我有我的笔记本电脑。它必须使用虚拟存储,跑了近15分钟。
两到三维?
20/27的固体体积减少的一个因素在每个级别。如果你理论上继续过去三个或四个水平,体积趋于零。另一方面,表面变得无限。结果是一个介于两和三维分形。1918年,菲力克斯豪斯多夫分形维数。原来,门格尔海绵的豪斯多夫维数日志(20)/日志(3),约为2.727。
在这个问题上。
到目前为止,我们一直在黑暗中工作。我们做了一些阐述。大立方体开始实际上是纯金(模拟)。
光照射不同表面在不同角度产生不同深浅的黄金。我们现在可以很容易地看到洞。
在两级我们开拓了几乎一半的黄金。
光和阴影,水平三个需要大约5秒来计算和阴谋。它比其他的阴谋,因为有些暗方块边缘开始占据主导地位。
倾斜
如果海绵略微倾斜,你可以看到孔通道一路穿过。
动画
我试着在我所有的博文动画gif。
门格尔
这是我的代码。这个函数门格尔事情开始。有两个输入参数。第一个参数指定所需的水平的改进。一个坚实的多维数据集水平= 0。增加水平由一个繁殖的数量数据集,因此所需的执行时间和内存,20倍。任何水平大于3是不切实际的。
第二个输入参数是真或假。真正的打开camlight所以你可以看到更多的细节。与假没有照明。照明需要更多的时间,特别是如果你希望操纵海绵后计算。
8-by-3数组V提供了一个立方体的顶点半角3。从这个宽度意味着许多后续计算完成没有舍入误差。这是重要的,当数据集的大小图形分辨率的方法。
函数门格尔(水平,点燃)%分形立方体,门格尔海绵。20 ^ %门格尔(高度)生成多维数据集。%门格尔(水平,真正的)是照亮。%门格尔(水平,假)不是照亮,所以更快。
V = [3 3 3;3 3 3;3 3 3;3 3 3;3 3 3;3 3 3;3 3 3;3 3 3];init_fig(点燃)海绵(V级)
海绵
这就是所有的行动发生。这个函数海绵是递归的。它自称反复,传递数组v代表小立方体的顶点。的v数组是获得从原始V3的比例与逆大国和翻译与向量[x y z]由所有可能的组合2,+ 2和0。一个典型的v是
[3 3 3;3 3 3;3 3 3;3 3 3 3 3 3;3 3 3;3 3 3;3 3 3]/ 9 + [0 2 2]
向量[x y z]的坐标立方体中心。的向量是一个MATLAB的数组单例扩张。翻译后的v附近可能没有,但它是什么的某个地方海绵。和所有多维数据集的海绵是达成的递归。
现在一个关键点。这个函数nnz在最内层循环计数的非零组件一个向量。将通过翻译的多维数据集nnz ([x y z])等于0或1跳过,因为他们正是在分形提供了洞的多维数据集。
函数海绵(v,水平,点燃)如果水平> 0 v = v / 3;为x = (2 0 2)为y = (2 0 2)为z = (2 0 2)如果nnz ([x y z]) > 1海绵(v + [x y z],第1层,点燃)结束结束结束结束其他的多维数据集(v,点燃)结束结束
多维数据集
这个函数使用补丁绘制一个黄金的立方体的六个面。如果需要照明一些镜面反射率参数设置材料。
函数多维数据集(v,点燃)f = [1 5 7 3 3 7 8 4 1 3 4 2 2 4 8 6 1 2 6 5 5 6 8 7];黄金= [1 .85 .60];p =补丁(顶点= v,…面临= f,…FaceColor =金,…线宽= 0.5);如果亮金色= (0.7,0.5,0.3,1.0,0.2);材料(p,金色)结束结束
init_fig
轴和初始化图,如果需要,光指着立方体的观看位置。这个名字windowbuttonmotionfcnMATLAB中最长的标识符和一个非常方便的功能。我们这里需要一个灯当我们旋转一个海绵。
函数init_fig(点燃)轴(4 *[1 1 1 1 1 1])轴平等的从vis3drotate3d在视图(60,15)如果点燃camlight (-45, 10);集(gcf,“windowbuttonmotionfcn”,@wbmf);结束结束
wbmf
函数甘氨胆酸wbmf (~。~) =;l = findobj (,“类型”,“光”);camlight (l, -45, 10);结束
软件
我的代码是可用的在这里。
了解更多
网络上有很多门格尔海绵。人们建造了那些你可以穿过。人用3 d打印机打印。谷歌“门格尔海绵图像”,点击“查看所有”。
维基百科有一篇好文章。https://en.wikipedia.org/wiki/Menger_sponge。
我特别喜欢这个视频。https://www.youtube.com/watch?v=fWsmq9E4YC0。
的纽约时报甚至有一篇文章。https://www.nytimes.com/2011/06/28/science/28math-menger.html。
谢谢
由于Ed天使向我介绍门格尔的创建和鲍勃·布莱恩与图形一些急需的帮助。
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。