• 沒有找到結果。

碎形與動態系統

N/A
N/A
Protected

Academic year: 2022

Share "碎形與動態系統"

Copied!
12
0
0

加載中.... (立即查看全文)

全文

(1)

碎形與動態系統

念家興

一. 動態系統簡介

千百年來, 人類仰觀美麗的星空, 引發無 數的聯想。 更編織了許多動人的神話和星座 故事。 那時候繁星是受上帝的指使而運動、 而 閃爍。 一直到了牛頓發現萬有引力後, 加上望 遠鏡的發明使人們得以收集到更多的天文資 料, 驗證了牛頓的萬有引力理論和運動定律 同樣適用於天體的運行。

1781 年, 業餘天文學家 William Her- schel 系統地研究太陽系中行星時, 發現了 天王星 (Uranus)。 數十年後, 排除了其它行 星的影響, 天文資料顯示天王星軌道偏離了 其理論軌道達 2 秒弧之多。 J. J. Leverrier 和 J. E. Adam 因此分別預測另一顆行星 的存在。 在 1846 年 9 月 23 日 Galle 發現了 海王星 (Neptune)。 多年後, 天文學家又發 現海王星運行的偏差, 終於在1930年, Clyde Tombaugh 發現了冥王星 (Pluto)。

根據萬有引力理論和牛頓運動定律, 計 算天體的運行軌道可歸結為求解微分方程組 的問題, 也就是鼎鼎有名的多體問題 (N- body problem), 要求得這些方程組的確切

解 (close form) 一般是不可能的, Poincare 因此提出了微分方程的定性理論。 早期的動 態系統理論便是研究這些解的性質。

在這樣的思維下, 二十世紀初, 微分方 程的定性理論得到了長足的發展, Poincare 更提出了所謂的 Poincare map 將微分方程 解的性質的研究轉為函數的迭代 (iteration) 的研究。 函數迭代的另一個來源也和牛頓有 關, 那就是用牛頓法解方程式 f (x) = 0 解 的近似值 (對於 g(x) = x − f(x)/f(x) 做 迭代) 。 所以研究函數的迭代是有意義的, 也 是很實用的!

為了方便討論, 我們先定義一些術語。

首先, 本文中 fn(x) 代表函數 f (x) 的 n 次 迭代, 不是 f (x) 的 n 次方, 請讀者明察。

定義一: f : R → R 是一個函數, x ∈ R。 集合O+(x; f ) = {fn(x)|n ∈ Z, n ≥ 0} 稱為點 x 在 f 下的 前進軌道 (forward orbit)。 如果 f 具有反函數, 集合 O(x; f ) = {fn(x)|n ∈ Z, n ≤ 0} 稱為 x 在 f 下的 後退軌道 (backward orbit); 而 O(x; f ) = {fn(x)|n ∈ Z} 則稱為 x 在 f

15

(2)

下的 軌道 (orbit)。 本文只討論前進軌道, 因 此也就將它簡稱為軌道。

定義二: f : R → R 是一個函數, 點 p ∈ R 稱為 f 的一個 固定點 (fixed point), 如果 f (p) = p。

定義三: f : R → R 是一函數, 點 p ∈ R 稱為 f 的一個 週期點 (periodic point), 如果存在 n ∈ N 使得 fn(p) = p。

使得 fn(p) = p 的最小正整數 k 稱為點 p 的週期。

註: 固定點和週期點可分為吸引性 (at- tractive) 和排斥性 (repelling) 兩種。

點 p 稱為函數 f 的一個吸引性固定 點 (或週期點), 如果存在點 p 的一個鄰域 (neighborhood) U, 使得對於所有的 x ∈ U, x 的軌道趨於此固定點 (或週期軌道)。 點 p 稱為一個排斥性固定點 (或週期點, 週期為 k), 如果存在點 p 的一個鄰域 V , 使得對於所 有的 x ∈ V , 存在 n ∈ N 使得 fn(x) 6∈ V (或 fnk(x) 6∈ V )。 可以證明如果 p 是一個 固定點且 |f(p)| < 1, 則p 是個吸引性固 定點。 如果 |f(p)| > 1, 則 p 是個排斥性 固定點。 固定點和週期軌道具有最簡單的軌 道結構。 同時它們是研究動態系統時首先要 找出的軌道。 有興趣的讀者可參閱 [1, 8, 9, 14]。

