幾個分形的matlab實現_第1頁
幾個分形的matlab實現_第2頁
幾個分形的matlab實現_第3頁
幾個分形的matlab實現_第4頁
幾個分形的matlab實現_第5頁
已閱讀5頁,還剩2頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 幾個分形的matlab實現摘要:給出幾個分形的實例,并用matlab編程實現方便更好的理解分形,欣賞其帶來的數學美感關鍵字:Koch曲線 實驗 圖像一、 問題描述:從一條直線段開始,將線段中間的三分之一部分用一個等邊三角形的兩邊代替,形成山丘形圖形如下 圖1在新的圖形中,又將圖中每一直線段中間的三分之一部分都用一個等邊三角形的兩條邊代替,再次形成新的圖形如此迭代,形成Koch分形曲線。二、 算法分析:考慮由直線段(2個點)產生第一個圖形(5個點)的過程。圖1中,設和分別為原始直線段的兩個端點,現需要在直線段的中間依次插入三個點,。顯然位于線段三分之一處,位于線段三分之二處,點的位置可看成是由

2、點以點為軸心,逆時針旋轉600而得。旋轉由正交矩陣實現。算法根據初始數據(和點的坐標),產生圖1中5個結點的坐標。結點的坐標數組形成一個矩陣,矩陣的第一行為的坐標,第二行為的坐標,第五行為的坐標。矩陣的第一列元素分別為5個結點的坐標,第二列元素分別為5個結點的坐標。進一步考慮Koch曲線形成過程中結點數目的變化規律。設第次迭代產生的結點數為,第次迭代產生的結點數為,則和中間的遞推關系為。三、實驗程序及注釋:p=0 0;10 0; %P為初始兩個點的坐標,第一列為x坐標,第二列為y坐標n=2; %n為結點數A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3); %

3、旋轉矩陣for k=1:4 d=diff(p)/3; %diff計算相鄰兩個點的坐標之差,得到相鄰兩點確定的向量 %則d就計算出每個向量長度的三分之一,與題中將線段三等分對應 m=4*n-3; %迭代公式 q=p(1:n-1,:); %以原點為起點,前n-1個點的坐標為終點形成向量 p(5:4:m,:)=p(2:n,:); %迭代后處于4k+1位置上的點的坐標為迭代前的相應坐標 p(2:4:m,:)=q+d; %用向量方法計算迭代后處于4k+2位置上的點的坐標 p(3:4:m,:)=q+d+d*A' %用向量方法計算迭代后處于4k+3位置上的點的坐標 p(4:4:m,:)=q+2*d;

