функция, которая определяет, находится ли данная точка (x, y) в множестве Мандельброта или нет - PullRequest
1 голос
/ 14 апреля 2011

Таким образом, для любой точки (a + ib) функция вернет 1, если она находится в наборе Мандельброта, или 0, если не для n количества итераций.

У меня возникают трудности при попытке закодировать эту функцию, особенно с помощью комплексных чисел. Кто-нибудь может мне помочь или дать совет, чтобы я начал?

Пока что я могу только придумать, как определить, находится ли действительное число (любое x, y = 0) в наборе Мандельброта.

РЕДАКТИРОВАТЬ: Извините, забыл сказать, что я кодирую на C, хотя я в основном ищу некоторые идеи psuedocode.

Ответы [ 2 ]

1 голос
/ 17 апреля 2011

На странице Википедии на съемочной площадке есть некоторый псевдокод, который выполняет основную работу и намекает на некоторые из многих направлений, в которых вы можете принять такой проект. Понимание сложной математики является ключом; Традиционно хранить реальные и мнимые компоненты комплекса в виде пары двойников и реализовывать любые необходимые операции с ними вручную или в виде макросов. (В наши дни вы можете использовать тип complex, если ваш компилятор говорит на C99, но где в этом удовольствие ...? :-))

0 голосов
/ 12 декабря 2011

Вам нужно многократно возвести в квадрат и добавить комплексное число:

double a = real input component;
double b = imag input component;

double zReal = a;
double zImag = b;
for(int i = 0; i< LIMIT; i++){
   double temp = zReal;
   zReal = zReal * zReal - zImag * zImag;
   zImag = 2 * temp * zImag;
   if(zReal * zReal + zImag * zImag > 4){
      return 0;
   }
}
return 1;
...