分形蕨( fractal fern)"/>
分形蕨( fractal fern)
今天再一次看Cleve B. Moler 的 Experiments with MATLAB,再一次受触动,人家是matlab的创办人, mathworks公 司的首席科学家兼董事长,曾在美国著名大学(the University of Michigan, Stanford University and the University of New Mexico )担任教授长达20年之久,写过三本关于数值计算的书,这些背景把我的触动解释得很好,我只能感慨,中国像这样的书很稀缺是有原因的。自然界的几何是分形的,人类从一开始就把自己局限在欧氏几何的世界里,这个遗憾也是可以谅解的。不了解分形的人可以先试着回答一个问题:中国的海岸线有多长(或者回答英国的海岸线有多长也可以),并自行在网上查找资料验证。
多亏有了计算机以及软件编程,不然,有关Mandelbrot的分形学的研究很难出现这么火热的局面。下面这幅图是matlab实现的,我们可以把它当作桌面背景。关于分形蕨的具体内容见 Fractal Fern (8 pages)
Preface (5 pages) | |
Iteration (13 pages) | |
Fibonacci Numbers (10 pages) | |
Calendars and Clocks (7 pages) | |
T Puzzle (8 pages) | |
Matrices (13 pages) | |
Fractal Fern (8 pages) | |
Magic Squares (15 pages) | |
TicTacToe Magic (4 pages) | |
Game of Life (9 pages) | |
Mandelbrot Set (15 pages) | |
Linear Equations (7 pages) | |
Google PageRank (12 pages) | |
Ordinary Differental Equations (12 pages) | |
Exponential Function (11 pages) | |
Predators and Prey (7 pages) | |
Shallow Water Equations (4 pages) |
原理基本上就是对一点一直作 x->Ax+b的仿射变换。
代码见: finitefern.m
我运行得到的图形为:
要想得到先前的黑色背景的绿蕨,就运行下面的几行代码:
bg=[0 0 85]; % 黑色的背景设置
fg=[255 255 255]; % 绿色的叶子
sz=get(0,'screensize');
rand('state',0)
X=finitefern(500000,sz(4),sz(3));
d=fg-bg;
R=uint8(bg(1)+d(1)*X);
G=uint8(bg(2)+d(2)*X);
B=uint8(bg(3)+d(3)*X);
F=cat(3,R,G,B);
imwrite(F,'fern.png','png','bitdepth',8);
image(F)
现在来看看自然界的真实的蕨类图片吧:
貌似最后一张还算比较靠谱,看来我要感谢ywu108在博客里写的 “蕨菜”一文,给我提供了这么好的素材。在文中,他写道:
"蕨菜以前是乡村百姓喜食的一种野生蔬菜。 食用时,一般用开水煮熟后,取出撕开,用清水浸泡一夜,换清水数次,泡去涩味,加油盐蒜叶调料回锅炒熟食。味道鲜嫩可口,喜食辣椒的可加入少许糖醋,热炒蕨菜,开胃畅快淋漓!
更多推荐
分形蕨( fractal fern)
发布评论