# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as pl
import time# 蕨类植物叶子的迭代函数和其概率值
eq1 = np.array([[0,0,0],[0,0.16,0]])
p1 = 0.01eq2 = np.array([[0.2,-0.26,0],[0.23,0.22,1.6]])
p2 = 0.07eq3 = np.array([[-0.15, 0.28, 0],[0.26,0.24,0.44]])
p3 = 0.07eq4 = np.array([[0.85, 0.04, 0],[-0.04, 0.85, 1.6]])
p4 = 0.85def ifs(p, eq, init, n):"""进行函数迭代p: 每个函数的选择概率列表eq: 迭代函数列表init: 迭代初始点n: 迭代次数返回值: 每次迭代所得的X坐标数组, Y坐标数组, 计算所用的函数下标"""# 迭代向量的初始化pos = np.ones(3, dtype=np.float)pos[:2] = init# 通过函数概率,计算函数的选择序列p = np.add.accumulate(p)rands = np.random.rand(n)select = np.ones(n, dtype=np.int)*(n-1)for i, x in enumerate(p[::-1]):select[rands<x] = len(p)-i-1# 结果的初始化result = np.zeros((n,2), dtype=np.float)c = np.zeros(n, dtype=np.float)for i in range(n):eqidx = select[i] # 所选的函数下标tmp = np.dot(eq[eqidx], pos) # 进行迭代pos[:2] = tmp # 更新迭代向量# 保存结果result[i] = tmpc[i] = eqidxreturn result[:,0], result[:, 1], cstart = time.clock()
x, y, c = ifs([p1,p2,p3,p4],[eq1,eq2,eq3,eq4], [0,0], 100000)
print(time.clock() - start)
pl.figure(figsize=(6,6))
pl.subplot(121)
pl.scatter(x, y, s=1, c="g", marker="s", linewidths=0)pl.axis("equal")
pl.axis("off")
pl.subplot(122)
pl.scatter(x, y, s=1,c = c, marker="s", linewidths=0)
pl.axis("equal")
pl.axis("off")
pl.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=0,hspace=0)
pl.gcf().patch.set_facecolor("white")
pl.show()

程序运行结果:

Python:迭代函数系统(IFS)相关推荐

  1. 树木分形迭代图 matlab,基于迭代函数系统的分形植物模拟

    1. 引言 自然景物模拟是计算机图形学中一个重要研究课题,其中植物形态仿真模拟引起了广泛的关注.许多学者对其进行了大量的研究,目前常见的方法有L-系统 [1] [2] .迭代函数系统 [3] [4] ...

  2. 迭代函数系统(IFS)

    迭代函数系统(IFS) IFS库源码已经上传GitHub fractal,需查看源码的请挪步. 自定义概率迭代函数 代码: # Sier三角变换 from fractal import IFS fro ...

  3. 迭代函数系统matlab实现,线性随机IFS迭代Matlab示例程序.doc

    线性随机IFS迭代Matlab示例程序 线性随机IFS迭代 Matlab示例程序 Tree Leaf Mountain %% 线性随机IFS迭代[iterated function systems迭代 ...

  4. python迭代函数例题_python map 函数使用,遍历访问可迭代对象

    1. 功能介绍 map 调用函数遍历可迭代对象,返回一个迭代器对象 map(function, iterable, ...) 可以传递多个迭代器对象给 map 的迭代函数,这个函数接收参数的个数必须和 ...

  5. 【吐血整理】Python 常用的几种高阶函数和简单的迭代函数

    目录 一.all() 函数--判断可迭代对象中的元素是否全为True 二.any() 函数--判断可迭代对象是否全为假值 三.filter() 函数--通过指定条件过滤序列 四.map() 函数--- ...

  6. python编写函数showmsg(n、name)_python学习-函数

    一.文件处理 python的内置函数open提供了对文件的处理功能.open函数会调用os的系统接口,得到一个类文件对象f,此f对象将作为对文件操作的标识符.从行为动作划分,文件处理分为读取和写入.从 ...

  7. python基础函数大全pdf,python函数大全及使用

    Python的函数都有哪些? Python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数, ...

  8. python 魔法函数

    Python魔法函数 前言 魔法函数 定义 常用的魔法方法 类构造与初始化 类的表示 控制属性访问 比较.运算等操作 容器类操作 可调用对象 序列化 总结 前言 本篇博客主要介绍Python的魔法函数 ...

  9. python向函数传递列表,【Python】向函数传递列表

    向函数传递列表 在实际使用中你会发现,向函数传递列表是比较实用的,这种列表可能包含名字.数字.可能更复杂的对象(字典) 假设向一个函数传递一堆水果,我们说出我们喜欢所有的水果 def Obj(frui ...

最新文章

  1. 2021春季学期-创新设计与实践-课程结构设计
  2. python网络爬虫教程-终于明了python网络爬虫从入门到实践
  3. 实现程序间的数据传递
  4. html社交模板,Olympus – 社交网HTML静态模板
  5. [Offer收割]编程练习赛15 A.偶像的条件[贪心]
  6. Feign-自定义配置
  7. Oracle Quality --- Setup Collection Element and Collection Plan
  8. 修改时间日期 linux,查看和修改 Linux 的时间和日期
  9. 【EOS】2.2 发行Token,转移Token
  10. requests 获取百度推广信息
  11. web 在线word编辑器
  12. JS写一个简单的五星评价
  13. VisualSFM的配置与使用 MeshLab的网格生成与纹理添加
  14. Apache Pulsar和Apache BookKeeper
  15. 微信公众号订阅号留言点赞采集抓取爬虫
  16. 开发移动应用的7个致命错误
  17. 两性关系的50个经典客观规律
  18. ElementUI的el-tree实现懒加载查询和直接全部查询出来
  19. 细数二三四五“爆雷”简史:布局金融7年一场空,陈于冰贯穿始终
  20. mac-使用屏幕共享功能

热门文章

  1. Javascr面向对象
  2. 隐藏Detected problems with API compatibility警告弹窗
  3. XenDesktop vDisk更新Error Field Format错误
  4. 计算机怎么传输信息,局域网信息怎么传输
  5. 怎么用Python计算地球上任意两个用经纬度表示的点的弧面距离?
  6. java 周总结_Java周总结1
  7. [搜狐笔试] 搜狐2014产品经理笔试题
  8. T100的引导式作业转为客制模组注意事项
  9. 汇编语言程序的建立、运行与调试
  10. 对称密码技术的密钥分配