本文將討論Sierpinski(謝爾賓斯基)分形的墊片系列和地毯系列,墊片系列是以三角形為基礎的生成元,地毯系列是以正方形為基礎的生成元。

1. 謝爾賓斯基墊片

謝爾賓斯基墊片,也稱為謝爾賓斯三角形,由波蘭數學傢謝爾賓斯基在1915年提出。

設初始元是一個正三角形,根據下列規則構造一個Sierpinski墊片:

① 4等分一個正三角形,變換為4個小三角形;

② 去掉中間的1個小三角形,保留剩餘的3個小三角形;

③ 在剩餘的3個小三角形上,重復第②步。

Sierpinski墊片[1,2]是以上步驟地無限重復的極限結果(圖1、2)。通過相似維的定義,很容易得到:

N=3 ,相似比 r=frac{1}{2} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln3}{ln2}approx1.5849625

圖1 謝爾賓斯基墊片構造圖2 謝爾賓斯基墊片[1,2]

另外,墊片[1,2]有一個3線段的構造方法(圖3),這裡通過以線代面的方式得到瞭一條自回避的折線,第n級構形的線段數是 3^{n}

看起來分形在整個構形中都是一條單連通的折線,實際最終的分形是由無窮個交點組成,分形是一個數學定義(現實中的分形,隻是數學中的近似而已),是某個圖形序列的極限,在有限步和無窮時是本質區別的。

Sierpinski墊片[1,2]的L系統代碼生成,如下:

  1. 角度:δ=60°
  2. 初始元:L
  3. 生成元1:L→+R-L-R+
  4. 生成元2:R→-L+R+L-

圖3 3線段生成元

設初始元是一個正三角形,根據下列規則構造:

① 9等分一個正三角形,變換為9個小三角形;

② 去掉中間的方向相反的3個小三角形,保留剩餘的6個小三角形;

③ 在剩餘的6個小三角形上,重復第②步。

墊片[1,3]是以上步驟地無限重復的極限結果(圖4、5)

通過相似維的定義,很容易得到:

N=6 ,相似比 r=frac{1}{3} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln6}{ln3}approx1.630929

圖4 生成元N=6圖5 墊片[1,3]

墊片[1,3]有一個6線段的構造方法(圖6),這裡通過以線代面的方式得到瞭一條自回避的折線,第n級構形的線段數是 6^{n}

L系統代碼生成,如下:

  1. 角度:δ=60°
  2. 初始元:L
  3. 生成元1:L→L+R+L–L-RR+
  4. 生成元2:R→-LL+R++R-L-R

圖6 6線段生成元

墊片[1,4]用類似方式得到(圖7),N=10 ,相似比 r=frac{1}{4}

分維 D=frac{lnN}{ln(1/r)}=frac{ln10}{ln4}approx1.660964

圖7 墊片[1,4]

墊片[1,4]有一個10線段的構造方法(圖8),這裡通過以線代面的方式得到瞭一條自回避的折線,第n級構形的線段數是 10^{n}

L系統代碼生成,如下:

  1. 角度:δ=60°
  2. 初始元:L
  3. 生成元1:L→LL+R++R-L-R-L-RRR+
  4. 生成元2:R→-LLL+R+L+R+L–L-RR

圖8 10線段生成元

一般的墊片[1,k],生成元的三角形數是 1+2+3+…+k=frac{k(k+1)}{2} ,所以N=frac{k(k+1)}{2} ,相似比 r=frac{1}{k} ,分維 D=frac{lnN}{ln(1/r)}=frac{lnfrac{k(k+1)}{2}}{lnk}

特別說明:謝爾賓斯墊片和楊輝三角形中二項式系數 tbinom {n}{k}=frac{n!}{(n-k)!k!} 的整除性是相關的,例如墊片[1,2]就是楊輝三角形中以2為模,按黑白進行著色。


2. 謝爾賓斯基地毯

設初始元是一個正方形,根據下列規則構造一個Sierpinski地毯:

① 9等分一個正方形,變換為9個小正方形;

② 去掉中間的小正方形,保留剩餘的8個小正方形;

③ 在剩餘的8個小正方形上,重復第②步。

Sierpinski地毯(3,3)是以上步驟地無限重復的極限結果(圖9、10)。在正方形對角線上點集正好是康托爾三分集。

N=8 ,相似比 r=frac{1}{3} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln8}{ln3}approx1.892789

圖9 謝爾賓斯基地毯前3步構形圖10 謝爾賓斯基地毯(3,3)

設初始元是一個正方形,根據下列規則構造一個Sierpinski地毯:

① 16等分一個正方形,變換為16個小正方形;

② 去掉中間的4個小正方形,保留剩餘的12個小正方形;

③ 在剩餘的12個小正方形上,重復第②步。

Sierpinski地毯(4,4)是以上步驟地無限重復的極限結果(圖11、12)。

N=12 ,相似比 r=frac{1}{4} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln12}{ln4}approx1.792481

圖11 前3步構形圖12 地毯(4,4)

一般的Sierpinski地毯(k,k),有:

