Построить множество Жюлиа Будем рассматривать последовательности комплексных чисел {Zn}. Возьмем произвольное комплексное число c. Теперь для любого комплексного числа k рассмотрим последовательность {Zn(k)}: Зададим себе вопрос: сходится ли Zn к нулю или стремится к бесконечности при n стремящемся к бесконечности? Пусть J – множество всех комплексных чисел {k}, таких что {Zn(k)}стремится к 0, при n стремящемся к бесконечности. Если теперь мы возьмем все такие k и отобразим их на комплексной плоскости, то получим множество Жюлиа. Меняя c, мы получим бесконечный набор фантастических само подобных образов – множеств Жюлиа. z'.x := t.x*t.x - t.y*t.y + c.x; #include <stdlib.h> #include <graphics.h> #include <math.h> #include <conio.h> #include <dos.h> #include <time.h> struct TComplex { double x; double y; }; const int iter = 50; const int max = 16; TComplex z, t, c; int x, y, n; int cancel; int gd, gm; int mx, my; int main (){ cancel = 0; gd = DETECT; initgraph(&gd, &gm, ""); mx = getmaxx() / 2; my = getmaxy() / 2; for(y=-my; y<my; y++) for(x=-mx; x<mx; x++){ n = 0; z.x = x * 0.005; z.y = y * 0.005; c.x = 0.11; c.y = -0.66; while(((z.x*z.x)+(z.y*z.y) < max) && (n < iter)){ t = z; //{z^2 + c} z.x = t.x*t.x - t.y*t.y + c.x; z.y = 2 * t.x*t.y + c.y; z.x = z.x+c.x; z.y = z.y+c.y; n++; }(!kbhit()); if(n<iter){ putpixel(mx + x,my + y,16 - (n % 16)); } } getch(); return 0; }
Ключевые слова:
Множества Жюлиа
|
|||||||