就函數迭代而言, 我們關心的問題是定 義域中的每一個點 x 的軌道結構及其迭代行 為: 當 n 趨於無限大時, fn(x) 是趨於某一 個固定點, 或是趨於無限大, 還是另有不同的 行為?

我們先來考慮幾個函數迭代的例子。

例子1: 考慮函數 f (x) = x/2, 則 f2(x) = f (f (x)) = (1/2)2x。 利用數學 歸納法, 我們得到 fn(x) = (1/2)nx。 同 時 x = 0 是 f (x) 唯一的固定點 (解方程 式f (x) = x)。 對任何實數 x ∈ R, 我們發現 fn(x) → 0, 當 n → ∞。 此固定點 x = 0 就是一個吸引性固定點。

例子2: 考慮函數 f (x) = 2x。 同樣地 x = 0 也是一個固定點。 利用數學歸納法, 我 們可以推得 fn(x) = 2nx。 所以

fn(x) :

→ +∞ x > 0

→ −∞ x < 0 當n → ∞。

= 0 x = 0

此固定點 x = 0 就是一個排斥性固定點。

以上的兩個例子, fn(x) 都可以確切地 表示出來。 因此可以完整地描述出所有軌道 的結構。 但是一般而言, fn(x) 的通式是表 示不出來的。 不但如此, 僅僅是計算前幾次的 迭代已是頗為繁雜。 不信的話, 請就 f (x) = 2x(1 − x) 寫出 f2(x), f3(x), . . ., f10(x)。

有趣的是, 雖然 fn(x) 的通式表示不出來, 我 們卻可以利用所謂的圖形分析法 (graphical analysis) 來瞭解 f (x) = 2x(1 − x) 的所有 軌道的結構。 單變數函數 f : R → R 的 迭代可以在其圖形上進行, 其方法如下: 給 定 a ∈ R, 在座標平面上, 畫出 y = x 及 y = f (x) 的圖形。 從點 (a, a) 畫一垂直線 交 y = f (x) 於 (a, f (a)), 再從點 (a, f (a)) 畫一水平線交 y = x 於 (f (a), f (a))。 重覆 相同的過程便可在直線 y = x 上依次畫出 (a, a) , (f (a), f (a)), (f2(a), f2(a)), . . .,

(3)

(fn(a), fn(a)), . . .。(如圖一) 如此, 我們便 可從直線 y = x 上的這些點得到 a 的軌道 的直觀認知。

y=x

y=f(x)

(f(a), f(a))

(f(f(a)), f(f(a)))

(a, a) 0

0 0.2

0.2 0.4

0.4 0.6

0.6 0.8

0.8 1

1 1.2

1.2 1.4

1.4 1.6

1.6 1.8

1.8 2

2

圖一: 圖形分析法

0 0 0.2

0.2 0.4

0.4 0.5

0.5 0.6

0.6 0.8

0.8 1

1 0.1

0.1 0.3

0.3 0.7

0.7 0.9

0.9

圖二: 函數 的圖形分析

例子3: 函數 f (x) = 2x(1 − x) 有兩

個固定點: x = 0, x = 1/2。 利用圖形分析 法 (圖二), 我們發現

(i) x < 0 時, fn(x) → −∞, 當 n → ∞。

(ii) x > 1 時, f2(x) < 0, 再根據 (i), fn(x) → −∞, 當 n → ∞。

(iii) x ∈ (0, 1) 時, fn(x) → 1/2, 當 n →

∞。

(iv) x = 0 或 x = 1, fn(x) = 0, 當 n ≥ 1。

以上的觀察都可嚴格地證明。 有興趣的讀者 請參閱 [1,8]。

到目前為止, 我們所遇到的軌道結構都 很單純。 下一個例子, 則揭露了另一種複雜的 軌道結構。

例子4: 函數 f (x) = 5x(1 − x) 有兩 個固定點: x = 0, x = 4/5。 因為 (0, 1) 區間內有一子區間被對應到 (1, ∞), 因此圖 形分析法顯示大部份的點的軌道似乎都趨於

