II.7. Tập Mandelbrot

Một phần của tài liệu TÌM HIỂU PHƯƠNG PHÁP SINH ẢNH FRACTAL BẰNG HỆ HÀM LẶP (Trang 82 - 91)

hy gx q fz ey dx n cz by ax r q n z y x m h g f e d c b a z y x w

Sau đõy là cỏc hỡnh vẽ minh hoạ giải thuật lặp ngẫu nhiờn tƣơng ứng với bảng mó IFS đƣợc trỡnh bày ở phần trƣớc:

Lỏ dƣơng xỉ 2 chiều Lỏ dƣơng xỉ 3 chiều

II.7 TẬP MANDELBROT

Đặt vấn đề:

Trong nhiều thập niờn của thế kỷ XX, cỏc nhà toỏn học đó để tõm nghiờn cứu đến một loại biểu thức phức tạp xỏc định bởi:

zn+1 = zn2 + c, trong đú zi C, i N & c C (1)

Để đơn giản hoỏ vấn đề, trƣớc hết ta xột trƣờng hợp c = 0 và z0 R. Khi đú cú 3 trƣờng hợp sau:

+ z0 = 1 : khi đú zn = 1, n 1. + z0 < 1 : khi đú zn 0 khi n . + z0 > 1 : khi đú zn khi n .

Ở đõy tốc độ tiến đến 0 hay tiến đến của dóy (zn) đƣợc quyết định bởi giỏ trị ban đầu z0 của dóy. Trong trƣờng hợp z0 < 1, giỏ trị z0 càng nhỏ thỡ dóy (zn) tiến đến 0 càng nhanh. Ngƣợc lại khi z0 > 1, giỏ trị z0 càng lớn thỡ dóy (zn) càng tiến nhanh ra .

Trong trƣờng hợp tổng quỏt, dóy (zn) đƣợc xỏc định bởi cụng thức (1) ở trờn rất khú khảo sỏt về mặt lý thuyết. Chỉ đến năm 1979, Mandelbrot mới thành cụng trong việc quan sỏt dóy này với sự hỗ trợ của mỏy tớnh điện tử. Kết quả đƣợc Mandelbrot quan sỏt thấy là một trong những cấu trỳc fractal phức tạp và đẹp. Nú đó đƣợc đặt tờn Mandelbrot để ghi nhớ cụng lao của tỏc giả, ngƣời đó khai sinh ra lý thuyết hỡnh học phõn hỡnh.

CễNG THỨC TOÁN HỌC:

xn = Re(zn), p = Re(c), yn = Im(zn), q = Im(c), n 0 thỡ hệ thức truy hồi xỏc định ở (1) cú thể đƣợc viết lại theo dạng đơn giản hơn nhƣ sau:

xn+1 = xn2 – yn2 + p

yn+1 = 2xn .yn + q (2)

Ngoài ra khi khảo sỏt dóy (zn) ta tỡm đƣợc tớnh chất sau: Tớnh chất về sự hội tụ của dóy (zn):

- Nếu tồn tại k N sao cho | zk | > 2 thỡ dóy (zn) hội tụ đến vụ cực. - Nếu tồn tại k N sao cho | zt | < 2, t : k t 1, với 1 là hằng số

hữu hạn thỡ cũng cú | zn | < 2, n k. (Ký hiệu | z | chỉ modul của số phức z).

THUẬT TOÁN THỂ HIỆN TẬP MANDELBROT:

1. Xõy dựng thuật toỏn:

Tập Mandelbrot là hỡnh ảnh của dóy (zn), với giỏ trị khởi đầu z0 = 0. Khi đú màn hỡnh mỏy tớnh sẽ chuyển đổi thành một mặt phẳng phức thu hẹp với:

+ Trục x biểu diễn phần thực của số phức c (giỏ trị p đƣợc nờu ở phần 2/).

+ Trục y biểu diễn phần ảo của số phức c (giỏ trị q đƣợc nờu ở phần 2/). Từ tớnh chất về sự hội tụ của dóy (zn) ở phần 2 chỳng ta cú thể chia tập cỏc giỏ trị của c trờn mặt phẳng phức thành 2 lớp:

