Computer >> Máy Tính >  >> Lập trình >> Python

Barnsley Fern bằng Python

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Cây dương xỉ Barnsley , được tạo bởi Michael Barnsley . Các tính năng của Barnsley Fern tương tự như dương xỉ hình dạng. Nó được tạo bằng cách lặp lại bốn phương trình toán học được gọi là Hệ thống hàm lặp lại (IFS) . Phép biến đổi có công thức sau.

f (x, y) =$$ \ begin {bmatrix} a &b \\ c &d \ end {bmatrix} \ begin {bmatrix} x \\ y \ end {bmatrix} + \ begin {bmatrix} e \\ f \ end {bmatrix} $$

Nguồn - Wikipedia

Giá trị của các biến là -

Barnsley Fern bằng Python

Nguồn - Wikipedia

Bốn phương trình mà Barnsley Fern đề xuất là -

Barnsley Fern bằng Python

Nguồn - Wikipedia

Bây giờ, chúng ta sẽ thấy mã để tạo hình cây dương xỉ trong Python .

Ví dụ

# importing matplotlib module for the plot
import matplotlib.pyplot as plot
# importing random module to generate random integers for the plot
import random
# initialising the lists
x = [0]
y = [0]
# initialising a variable to zero to track position
current = 0
for i in range(1, 1000):
   # generating a random integer between 1 and 100
   z = random.randint(1, 100)
   # checking the z range and appending corresponding values to x and y
   # appending values to the x and y
   if z == 1:
      x.append(0)
      y.append(0.16 * y[current])
   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)
   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)
   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)
   # incrementing the current value
   current += 1
# plotting the graph using x and y
plot.scatter(x, y, s = 0.2, edgecolor = 'green')
plot.show()

Đầu ra

Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

Barnsley Fern bằng Python

Kết luận

Nếu bạn có bất kỳ nghi ngờ nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.