−∞, 請讀者自己試試看。 但顯然有些點的軌 道不會趨於 −∞。 例如: x = 0, x = 4/5, x = 1, 它們的軌道都一直留在 [0, 1] 區間內。

因此, 我們將注意力集中在集合 B = {x ∈ [0, 1]|∀n ∈ N, fn(x) ∈ [0, 1]}。 首先要提 醒大家 f (B) ⊆ B。 令人訝異的是, 集合B竟 然與大名鼎鼎的 Cantor set 是拓樸同構的。

而 Cantor set 也正是古典碎形的代表。 利用 符號動態學 (symbolic dynamics) 的方法, 我們可以證明下列三個事實:

(i) 集合B中有無限多個週期點, 且在B中是 稠密的。

(ii) 對於B中任何兩個開集合U、V (子集拓 樸), 存在 k ∈ N 使得 fk(U) ∩ V 6=。 (此性質稱為 topological transitivity)。

(4)

(iii) 對起始值是敏感的 (sensitive depen- dence on initial condition)。 也就是說, 存在一個正數 δ > 0, 對於任一點 x ∈ B, 在 x 的任何一個鄰域 (neighborhood) U 內, 存在 y ∈ U 和一個自然數 n∈N 使得|fn(x)−fn(y)| > δ。

由此三個現象, 讀者諸君應能感受到, 在 集合 B 中的軌道結構非常混亂。 事實上, De- vaney 便是用這三個現象來定義所謂的混沌 (chaos)。 確切的說, 函數 f : B → B 在集 合 B 上是混沌的 (chaotic), 如果上述三個 現象成立。

註: 數學中的混沌一詞最先出現於 Li 和 Yorke 的論文 [10]中。 該論文證明了一個有 趣的事實: 閉區間 J 上的連續函數 f : J

→ J, 如果有週期3的週期點, 則它在 J 中 有任意週期的週期點。 而數學家 Sarkovskii 在 1960 年代, 也曾對一維函數的週期點的出 現順序做過詳盡而完整的描述 [8,14]。

Devaney 對混沌的定義中的三個條件 並不獨立。 在一維的情況下, 條件 (iii) 可由 條件 (i) 和 (ii) 推得, 見 [2]。 再加上適當 的前提, 條件 (i), (iii) 都可由 (ii) 推得, 見 [17]。

例子 3 和 4, 是函數族 f (x) = ax(1 − x), a > 1, 的兩個特例。 Robert May 在 1976年的論文 [11]中介紹了這個簡單的函數 族的複雜動態行為, 引起許多數學家的關注 與投入。 同時也獲得了許多重要的結果, 並且 瞭解到從有序到混沌的一種機制。 這個函數 族也成為學習動態系統的入門例子。 關於一

維動態系統的理論相當完整, 有興趣的讀者 請參閱 [6]。

註: Yorke在 [1]中利用 Liapunov exponent 的觀念定義了所謂的混沌軌道 (chaotic orbit)。 Devaney 的定義具有整體 的直觀, 而 Yorke 的定義則具有方便進行電 腦實驗以檢測混沌軌道的好處。

由以上例子, 我們知道大部分函數的 n 次迭代都是無法確切地寫出它們的通式。 恰 如大多微分方程的通解不可得一樣, 因此數 學家轉而尋求解的性質, 也就是所謂的定性 理論。 離散型動態系統研究的便是函數迭代 的軌跡的結構。

二. 動態系統中的碎形

大家都知道, 實係數多項式的根不盡然 都是實數, 牛頓法也可用來解複變數函數的 根的問題。 因此, 複動態系統 (complex dy- namics) 的研究也就很有意義了。 在牛頓法 中, 必須要先猜一個起始值 (initial guess), 數值分析中的理論告訴我們只要起始值與解 夠接近, 牛頓法保證能收歛到該解。 那麼會收 歛的起始值所成的集合會是一個什麼樣的集 合呢?

著名英國數學家 Arthur Cayley(1821 -1895) 在 1879 年的論文 [5]中, 就曾提出過 這樣的問題: 那些起始值會分別收斂到 z3 − 1 = 0 的三個根 1、 (−1 ±√

3i)/2。 也就是 要考慮函數 g(z) = z − (z3− 1)/(3z2) 的