Lớp 1:

Gồm cỏc giỏ trị c làm cho dóy (zn) khụng tiến ra vụ cực mà đƣợc giới hạn trong một vũng trũn bỏn kớnh 2. Một cỏch cụ thể, đú là cỏc giỏ trị c sao cho khi xuất phỏt từ chỳng, ta luụn cú | zi | < 2, i = 1, 2, …, l, trong đú l do ta chọn trƣớc. Để ý là giỏ trị l càng lớn thỡ tớnh hội tụ của dóy (zn) tƣơng ứng với một giỏ trị cụ thể càng đƣợc kiểm tra chặt chẽ và chớnh xỏc. Tuy nhiờn khi đú thời gian tớnh toỏn để xỏc định tớnh hội tụ sẽ tăng lờn gấp nhiều lần.

Lớp 2:

Gồm cỏc giỏ trị phức c làm cho dóy (zn) hội tụ về vụ cực. Cụ thể đú là cỏc giỏ trị c khởi đầu dẫn đến | zn | > 2 ở một ngƣỡng k hữu hạn nào đú.

Vấn đề đặt ra ở đõy là cần quan sỏt tớnh hỗn độn của dóy (zn). Do đú chỳng ta tập trung cỏc quan sỏt vào cỏc giỏ trị c thuộc lớp 2. Muốn nhƣ vậy cỏc

giỏ trị này phải đƣợc thực hiện một cỏch nổi bật trờn màn hỡnh mỏy tớnh bởi cỏc màu khỏc nhau. Chỳng ta sẽ tụ màu mặt phẳng phức màn hỡnh theo qui tắc sau:

+ Cỏc giỏ trị c thuộc lớp 1 đƣợc tụ màu đen vỡ khụng cú tớnh chất gỡ đỏng chỳ ý.

+ Cỏc giỏ trị c thuộc lớp 2 đƣợc tụ bằng cỏc màu khỏc nhau ứng với cỏc ngƣỡng tiến ra vụ hạn k khỏc nhau. Do số lƣợng màu cú thể hiển thị trờn một màn hỡnh đồ hoạ là hữu hạn, việc tụ màu cỏc giỏ trị này sẽ đƣợc thực hiện theo kỹ thuật tụ màu xoay vũng đƣợc chỉ ra ở cỏc phần tiếp sau đõy. (adsbygoogle = window.adsbygoogle || []).push({});

2. Thuật toỏn tổng quỏt để thể hiện tập Mandelbrot:

Thuật toỏn gồm cỏc bƣớc sau: - Bƣớc 1:

Xuất phỏt với một giỏ trị khởi đầu c = (p,q). - Bƣớc 2:

Kiểm tra c thuộc lớp 1 hay lớp 2. - Bƣớc 3:

Nếu c thuộc lớp 1 thỡ tụ điểm ảnh tƣơng ứng với c trờn màn hỡnh bằng màu đen, ngƣợc lại tụ điểm ảnh này bởi màu tƣơng ứng xỏc định từ kỹ thuật tụ xoay vũng.

- Bƣớc 4:

Chọn một giỏ trị c mới và trở lại bƣớc 1 cho đến khi quột hết toàn bộ giỏ trị c cần khảo sỏt (đụi khi chỳng ta khụng cần khảo sỏt toàn bộ mà chỉ khảo sỏt một miền con đƣợc yờu cầu của mặt phẳng phức). Khi đú thuật toỏn kết thỳc.

Bõy giờ ta ký hiệu:

+ Max_Iterations là số lần lặp tối đa cần cú để kiểm tra giỏ trị c thuộc lớp 1 hay lớp 2 (chớnh là giỏ trị 1 đƣợc đề cập trong định nghĩa của lớp 1).

+ Count là số lần lặp đó thực hiện (giỏ trị này tƣơng ứng với một ngƣỡng tiến ra vụ hạn k đƣợc nờu ra trong định nghĩa lớp 2).

