问题描述
|
因此,给定任意点(a + ib),如果函数位于mandelbrot集中,则该函数将返回1;否则,如果不进行n次迭代,则该函数将返回0。
我在尝试编写此函数时遇到困难,尤其是对于复杂的数字。谁能帮助我或提供一些建议让我开始?
到目前为止,我只能想出一种方法来确定mandelbrot集中是否存在实数(任何x,y = 0)。
编辑:抱歉忘了说我在C语言中进行编码,虽然我主要是在寻找一些伪代码的想法。
解决方法
集合上的Wikipedia页面上有一些伪代码可以完成基本工作,并提示您可以采用这样的项目的许多方向。了解复杂的数学是关键。传统上将复数的实部和虚部保持为一对,并通过手工或宏对其执行所需的任何操作。 (这些天,如果您的编译器使用C99,则可以使用
complex
类型,但是这样做的乐趣何在...?:-))
,您需要重复平方并添加一个复数:
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;