(5)

迭代的軌道結構。 深受這個問題的影響, 法國 數學家 Gaston Julia(1893-1978) 開始了他 對複變數函數動態系統的研究。 用 A1, A2, A3 分別代表會收歛到 1, (−1 + √

3i)/2, (−1 − √

3i)/2 的起始值的集合。 Julia 能 夠證明集合A1, A2, A3 具有共同的邊界集 (boundary)。 可是什麼樣的三個平面上的非 空子集合會有相同的邊界呢? 集合 A1, A2, A3 到底長相如何? 在那個沒有電腦繪圖的 黑白年代, 這一切都是很難想像的。 此共同邊 界集, 便是現在所謂的函數 g(z) 的 Julia set。 Julia 的研究結果早在1918年便已發表, 然而因為時局的動盪不安和電腦科技尚未萌 芽, 一直到了 1970 年代末期才受到世人的重 視。 Julia set 遇到了電腦繪圖就好像白雪公 主遇到了白馬王子, 一下子就被吻醒了。 從此 世界變得多采多姿。 而我們也終於能看到集 合 A1, A2, A3的長相。 此集合正是一個碎形。

事實上, 絕大多數的 Julia set 都是碎形。

複變數函數的 Julia set 的正式定義涉 及所謂的正規函數族 (normal family)。 為 了避免過多的術語惹人厭煩, 我們就不在這 裡詳述。 有興趣的讀者可參閱 [3, 4, 12, 13]。

所幸, 我們感興趣的複變數函數族 f (z) = z2+ c 有下列兩個性質:

(1) 在一個有限的範圍以外的所有點, 它們的 軌道都會趨於無限大。

(2) 集合 B = {z ∈ C|z 的軌道是有界 的}6= , 也就是一切有界軌道所成的集 合是非空的。

可以證明, 函數 f (z) = z2+ c 的 Julia set, 記作 J(f ), 就等於集合 B 的邊界集, ∂B。 因 此 J(f ) 是一個非空有界的集合。 這些性質 也提供了一個用電腦繪圖製作 Julia set 的 方法。 我們先來看一個簡單的例子。

例子5: 考慮函數 f (z) = z2, 則 z = 0, 1是 f 的所有固定點。 可以簡單證明: 當 n → ∞ 時,

|fn(z)| = |z|n

0 |z| < 1

∞ |z| > 1 1 |z| = 1 所以集合 B = {z ∈ C||z| ≤ 1}, 也就是 閉的單位圓盤。 所以 J(f ) = {z ∈ C||z| = 1} = 單位圓。 函數 f在單位圓上的迭代行為 相當複雜, 事實上容易證明 f 在 J(f )上是 混沌的。

這個例子中的 Julia set 結構非常簡單。

其它的 Julia set 可就必須藉助電腦繪圖了。

我們在此介紹兩種繪製 J(f ) 的方法。

方法一: 繪製集合 B

特性: 簡單省時但圖形檔案所佔記憶較 多。

步驟:

(1) 大致決定 Julia set 的範圍, 比如說長方 形 A = {z|a ≤ Re z ≤b, c≤Im z ≤d}。

(2) 將長方形 A 細分成 n2 個網格, n 的大 小視所須的解析度而定。 (一般而言, n 取 不超過 1000)。

(3) 對網格內的每個格點 z 進行迭代, 如果 對所有的 k ≤ N, fk(z) ∈ A, 則畫出 此點。 不然, 則捨棄此點。 對下一個格點

(6)

重複步驟 (3)。 (一般而言, N 取不超過 100)。

如此得到的圖形便是集合 B, 其邊界就是 J(f )。

方法二: 繪製 Julia set(描邊法) 特性: 計算量較大, 圖形檔案較小, J(f ) 一目了然。

步驟:

(1) (2) 同方法一。

(3) 對網格內的每一個格點z及其鄰近的格點 進行迭代。 如果對於所有的 k ≤ N, fk(z) ∈ A。 且其鄰近格點有不同之行 為, 則畫出此點。 不然, 則對下 一個格點 重複步驟 (3)。