+ Miền con của mặt phẳng phức cần khảo sỏt là một cửa sổ hỡnh chữ nhật đƣợc mụ tả bởi toạ độ gúc trỏi bờn dƣới (Xmin , Ymin) và toạ độ gúc phải trờn (Xmax , Ymax) (theo hệ trục toạ độ thụng thƣờng).

Khi đú mối liờn hệ giữa hệ trục toạ độ phức thực tế với hệ toạ độ nguyờn trờn màn hỡnh mỏy tớnh đƣợc x thể hiện bởi hỡnh 11.1 dƣới đõy:

q

(Xmax, Ymax) (0,0) Col Thể hiện trờn

(Xmin, Ymin) màn hỡnh (Max_Col,Max_Row)

p Row Vựng khảo sỏt là 1 miền con của Hệ toạ độ nguyờn trờn mỏy

mặt phẳng phức biểu biễn giỏ trị c tớnh với chiều dƣơng ngƣợc chiều thực tế.

Hỡnh 11.1

Theo hỡnh này, điểm bắt đầu (0, 0) trờn màn hỡnh mỏy tớnh sẽ tƣơng ứng với giỏ trị c = (Xmin , Ymax), điểm kết thỳc (Max_Col, Max_Row), trong đú Max_Col x Max_Row thể hiện độ phõn giải của mode đồ hoạ hiện thời của màn hỡnh (vớ dụ với mode VGA 16 màu ta cú Max_Col = 604, Max_Row = 480), sẽ tƣơng ứng với điểm c = (Xmax , Ymax). Do đú nếu ký hiệu:

p là lƣợng gia tăng theo theo trục thực của giỏ trị p ứng với mỗi cột trờn màn hỡnh.

q là lƣợng gia tăng theo trục ảo của giỏ trị q ứng với mỗi hàng trờn màn hỡnh thỡ:

Khi đú một số phức c = (p, q) ứng với một điểm ảnh cú toạ độ màn hỡnh là (Col, Row) sẽ đƣợc xỏc định bởi:

p = Xmin + Col. p q = Ymax – Row. q

Cú thể kiểm tra là khi Col, Row biến thiờn theo chiều tăng đến cỏc giỏ trị tƣơng ứng Max_Col, Max_Row, chỳng ta cũng cú p biến thiờn từ Xmin đến Xmax và q biến thiờn từ Ymax xuống Ymin , đỳng nhƣ yờu cầu về quan hệ giữa hệ

Col Max X X p _ min max Row Max Y Y q _ min max

toạ độ phức sử dụng trong toỏn học với hệ toạ độ hiển thị của màn hỡnh đó đƣợc nờu trong Hỡnh 11.1.

Việc kiểm tra c thuộc lớp 1 hay 2 đƣợc viết dƣới dạng: if (Count > Max_Iterations) & (Modul (Zcount) < 2 ))

c thuộc lớp 1

if (Count < Max_Iterations) & (Modul (Zcount) > 2 )) c thuộc lớp 2 (adsbygoogle = window.adsbygoogle || []).push({});

Đồng thời màu tụ cho một điểm c = (p, q) thuộc lớp 2 đƣợc tớnh toỏn theo cụng thức:

Màu tụ (p, q) = Count(p, q) mod Max_Colors Với:

Màu tụ (p, q): số hiệu màu gỏn cho điểm ảnh tƣơng ứng với giỏ trị (p, q) Count(p, q): ngƣỡng tiến ra vụ hạn của dóy (zn) tƣơng ứng với (p, q). Max_Colors: số lƣợng màu tối đa cú trong palette màu đang đƣợc sử dụng.

Trong thuật toỏn này, để thể hiện một cỏch chi tiết, chỳng ta quột cỏc giỏ trị c trong cửa sổ giới hạn bởi (Xmin , Ymin) và (Xmax , Ymax) theo thứ tự từ trờn xuống dƣới và từ trỏi sang phải, tức là ứng với mỗi cột Col, ta kiểm tra và tụ màu tất cả cỏc điểm ảnh trờn cột này theo cỏc giỏ trị phức tƣơng ứng, sau đú mới chuyển sang cột mới kế tiếp đú.

Nhƣ vậy chỳng ta cú đƣợc thuật toỏn chi tiết sau: for(Col = 0; Col < Max_Col; ++Col)