N=k(k-1) ,相似比 r=frac{1}{k} ,分維 D=frac{lnN}{ln(1/r)}=frac{lnleft[ k(k-1) right]}{lnk}


3. 墊片的變形

在謝爾賓斯基墊片[1,2]做一個變形,由原來的3個三角形增加1個較小的三角形(圖13、14)

生成元由 3個相似比 r_{1}=frac{1}{2}的三角形 和1個相似比 r_{2}=frac{1}{4} 的三角形組成

維數方程 3r_{1}^{D}+r_{2}^{D}=3left( frac{1}{2} right)^{D}+left( frac{1}{4} right)^{D}=1

x=2^{D} ,方程變換為 x^{2}-3x-1=0 ,解得 x_{max}=frac{3+sqrt{13}}{2}

分維 D=frac{lnx_{max}}{ln2}approx1.72367896

圖13 前3步的構形圖14 墊片[1,2]變形

在謝爾賓斯基墊片[1,3]做一個變形,由原來的6個三角形增加3個較小的三角形(圖15)

生成元由 6個相似比 r_{1}=frac{1}{3}的三角形 和3個相似比 r_{2}=frac{1}{6} 的三角形組成

維數方程 6r_{1}^{D}+3r_{2}^{D}=6left( frac{1}{3} right)^{D}+3left( frac{1}{6} right)^{D}=1

分維 Dapprox1.75654476

圖15 墊片[1,3]變形

一般的Sierpinski箭頭[1,k]變形,有:

生成元由 frac{k(k+1)}{2} 個相似比 r_{1}=frac{1}{k}的三角形和frac{k(k-1)}{2} 個相似比 r_{2}=frac{1}{2k} 的三角形組成

維數方程 frac{k(k+1)}{2}left( frac{1}{k} right)^{D}+frac{k(k-1)}{2}left( frac{1}{2k} right)^{D}=1


4. 謝爾賓斯基箭頭

謝爾賓斯基箭頭分形是在圖3的基礎上演變而來的,因為折線的第n級構形始終把初始正三角形分成兩個部分,我們把折線和正三角形底部圍成的部分塗成藍色(圖16),藍色部分占整個初始三角形面積的 frac{3}{5} ,所以面積填充率 tau=frac{3sqrt{3}}{20}approx0.2598

nrightarrowinfty 時,稱為謝爾賓斯基箭頭(圖17),其邊界就是墊片[1,2]。

N=4 ,相似比 r=frac{1}{2} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln4}{ln2}=2

圖16 箭頭的第1步到第4步圖17 謝爾賓斯基箭頭

L系統代碼由ABCD四個不同的生成元組成,如下:

  1. 角度:δ=60°
  2. 初始元:A
  3. 生成元1:A→+B-[-C]A-B+
  4. 生成元2:B→-A+B+A-
  5. 生成元3:C→+D-[-C]C-D+
  6. 生成元4:D→-C+[+D]D+C-

有基礎的讀者可以驗證一下代碼,當然代碼不是唯一形式,還有其它方式的表示。

圖18 L系統畫圖

謝爾賓斯基箭頭分維 D=2 是可以填充平面的曲線。我找到另外的一種基於4線段的構造方式(圖19、20),面積填充率 tau=frac{sqrt{3}}{6}approx0.2886

L系統代碼可以非常精簡,如下:

  1. 角度:δ=120°
  2. 初始元:F
  3. 生成元:F→F[+F][-F]F

圖19 4線段生成元圖20 謝爾賓斯基箭頭

三個謝爾賓斯基箭頭組合(圖21、22),可用4個相等的同向三角形做生成元,構形中三角形不斷自相交,最終形成有面積的分形。面積填充率 tau=frac{sqrt{3}}{6}approx0.2886

圖21 三角形生成元圖22 三個箭頭組合

箭頭[1,3]是在圖6的基礎上演變而來的,因為折線的第n級構形始終把初始正三角形分成兩個部分,我們把折線和正三角形底部圍成的部分塗成棕色(圖23),棕色部分占整個初始三角形面積的 frac{5}{9} ,所以面積填充率 tau=frac{5sqrt{3}}{36}approx0.2405

nrightarrowinfty 時,分形是充滿平面的曲線(圖24),其邊界就是墊片[1,3]。

N=9 ,相似比 r=frac{1}{3} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln9}{ln3}=2

圖23 第1步到第4步圖24 箭頭[1,3]

L系統代碼就比較復雜一點,如下:

  1. 角度:δ=60°
  2. 初始元:A
  3. 生成元1:A→A+B[C]+A–A-B[-D]B+
  4. 生成元2:B→-AA+B++B-[D]A-B
  5. 生成元3:C→C+[C]D+C–[D]C-D[-D]D+
  6. 生成元4:D→-C[+C]C+[C]D++D-[D]C-D

圖25 L系統繪圖

一般的Sierpinski箭頭[1,k],有:

N=k^{2} ,相似比 r=frac{1}{k} ,分維 D=frac{lnN}{ln(1/r)}=frac{ln k^{2} }{lnk}=2