用Matlab探索分形世界

2021-01-21 系統科學社

1. 畫Manderbrot集


寫的時候在主程序中沒有寫具體的函數,而是直接在Iterateb函數中對於z的迭代進行賦值

Main code:

xspace=linspace(-2,2,1000);

yspace=linspace(-2,2,1000);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(c)Iterateb(c,50),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(hot); //用了hot進行塗色

shading flat;

function result=Iterateb(z0,times)

z=0;

result=0;

for i=1:times

    z=z^2+z0;

    if abs(z)>10

        result=abs(z);

        return

    end

end

End

將iterateb函數修改成

function result=Iterateb(z0,times)

z=0;

result=0;

for i=1:times

    z=sin(z).^3+z0;

    %z=z.^2+z0;

    if abs(z)>10

        result=i;

        %result=abs(z);

        return

    end

end

end

關於iterateb的說明:
將程序改進了一下,記錄的是跳出的步數,這樣再用pcolor畫的時候,就有更多的顏色是相同的數字,從而圖像更好看。

 可得到演變後的Manderbrot集(用了copper的配色)(這個真的有點難看)


 

2. 畫Juliet變形(金龍狂舞造型)

  


不知道哪個更好看一點。

左圖配色條如下:


程序:

fun=@(z)sin(z).^3-0.72*sqrt(-1)+0.125;

xspace=linspace(-2,2,500);

yspace=linspace(-2,2,500);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(z)iterateJuliet2(fun,z,50),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(gray);

shading flat;

functionresult=iterateJuliet2(ff,z0,times)

      z=z0;

      result=0;

   for i=1:times

       z=ff(z);

       ifabs(z)>2&&abs(real(z))<2//根據函數的可能取值定參考範圍

          result=i;

          return;

       end

   end

end

 

 

3. 畫小花


主程序:

c = 0+0.6*sqrt(-1);

fun=@(z)z.^5+c;//5次方的圖像傾向於小花

xspace=linspace(-2,2,500);

yspace=linspace(-2,2,500);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(z)iterateJuliet2(fun,z,100),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(bone);

shading flat;

 

functionresult=iterateJuliet2(ff,z0,times)

      z=z0;

      result=0;

   for i=1:times

       z=ff(z);

       if abs(z)>100&&abs(real(z))<100

          result=i;

          return;

       end

   end

end

畫出來之後需要調色,為了使得圖像好看,需要調色,雖然在colormap上用了bone,但是我還是自己手動調了色,加入了一個紫色在偏左邊的地方。


 

4. 畫一群奇怪的生物

我個人比較鍾愛冪函數,所以在前面嘗試了小花後,多嘗試了幾個。

 三次方(與前面相同,也手動配了色,用了靚粉和紅棕,效果還行)

 


 

Main code:

fun=@(z)z.^3+0.3*sqrt(-1)+0.7;

xspace=linspace(-2,2,500);

yspace=linspace(-2,2,500);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(z)iterateJuliet2(fun,z,50),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(gray);

shading flat;

 

function result=iterateJuliet2(ff,z0,times)

      z=z0;

      result=0;

   for i=1:times

       z=ff(z);

       if abs(z)>100&&abs(real(z))<100//r取值比較大,這樣可以有更多的i值

          result=i;

          return;

       end

   end

end


然後只改了前面的冪,畫出了下面兩張。

      


(第1個圖)四次方:

fun=@(z)z.^4+0.3*sqrt(-1)+0.7;

其他的完全一致,用colormap(gray)保留gray的配色。

(第2個圖)六次方:

fun=@(z)z.^6+0.3*sqrt(-1)+0.7;

其他的完全一致,自定義將配色(下圖)改成太陽色的方案,可得到小太陽。


 

通過畫圖我們相當容易發現,冪決定了圖形有多少個凸點。在大的(三角、四邊、五邊、六邊)裡面的具體情況,則時由初始參數的位置決定的。

 

5. 畫風格奇怪的裝飾圖



fun=@(z)z-(sin(z).^4+2)/(4*sin(z).^3.*cos(z))

xspace=linspace(-2,2,500);

yspace=linspace(-2,2,500);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(z)iterateJuliet2(fun,z,50),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(jet);

shading flat;

 

functionresult=iterateJuliet2(ff,z0,times)

      z=z0;

      result=0;

   for i=1:times

       z=ff(z);

       ifabs(z)>10&&abs(real(z))<10

          result=i;

          return;

       end

   end

End

 

配色方案:


還有奇怪的夏威夷風格:


