切换到宽版
  • 3663阅读
  • 3回复

[转帖]分形理论与干支语言学 [复制链接]

上一主题 下一主题
离线copy
 

发帖
396
开心币
8
好评度
3675
只看楼主 倒序阅读 使用道具 楼主  发表于: 2006-08-04
  关于分形,基本定义是:
  ”A fractal is a shape made of parts similar to the whole in some way”(如果一个图形的部分以某种方式与其整体本身相似,这个图形就称为分形。)
  其实分形在中国古代有很奇妙的应用,并且代代相传。传承和创新相比,我更倾向于创新,用分形的思想,重新发明一遍,而不是走四方寻高人,拜师学艺。
  因地日关系而形成的年月日时,给系统里的所有事物上都留下了烙印。中国古代用干支符号来描述年月日时,干支符号是时间符号,同时也是空间符号。这样,干支符号就成了描述分形系统的一种通用语言。用干支的形式来描述一些学科,如中医就成为可能。
  但用干支来描述分形并没有成熟的经验可以借鉴,虽然四柱预测应用干支已经上千年,但四柱预测很容易证伪,因此在这之上的一些理论并不见得有多少参考价值。还有许多基础性研究工作要做。这个工作如果做得比较好,就可能形成干支语言学。这样我们就多了一把度量事物的尺子。
  关注和思考分形已经多年。一直在寻找一种良好的符号体系来描述其大无外,其小无内,无所不在的分形,在没有更好的符号体系前暂用干支。干支的起源不得而知,干支体系的规律性有待进一步研究。现在的办法,是在分形的实例中寻找干支体系的规律。
  研究干支与分形,首先要知道干支与五行的对应关系,60甲子最好能倒背如流。这些基础请自行查阅相关资料。好在有搜索引擎,有关学习资料很容易取得。对于传统总结一些认识,统统不能作为定论,不能自己给思想绑上束缚,这是研究任何学术的一个基本态度,比如一个得到结论,全世界只有你认为是对,但有实验结果支持,就毫不受外界否定看法影响。
  在研究分形时,要把空间的分形和时间的分形进行转化,把已知的全局的分形规律应用于局部,并用干支语言来描述。全局和局部分形的相似性,最大的例子是太阳系的结构和元素周期律的关系。为什么我们在太阳系内观察到的原子结构,最外层电子达到8个时呈稳定状态,tuenhai认为这是太阳系的结构决定的。这种全局和局部分形规律的互相印证对科学研究很有用处。
  “道”是什么?“道”就是真理。
  因为分形其大无外,其小无内,无所不在,所以现代真正研究“道”,必须认真学习现代各门学科。许多人都到走入深山到宗教里去寻找答案,花许多精力去学习一些玄之又玄的东西,真是道不远人而人自远之。一个宗教,如果只是崇拜“神”还好一些(如基督教),至少可以起到导人向善的作用,可以给人心理安慰;如果把人当作神来顶礼膜拜,这是很危险的,绝对的崇拜导致绝对的腐败,善良的人们难免上当受骗,这方面的例子不胜枚举。tuenhai认为,真正的“明白人”,首先是个科学家,大科学家,是个通才。所有现代科学知识都是“道”。可惜认识到这个原理的人几乎没有,我想找个崇拜的人都不可得,自己对于现代科学的知识也是少得可怜,没有办法了,有时只好自己YY一下:〉
  例解:
  1
  戊申
  丙辰
  庚午 辛未
  戊寅→戊
  有必要先解释一下这组干支的意思。戊申 丙辰 庚午 戊寅是事物所处的环境,在表示时间的情况下相当于年月日时。
  辛未是事物本身。
  箭头后面的戊,是实际结果。我们要从这个字反推,分析归纳干支间的作用规律。
  表示环境的8个字,表示事物本身的2个字,表示结果的1个字,也就是从11个字中反推,归纳出干支之间的作用规律。
  5155651524
  1
  戊申
  丙辰
  庚午 辛未
  戊寅→戊
  2
  戊申
  癸亥
  庚申 戊午
  戊寅→丙
  3
  庚寅
  戊寅
  癸酉 癸未
  丙辰→丁
  4
  丙寅
  丙申
  乙丑 丙申
  丁丑→辛
  5
  丙申
  乙未
  己酉 戊寅
  辛未→庚
  6
  乙卯
  辛巳
  丁未 戊午
  庚戌→甲
  7
  乙酉
  戊寅
  癸未 甲午
  甲寅→丁
  8
  壬寅
  辛丑
  庚戌 癸亥
  丁丑→戊
  9
  辛卯
  庚寅
  己卯 丙午
  戊辰→庚
  10
  辛亥
  乙未
  戊午 癸丑
  庚申→戊
  11
  辛丑
  辛卯
  戊戌 丁未
  戊午→己
  12
  戊戌
  癸丑
  癸卯 庚申
  己未→甲
  13
  辛丑
  壬辰
  丁亥 丁亥
  甲辰→癸
  14
  癸卯
  甲寅
  甲子 辛巳
  癸酉→己
  15
  丙子
  癸巳
  己亥 癸酉
  己巳→壬
  16
  甲戌
  丙寅
  癸巳 乙未
  壬子→戊
  17
  壬寅
  己酉
  辛丑 乙酉
  戊戌→壬
  18
  丁酉
  丁未
  丁巳 壬寅
  壬寅→甲
  19
  辛未
  乙未
  丙申 丙辰
  甲午→壬
  20
  乙巳
  丁丑
  丁酉 戊寅
  壬寅→癸
  21
  甲寅
  乙亥
  丙申 癸亥
  癸巳→乙
  22
  甲子
  戊辰
  己巳 壬辰
  乙丑→辛
  23
  甲寅
  乙丑
  丙辰 癸亥
  辛卯→丁
  24
  辛卯
  壬辰
  庚辰 壬子
  丁亥→甲
  25
  甲申
  己巳
  甲寅 丁酉
  甲子→己
  26
  癸丑
  壬戌
  辛卯 丙寅
  己亥→丁
  27
  己巳
  癸酉
  甲辰 丁卯
  丁卯→丁
  28
  辛酉
  丁酉
  丁未 乙酉
  丁未→戊
  29
  壬辰
  癸卯
  甲午 癸丑
  戊辰→癸
  30
  丁卯
  辛亥
  辛酉 丙辰
  癸巳→甲
  31
  甲申
  壬申
  乙丑 己巳
  甲申→丁
  32
  乙卯
  丙戌
  戊子 丁亥
  丁巳→己
  33
  甲戌
  乙丑
  己酉 癸卯
  己巳→乙
 
