Python:迭代函数系统(IFS)
# -*- 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)相关推荐
- 树木分形迭代图 matlab,基于迭代函数系统的分形植物模拟
1. 引言 自然景物模拟是计算机图形学中一个重要研究课题,其中植物形态仿真模拟引起了广泛的关注.许多学者对其进行了大量的研究,目前常见的方法有L-系统 [1] [2] .迭代函数系统 [3] [4] ...
- 迭代函数系统(IFS)
迭代函数系统(IFS) IFS库源码已经上传GitHub fractal,需查看源码的请挪步. 自定义概率迭代函数 代码: # Sier三角变换 from fractal import IFS fro ...
- 迭代函数系统matlab实现,线性随机IFS迭代Matlab示例程序.doc
线性随机IFS迭代Matlab示例程序 线性随机IFS迭代 Matlab示例程序 Tree Leaf Mountain %% 线性随机IFS迭代[iterated function systems迭代 ...
- python迭代函数例题_python map 函数使用,遍历访问可迭代对象
1. 功能介绍 map 调用函数遍历可迭代对象,返回一个迭代器对象 map(function, iterable, ...) 可以传递多个迭代器对象给 map 的迭代函数,这个函数接收参数的个数必须和 ...
- 【吐血整理】Python 常用的几种高阶函数和简单的迭代函数
目录 一.all() 函数--判断可迭代对象中的元素是否全为True 二.any() 函数--判断可迭代对象是否全为假值 三.filter() 函数--通过指定条件过滤序列 四.map() 函数--- ...
- python编写函数showmsg(n、name)_python学习-函数
一.文件处理 python的内置函数open提供了对文件的处理功能.open函数会调用os的系统接口,得到一个类文件对象f,此f对象将作为对文件操作的标识符.从行为动作划分,文件处理分为读取和写入.从 ...
- python基础函数大全pdf,python函数大全及使用
Python的函数都有哪些? Python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数, ...
- python 魔法函数
Python魔法函数 前言 魔法函数 定义 常用的魔法方法 类构造与初始化 类的表示 控制属性访问 比较.运算等操作 容器类操作 可调用对象 序列化 总结 前言 本篇博客主要介绍Python的魔法函数 ...
- python向函数传递列表,【Python】向函数传递列表
向函数传递列表 在实际使用中你会发现,向函数传递列表是比较实用的,这种列表可能包含名字.数字.可能更复杂的对象(字典) 假设向一个函数传递一堆水果,我们说出我们喜欢所有的水果 def Obj(frui ...
最新文章
- 2021春季学期-创新设计与实践-课程结构设计
- python网络爬虫教程-终于明了python网络爬虫从入门到实践
- 实现程序间的数据传递
- html社交模板,Olympus – 社交网HTML静态模板
- [Offer收割]编程练习赛15 A.偶像的条件[贪心]
- Feign-自定义配置
- Oracle Quality --- Setup Collection Element and Collection Plan
- 修改时间日期 linux,查看和修改 Linux 的时间和日期
- 【EOS】2.2 发行Token,转移Token
- requests 获取百度推广信息
- web 在线word编辑器
- JS写一个简单的五星评价
- VisualSFM的配置与使用 MeshLab的网格生成与纹理添加
- Apache Pulsar和Apache BookKeeper
- 微信公众号订阅号留言点赞采集抓取爬虫
- 开发移动应用的7个致命错误
- 两性关系的50个经典客观规律
- ElementUI的el-tree实现懒加载查询和直接全部查询出来
- 细数二三四五“爆雷”简史:布局金融7年一场空,陈于冰贯穿始终
- mac-使用屏幕共享功能