Барнсли Ферн в Python

| | | | | | | | | | | | |

Преобразование, использованное Барнсли, имело следующую формулу:

a б c d e f p ЧАСТЬ < /tr> 0 0 0 0,16 0 < /td> 0 0,01 Стержень 0,85 0,04 -0,040,8501,60 0,85 Малый буклет 0,20 -0,26 0,23 0,22 0 1,60 0,07 Большая листовка (слева) -0,1 5 0,280,260,2400,44 0,07 < /td> Большой буклет (справа)

и "p" — это вероятность.

Итак, есть четыре уравнения:

Используя приведенные выше уравнения, создается папоротник. Теперь давайте посмотрим на реализацию Python3 для того же самого.


# импортировать необходимые модули

import matplotlib.pyplot как plt

from random import randint


# инициализация списка

x = []

y = []


# установить первый элемент в 0

x.append ( 0 )

y.append ( 0 )


текущий = 0


для i in range ( 1 , 50000 ):


# генерирует случайное целое число от 1 до 100

z = randint ( 1 , 100 )

# координаты x и y уравнений

# соответственно добавляются в списки.


# для вероятности 0,01

if z = = 1 :

x.append ( 0 )

y.append ( 0,16 * (y [current]))

< br>

# для вероятности 0,85

if z > = 2 и г " = 86 :

x. append ( 0.85 * (x [current]) + 0.04 * (y [ текущий]))

y.append ( - 0.04 * (x [current]) + 0,85 * (y [current]) + 1.6 )


# для вероятности 0,07

if z > = 87 и г " = 93 :

x. append ( 0.2 * (x [current]) - 0.26 * (y [ текущий]))

y.append ( 0.23 * (x [current]) + 0,22 * (y [current]) + 1.6 )


# для вероятности 0,07

if z > = 94 и г " = 100 :

x.append ( - 0,15 * (x [current]) + 0,28 * (y [current]))

y.append ( 0.26 * (x [current] ) + 0.24 * (y [current ]) + 0,44 )

< br>

текущий = текущий + 1


plt.scatter (x, y , s = 0.2 , edgecolor = `green` )


plt.show ()

Вывод:

Примечание. Все выходные данные зависят от коэффициентов уравнений. Одним из экспериментов может быть изменение коэффициентов и получение каждый раз нового шаблона.