我要为黑水兄和开心社区拷贝10万文章!
离线copy

发帖
396
开心币
8
好评度
3675
只看该作者 沙发  发表于: 2006-08-04

关于分形理论的哲学思考

  http://www.szjt.org/fjwh/contents/kexue44.htm
  ——摘自《自然辩证法研究》,1993年第4期
  李后强
  来自科学哲学的情报表明,一些富于探索精神的哲学家们,正在试图把分形的概念和思想抽象为一种方法论,它是一种辨证的思维方法和认识方法。部分与整体的关系是一对古老的哲学范畴,也是分形理论的研究对象。把复杂事物分解为要素来研究是一条方法论原则——简单性原则。哲学史上,人们很早就认识到,整体由部分组成,可通过认识部分来映象整体。系统中每一个元素都反映和含有整个系统的性质和信息,即元素映现系统,这可能是分形论的哲学基础之一。
  从分析事物的视角方面来看,分形论和系统论分别体现了从两个极端出发的思路。它们之间的互补恰恰完整地构成了辨证的思维方法。系统论由整体出发来确立各部分的系统性质,它是沿着宏观到微观的方向考察整体与部分之间的相关性。而分形论则相反,它是从部分出发确立了部分依赖于整体的性质,沿着微观到宏观的方向展开的。系统论强调了部分依赖于整体的性质,而分形论则强调整体对部分的依赖性质。于是二者构成了“互补”。
  分形论的提出,或许具有以下几个方面的意义。
  首先,它打破了整体与部分之间的隔膜,找到了部分过渡到整体的媒介和桥梁即整体与部分之间的相似。其次,分形论的提出,使人们对整体与部分的关系的思维方法由线性进展到非线性的阶段,并同系统论一起,共同揭示了整体与部分之间多层面、多视角、多维度的联系方式。分形论从一个新的层面深化和丰富了整体与部分之间的辨证关系。再次,分形论为人们认识世界提供了一种新的方法论,它为人们从部分中认知整体,从有限中认知无限提供了可能的根据。最后,分形论的提出进一步丰富和深化了科学哲学思想中的关于普遍联系和世界统一性的原理。这主要表现在两个方向:一是分形论从一个特定层面直接揭示了宇宙的统一图景,同时,分形论所揭示的整体与部分的内在联系方式,是对宇宙普遍联系与内在统一的具体机制的一种揭示。恩格斯曾经把存在于自然、社会和思维中的普遍联系称之为“一幅由种种联系和相互作用无穷无尽地交织起来的画面。”这种联系的普遍机制应包括分形论。二是关于世界物质统一性,分形论可以从共时态与历史性两个维度上展开说明:一方面在自然界中蕴涵着历史的演化与嬗变的信息,另一方面部分与分形整体之间普遍的相似性编织了一张世界统一的网络。
  分形论的产生,也是古代哲学思想在近代自然科学中的重现和历代思想家们智慧火花的积累。古老的宗教典籍《华严经》中心主题是所有事物和事件的统一及相互关系。她是大乘佛教的核心,也包括着朴素神秘的分形思想。这在因陀罗网的隐喻中表现很充分。用查尔斯·埃利奥特爵士的话说:
  据说在因陀罗的天堂里有一张宝石的网,你可以从其中的一个看到反映出来的其他所有宝石。世界上每一个物体也是一样。它不仅是自身,而且包含着其他所有物体,实际也就是其他物体。“在每一粒灰尘中都显现出无数的佛。”
  关于因陀罗网的隐喻可以说是东方圣贤在2500多年前提出的一个自相似分形模型。每一部分都与其他部分相似并包含整体的信息的思想在《易经》、《皇帝内经》中也有反映。不仅如此,在西方的思想里也有自相似的影子。例如,威廉·布莱克就有这样著名的诗句:
  从一粒砂看整个世界,一砂一世界
  从一朵野花看整个天堂。一花一天堂
  用手掌把握永远,手中有无限
  在一刻钟把握永恒。
  在莱布尼兹的哲学中也出现了同样的想象。他把世界看成由基本的物质即“单子”所组成,它们每一个都反映了整个宇宙。莱布尼兹在他的《单子论》中写到:
  物质的一部分都可以看成是一个长满植物的花园,是充满鱼的池塘。但是每一棵植物,每一只动物,它们的每一滴汁液也是这样的花园或者池塘。
  这些表述与《华严经》有趣的相似是由于佛教徒对于莱布尼兹的实际影响。因此莱布尼兹通过传教士的译本对于中国的思想和文化有很好的了解。他的哲学很可能受到他所熟悉的朱熹新儒教派的影响。而这个学派的基础之一是华严宗。
  宇宙的基本统一性不但是东方哲学的主要特征,而且也是现代物理学最重要的发现之一。在离子物理学中有一派认为,自然界的组成部分彼此组成,或者是自己的组成部分。这种观念是在S矩阵理论中产生的,被称为“靴袢假设”(自己依靠自己的意思)。杰弗里·丘把这种观念发展成关于自然的“靴袢”哲学。这种哲学使得现代物理学最终放弃了机械世界观,它把宇宙看成是相互关联事件的动态网络。在这张网络中没有任何部分的性质是基本的,它们都可以从其他部分的性质导出,它们相互关联的整体自洽性决定了整个网络的结构。靴袢哲学标志着自然科学的高峰,在相对论中获得了动态的含义,并在S矩阵理论中用反应概率的语言描述出来。这种自然观最接近东方的世界观,从它的一般哲学和物质的具体结构来说都与东方思想协调一致。道教认为,世界上所有现象都是道的一部分,而这种道是自然界固有的。《道德经》中有“人法地,地法天,天法道,道法自然”。这里的道,也可以认为是分形的实质,即自相似性和嵌套性。
  由靴袢假说所产生的强子模型常常被概括成这样一句具有鼓动性的话:“每一粒子都由其他所有粒子组成”。这是S矩阵理论的动态和概率的意思上讲,每一个强子都是其他粒子组潜在的“束缚态”,这些粒子组的相互作用形成了所考虑的强子。因此,每一个强子的组成部分,它可以在组成部分之间进行交换,从而成为保持这种结构的力的一部分。在强子的靴袢中,所有的粒子都是彼此以自我一致的方式动态地组成的。从这个意思上讲,可以说互相“包含”着。自相似概念的来源与靴袢假设有关,但只提取了其精髓,而高于原始的靴袢思想。
  古代哲学为分形论的诞生作好了思想准备,而分形论的创立则为现代哲学关于普遍联系和统一的原理提供了最新的数理科学根据。

