Tập hợp JULIA và MANDELBROT
Trang 1Tập hợp JULIA và MANDELBROT
La Trí Dũng
(Trang dành cho các bạn sinh viên và chuyên tin)
Trong số trước, chúng tôi đã giới thiệu với các bạn một khái niệm rất thú vị trong hình học, được ứng dụng rộng rãi là Fractal, và một thuật toán đơn giản tạo các hình fractal
Để đáp ứng nhu cầu của các bạn, trong bài này chúng tôi xin giới thiệu với các bạn hai hình fractal nổi tiếng là Julia và Mandelbrot cùng thuật toán tạo ra chúng Để nắm được khái niệm và tạo ra các hình này, các bạn chỉ cần một ít kiến thức về số phức và một số kĩ năng tối thiểu về lập trình
Tập Julia
Xét hàm biến phức Qc (z) = z2+c với z, c là các số phức
Định nghĩa 1 Quĩ đạo của z theo Qc là tập |Qcn(z) | n (- N}
Định nghĩa 2 Quĩ đạo của z theo Qc được gọi là bị chặn nếu tồn tại số K sao cho | Qc
n(z)| < K với mọi n Ngược lại quỹ đạo được gọi là không bị chặn
Định nghĩa 3 Tập Julia đặc của Qc là tập các điểm mà quĩ đạo của chúng theo Qc là bị chặn Tập Julia của Qc là tập các điểm biên của tập Julia đặc.Tập Julia đặc thường kí hiệu
là Kc, còn tập Julia -Jc
Định lí (tiêu chuẩn thoát) Giả sử |z| > |c| > 2 Khi đó |Qcn(z) |→ ∞ khi n → ∞
Hệ quả Giả sử |z| > max{|c|, 2} Khi đó |Qcn(z) | > (1+λ))n|z| nên |Qcn(z) | → ∞ khi n →
∞
Chứng minh định lí trên và hệ quả các bạn có thể tham khảo trong A first course in chaotic dynamical systems của Robert L Devaney
Từ định lí trên ta suy ra một thuật toán tạo tập Julia đặc:
Chọn số bước lặp lớn nhất là N Với mỗi điểm z trên mặt phẳng phức ta tìm N điểm đầu tiên trên quĩ đạo của z Nếu |Qci(z)| > max{|c|, 2} với i <= N thì ngừng lặp và tô điểm z màu trắng Tập các điểm màu đen (không được tô màu) sẽ là xấp xỉ của tập Julia đặc
Chương trình sau mô phỏng thuật toán bằng ngôn ngữ Pascal:
Program Julia;
Trang 2W=180;
N=200;
Re_c=-0.5;
Im_c=0.57;
Re_a=-1.8;
Im_a=-1.3;
s=2.5;
Re_b=Re_a+1.5*s;
Im_b=Im_a+s;
i,m,Gd,Gm: integer;
Re_z,Im_z,size,r,t,Re_zi,Im_zi: real;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
size:=s/500;
Re_z:=Re_a;
Repeat
Im_z:=Im_a;
Repeat
r:=Sqr(Re_z)+Sqr(Im_z);
i:=0;
Re_zi:=Re_z;
Im_zi:=Im_z;
Repeat
t:=Sqr(Re_zi)-Sqr(Im_zi)+Re_c;
Im_zi:=2*Re_zi*Im_zi+Im_c;
Re_zi:=t;
r:=Sqr(Re_zi)+Sqr(Im_zi);
Inc(i);
Until (i>N)or(r>4);
If i<=N then Putpixel(Round((Re_z-Re_a)*W),Round((Im_z-Im_a)*W),15); Im_z:=Im_z+size;
Until Im_z>Im_b;
Re_z:=Re_z+size;
Until Re_z>Re_b;
CloseGraph;
END
Trang 3Tập Julia đặc có hình dạng như hình bên (màu đen).
Các viền màu quanh tập Julia đặc cũng là các tập Julia đặc xấp xỉ, ứng với N nhỏ hơn Trong chương trình trên, các bạn có thể dựa vào độ lớn của biến i khi thoát khỏi vòng lặp
để tô màu cho điểm (Re_z, Im_z), chẳng hạn màu đỏ ứng với i=1, màu hồng ứng với i=2, màu cam ứng với i=3, Các bạn cũng có thể thay đổi các số liệu ban đầu như giá trị của
c, độ phóng đại W, toạ độ điểm góc trái trên a, góc phải dưới b, để thu được các tập Julia đặc khác nhau
Tập Mandelbrot
Xét hàm biến phức Qc(z) = z2+c như trên
Có thể xảy ra 2 khả năng:
1 Quĩ đạo của điểm 0 theo Qc là tập không bị chặn Khi đó Kcchứa vô số thành phần không liên thông
2 Quĩ đạo của điểm 0 bị chặn, khi đó Kc là tập liên thông
Do đó ta có:
Định nghĩa 4 Tập Mandelbrot M là tập hợp chứa tất cả các điểm c sao cho các tập Julia
đặc Kc tương ứng là tập liên thông, hay tương đương M = {c C | |Qc(0)| → ∞ }
Thuật toán tạo tập Mandelbrot:
Chọn số bước lặp lớn nhất là N Với mỗi điểm c trên mặt phẳng phức ta tìm N điểm đầu tiên trên quĩ đạo của 0 theo Qc Nếu |Qci (0)| > 2 với i ≤ N thì ngừng lặp và tô điểm c màu trắng Nếu |Qci (0)| ≤ 2 với mọi i ≤ N thì tô điểm c màu đen
Trang 4Program Mandelbrot;
Uses Crt,Graph;
Const
W=200;
s=2.4;
N=34;
Re_a=-2.1;
Im_a=-1.2;
Re_b=Re_a+1.5*s;
Im_b=Im_a+s;
Var
i,Gd,Gm: integer;
Re_c,Im_c,size,r,t,Re_0i,Im_0i: real;
BEGIN
Gd:=Detect;
InitGraph(Gd,Gm,' ');
size:=s/480;
Re_c:=Re_a;
Repeat
Im_c:=Im_a;
Repeat
Re_0i:=0;
Im_0i:=0;
i:=0;
r:=0;
Repeat
t:=Sqr(Re_0i)-Sqr(Im_0i)+Re_c;
Im_0i:=2*Re_0i*Im_0i+Im_c;
Re_0i:=t;
r:=Sqr(Re_0i)+Sqr(Im_0i);
Inc(i);
Until (i>N)or(r>4);
If i<=N then Putpixel(Round((Re_c-Re_a)*W),Round((Im_c-Im_a)*W),15); Im_c:=Im_c+size;
Until Im_c>Im_b;
Re_c:=Re_c+size;
Until Re_c>Re_b;
CloseGraph;
END
Trang 5Tập Mandelbrot có dạng như hình bên.
Hy vọng rằng chúng tôi sẽ còn có dịp quay lại với các bạn về các tính chất đặc sắc và lý thú của các tập hợp Julia và Maldelbrot này