如此得到的圖形便是 J(f )。 注意, 格點若為 內點, 則它有 4 個鄰近格點分別位於該點的 上、 下、 左、 右。 所以此方法在計算量上大約 增加 4 倍。

註: 當 |c| < 2 時, A 可以取作 {z ∈ C| − 2 ≤ Re z ≤ 2, 2, −2 ≤ Im z ≤ 2}。

在方法一中, 也可用使得 fk(z) 6∈ A 的最小 k 值來對點 z 著色, 其結果便是常見的美侖 美煥的圖形。 選擇恰當的範圍還可以對 Julia set 做局部的放大。 由此, 我們可以觀察 Ju- lia set 一些更細緻的結構。

圖三便是利用方法一所繪製的 Julia sets。

1 .5

1.5

1.5 1.5

(a)

1 .5

1 .5

1.5 1.5

(b)

2 2

2

2

(c)

圖三: (a) 函數 f (z) = z2− 0.5 + 0.5i 的 Julia set, (b) 函數 f (z) = z2 + i 的 Julia set, (c) 函數 f (z) = z2 + 2.001 的 Julia set。

(7)

接下來我們討論 f (z) = z2+ c 的 Ju- lia sets J(f )的性質。 對它們的證明有興趣 的讀者可參閱 [3, 4, 8]。

性質 (1): J(f ) 6=且是不可數 (un- countable) 無限多。

