跳轉到內容

分形/蜘蛛

來自華夏公益教科書,開放世界開放書籍

演算法

[編輯 | 編輯原始碼]

蜘蛛演算法:

  • John H. Hubbard 和 Dierk Schleicher 的論文[1]
  • Yuval Fisher 的原始論文[2]

Yuval Fisher 的原始程式 Spider:[3]

  • 製作於 1992 年
  • 用 C 語言編寫
  • XView 庫 - 來自 Sun Microsystems 的小部件工具包[4]

Claude Heiland-Allen 的版本[5]

該程式

  • 使用 Thurston 演算法的變體計算 C 在 M 的有理外部角度的值。換句話說:從落在臨界點的外部射線的角度計算後臨界有限多項式。例如,輸入 1/6 並輸出 c = i,用於二次情況(注意 1/6 在乘以 2 模 1 下的動力學與 i 在 z2+i 下的軌道之間存在某種關係)。
  • 使用柯比 1/4 定理繪製引數(曼德爾布羅特集合)和動力學空間(朱利亞集合)影像,如《分形影像的科學》中所述。程式碼的這部分主要由 Marc Parmet 編寫,
  • 在朱利亞集合上繪製外部角度。

“如果你想理解曼德爾布羅特集合與朱利亞集合動力學之間的關係,這個程式適合你。”

自述檔案

[編輯 | 編輯原始碼]

原始自述檔案

This directory includes souces and executable for a program
which implements a version of what some people call Thurston's algorithm. 
The program also contains an implementation (using code written
largely by Marc Parmet) of the 1/4 theorem
method of drawing parameter and dynamical space images, as
in The Science of Fractal Images, appendix D.
It also includes a version of a paper on the subject, based
on my thesis.

The program is fully interactive, allowing specification of 
angle(s), iteration of the algorithm until it converges (to a 
polynomial), plotting of the Julia set for the polynomial, and 
plotting of the spiders (and/or external rays of the Julia
sets) which are the data set used in the algorithm. There is on
line help (if your keyboard has a HELP button). There is a 
brief step by step on line tutorial, also. 
The program uses the XView toolkit, under X.

The program takes as input an angle (or set of angles) and
gives as output a polynomial whose dynamics in the complex plane
is determined by the dynamics of multiplication of the angle
by the degree of the desired polynomial modulo 1. For example, 
suppose we choose 1/6 as an angle and wish to find a quadratic
polynomial (d = 2), then 
1/6 -> d*1/6 = 2*1/6 = 1/3 -> 2*2*1/6 = 2/3 -> 2*2*2*1/6 
= 4/3 (modulo 1) = 1/3. It is periodic of period 2 after 
1 step.

Pressing the New 2 button, entering 1/6 as a fraction, and pressing
the Set Repeating Expansion Button, will set up the algorithm. Pressing
LIFT or Many Lifts will iterate the algorithm; The Goings On window will
show the C value of the polynomial z^d + C, which will converge to 
C = i = sqrt(-1). The main window will show some lines, which also
converge to something... p(z) = z^2 + i has the property that 
the critical value i has the same dynamics as 1/6, 
i -> p(i)  = 1-i -> p(i-1) = -i -> p(-i) = 1-i. That is, it is perdiodic
of period two after one step.

Yuval Fisher

November 17, 1992

如何執行它?

[編輯 | 編輯原始碼]

一種方法是使用 Claude Heiland-Allen 為 i386 編譯的二進位制版本[6]

git clone http://code.mathr.co.uk/spider.git

需要 32 位版本的 XView:[7]

# ubuntu
sudo dpkg—add-architecture i386
sudo apt-get update
sudo apt-get install xviewg:i386

然後建立一個 s.sh 檔案:[8]

 #!/bin/bash
 export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH
 ./s.bin  -fn fixed $*

並執行它

./s.sh

或者可以編譯程式並在虛擬機器上執行

參考文獻

[編輯 | 編輯原始碼]
  1. John H. Hubbard 和 Dierk Schleicher 的蜘蛛演算法
  2. Yuval Fisher 的原始論文
  3. Yuval Fisher 的程式 Spider
  4. 維基百科中的 XView
  5. Spider 程式,Claude Heiland-Allen 的版本
  6. Claude Heiland-Allen 為 i386 編譯的二進位制版本
  7. 復活 Spidersv - Claude Heiland-Allen 的帖子
  8. Steam:載入共享庫時出錯:libGL.so.1:錯誤的 ELF 類:ELFCLASS64
華夏公益教科書