1. Trang chủ
  2. » Công Nghệ Thông Tin

Tập hợp JULIA và MANDELBROT

5 823 7
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 54 KB

Nội dung

Tập hợp JULIA và MANDELBROT

Trang 1

Tậ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 2

W=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 3

Tậ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 4

Program 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 5

Tậ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

Ngày đăng: 11/09/2012, 14:32

HÌNH ẢNH LIÊN QUAN

Tập Mandelbrot có dạng như hình bên. - Tập hợp JULIA và MANDELBROT
p Mandelbrot có dạng như hình bên (Trang 5)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w