1

因此,给定任意点 (a + ib),如果函数在 mandelbrot 集中,则该函数将返回 1,如果不在 n 次迭代中,则返回 0。

我在尝试编写此函数时遇到了困难,尤其是对于复数。任何人都可以帮助我或给我一些建议让我开始吗?

到目前为止,我只能想出一种方法来确定一个实数(任何 x,y = 0)是否在 mandelbrot 集中。

编辑:抱歉忘了说我正在用 C 编码,不过我主要是在寻找一些伪代码的想法。

4

2 回答 2

1

片场上的 Wikipedia 页面有一些完成基本工作的伪代码,并暗示了你可以采取这样一个项目的许多方向中的一些。理解复杂的数学是关键;传统的做法是将复数的实部和虚部保留为一对双精度数,并手动或以宏的形式在它们上实现您需要的任何操作。complex(如今,如果您的编译器使用 C99,您可以使用该类型,但其中的乐趣在哪里......?:-))

于 2011-04-16T22:22:20.343 回答
0

您需要反复平方并添加一个复数:

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;
于 2011-12-11T22:12:12.367 回答