[C言語]マンデルブロ集合

マンデルブロ集合
充填ジュリア集合に対する指標として提唱された集合

ジュリア集合
複素平面上のある近傍で反復関数が非正規族となる点の集合
ガストン・ジュリアの名による

#include 
#include 

#define C0r -0.743
#define C0i 0.1145
#define VS 0.003

#define NMAX 20000
#define STEP 800.0

double mandelbrot(double a, double b){
	double x = 0.0;
	double y = 0.0;
	double x1, y1;

	int n;

	for(n = 1; n <= NMAX; n++){
		x1 = x * x - y * y + a;
		y1 = 2.0 * x * y + b;
		if(x1 * x1 + y1 * y1 > 4.0) return log(n);
		x = x1;
		y = y1;
	}
	return 0;
}


int main(void){

	double a, b;

	for(a = C0r-VS; a < C0r+VS; a += 2.0*VS/STEP){
		for(b = C0i - VS; b < C0i+VS; b += 2.0*VS/STEP){
			printf("%1.14e %1.14e %1.14e\n", a, b, mandelbrot(a, b));
		}
		printf("\n");
	}
	return 0;
}