4、 %用向量方法計算迭代后處于4k位置上的點的坐標 n=m; %迭代后新的結點數目end plot(p(:,1),p(:,2) %繪出每相鄰兩個點的連線axis(0 10 0 10)四、實驗數據記錄:由第三部分的程序,可得到如下的Koch分形曲線:圖2五、注記:參照實驗方法,可繪制如下生成元的Koch 分形曲線:圖3此時,旋轉矩陣為:程序和曲線如下:p=0 0;10 0; %P為初始兩個點的坐標,第一列為x坐標,第二列為y坐標n=2; %n為結點數A=0 -1;1 0; %旋轉矩陣for k=1:4 d=diff(p)/3; %diff計算相鄰兩個點的坐標之差,得到相鄰兩點確定的向量 %則d就計

5、算出每個向量長度的三分之一,與題中將線段三等分對應 m=5*n-4; %迭代公式 q=p(1:n-1,:); %以原點為起點,前n-1個點的坐標為終點形成向量 p(6:5:m,:)=p(2:n,:); %迭代后處于5k+1位置上的點的坐標為迭代前的相應坐標 p(2:5:m,:)=q+d; %用向量方法計算迭代后處于5k+2位置上的點的坐標 p(3:5:m,:)=q+d+d*A' %用向量方法計算迭代后處于5k+3位置上的點的坐標 p(4:5:m,:)=q+2*d+d*A' %用向量方法計算迭代后處于5k+4位置上的點的坐標 p(5:5:m,:)=q+2*d; %用向量方法計算迭

6、代后處于5k位置上的點的坐標 n=m; %迭代后新的結點數目end plot(p(:,1),p(:,2) %繪出每相鄰兩個點的連線axis(0 10 0 10)圖4由于中間三分之一部分是一個正方形時,有很多連接的部分。所以我們將高度壓縮到原來的0.7倍,即中間部分為一個長與寬之比為1:0.7的矩形時,得到程序和曲線如下:p=0 0;10 0; %P為初始兩個點的坐標,第一列為x坐標,第二列為y坐標n=2; %n為結點數A=0 -1;1 0; %旋轉矩陣for k=1:4 d=diff(p)/3; %diff計算相鄰兩個點的坐標之差,得到相鄰兩點確定的向量 %則d就計算出每個向量長度的三分之一,

7、與題中將線段三等分對應 m=5*n-4; %迭代公式 q=p(1:n-1,:); %以原點為起點,前n-1個點的坐標為終點形成向量 p(6:5:m,:)=p(2:n,:); %迭代后處于5k+1位置上的點的坐標為迭代前的相應坐標 p(2:5:m,:)=q+d; %用向量方法計算迭代后處于5k+2位置上的點的坐標 p(3:5:m,:)=q+d+0.7*d*A' %用向量方法計算迭代后處于5k+3位置上的點的坐標 p(4:5:m,:)=q+2*d+0.7*d*A' %用向量方法計算迭代后處于5k+4位置上的點的坐標 p(5:5:m,:)=q+2*d; %用向量方法計算迭代后處于5k

8、位置上的點的坐標 n=m; %迭代后新的結點數目end plot(p(:,1),p(:,2) %繪出每相鄰兩個點的連線axis(0 10 0 10)圖 參照實驗方法,我們由四邊形的四個初始點出發,對于四邊形的每條邊,生成元如下:圖6可得到火焰般的圖形。程序和曲線如下:p=0 10;10 0;0 -10;-10 0;0 10; %P為四邊形四個頂點的坐標,其中第五個點與第一個點重合,以便于繪圖 %第一列為x坐標,第二列為y坐標n=5; %n為結點數 A=cos(-pi/3) -sin(-pi/3);sin(-pi/3) cos(-pi/3); %旋轉矩陣,順時針旋轉60度for k=1:5 d=

9、diff(p)/3;m=4*n-3; %迭代公式q=p(1:n-1,:);p(5:4:m,:)=p(2:n,:); p(2:4:m,:)=q+d; p(3:4:m,:)=q+2*d+d*A' p(4:4:m,:)=q+2*d; n=m;endplot(p(:,1),p(:,2)axis(-10 10 -10 10)圖7參照實驗方法,由下列的生成元,繪制Koch分形曲線:圖8分析:為了繪圖方便,我們將結點數處理一下,把第一次迭代產生的六個點看成十個點,即圖中有五條線段(,),我們將每條線段的每個端點看成新的兩個結點,這樣我們就可以很方便地用plot繪圖了。程序和曲線如下:p=0 0;10

10、 10; %P為初始兩個點的坐標,第一列為x坐標,第二列為y坐標n=2; %n為結點數A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3); B=cos(-pi/3) -sin(-pi/3);sin(-pi/3) cos(-pi/3); %旋轉矩陣A對應于第一次逆時針旋轉60度,旋轉矩陣B對應于第二次順時針旋轉60度for k=1:4 d=diff(p)/3; d1=d(1:2:n,:);%取每條線段對應的向量 m=5*n; %迭代公式 q1=p(1:2:n-1,:); p(10:10:m,:)=p(2:2:n,:); p(1:10:m,:)=p(1:2:n,:

11、); %迭代后處于10k與10k+1位置上的點的坐標為迭代前的相應坐標p(2:10:m,:)=q1+d1; %用向量方法計算迭代后處于10k+2,10k+3,10k+5位置上的點的坐標,都相同 p(3:10:m,:)=p(2:10:m,:); p(4:10:m,:)=q1+d1+d1*A' %用向量方法計算迭代后處于10k+4位置上的點的坐標 p(5:10:m,:)=p(2:10:m,:);p(6:10:m,:)=q1+2*d1; %用向量方法計算迭代后處于10k+6,10k+7,10k+9位置上的點的坐標,都相同 p(7:10:m,:)=p(6:10:m,:); p(8:10:m,:)=q1+2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論