我对Complex变量使用以下Complex类文件。
下面的java代码是Mandelbrot Set的迭代计算器的一个例子。
public int iterations(Complex no) {
Complex z = no;
int iterations = 0;
while (z.modulusSquared() < 4 && iter <= MAX_ITERATIONS) {
z = z.square();
z = z.add(y);
iter++;
}
return iter;
}
提前致谢!
答案 0 :(得分:0)
我认为在函数平方中你需要使用绝对值:
public Complex square() {
double newreal;
double newimaginary;
newreal = ((real * real) - (imaginary * imaginary));
newimaginary = 2 * abs(imaginary * real);
return new Complex(newreal, newimaginary);
}
现在,为了对一个复数进行平方,我扩展了这个等式: (Zx + Zyi)2 = Zx×Zx + Zx×Zy + Zx×Zy-Zy×Zy = Zx2-Zy2 + 2(Zx×Zy) 实际部分是Zx2-Zy2。将它们相乘(Zx Zx部分)比使用将数字增加到另一个的函数更快。 虚部为2(Zx×Zy)。设置变量n = Zx Zy然后设置n = n + n以避免乘以2(加法比乘法更快)更快。 Zy是一个浮点数,所以我不能做一点左移乘以2。 现在与Mandelbrot集合不同的部分是这样的: ZY = Math.abs(Zx时* ZY); 强>
[¹] http://spanishplus.tripod.com/maths/FractalBurningShip.htm