Множества Жюлиа

Julia.jpg

Построить множество Жюлиа

Будем рассматривать последовательности комплексных чисел {Zn}. Возьмем произвольное комплексное число c. Теперь для любого комплексного числа k рассмотрим последовательность {Zn(k)}:
Z0c = k,
Zi+1= Zi2 + c

Зададим себе вопрос: сходится ли Zn к нулю или стремится к бесконечности при n стремящемся к бесконечности? Пусть J – множество всех комплексных чисел {k}, таких что {Zn(k)}стремится к 0, при n стремящемся к бесконечности. Если теперь мы возьмем все такие k и отобразим их на комплексной плоскости, то получим множество Жюлиа. Меняя c, мы получим бесконечный набор фантастических само подобных образов – множеств Жюлиа.

z'.x := t.x*t.x - t.y*t.y + c.x;
z'.y := 2*t.x*t.y + c.y;

#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;
}

Ключевые слова: 
Множества Жюлиа
ВложениеРазмер
Julia.rar32.29 кб