sierpinski地毯(II)
今天又是因为可以用py而高兴的一天。
继续咱的sierpinski地毯计划。
二,随机算法
在二十年前,磁盘容量以MB还是KB计的时候,分形解决计图的问题确实有很大的优势。存至多十来个数就好了。我要在二十年前,敢用这种几百×几百的矩阵直接存数据,那肯定被计算机打死,呃,被老板打死。。。电脑怎么烧掉的都不知道。。。
这种意义上说,随机算法才是传统算法。。。之前那个数学硬解的玩意,我是不信十五年前的计算机能支持的。。。(说的好像那时候我有电脑用似的。。。呃好像还真有。。。)
说到分形,不得不提迭代函数系。
康托三分集和谢尔宾斯基垫片,谢尔宾斯基地毯都是由若干个压缩映射确定的。

[1]沙震,阮火军:分形与拟合[M]. 杭州:浙江大学出版社,2005.3
啥是完备度量空间(X;d)上的双曲迭代函数系呢?每个映射都是压缩映射。
我们今天用的是带概率的迭代函数系。不是有几个压缩映射么?给一个加权,通过抛硬币选择走那条路。视为一次迭代。
如果在随机迭代出来的点序列中,去掉前若干项(万一我从中间开始的,岂不是凉凉月色为你。。。),那对于充分长的一段点列,它与K的hausdorff距离小于e的概率大于1-e。
换句话说,如果我迭代了足够多次,那么我应该能跑出来,至于跑不出来的情形,我觉得你应该换个随机数生成法。。。不对,不如买彩票。。。买好彩票就能换台电脑了,反复迭代就可以买一台超算。
唔,咱应该不用解释啥是完备,啥是度量空间,啥是压缩映射吧?
至于想问hausdorff距离的同学,来蹭课吧。
接着我们进入算法环节。
这个sierpinski地毯呢,有八个压缩映射确定。
正常的流程是写九个函数。
def f1():
def f2():
def frandom():
然而机智的我早就看穿一切。
为啥要写8+1个?我写9+1个不就好了?中间第5个是空函数嘛。
我先写了一个映射,将random的范围(0,1)映射到(0,4/9)U(5/9,1)。
这样我×3取整就能得到是第几排了,去掉整数部分,再×3取整就知道是第几列了。
我们刚刚是不是取到了两个0,1,2的数?
嘿嘿嘿!(发出了政委的笑声)
def next(x,y):
t=random.random()
if t<=0.5:
t=t/4.5*4
elif t>0.5:
t=(t-0.5)/4.5*4+5/9
i=int(t*3)
j=int((t-int(t*3)/3)*9)
xx=x/3+i/3
yy=y/3+j/3
return xx,yy
主函数是这样的:
import cv2
import numpy as np
import ct
import random
times=7
k=3**times
img=ct.cut(times)
x=random.random()
y=random.random()
a=np.zeros((k,k),dtype=int)
trytime=20000000
for i in range(trytime):
[x,y]=ct.next(x,y)
if i>300:
a[int(k*x)][int(k*y)]=1
img=ct.print(a,times,img)
cv2.imshow("out",img)
name=str("bigrandom"+str(int(trytime))+".jpg")
cv2.imwrite(name,img)
我决定再强调一遍前xxx项要扔掉!




我们要写什么样的算法?要写禁得起比较的算法,所以这矩阵多大呢?
3的5次方*3的5次方。
上面分别是迭代80w,10w,2w,5k,1k次后的结果。
下面的分别是迭代2000w,300w,65w,10w次的结果。




