Bifurcation diagram of complex quadratic map.
Horizontal axis ( real slice of Mandelbrot set ) is divided int 3 segments with nonlinear scale:
Each window has non-linear, i.e. logarithmic x-axis scale:
case TypSkalOsiXY of
liniowe : begin
okno.Ax:=(okno.Dxe)/(okno.dx); { XE=Ax*x+Bx }
okno.Bx:=XEmin-(okno.Ax*Xmin);
okno.KrokX:=(okno.Dx)/(okno.Dxe);
okno.Ay:=(okno.Dye)/(okno.dy);
okno.By:=YEmin-(okno.Ay*Ymin);
okno.KrokY:=(okno.Dy)/(okno.dye);
end;
LogRozsz: begin { nieliniowa , tj. logarytmiczna skala osi x }
okno.LrMin:= 0; { logarytm naturalny }
okno.LrMax:=-6;
okno.dLr:=okno.LrMax-okno.LrMin;
okno.XlrMin:=exp(okno.LrMin); { Xlr = exp(Lr) }
okno.XlrMax:=exp(okno.LrMax);
okno.dXlr:=okno.XlrMax-okno.XlrMin;
okno.Ayr:=(okno.Dye)/(okno.dy); { liniowa skala osi y }
okno.Byr:=YEmin-(okno.Ayr*Ymin);
okno.KrokYr:=(okno.Dy)/(okno.dye);
end;
LogZwez : begin
okno.LzMin:= -6;
okno.LzMax:= 0;
okno.dLz:=okno.LzMax-okno.LzMin;
okno.XlzMin:=exp(okno.LzMin);
okno.XlzMax:=exp(okno.LzMax);
okno.dXlz:=okno.XlzMax-okno.XlzMin;
okno.Ayz:=(okno.Dye)/(okno.dy); { liniowa skala osi y }
okno.Byz:=YEmin-(okno.Ayz*Ymin);
okno.KrokYz:=(okno.Dy)/(okno.dye);
end;
end; { case ... }
PROGRAM diag321;
{ program rysuje diagram bifurkacyjny y[n+1]=y[n]*y[n]+x,
{ x: -2.0< x <-1.41 }
{ y: -2.0< y <2.0 }
{ nieliniowe , zmienne w 3 oknach skalowanie osi x }
{ rysuje tez punkty stale nieprzyciagajace !!!!! }
USES {moduly standardowe}
Crt,Graph,
{moje moduly}
GrafM,
OknaM,
fractalnyM,
BmpM;
VAR Okno1,okno2,okno3:OkiennyT;
Bok:integer;
BEGIN
Opengraf;
Bok:=Round(GetMaxx/7);
Kojarz(okno3,-0.200,0.25,-2,2,logRozsz,(6*bok)+2,(7*bok),0,GetMaxY);
Diagram(okno3,50,10); {unit FractalnyM}
Kojarz(okno2,-1.401,-0.200,-2,2,logZwez,(3*bok)+1,(6*bok)+1,0,GetMaxY);
Diagram(okno2,100,20);
Kojarz(okno1,-2.000,-1.401,-2,2,logRozsz,0,3*bok,0,getMaxY);
Diagram(okno1,100,200);
ScreenCopy('b',640,480);
Repeat until KeyPressed;
CloseGraph;
END.