fun=@(z)(2*sin(z).^3+2)/(3*cos(z).^2;

xspace=linspace(-2,2,500);

yspace=linspace(-2,2,500);

[x,y]=meshgrid(xspace,yspace);

logics=arrayfun(@(z)iterateJuliet2(fun,z,50),x+y*sqrt(-1));

figure;

pcolor(logics);

colormap(colorcube);

shading flat;

 

functionresult=iterateJuliet2(ff,z0,times)

      z=z0;

      result=0;

   for i=1:times

       z=ff(z);

       ifabs(z)>10&&abs(real(z))<10

          result=i;

          return;

       end

   end

end

 

在colorcube的基礎上小調一下色條:



說明:本作品的作者是北師大政府管理學院2014級學生張唯佳,作品出自北師大系統科學學院張江老師為政府管理學院本科生開設的《matlab基礎與應用》課程的課後作業。


相關焦點

  • 分形的世界
    那麼這位老先生何以對熵和分形概念如此重視呢?上周我們大致了解了什麼是熵,這周就一起來學習一下分形吧。作為現代分形概念的一部分,產生中斷和褶皺概念的新奇觀念被數學家從嚴格數學中延伸出來,但在真實世界中並沒有被普遍認為起著重要作用。
  • 帶你探索分形的世界.(初步)
    於是,分形幾何學就應運而生了。那今天我們就來聊聊「分形幾何學」---THE FRACTAL GEOMETRY分形幾何學,重點在「分形」,而「分形」,又是與「分維」密不可分的。分維,全稱「分數維度」 分數維度?
  • 分形世界(上)
    嗯,今天我們來聊聊分形問題。
  • 什麼是分形 | 集智百科
    具體來說,這意味著分形不能用傳統的方法進行測量。當測量波浪型非分形曲線的長度時,通過儘可能的放大,總能找到可測量的直線來擬合一小段曲線,從而就能用捲尺測量這段直線的長度,再將各段直線長度相加,就可以得出波浪的長度。這樣做實質上是把曲線看作數學上的函數,在一小段範圍內取一階泰勒展開,近似為直線,然後求和總長度。但是在測量無限「扭動」的分形曲線時,譬如科赫雪花。
  • 一不小心撞進了上帝創世的實驗室的分形理論
    「分形幾何學」常被稱為「大自然的幾何學」,非線性科學三大理論前沿之一,有時也被稱為「混沌幾何學」,用它來說明混沌運動和複雜性現象特別有效。分形理論常用來作為數學構建模型的工具分形理論的數學基礎是分形幾何學,即由分形幾何衍生出分形信息、分形設計、分形藝術等應用,被廣泛應用於信息技術、建築工程、設計乃至於藝術領域。分形理論的最基本特點是用分數維度的視角和數學方法描述和研究客觀事物,也就是用分形分維的數學工具來描述研究客觀事物。
  • 不可思議的分形世界:簡單規則如何導致複雜結果?
    今天的文章摘選自數學家伊恩·斯圖爾特(Ian Stewart)的科普著作《不可思議的數》,在書中,作者講述了許多數字背後的故事,帶領我們進入了奇妙的數字世界。 分形廣泛存在於自然界中,準確地說,可以用分形來模型化的形狀在自然界很普遍。現實世界中並不存在數學對象,數學對象都只是概念。有一種被稱為寶塔西蘭花的花椰菜是由很小的花球組成的,每個花球都與整棵花椰菜的形狀相同(圖5)。從礦物的精細結構到宇宙的物質分布,都有分形的影子。手機天線、在CD和DVD裡存儲大量數據,以及診斷癌細胞,也都用到了分形。
  • 奇妙分形:大自然的代碼
    在經典的歐幾裡得幾何學中,人們習慣上認識的世界都是整數維的,比如點是零維、線是一維、面是二維……也就是說,人們習慣上認識的世界是由直線和光滑的曲線構成的,而分形在數學上存在於一個奇怪的世界—介於一個整數維和另一個整數維之間。
  • 奇妙分形:大自然的代碼
    在經典的歐幾裡得幾何學中,人們習慣上認識的世界都是整數維的,比如點是零維、線是一維、面是二維……也就是說,人們習慣上認識的世界是由直線和光滑的曲線構成的,而分形在數學上存在於一個奇怪的世界—介於一個整數維和另一個整數維之間。
  • 龍港二小第六屆數學節——分形的世界
    分形(一種幾何形狀,被以越來越小的比例反覆摺疊而產生不能被標準幾何所定義的不標準的形狀和表面)是由混沌方程組成,它包含通過放大會變的越來越複雜的自相似圖案。要是把一個分形圖案分成幾小部分,結果會得到一個尺寸縮小,但形狀跟整個圖案一模一樣的複製品。      分形的數學之美,是利用相對簡單的等式形成無限複雜的圖案。它通過多次重複分形生成等式,形成美麗的圖案。
  • 分形理論在天線技術中的應用
    因此,迫切需要運用新的理論和方法,探索現代天線的設計,解決傳統的天線設計中出現的問題和矛盾。研究發現,將分形幾何應用到天線工 程中,可設計出尺寸和頻帶指標更好的分形天線。世界上第一個分形天線是由美國科學家Dr.Nathan Cohen 於1988年完成的,而對分形天線進行系統的研究是從1995年8月Cohen 發表他的第一篇有關分形天線方面的文章開始的。隨後,國際上很多大學和科研機構開始對分形天線進行研究。分形天線是分形電動力學的眾多應用之一。
  • 不可思議的分形世界:簡單規則如何導致複雜結果?|展卷
    今天的文章摘選自數學家伊恩·斯圖爾特(Ian Stewart)的科普著作《不可思議的數》,在書中,作者講述了許多數字背後的故事,帶領我們進入了奇妙的數字世界。分形廣泛存在於自然界中,準確地說,可以用分形來模型化的形狀在自然界很普遍。現實世界中並不存在數學對象,數學對象都只是概念。有一種被稱為寶塔西蘭花的花椰菜是由很小的花球組成的,每個花球都與整棵花椰菜的形狀相同(圖5)。從礦物的精細結構到宇宙的物質分布,都有分形的影子。手機天線、在CD和DVD裡存儲大量數據,以及診斷癌細胞,也都用到了分形。
  • 多圖預警|分形是什麼?為何分形有如此迷人的魅力?
    分形不僅美,能引起「極度的舒適感」,而且蘊藏著高深的數學奧秘。今天,咱們來研究研究,到底什麼是分形。分形的最早研究20世紀初,英國數學家劉易斯·弗萊·理德查森(Lewis Fry Richardson)在研究英國海岸線的時候,第一次發現了分形的奧秘。
  • 大自然的幾何——分形中的數列與迭代
    今天的主題是幾何,大自然的幾何,一說到幾何,大家肯定不陌生,三角形,正方形,圓等,但是自然界中的形狀都是三角形,正方形和圓嗎,並不是,經典幾何學所描繪的都是由直線或曲線,平面或曲面所構成的各種幾何形狀,他們是顯示世界中物體形狀的高度抽象。伽利略說:大自然的語言是數學,它的標誌是三角形、圓和其他圖形。但是對於了解大自然的複雜性來講,歐幾裡得幾何學是一種不充分、不具有普遍性的抽象。
  • 數學素養閱讀 數學世界之概率、混沌和分形
    本節課上,小魚老師給我們講了數學世界中三個很有趣的知識:概率,混沌和分形。為了更加形象地了解混沌,老師給我們播放了兩個小視頻最後,我們學習了奇特的分形。● 簡化後圖形表示的分形● 分形世界,小魚老師給我們打開了一扇門,讓我們去認識更多的有趣的分形。課程的最後,老師給我們播放了有關分形的有趣視頻。
  • 新媒體藝術|你知道什麼是分形世界嗎?
    卡西·瑞斯以編寫軟體來探索作為藝術的條件系統(conditional system)。通過定義自然生發的網絡和分層說明(layered instruction),他定義了一塊獨一無二的構建在具象藝術、觀念藝術、實驗動畫和繪畫之上的視覺體驗的區域。動態和生成的軟體一向是他創作的核心媒介,同時他也運用列印、物件、裝置和表演等從他的視覺系統中物化而來的多變的媒介。
  • 如何用Matlab/Python/Stata做簡單回歸分析
    內置的函數,直接就可以用於求回歸中比較常見的描述性統計、相關係數矩陣;第二段就是求beta_ols的步驟了,定義好X和Y後就直接計算即可,因為matlab是個專用於科學計算的軟體,因此矩陣相乘、求逆、轉置都很方便(一會你看看下面的Python就知道為什麼說matlab方便);第三段就是帶入求各種R方的過程了, 其中很有意思的是求某個列向量的平方和,其實是直接用它的轉置再乘自身。
  • 分形幾何:從寶塔菜花說起
    終於在1975年,曼德布羅特發表了被視為分形幾何創立的標誌性專著《分形:形、機遇和維數》。從此,一門嶄新的數學分支學科——分形幾何學躋身於現代數學之林。經過40多年的開拓和發展,分形研究不但在數學、哲學、物理學、經濟學、語言學、計算機科學等領域一展身手,甚至在電影、美術和書法等藝術領域得到廣泛應用,對現代科學產生了至為深遠的影響。
  • 用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • 如何用matlab對信號進行傅立葉變換
    傅氏變換分析是信號分析中很重要的方法,藉助matlab可以很方便的對各類信號進行傅氏頻域分析。
  • 分形流暢性:人類大腦天生會因分形而愉悅
    這被稱為「分形流暢性」。原理大概是重複的視覺元素可以降低大腦處理視覺信息時所用到的運算資源,所以會令人感到輕鬆愉悅。對幼兒的新研究表明,這一反應並非是通過後天環境暴露習得的——3歲幼兒的大腦就已對分形圖案有所響應。它甚至可能是寫在DNA底層的。