性質 (2): J(f ) 在 f 下是完全不變的 (completely invariant), 也就是說 f (J(f )

⊆ J(f) 且 f−1(J(f )) ⊆ J(f)。

性質 (3): f : J(f ) → J(f) 是混沌 的。(Devaney 的定義)

性質 (4): 若 z0 是 J(f ) 中的任一點, U 是 z0 的任一鄰域, 則 Sn=1fn(U) 包含 所有的複數, 除了一個可能的例外點 (excep- tional point)。 另外, J(f ) 也是f 所有的排 斥性週期點所成集合的閉包 (closure)。

性質 (5): 如果|c| > 2, 則對任何複數 z 且 |z| > |c|, fn(z) → ∞ 當 n → ∞。

性質(6): 如果 |c| < 14, 則 J(f ) 是一 不自相交的封閉曲線。

性質(7): 如果 |c| 夠大, 則 J(f) 是一 個 Cantor set。

性質 (8): 如果當 n → ∞, fn(0) 不 趨近無限大, 則所有有界軌道所成的集合B是 連通的。 如果 fn(0) → ∞ 當n → ∞, 則集 合B是由無限多個成分 (component) 所構 成 (例如 Cantor set)。

註: 對於定義在里曼球面 (= C ∪{∞}) 上的有理函數 R(x)/Q(x), 如果 deg(R) ≥ 2 則性質 (1)、(2)、(3)、(4) 也同樣成立 [3], 其 中 deg(R) = max{ deg(P ), deg(Q)}。 有 趣的是, 數學家 Lattes 在 1918 年證明了函

數R(z) = (z2 + 1)2/(4z(z2 − 1)) 的 Ju- lia set 是整個里曼球面。 另一個例子是, 數 學家 Misiurewicz 在 1981 年證明了指數函 數f (z) = ez的 Julia set 是整個複數平面C。

在性質 (6) 和 (7) 的兩種截然不同的現象之 間, 有所謂的樹狀 (dendrite) 結構的 Julia set, 作為其間的過渡現象 (圖三 (b))。 性質 (8) 說明奇異點 (critical point)z = 0的軌 道結構與 Julia set 的結構間有密切關係。 下 個單元的主題—Mandelbrot set 就是以性 質 (8) 為基礎來定義的。

三. Mandelbrot Set

B. Mandelbrot 生於 1924 年的波蘭, 1936 年時全家移民法國。 他的研究工作深受 Julia 的影響與啟發, 在碎形方面的卓越貢 獻, 為他贏得了碎形幾何之父的美名。 1979 年, Mandelbrot借電腦之助首次製作出所謂 的 Mandelbrot set。 之後, 此圖形在數以萬 計的個人電腦上被複製、 被讚嘆。 人們首次有 機會親眼目睹這個被稱為數學中最美麗同時 也是最複雜的圖形。 底下我們就來說明到底 什麼是 Mandelbrot set。

在上個單元性質 (8) 中, 我們知道 f (z) = z2 + c 的奇異點 z = 0 的軌道與 J(f ) 有密切關係。 Mandelbrot set, M, 就 定義為:

M ={c ∈ C|f(z) = z2 = c 的奇異點軌道 不趨於無限大}

={c∈C|J(f) 是連通的}(根據性質(8))

(8)

如果 |c| > 2, 則 |f(0)| = |c|, 因此

|f(c)| = |f2(0)| = |c||c + 1| > |c|。 根據 性質 (5), fn(0) = fn−2(f (c)) → ∞ 當 n → ∞。 所以 Mandelbrot set 是個有界的 集合且包含於集合 {c ∈ C||c| ≤ 2}。 根據 此事實, Mandelbrot set 的繪製也就很容易 了。 方法如下:

步驟 (1) 將正方形 A = {c ∈ C||c| ≤ 2} 細分成 n2 個網格 (一般而言, n 取不超 過 1000)。 (2) 依序對網格內的格點, 以起始 值 z = c 進行迭代。 如果對所有 k ≤ N 都 有fk(c) ∈ A, 這裏 f(z) = z2+ c, 則畫出 此點。 不然則對下一個格點重複步驟 (2)。(一 般而言, N 取不超過 100)

如此便得到了 Mandelbrot set 的圖 形。 在附錄中, 我們附上兩個以 C 語言所 寫的程式, 一個繪製 Julia set, 另一個繪製 Mandelbort set。 請各位讀者就不同的c值 和範圍, 進行一些自己的數學實驗。 選擇恰當 的範圍還可以對 Julia set 和 Mandelbrot set 做細部的放大。 由此, 我們可以觀察 Ju- lia set 和 Mandelbrot set 一些更細緻的結 構。

0.5

2

1 .25 1.25

(a)

0 0.7

0 .4

1 .1

(b)

圖四: (a) Mandelbrot Set, (b) 是 (a) 中方框的放大。

除了美不勝收之外, Mandelbrot set, M, 有許多令人訝異的性質。 首先, A.

Douady 和 J. H. Hubbard [7] 於 1982 年證明了集合 M 是連通的。 接著 1991 年, 日本年輕數學家 M. Shishikura [15]證明了 (M的邊界集) 的碎形維度是 2。 然後 Col- orado 州立大學計算機科學系研究生 Dave Boll 在 1991 年為了確定集合 M 的最大區 塊和第二大區塊是否相切於一點 c = −0.75, 對 c = −0.75 + ai 記錄下a 與逃離給定區 域所需的迭次數 N(a) 間之關係, 結果得到 下表:

a 疊代次數N(a)

0.1 33

0.01 315

0.001 3143

0.0001 31417

0.00001 314160

0.000001 3141593

0.0000001 31415928

(9)

Boll發現: aN(a) → π當a → 0。 接 著他將注意力集中在M的第一大區塊的尖點 c = 0.25 處, 對c = 0.25 + a記錄a值 與N(a)的關係, 並列表如下:

a 疊代次數N(a)

0.1 8

0.01 30

0.001 97

0.0001 312

0.00001 991

0.000001 3140

0.0000001 9933

0.00000001 31414

0.000000001 99344

0.0000000001 314157 0.00000000001 993457 0.000000000001 3141625

這一次似乎有 √a·N(a) → π 當 a → 0。 在 c = 0.25處的現象, 之前已被發現過, 也曾 有過直觀的解釋。 不過尚無數學上的嚴格證 明。 至於在 c = −0.75處的現象則不但沒有 直觀的解釋, 更別談嚴格的證明了。 最後, 如 果 c0 ∈ M 且是一個所謂的 Misiurewicz point, 則在 c0 點附近的 Mandelbort set 和 f (z) = z2 + c0 的 Julia set具有所 謂的漸近自我相似性 (asymptotically self- similarity), 有興趣的讀者請參閱 [16]。

四. 結語

實數動態系統與複數動態系統充滿了許 多有趣的課題, 應用的範圍更涉及許多不同 學門。 使用的理論和方法也遍及數學中許多 不同分支。 碎形與混沌更是二十世紀數學中 兩個新興且重要的觀念。 本文旨在拋磚引玉, 希望能引起讀者對它們的興趣與投入, 讓我

們數學人口更加蓬勃, 讓台灣的數學水平更 上層樓。

五. 附錄

本附錄中收錄兩個程式, Julia.c 和 Mandelbort.c。 程式執行後會將結果分別存 在資料檔 Julia.dat 和 Mandelbort.dat。 使 用者可利用一些繪圖軟體將這些資料畫在電 腦螢幕上。 讀者如果熟悉 Turbo C 或 Bor- land C, 更大可輕易修改程式直接呼叫內建 繪圖指令將點畫在螢幕上, 不必再存資料檔。

程式 Julia.c 繪製 fill-inJulia set。 使 用者必需輸入 6 個實數 c1、c2、xmin、ymin、

xmax 及 ymax, 其中 c=c1+c2i、(xmin, ymin) 和 (xmax, ymax) 分別是選定的 長方形的左下角及右上角的座標。 例如, 欲 繪製在{z ∈ C| − 1.5 ≤ Re z ≤ 1.5,

−1.2 ≤ Im z ≤ 1.2} 範圍內 f(z) = z2+ 0.1 + 0.2i 的 Julia set 則輸入 0.1 0.2

−1.5 −1.2 1.5 1.2 (c1=0.1、c2=0.2、xmin

=-1.5、ymin =-1.2、xmax =1.5 及 ymax

=1.2)。

/********* Julia.c *******/

#include <stdio.h>

#include <math.h>

void main() {

int i, j, k, n=200, N=30, PLOT=1;

double c1, c2, x0, y0, x1, y1, x2, y2, xmin, ymin, xmax, ymax, hx, hy;

(10)

FILE *fp,*fopen();

fp=fopen("Julia.dat","w");

printf("Input c1 and c2 for the parameter c=c1+c2*i, \n");

printf("and xmin ymin xmax ymax.

Total six numbers. \n");

scanf("%lf %lf %lf %lf %lf %lf",

&c1, &c2, &xmin, &ymin,

&xmax, &ymax);

hx = (xmax - xmin)/ (1.0*n) ; hy = (ymax - ymin)/ (1.0*n) ;

for (i=0; i< n; i++){

x0 = xmin + i*hx;

for (j=0; j< n; j++){

x1 = x0;

y1 = y0 = ymin+ j*hy;

for (k=0;k < N ;k++){

x2 = x1*x1 - y1*y1 + c1;

y2 = 2*x1*y1 +c2;

if ( sqrt(x2*x2+y2*y2) > 2){

PLOT=0;

break;

}

x1 = x2;

y1 = y2;

}

if (PLOT == 1) fprintf(fp,"%6.5f

%6.5f \n",x0, y0);

else PLOT = 1;

} }

fclose(fp);

}

程式 Mandelbort.c 繪製 Mandelbort set。 使用者必需輸入4個實數 c1min、c2min

、c1max 及 c2max。 (c1min, c2min) 和 (c1max, c2max) 分別是選定長方形的左下 角和右上角的座標。 例如, 欲繪製在 {c ∈ C| − 2 ≤ Re c ≤ 1.5, −1 ≤ Im c ≤ 1}

範圍內的 Mandelbort set, 則輸入 −2 −1 1.5 1 (c1min = −2、c2min = − 1、c1max

= 1.5、c2max = 1)。

/********* Mandelbrot.c *******/

/* Draw Mandelbrot set in a specified region. */

#include <stdio.h>

#include <math.h>

#define ITER 50

void main() {

int i, j, k, n=300, PLOT=1;

double c1, c2, c1min, c2min, c1max, c2max, x0, y0, x1, y1, hstep, vstep;

FILE *fp,*fopen();

fp=fopen("Mandelbrot.dat","w");

printf("Input the ranges of c1 and c2: c1min, c2min, c1max and c2max. \n");

(11)

scanf("%lf %lf %lf %lf",&c1min,

&c2min, &c1max, &c2max);

hstep = (c1max - c1min)/ (1.0*n) ; vstep = (c2max - c2min)/ (1.0*n);

for (k=0;k< n;k++){

for (j=0;j< n;j++){

c1 = c1min + k*hstep;

c2 = c2min + j*vstep;

x0 = c1;

y0 = c2;

for (i=0;i < ITER ;i++){

x1 = x0*x0 - y0*y0 + c1;

y1 = 2*x0*y0 +c2;

if ( x1*x1+y1*y1 > 4) { PLOT = 0;

break;

}

x0 = x1;

y0 = y1;

}

if (PLOT == 1) fprintf(fp,"%5.4f

%5.4f\n",c1, c2);

PLOT = 1;

} }

fclose(fp);

}

六. 參考文獻

1. K. T. Alligood, T. D. Sauer, and J.

A. Yorke [1997] Chaos :an introduction

to dynamical systems. Springer Verlag:

New York.

2. J. Banks, J. Brooks, G. Cairns, G.

Davis, and P. Stacey [1992] On De- vaney’s Definition of Chaos. Amer.

Math. Monthly, 99, 332-334.

3. A. F. Beardon [1991] Iteration of ra- tional functions :complex analytic dy- namical systems. Springer Verlag: New York.

4. L. Carleson, T. W. Gamelin [1993]

Complex dynamics. Springer Verlag:

New York.

5. A. Cayley [1879] The Newton-Fourier imaginary problem, Amer. Jour. of Math. 2.

6. P. Collet and J.-P. Eckmann [1980] Iter- ated maps of the interval as dynamical systems. Birkhauser, Boston.

7. A. Douady and J. H. Hubbard [1982]

Iterated des polynomes quadratiques complexes, CRAS Paris 294, 123-126.

8. R. L. Devaney [1989] An introduc- tion to chaotic dynamical systems.

Addison-Wesley, Reading, MA.

9. A. Katok, B. Hasselblatt [1995] Intro- duction to the modern theory of dy- namical systems. Cambridge Univer- sity Press: Cambridge.

10. T-Y Li and J. A. Yorke [1975] Period Three Implies Chaos. Amer. Math.

Monthly, 82, 985-992.

11. R. May [1976] Simple mathematical models with very complicated dynami- cal behavior. Nature 261, 459-467.

12. J. Milnor [2000] Dynamics in One Com- plex Variable, 2nd edi. Vieweg: Braun- schweig.

(12)

13. H-O Peitgen, H. Jurgens, and D. Saupe [1992] Chaos and Fractals: New Fron- tiers in Science. New York: Springer- Verlag.

14. C. Robinson [1995] Dynamical sys- tems: stability, symbolic dynamics, and chaos. CRC Press: Boca Raton.

15. M. Shishikura [1998] The Hausdorff di- mension of the boundary of the Man- delbrot set and Julia Sets. Annals of

Math., 147, 225-267.

16. L. Tan [1990] Similarity between the Mandelbrot set and Julia sets, Com- mun. Math. Phys., 134, 587-617.

17. M. Vellekoop and R. Berglund [1994]

On Intervals, Transitivity = Chaos.

Amer. Math. Monthly 101, 353-355.

—本文作者任教於靜宜大學應數系

參考文獻

相關文件

OFDM 系統中結合 VBLAST 及 Viterbi 解碼器,其中由吾人所發展出來的 Pre-ordering

Learning how to anticipate the qualitative behavior of the time-evolution of linear, weakly nonlinear and strongly nonlinear dynamical

中文摘要 台灣高速鐵路此次引進執世界軌道技術牛耳的日本與德國 Rheda 2000 版式軌道系

The works used the chaotic characteris- tics of hydrological system (such as rainfall and runoff) to build the non-linear model based on the concept of

Four types of data are selected and the complexity is white noise, daily rainfall, daily streamflow and Lorenz attractor in descending order.. Only the white noise is apparently

信樺文化. 01

卓越的天文學家們曾在月球軌道外觀察到許多彗星的生 長與毀滅,另外還有兩顆在 1572 年和 1604

都會型步道 120 新生公園 南港公園 至善公園 青年公園 大安森林公園 中間型步道 120 大屯山系 七星山系 五指山系 南港山系 二格山系