我要为黑水兄和开心社区拷贝10万文章!
离线copy

发帖
396
开心币
8
好评度
3675
只看该作者 板凳  发表于: 2006-08-04
  分 形 研 究
  F0303032班 冯子乔(5030309872)、于欣(5030309892)
  一、 什么是分形?
  1967年,美国的《科学》杂志上发表了一篇题为《英国的海岸线究竟有多长?》的论文。这篇论文对海岸线的本质作了独特的分析,以至当时的整个学术界为之震惊。这篇论文也成为了作者曼德布罗特(Mandelbrot)思想的转折点,分形的理论就从此萌芽并迅速发展起来。曼德布罗特,也成为了分形论的奠基人。
  分形的涵义是什么呢?
  我们查阅相关的图书,也找到一些严格的数学定义。但还是曼德布罗特本人提出的定义更简洁和容易让人接受:
  ”A fractal is a shape made of parts similar to the whole in some way”(如果一个图形的部分以某种方式与其整体本身相似,这个图形就称为分形。)
  这就是分形的最基本定义。
  从分形研究的进展看,近年来,又提出许多新的概念,其中包括,自仿射分形、自反演分形、递归分形、多重分形、胖分形。就我们现在所学的知识来说还无法研究。
  二、 分形论的前景和应用
  分形理论是一门新兴的横断学科,它给自然科学、社会科学、工程技术、文学艺术等极广泛的学科领域,提供了一般的科学方法和思考方式。就目前所知,它有很高程度的应用普遍性。这是因为,具有标度不变性的分形结构是现实世界普遍存在的一大类结构。此处结构的含义十分丰富,它不仅指研究对象的空间几何形态,而是一般地指其拓扑维数(几何维数)小于其测量维数的点集,如事件点的分布,能量点的分布,时间点的分布,过程点的分布,甚至可能是意识点、思维点的分布。
  分形几何学已在自然界与物理学中得到了应用。如在显微镜下观察落入溶液中的一粒花粉,会看见它不间断地作无规则运动(布朗运动),这是花粉在大量液体分子的无规则碰撞(每秒钟多达十亿亿次)下表现的平均行为。布朗粒子的轨迹,由各种尺寸的折线连成。只要有足够的分辨率,就可以发现原以为是直线段的部分,其实由大量更小尺度的折线连成。这是一种处处连续,但又处处无导数的曲线。这种布朗粒子轨迹的分维是 2,大大高于它的拓扑维数 1。
  在某些电化学反应中,电极附近成绩的固态物质,以不规则的树枝形状向外增长。受到污染的一些流水中,粘在藻类植物上的颗粒和胶状物,不断因新的沉积而生长,成为带有许多须须毛毛的枝条状,就可以用分维。
  自然界中更大的尺度上也存在分形对象。一枝粗干可以分出不规则的枝杈,每个枝杈继续分为细杈……,至少有十几次分支的层次,可以用分形几何学去测量。
  有人研究了某些云彩边界的几何性质,发现存在从 1公里到1000公里的无标度区。小于 1公里的云朵,更受地形概貌影响,大于1000公里时,地球曲率开始起作用。大小两端都受到一定特征尺度的限制,中间有三个数量级的无标度区,这已经足够了。分形存在于这中间区域。
  近几年在流体力学不稳定性、光学双稳定器件、化学震荡反映等试验中,都实际测得了混沌吸引子,并从实验数据中计算出它们的分维。学会从实验数据测算分维是最近的一大进展。分形几何学在物理学、生物学上的应用也正在成为有充实内容的研究领域
  三、 各种分形图形
  (一)、Koch曲线
  设 为单位直线段,将其三等分后,中间一段用与其组成等边三角形的另两边代替,得到 。对 的每条线段重复以上做法得到 。当n趋向于无穷时,所得的曲线就是Koch曲线。
  编程实现方法:
  我们看到 其实是一条折线。对于上述的每次代替变换,相当于在两个点之间加入三个点,把一条线段替换成四条线段。因此只要能够根据线段两个端点的平面坐标求得下次加入的3个点的平面坐标,就可以很方便的编程绘图。
  设 的两个端点为P、Q。将他们都表示为复数 , 。则 , , 。
  很容易得到A、B、C的坐标:
  这样我们设初始的点列为{P、Q},通过不断地在相邻点间加入三个点,得到koch“点列”,连线即为koch曲线。另外,设初始点列为{P、Q、R、P},(P、Q、R为一个等边三角形的三个顶点),就可以得到koch雪花!
  源程序见附录。
  (二)由Koch曲线联想到的一些分形
  我们通过研究、绘制koch曲线,联想到一些类似的分形图案,并用几乎同样的方法做出了分形图形。
  1我们将中间一段用正方形的另外三条边来代替,得到了
  2我们将单位线段四等分,中间两段分别用方向相反的两个正方形的另三条边代替,得到了
  3我们将单位线段五等分,第二段和第四段用方向相反的两个正方形的另三条边代替,得到了
  源程序见附录。
  (三)树
  其实我一直怀疑,分形的诞生怎么能和研究海岸线的长度联系在一起。大自然中最常见的分形现象就是顶天立地的大树!粗略的看,树的每一个分支和整棵树的形状是相似的。将主干加上几根枝条,再对枝条无限加枝条,就得到了一棵完整的树!
  不知道Mandelbrot为什么没像牛顿一样在树下思考时得到灵感。
  为了研究方便,我们将树的结构尽可能简化,使他成为一个十分简单的数学模型:
  设图形 为一条单位长直线段,将其二等分,在中点上各向两边 角的方向延伸出两条 长的线段得到图形 。将 的每段做同样的变换,得到 。当n趋向于无穷大时得到一棵“数学树”。
  可惜这棵树太简单了,如果绘出图形丝毫看不出来像一棵树,只像一个扫帚。
  我们再给出一个稍微复杂的树模型:
  设图形 为一条单位长直线段,在第一个三等分点上各向两边 角的方向延伸出两条 长的线段,在中点处向左以 延伸出 长的线段,再在第二个三等分点处向右方以 延伸出 的线段。得到图形 。将 的每5个分支做同样的变换,得到 。
  源程序见附录
  (四)Mandelbrot集
  热情地赞赏者常常说:曼德布罗特集是最复杂的数学对象,即使用无限的时间也不足以观察它的全貌。那饰以多姿多彩荆棘的圆盘,那弯曲缠绕的螺线和细丝,那挂着微细颗粒的鳞茎,那无穷尽的斑驳的色彩,那好像是上帝葡萄藤上的累累果实。曼德布罗特集显示了分形之美。曼德布罗特集成为了分形、混沌的一种国际标志。
  Mandelbrot集图形如此地美丽和丰富多变,但他的生成原理却十分的简单。这也许体现了数学的简单和谐之美。
  给定 为一个初始的复数,C为一个复常数。对Z进行这样的迭代:
  如果n趋向于无穷时 有界,则C属于Mandelbrot集。
  为了更好的编程绘制Mandelbrot集,我们采用下述方法:
  (1)设定一个最大的迭代次数N,和 模的上界M
  (2)给定 ,C=0进行迭代,迭代超过M时的迭代次数n相同的点,标以相同的颜色。
  (3)在[-2.5,1]×[-1.5,1.5]的区域上将图形以640*480的分辨率画出。
  源代码见附录。
  绘出的图形非常美丽,我们进而又思考,如果每次迭代时取 的3次方4次方,会是什么样的图形呢?如果迭代的指数等于 、 呢?如果奇数次迭代时取2,偶数次迭代时取3会是怎样?会不会画出的图形混沌而没有规律呢?
  因为时间关系,我们没有来得及对这些问题全部都编程实验,但做出了k=3,4,5是的图形,竟然有了奇妙的发现!
  当指数取k时,图形的基本单元和Mandelbrot集完全一样,但是整个图形分成相同的k-1瓣。
  (五)Julia集
  Julia集和Mandelbrot集可以说是一对孪生兄弟。Mandelbrot集的迭代公式 中,给定复数C,如果n趋向于无穷时 有界,则 属于Julia集。
  Julia集图形的画法自然和Mandelbrot集的画法一样,只是初始条件和边界条件还有迭代变量稍有不同。
  和Mandelbrot集的情形一样,如果迭代时的指数为更大的整数或者为分数小数时,图形会有怎样的变化呢,可惜由于时间关系,我们没有来得及研究。
  取C=0.5+0.5i时Julia集:
  取C=0.6+0.5i时的Julia集:
  取C=0.364+0.1i时的Julia集:
  取C=0.37+0.27i时的Julia集:
  四、 分形的特点及分形维数
  我们觉得分形的特点可概括为两点,就是
  (1) 自相似性
  我们已经知道,分形体系的局部与整体是相似的。实际上,分形体系内任何一个相对独立的部分,在一定程度上都是整体的再现和缩影。构成分形整体的相对独立的部分称为生成元或分形元。
  (2) 无限细分
  任何一个分形,都很有无穷多个分形元。对整体的无限细分,所形成的无数分形元,构成了分形图形的整体。
  分形维数
  将单位长度的线段、正方体、立方体分成边长为1/2的同样几何形体,得到 、 、 个小线段、正方形、立方体。这里指数给出了几何形体的维数。
  分形维数的定义:若一个分形含有n个相似的部分,每一个部分的线度是整体的 ,则分形维数定义为:
  下面我们来计算我们做出的几种图形的维数
  Koch曲线 联想曲线一 联想曲线二 联想曲线三 “数学树”
  那么我们做的那棵比较优美的树的分形维数呢?
  虽然各部分相似,但是一个整体的5个部分线度比不一样,因此无法计算上述定义的分形维数。其实我们觉得严格说来,它并不算做最基本的分形,起码不是一种“正规”的分形。关于它的分形维数,还有Mandelbrot、Julia集的分形维数,还有待我们进一步的学习和思考.