为啥是这些数,我手里的图片查看器会反走样,要把图片放大才会看到点。。。在点很稀疏的时候,这里,我不知道,如果你看到一坨黑的,那有可能,就是被反走样了。也可能就是因为点少的可怜。。。
至于为啥今天和昨天的颜色相反。这是因为昨天我是用np.zeros然后用1标记白的(去掉的);今天我还这么来,用np.zeros初始化,用1标记黑的。你想一致,很简单,你用np.ones初始化,然后用0标记黑的。
“可以,但没必要。”
下次不出意外的话是sierpinski垫片。
能用py就很开心。我写两个用了十分钟。
如果是c++我可能环境都没配置好。不对,我有可能就把这事晾一边了。
昨天晚上在准备羽毛球裁判的讲座。总觉得有啥忘了的。。。(划掉)
我自闭了。这图片咋调大小。。。woc,我的公式也被吃了。
sierpinski地毯(II)的更多相关文章
- sierpinski地毯
(分形作业) 取一矩形,九等分而去其中. 每一份九等分去其中:循环往复. 方法一(传统方法) 将每个矩形映射到三个矩形中去即可. def big(a,times): k=3**tim ...
- 分形之谢尔宾斯基(Sierpinski)地毯
前面讲了谢尔宾斯基三角形,和这一节的将把三角形变为正方形,即谢尔宾斯基地毯,它是由瓦茨瓦夫·谢尔宾斯基于1916年提出的一种分形,是自相似集的一种. 谢尔宾斯基地毯的构造与谢尔宾斯基三角形相似,区别仅 ...
- 混沌分形之谢尔宾斯基(Sierpinski)
本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形. (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点 ...
- sierpinski垫片(3D)[误]
今天是因为可以用py而高兴的一天. 昨天老板淡淡地回了一句,sierpinski地毯画得挺好的. 我思考了五秒钟之后,想起来作业其实是sierpinski垫片. 三角垫片比地毯难做多了. 因为 ...
- JavaScript图形实例:SierPinski三角形
1.SierPinski三角形 Sierpinski三角形是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.其生成过程为: (1)取一个三角形(多数使用等边三角形): (2) ...
- 18个分形图形的GIF动画演示
这里提供18个几何线段分形的GIF动画图像.图形颜色是白色,背景色为黑色,使用最基本的黑与白以表现分形图形. (1)科赫(Koch)雪花 (2)列维(levy)曲线 (3)龙形曲线(Drago ...
- JavaScript动画实例:递归分形图动态展示
在“JavaScript图形实例:SierPinski三角形” 和“JavaScript图形实例:Levy曲线及其变形”等文章中我们介绍了通过递归生成分形图形的方法.我们可以将绘制的分形图形每隔一定的 ...
- 洛谷P1003铺地毯(提高组)
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n. 现在将这些地毯按照编号从小到大的顺序平行于 ...
- Leetcode 笔记 113 - Path Sum II
题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...
随机推荐
- git查看/修改个人信息-用户名邮箱
我们在使用git作为仓库管理工具时,要设置自己Git的用户名和邮箱,要不然大家一块开发时不知道谁是谁,不知道谁提交的. 另外,当我们用自己的电脑开发时你可能设置的是一个你喜欢的昵称,所以那就得改一下. ...
- .net core项目启动时报_未处理Socket异常(以一种访问权限不允许的方式做了一个访问套接字的尝试。)
解决方案:一般的原因就是程序的端口被占用了,关掉占用端口的程序即可正常使用. 查看启动地址和配置的webserver服务器的端口号是否被占用,可能占用的有:IIS启用项目,解决方案中其他启动项目配置 ...
- Python中最常见的10个问题(list)
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 大熊 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...
- 「SAP技术」SAP 如何看序列号被包在哪些HU里?
「SAP技术」SAP 如何看序列号被包在哪些HU里? 事务代码SE16 ,表名OBJK, 输入物料号,序列号,HeadTable 输入值SER06, 查询结果如下, 根据objlist, 去表ser0 ...
- JavaScriptCore
在移动的混合开发中经常用到OC与JS的交互,就涉及iOS中的JavaScriptCore类,下面终结如下 JavaScriptCore中的类 在项目中引入JavaScriptCore后,链到头文件中, ...
- [b0024] python 归纳 (十)_线程 _Thread模块
#!/usr/bin/pythonn # -*- coding: UTF-8 -*- """ 学习线程 thread 总结: 1. 主线程退出,所有子线程都退出 2. ...
- nginx location 配置详解
指令作用 匹配指定的请求uri(请求uri不包含查询字符串,如http://localhost:8080/test?id=10,请求uri是/test) 语法形式 location [ = | ~ | ...
- itest(爱测试) 3.3.5 发布,开源敏捷测试管理 & BUG 跟踪管理软件
v3.3.5 下载地址 :itest下载 itest 简介:查看简介 V3.3.5 有 6个功能增强,2个BUG修复 ,详情如下所述. 用户反馈并强烈要求增强的功能实现: 1: 测试用例管理可线 ...
- java面试遇到的坑[第三期]
亲爱的同学们,本人因为连续几周遭遇一定的工作压力几乎被压榨的只剩一个空壳,还好经常锻炼有一副好身体(皮囊),算是挺过来了.为了大家年前能早早入坑马不停蹄回到阵地给大家带来第二期的面试坑题,有些题是大家 ...
- jmeter判断请求响应时间,请求下加‘断言持续时间’,添加监听器断言结果;统计超时