📜  Barnsley蕨类植物(Python)

📅  最后修改于: 2020-05-10 14:08:51             🧑  作者: Mango

Barnsley蕨类植物是数学家Michael Barnsley创建的分形形状。 这种分形的几何特征类似于天然蕨类植物,因此得名。 Barnsley蕨类植物是通过对由Barnsley引入的称为迭代函数系统(IFS)的四个数学方程式进行多次迭代而创建的。
Barnsley使用的转换具有以下公式:

其中,字母具有以下值:

a b C d Ë F p 部分
0 0 0 0.16 0 0 0.01
0.85 0.04 -0.04 0.85 0 1.60 0.85 小叶
0.20 -0.26 0.23 0.22 0 1.60 0.07 大叶(左)
-0.15 0.28 0.26 0.24 0 0.44 0.07 大叶(右)

“ p”是概率。
因此,这四个方程为:

借助以上方程式,创建了蕨类植物。 现在让我们看一下相同的Python3实现。

# 导入必要的模块
  import matplotlib.pyplot as plt
  from random import randint
 # 初始化列表
  x = []
  y = []
 # 将第一个元素设置为0
  x.append( 0 )
  y.append( 0 )
  current = 0
  for range ( 50000 ): i ):
     # 生成1到100之间的随机整数
      z = randint( 100 )
     # 方程的x和y坐标分别附加在列表中。概率为0.01
      if z = = 1 :
          x.append( 0 )
          y.append( 0.16 * (y[current]))
     # 概率为0.85
      if z> = 2 and z< = 86 :
          x.append( 0.85 * (x[current]) + 0.04 * (y[current]))
          y.append( 0.04 * (x[current]) + 0.85 * (y[current]) + 1.6 )
     # 概率为 0.07
      if z> = 87 and z< = 93 :
          x.append( 0.2 * (x[current]) - 0.26 * (y[current]))
          y.append( 0.23 * (x[current]) + 0.22 * (y[current]) + 1.6 )
     # 概率为 0.07
      if z> = 94 and z< = 100 :
          x.append( 0.15 * (x[current]) + 0.28 * (y[current]))
          y.append( 0.26 * (x[current]) + 0.24 * (y[current]) + 0.44 )
      current = current + 1
  plt.scatter(x, y, s = 0.2 , edgecolor = 'green' )
 plt.show()

输出:

注意:整个输出取决于方程式的系数。 一个实验可能是每次更改系数并获得新的模式。