{

for(Row = 0; Row <= Max_Row; ++Row) {

X = Y = xn = yn = 0;

(vỡ ứng với mỗi giỏ trị c = (p, q) tƣơng ứng với điểm ảnh (Col, Row), dóy (zn) đƣợc khảo sỏt với z0 = 0)

Count = 1;

While (Count < Max_Iterations) & ( X + Y < 2) { X = xn2 ; Y = yn2 ; yn = 2xnyn + q; xn = X – Y + p; Count = Count + 1; }

Tụ màu điểm ảnh (Col, Row) bởi màu cú số hiệu Count mod

Max_Colors ; q = q + q ;

p = p + p ;

}

Chỳng ta cú nhận xột đầu tiờn là trong thuật toỏn trờn, giỏ trị q đƣợc tớnh tất cả Max_Col x Max_Row lần, nhƣ vậy với màn hỡnh cú độ phõn giải 640 x 480, q đƣợc tớnh 307200 lần, nhƣng thực chất chỉ cú 480 giỏ trị q ứng với 480 hàng đƣợc sử dụng. Do đú để tăng tốc độ làm việc của thuật toỏn, cỏc giỏ trị q cú thể đƣợc tớnh trƣớc khi vào vũng lặp và đƣợc lƣu lại trong 1 mảng 1 chiều Q cú Max_Row phần tử nhƣ sau:

Q[0] = Ymax ;

for(i = 0; i < Max_Row; ++i) Q[i] = Q[i - 1] - q;

Ở đõy q đƣợc tớnh trƣớc theo cụng thức đó nờu.

Một nhận xột thứ hai là việc tớnh | zn | = X + Y = xn2 + yn2 để so sỏnh với 2 chiếm rất nhiều thời gian.

Do đú chỳng ta thay việc so sỏnh xn2 +yn2 < 2 bởi xn2 + yn2 < 4 vỡ hai bất đẳng thức này tƣơng đƣơng. Việc làm này sẽ làm giảm đỏng kể thời gian thực hiện thuật toỏn.

Thuật toỏn đƣợc viết lại dƣới dạng: for(Col= 0; Col<Max_Col; ++Col) {

for(Row= 0; Row<= Max_Row; ++Row) {

X = Y = xn = yn = 0; Count =1;

While(Count<Max_Iterations) & (X+Y < 4) { X = xn2 ; Y = yn2 ; yn = 2xnyn + Q[Row]; xn = X – Y + p ; Count = Count +1; }

Tụ màu điểm ảnh (Col, Row) bởi màu cú số hiệu Count mod Max_Colors ; }

p = p + Δp; }

Hỡnh 11.2 thể hiện tập Mandelbrot cổ điển với cỏc giỏ trị khảo sỏt nằm trong vựng giới hạn bởi Xmin = -2.0, Ymin = -1.2, Xmax = 1.2, Ymax = 1.2 và Max_Iterations = 512, Max_Colors = 1.6.

Hỡnh 11.2 (adsbygoogle = window.adsbygoogle || []).push({});

II.8 TẬP JULIA:

Đặt vấn đề:

Đối với biểu thức zn+1 = zn2 + c, ngoài hƣớng đó khảo sỏt nhƣ đó trỡnh bày trong phần tập Mandelbrot, cũn cú hƣớng khảo sỏt khỏc bằng cỏch cho c cố định và xem xột dóy (zn) ứng với mỗi giỏ trị khỏc của z0. Theo hƣớng này chỳng ta sẽ thu đƣợc 1 lớp cỏc đối tƣợng fractal mới đƣợc gọi là tập Julia.

Tập Julia và tập Mandelbrot là hai lớp cỏc đối tƣợng fractal cú mối liờn hệ rất chặt chẽ với nhau. Một tớnh chất đỏng chỳ ý là tập Mandelbrot cú thể xem nhƣ một loại “bản đồ” Mandelbrot cú thể cho ra cỏc dạng tập Julia đầy sức lụi cuốn. Cỏc vị trớ nhƣ vậy đƣợc quan sỏt thấy ở gần biờn của tập Mandelbrot. Nhất là gần cỏc chỏm nhọn. Ngoài ra khi phúng to một phần của tập Mandelbrot, ta sẽ thu đƣợc một hỡnh rất giống với tập Julia đƣợc tạo bởi giỏ trị của tõm phần đƣợc phúng to.

Cụng thức toỏn học:

Để thể hiện tập Julia trờn màn hỡnh mỏy tớnh, ta vẫn sử dụng cỏc cụng thức nhƣ trong phần tập Mandelbrot, nhƣ là:

xn+1 = xn2 – yn2 + p yn+1 = 2xnyn + q

Ngoài ra cỏc tớnh chất đó nờu về giới hạn của dóy (z0) vẫn đƣợc sử dụng cho tập Julia.

Thuật toỏn thể hiện tập Julia:

Điểm khỏc biệt so với tập Mandelbrot ở đõy là giỏ trị p và q đƣợc giữ cố định, mặt phẳng màn hỡnh biến đổi thành mặt phẳng phức thu hẹp biểu diễn cỏc giỏ trị của x0 với:

- Trục x biểu diễn phần thực của số phức z0. - Trục y biểu diễn phần ảo của số phức z0. Ngoài ra cũn cú sự phõn lớp cỏc giỏ trị của z0 nhƣ sau: Lớp 1:

Bao gồm cỏc giỏ trị (z0) cú | zk | < 2, với 0 k N trong đú N là hằng số hữu hạn. Tức là lớp 1 gồm cỏc giỏ trị z0 làm cho dóy (z0) khụng tiến ra vụ cực. Lớp 2:

Bao gồm cỏc giỏ trị (z0) cú | zn | > 2, với n k, k Z+, tức là gồm cỏc giỏ trị làm cho dóy (zn) tiến ra vụ cực.

Ngƣợc lại với tập Mandelbrot, khi thể hiện tập Julia trờn màn hỡnh, chỳng ta quan tõm đến cỏc giỏ trị z0 làm cho dóy (zn) khụng hội tụ đến vụ cực. Do đú kỹ thuật tụ màu của tập Julia vẫn là kỹ thuật xoay vũng nhƣng hoàn toàn ngƣợc lại với kỹ thuật tụ màu tập Mandelbrot. Trong kỹ thuật tụ màu này:

- Cỏc điểm ảnh tƣơng ứng với cỏc giỏ trị z0 thuộc lớp 1, sẽ đƣợc gỏn màu tựy thuộc độ lớn của | zl| với l là ngƣỡng quyết định hội tụ của dóy (zn) đó nờu trong định nghĩa về lớp 1.

- Cỏc điểm ảnh tƣơng ứng với giỏ trị z0 thuộc lớp 2 sẽ đƣợc gỏn màu trựng với màu nền của bảng màu đang sử dụng.

Với cỏc thay đổi nhƣ vậy, tập Julia sẽ đƣợc thể hiện bằng thuật toỏn trỡnh bày nhƣ sau:

Thuật toỏn tổng quỏt để thể hiện tập Julia:

Gồm cỏc bƣớc sau: Bƣớc 1:

Xuất phỏt với 1 giỏ trị khởi đầu z0 = (x0, y0) và giỏ trị cố định c = (p, q). Bƣớc 2:

Kiểm tra z0 thuộc lớp 1 hay 2. Bƣớc 3:

Tụ màu điểm ảnh tƣơng ứng với z0 theo kỹ thuật tụ màu đƣợc nờu ở trờn.

Bƣớc 4:

Chọn giỏ trị z0 mới và lặp lại bƣớc 1 cho đến khi đó quột hết tất cả cỏc giỏ trị z0 cần khảo sỏt.

Sử dụng ký hiệu đó đƣợc xỏc định khi trỡnh bày thuật toỏn Mandelbrot chỳng ta cú thuật toỏn tạo tập Julia một cỏch chi tiết đƣợc viết dƣới dạng sau:

Một phần của tài liệu TÌM HIỂU PHƯƠNG PHÁP SINH ẢNH FRACTAL BẰNG HỆ HÀM LẶP (Trang 82 - 91)