乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Matrix67: My Blog ? Blog Archive ? 神奇的分形藝術(shù)(四):Julia集和Mandelbrot集

       AMI66 2014-01-11

      http://www./blog/archives/292   

      考慮函數(shù)f(z)=z^2-0.75。固定z0的值后,我們可以通過(guò)不斷地迭代算出一系列的z值:z1=f(z0), z2=f(z1), z3=f(z2), ...。比如,當(dāng)z0 = 1時(shí),我們可以依次迭代出:

      z1 = f(1.0) = 1.0^2 - 0.75 = 0.25
      z2 = f(0.25) = 0.25^2 - 0.75 = -0.6875
      z3 = f(-0.6875) = (-0.6875)^2 - 0.75 = -0.2773
      z4 = f(-0.2773) = (-0.2773)^2 - 0.75 = -0.6731
      z5 = f(-0.6731) = (-0.6731)^2 - 0.75 = -0.2970
      ...

          可以看出,z值始終在某一范圍內(nèi),并將最終收斂到某一個(gè)值上。
          但當(dāng)z0=2時(shí),情況就不一樣了。幾次迭代后我們將立即發(fā)現(xiàn)z值最終會(huì)趨于無(wú)窮大:

      z1 = f(2.0) = (2.0)^2 - 0.75 = 3.25
      z2 = f(3.25) = (3.25)^2 - 0.75 = 9.8125
      z3 = f(9.8125) = (9.8125)^2 - 0.75 = 95.535
      z4 = f(95.535) = (95.535)^2 - 0.75 = 9126.2
      z5 = f(9126.2) = (9126.2)^2 - 0.75 = 83287819.2
      ...

          經(jīng)過(guò)計(jì)算,我們可以得到如下結(jié)論:當(dāng)z0屬于[-1.5, 1.5]時(shí),z值始終不會(huì)超出某個(gè)范圍;而當(dāng)z0小于-1.5或大于1.5后,z值最終將趨于無(wú)窮。
          現(xiàn)在,我們把這個(gè)函數(shù)擴(kuò)展到整個(gè)復(fù)數(shù)范圍。對(duì)于復(fù)數(shù)z0=x+iy,取不同的x值和y值,函數(shù)迭代的結(jié)果不一樣:對(duì)于有些z0,函數(shù)值約束在某一范圍內(nèi);而對(duì)于另一些z0,函數(shù)值則發(fā)散到無(wú)窮。由于復(fù)數(shù)對(duì)應(yīng)平面上的點(diǎn),因此我們可以用一個(gè)平面圖形來(lái)表示,對(duì)于哪些z0函數(shù)值最終趨于無(wú)窮,對(duì)于哪些z0函數(shù)值最終不會(huì)趨于無(wú)窮。我們用深灰色表示不會(huì)使函數(shù)值趨于無(wú)窮的z0;對(duì)于其它的z0,我們用不同的顏色來(lái)區(qū)別不同的發(fā)散速度。由于當(dāng)某個(gè)時(shí)候|z|>2時(shí),函數(shù)值一定發(fā)散,因此這里定義發(fā)散速度為:使|z|大于2的迭代次數(shù)越少,則發(fā)散速度越快。這個(gè)圖形可以編程畫(huà)出。和上次一樣,我用Pascal語(yǔ)言,因?yàn)槲也粫?huì)C的圖形操作。某個(gè)MM要過(guò)生日了,我把這個(gè)自己編程畫(huà)的圖片送給她^_^

      {$ASSERTIONS+}

      uses graph;

      type
         complex=record
            re:real;
            im:real;
         end;

      operator * (a:complex; b:complex) c:complex;
      begin
         c.re := a.re*b.re - a.im*b.im;
         c.im := a.im*b.re + a.re*b.im;
      end;

      operator + (a:complex; b:complex) c:complex;
      begin
         c.re := a.re + b.re;
         c.im := a.im + b.im;
      end;

      var
         z,c:complex;
         gd,gm,i,j,k:integer;
      begin
         gd:=D8bit;
         gm:=m640x480;
         InitGraph(gd,gm,'');
         Assert(graphResult=grOk);

         c.re:=-0.75;
         c.im:=0;
         for i:=-300 to 300 do
         for j:=-200 to 200 do
         begin
            z.re:=i/200;
            z.im:=j/200;
            for k:=0 to 200 do
            begin
               if sqrt(z.re*z.re + z.im*z.im) >2 then break
               else z:=(z*z)+c;
            end;
            PutPixel(i+300,j+200,k)
         end;

         readln;
         CloseGraph;
      end.


          代碼在Windows XP SP2,F(xiàn)PC 2.0下通過(guò)編譯,麻煩大家?guī)兔?bào)告一下程序運(yùn)行是否正常(上次有人告訴我說(shuō)我寫(xiě)的繪圖程序不能編譯)。在我這里,程序運(yùn)行的結(jié)果如下:



          這個(gè)美麗的分形圖形表現(xiàn)的就是f(z)=z^2-0.75時(shí)的Julia集??紤]復(fù)數(shù)函數(shù)f(z)=z^2+c,不同的復(fù)數(shù)c對(duì)應(yīng)著不同的Julia集。也就是說(shuō),每取一個(gè)不同的c你都能得到一個(gè)不同的Julia集分形圖形,并且令人吃驚的是每一個(gè)分形圖形都是那么美麗。下面的六幅圖片是取不同的c值得到的分形圖形。你可能不相信這樣一個(gè)簡(jiǎn)單的構(gòu)造法則可以生成這么美麗的圖形,這沒(méi)什么,你可以改變上面程序代碼中c變量的值來(lái)親自驗(yàn)證。

      c = 0.45, -0.1428
        

      c = 0.285, 0.01
        

      c = 0.285, 0
        

      c = -0.8, 0.156
        

      c = -0.835, -0.2321
        

      c = -0.70176, -0.3842
        



          類似地,我們固定z0=0,那么對(duì)于不同的復(fù)數(shù)c,函數(shù)的迭代結(jié)果也不同。由于復(fù)數(shù)c對(duì)應(yīng)平面上的點(diǎn),因此我們可以用一個(gè)平面圖形來(lái)表示,對(duì)于某個(gè)復(fù)數(shù)c,函數(shù)f(z)=z^2+c從z0=0開(kāi)始迭代是否會(huì)發(fā)散到無(wú)窮。我們同樣用不同顏色來(lái)表示不同的發(fā)散速度,最后得出的就是Mandelbrot集分形圖形:
          

          前面說(shuō)過(guò),分形圖形是可以無(wú)限遞歸下去的,它的復(fù)雜度不隨尺度減小而消失。Mandelbrot集的神奇之處就在于,你可以對(duì)這個(gè)分形圖形不斷放大,不同的尺度下你所看到的景象可能完全不同。放大到一定時(shí)候,你可以看到更小規(guī)模的Mandelbrot集,這證明Mandelbrot集是自相似的。下面的15幅圖演示了Mandelbrot集的一個(gè)放大過(guò)程,你可以在這個(gè)過(guò)程中看到不同樣式的分形圖形。







      網(wǎng)上可以找到很多小程序?qū)崿F(xiàn)Mandelbrot集的放大過(guò)程。把上面給出的代碼改一改,你也可以寫(xiě)出一個(gè)這樣的程序來(lái)。

      Update:2011 年 8 月 31 日,我對(duì)這個(gè)話題做了更進(jìn)一步的討論 http://www./blog/archives/4570

      Posted in Brain Storm
      Tags: , , , , , , , , ,
      Trackback: http://www./blog/archives/292/trackback
      我猜您可能還喜歡:

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多