我要为黑水兄和开心社区拷贝10万文章!
离线copy

发帖
396
开心币
8
好评度
3675
只看该作者 地板  发表于: 2006-08-04

  五、 附程序
  下面所有的程序在TC++3.1下实现并调试运行,本文的所有分形图形都是这些程序绘制而成。为节省篇章,每个程序都去掉了开头包含头文件的宏指令
  #i nclude
  #i nclude
  #i nclude
  #i nclude
  #i nclude
  (一) Koch曲线和Koch雪花
  struct point{ int x,y; point *next;};
  int main()
  { int driver=DETECT,mode;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(WHITE);setcolor(LIGHTBLUE);setlinestyle(0,0,3);
  point *plist,*(pnew[3]),*p;
  double x1,y1,x2,y2;
  plist=(point *)malloc(sizeof(point));
  plist->x=120;
  plist->y=360;
  p=(point *)malloc(sizeof(point));
  p->x=520;
  p->y=360;
  plist->next=p;
  p=(point *)malloc(sizeof(point));
  p->x=320;
  p->y=13;
  plist->next->next=p;
  p=(point *)malloc(sizeof(point));
  p->x=120;
  p->y=360;
  p->next=NULL;
  plist->next->next->next=p;
  //上面四小段是向链表中添加初始的四点坐标,如果只做koch曲线,只需添加两个点
  for(int i=0;i<5;i++)
  { for(p=plist;p->next;p=pnew[2]->next)
  { for(int j=0;j<3;j++) pnew[j]=(point *)malloc(sizeof(point));
  x1=p->x;
  y1=p->y;
  x2=p->next->x;
  y2=p->next->y;
  pnew[0]->x=2*x1/3.0+x2/3.0;
  pnew[0]->y=2*y1/3.0+y2/3.0;
  pnew[1]->x=x1/2.0+x2/2.0-y2/2.0/sqrt(3.0)+y1/2.0/sqrt(3.0);
  pnew[1]->y=y1/2.0+y2/2.0+x2/2.0/sqrt(3.0)-x1/2.0/sqrt(3.0);
  pnew[2]->x=x1/3.0+2*x2/3.0;
  pnew[2]->y=y1/3.0+2*y2/3.0;
  pnew[2]->next=p->next;
  p->next=pnew[0];
  for(j=0;j<2;j++) pnew[j]->next=pnew[j+1];
  }
  cleardevice();
  moveto(plist->x,480-plist->y);
  for(p=plist;p;p=p->next)
  lineto(p->x,480-p->y);
  getch();
  }
  getch();
  closegraph();
  return 0;
  }
  (二) 由Koch曲线联想的分形一
  struct point{ float x,y; point *next;};
  int main()
  { int driver=DETECT,mode;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(WHITE);setcolor(BLUE);setlinestyle(0,0,1);
  point *plist,*(pnew[4]),*p;
  float x1,y1,x2,y2;
  plist=(point *)malloc(sizeof(point));
  plist->x=40;
  plist->y=120;
  p=(point *)malloc(sizeof(point));
  p->x=600;
  p->y=120;
  p->next=NULL;
  plist->next=p;
  for(int i=0;i<5;i++)
  { for(p=plist;p->next;p=pnew[3]->next)
  { for(int j=0;j<4;j++) pnew[j]=(point *)malloc(sizeof(point));
  x1=p->x;
  y1=p->y;
  x2=p->next->x;
  y2=p->next->y;
  pnew[0]->x=2*x1/3.0+x2/3.0;
  pnew[0]->y=2*y1/3.0+y2/3.0;
  pnew[1]->x=2*x1/3.0+x2/3.0-y2/3.0+y1/3.0;
  pnew[1]->y=2*y1/3.0+y2/3.0+x2/3.0-x1/3.0;
  pnew[2]->x=x1/3.0+2*x2/3.0-y2/3.0+y1/3.0;
  pnew[2]->y=y1/3.0+2*y2/3.0+x2/3.0-x1/3.0;
  pnew[3]->x=x1/3.0+2*x2/3.0;
  pnew[3]->y=y1/3.0+2*y2/3.0;
  pnew[3]->next=p->next;
  p->next=pnew[0];
  for(j=0;j<3;j++) pnew[j]->next=pnew[j+1];
  }
  cleardevice();
  moveto(plist->x,480-plist->y);
  for(p=plist;p;p=p->next)
  lineto(p->x,480-p->y);
  getch();
  }
  getch();
  closegraph();
  return 0;
  }
  (三) 由Koch曲线联想的分形二
  struct point{ int x,y; point *next;};
  int main()
  {
  int driver=DETECT,mode;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(WHITE);setcolor(CYAN); setlinestyle(0,0,1);
  point *plist,*(pnew[7]),*p;
  float x1,y1,x2,y2;
  p=(point *)malloc(sizeof(point));
  p->x=40;
  p->y=240;
  p->next=NULL;//初始时线段的第一个端点
  plist=(point *)malloc(sizeof(point));
  plist->x=600;
  plist->y=240;
  plist->next=p; //初始时线段的第二个端点
  for(int i=0;i<4;i++)
  { for(p=plist;p->next;p=pnew[6]->next)
  { for(int j=0;j<7;j++) pnew[j]=(point *)malloc(sizeof(point));
  x1=p->x;
  y1=p->y;
  x2=p->next->x;
  y2=p->next->y;
  pnew[0]->x=3*x1/4.0+x2/4.0;
  pnew[0]->y=3*y1/4.0+y2/4.0;
  pnew[1]->x=3*x1/4.0+x2/4.0-y2/4.0+y1/4.0;
  pnew[1]->y=3*y1/4.0+y2/4.0+x2/4.0-x1/4.0;
  pnew[2]->x=x1/2.0+x2/2.0-y2/4.0+y1/4.0;
  pnew[2]->y=y1/2.0+y2/2.0+x2/4.0-x1/4.0;
  pnew[3]->x=x1/2.0+x2/2.0;
  pnew[3]->y=y1/2.0+y2/2.0;
  pnew[4]->x=x1/2.0+x2/2.0+y2/4.0-y1/4.0;
  pnew[4]->y=y1/2.0+y2/2.0-x2/4.0+x1/4.0;
  pnew[5]->x=x1/4.0+3*x2/4.0+y2/4.0-y1/4.0;
  pnew[5]->y=y1/4.0+3*y2/4.0-x2/4.0+x1/4.0;
  pnew[6]->x=x1/4.0+3*x2/4.0;
  pnew[6]->y=y1/4.0+3*y2/4.0;
  pnew[6]->next=p->next;
  p->next=pnew[0];
  for(j=0;j<6;j++) pnew[j]->next=pnew[j+1];
  }
  cleardevice();
  moveto(plist->x,480-plist->y);
  for(p=plist;p;p=p->next)
  lineto(p->x,480-p->y);
  getch();
  }
  getch();
  closegraph();
  return 0;
  }
  (四)
  struct point{ float x,y; point *next;};
  int main()
  { int driver=DETECT,mode;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(WHITE);setcolor(BLUE); setlinestyle(0,0,3);
  point *plist,*(pnew[8]),*p;
  float x1,y1,x2,y2;
  plist=(point *)malloc(sizeof(point));
  plist->x=600;
  plist->y=240;
  p=(point *)malloc(sizeof(point));
  p->x=40;
  p->y=240;
  p->next=NULL;
  plist->next=p;
  for(int i=0;i<5;i++)
  { for(p=plist;p->next;p=pnew[7]->next)
  { for(int j=0;j<8;j++) pnew[j]=(point *)malloc(sizeof(point));
  x1=p->x;
  y1=p->y;
  x2=p->next->x;
  y2=p->next->y;
  pnew[0]->x=4*x1/5.0+x2/5.0;
  pnew[0]->y=4*y1/5.0+y2/5.0;
  pnew[1]->x=4*x1/5.0+x2/5.0-y2/5.0+y1/5.0;
  pnew[1]->y=4*y1/5.0+y2/5.0+x2/5.0-x1/5.0;
  pnew[2]->x=3*x1/5.0+2*x2/5.0-y2/5.0+y1/5.0;
  pnew[2]->y=3*y1/5.0+2*y2/5.0+x2/5.0-x1/5.0;
  pnew[3]->x=3*x1/5.0+2*x2/5.0;
  pnew[3]->y=3*y1/5.0+2*y2/5.0;
  pnew[4]->x=2*x1/5.0+3*x2/5.0;
  pnew[4]->y=2*y1/5.0+3*y2/5.0;
  pnew[5]->x=2*x1/5.0+3*x2/5.0+y2/5.0-y1/5.0;
  pnew[5]->y=2*y1/5.0+3*y2/5.0-x2/5.0+x1/5.0;
  pnew[6]->x=x1/5.0+4*x2/5.0+y2/5.0-y1/5.0;
  pnew[6]->y=y1/5.0+4*y2/5.0-x2/5.0+x1/5.0;
  pnew[7]->x=x1/5.0+4*x2/5.0;
  pnew[7]->y=y1/5.0+4*y2/5.0;
  pnew[7]->next=p->next;
  p->next=pnew[0];
  for(j=0;j<7;j++) pnew[j]->next=pnew[j+1];
  }
  cleardevice();
  moveto(plist->x,480-plist->y);
  for(p=plist;p;p=p->next)
  lineto(p->x,480-p->y);
  getch();
  }
  getch();
  closegraph();
  return 0;
  }
  (五) 树
  void drawbranch(int x1,int y1,int x2,int y2,int n)
  { if(n==0) return;
  line(x1,480-y1,x2,480-y2);
  drawbranch((2*x1+x2)/3,(2*y1+y2)/3,
  (2*x1+x2)/3+(x2-x1)*sqrt(2)/4+(y2-y1)*sqrt(2)/4,
  (2*y1+y2)/3+(y2-y1)*sqrt(2)/4-(x2-x1)*sqrt(2)/4,n-1);
  drawbranch((2*x1+x2)/3,(2*y1+y2)/3,
  (2*x1+x2)/3+(x2-x1)*sqrt(2)/4-(y2-y1)*sqrt(2)/4,
  (2*y1+y2)/3+(y2-y1)*sqrt(2)/4+(x2-x1)*sqrt(2)/4,n-1);
  drawbranch((x1+x2)/2,(y1+y2)/2,
  (x1+x2)/2+(x2-x1)*sqrt(3)/4-(y2-y1)/4,
  (y1+y2)/2+(y2-y1)*sqrt(3)/4+(x2-x1)/4,n-1);
  drawbranch((x1+2*x2)/3,(y1+2*y2)/3,
  (x1+2*x2)/3+(x2-x1)*sqrt(3)/6+(y2-y1)/6,
  (y1+2*y2)/3+(y2-y1)*sqrt(3)/6-(x2-x1)/6,n-1);
  drawbranch((x1+2*x2)/3,(y1+2*y2)/3,x2,y2,n-1);
  }
  int main()
  { int driver=DETECT,mode;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(DARKGRAY);setcolor(GREEN);setlinestyle(0,0,3);
  drawbranch(320,0,320,480,8);
  getch();
  closegraph();
  return 0;
  }
  (六) Mandelbrot集
  int main()
  { int driver=DETECT,mode=0;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(BLACK);
  int x,y,n;
  double a,b,a1,b1;
  for(x=0;x<640;x++)
  { for(y=0;y<480;y++)
  { n=0;a=b=0;
  while(n<100&&fabs(a*a+b*b)<50)
  { a1=a*a-b*b+(x-3*640/4.0)/(640/4.0);
  b1=2*a*b+(y-240)/240.0*1.5;
  a=a1;
  b=b1;
  n++;
  }
  if(n<100) { putpixel(x,480-y,n%16);}
  }
  }
  getch();
  getch();
  closegraph();
  return 0;
  }
  (七) Julia集
  int main()
  { int driver=DETECT,mode=0;
  initgraph(&driver,&mode,"..\\bgi");
  setbkcolor(BLACK);
  int x,y,n;
  double a,b,a1,b1,c,d;
  c=0.364;
  d=0.10;
  for(x=0;x<640;x++)
  { for(y=0;y<480;y++)
  { n=0;
  a=(x-320)/320.0*2;
  b=(y-240)/240.0*2;
  while(n<100&&fabs(a*a+b*b)<100)
  { a1=a*a-b*b+c;
  b1=2*a*b+d;
  a=a1;
  b=b1;
  n++;
  }
  if(n<100) { putpixel(x,480-y,n%16);}
  }
  }
  getch();
  getch();
  closegraph();
  return 0;
  }
我要为黑水兄和开心社区拷贝10万文章!
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个