回 帖 发 新 帖 刷新版面

主题:[原创]J集fP程序

uses crt,graph,math;
var th,tw,gd, gm, lo, hi, error,pattle: integer;
    xi,xa,yi,ya,jx,jy:float;
    found,pv:boolean;
    a:char;
procedure makeup(cxmin,cxmax,cymin,cymax,jx,jy:float;big:boolean;nmax:integer);
const sx=640;sy=480;l=4;
      lx=120; ly=90;
var cx,cy,x,y,xx,yy,dx,dy,z:float;
    i,j,n,kx,ky,color:integer;
begin
    if big then begin
     kx:=sx;
     ky:=sy end
     else
     begin kx:=lx;
           ky:=ly
     end;
    dx:=(cxmax-cxmin)/kx;
    dy:=(cymax-cymin)/ky;

    FOR i:=0 to kx do begin
     cx:=cxmin+i*dx;
     FOR j:=0 to ky do begin
      cy:=cymin+J*dy;
      x:=cx;
      y:=cy;
      FOR n:=0 to nmax do begin
       xx:=x*x-y*y+jx;
       yy:=2*x*y+jy;
       if sqrt(sqr(xx)+sqr(yy))>L then break;
       x:=xx;
       y:=yy;
       end;
      color:=n mod 32+32*(pattle+1);
      if n=nmax then color:=16;
      putpixel(i,j,color);
     end;
    end;
end;
begin
  writeln('INPUT JULIA''S XMIN XMAX YMIN YMAX C''S X C''S Y');
  readln(xi,xa,yi,ya,jx,jy);
  pattle:=0;


  { We want an 8 bit mode }
  gd := D8bit;
  { Get all available resolutions for this bitdepth }
  getmoderange(gd,lo,hi);
  { If the highest available mode number is -1,
    no resolutions are supported for this bitdepth  }
  if hi = -1 then
    begin
    writeln('no 8 bit modes supported!');
    halt
    end;
  found := false;
  { Search all resolutions for 640x480 }
  for gm := lo to hi do
    begin
    initgraph(gd,gm,'');
    { Make sure you always check graphresult! }
    error := graphResult;
    if (error = grOk) and
       (getmaxx =639 ) and (getmaxy = 479) then
      begin
      found := true;
      break;
      end;
    end;
  if not found then
    begin
    writeln('640x480x256 is not supported!');
    halt(1)
    end;
  { We are now in 640x480x256 }
  pv:=TRUE;
  makeup(xi,xa,yi,ya,jx,jy,tRUE,500);
  a:=readkey;
  while a<>#27 do begin
   case a of
    'p':pv:=not pv;
    #77:jx:=jx+0.01;
    #75:jx:=jx-0.01;
    #72:jy:=jy-0.01;
    #80:jy:=jy+0.01;
    #25:pattle:=(pattle+1)mod 5;
    #13:makeup(xi,xa,yi,ya,jx,jy,TRUE,500);
    end;
    if pv then
    makeup(xi,xa,yi,ya,jx,jy,FALSE,100);
    a:=readkey;
   end;

  closegraph;

end.

回复列表 (共7个回复)

沙发

[em57]
J集合是抚平面上的迭代[font=Courier New]Z=Z*Z+C[/font]的Z趋向∞与0的点的边界

板凳

看不懂,先去看看数学书再说~~~~~~~~~~~~~~

3 楼

图形:

[img]D:\snap1.jpg[/img]

4 楼

什么是J集?

5 楼

在复平面上,水平的轴线代表实数,垂直的轴线代表虚数。每个Julia集合(有无限多个点)都决定一个常数C,它是一个复数。现在您在复平面上任意取一个点,其值是复数Z。将其代入下面方程中进行反复迭代运算:
Z[n+1]:=z[n]^2+C

就是说,用旧的Z自乘再加上C后的结果作为新的Z。再把新的Z作为旧的Z,重复运算。 当你不停地做,你将最后得到的Z值有3种可能性:

1、Z值没有界限增加(趋向无穷)
2、Z值衰减(趋向于零)
3、Z值是变化的,即非1或非2

趋向无穷和趋向于零的点叫定常吸引子,很多点在定常吸引子处结束,被定常吸引子所吸引。非趋向无穷和趋向于零的点是"Julia集合"部分,也叫混沌吸引子。]


6 楼

一个典型的 [b]逃逸时间算法[/b]
意义 _______________________________________________________________________
    /                                                                       \
        逃逸时间算法是在平面上的点P在迭代R下看多少次可以超过“回代上限”
        如这一次的R为
        /
       |     x<= x*x-y*y+cx
      <
       |     y<= 2*x*y+cy
        \
    程序中的逃逸上限为L=4;
    根据逃逸时的回代次数n决定点的颜色(n=nmax最大迭代次数时为黑色)
   \________________________________________________________________________/

7 楼

呀好复杂,
像物理问题样`~~(是物理问题吗?)

我来回复

您尚未登录,请登录后再回复。点此登录或注册