• 沒有找到結果。

碎形與動態系統

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.

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

參考文獻

相關文件

Kepler, 1571∼1630) 出版了重要巨著 「新天文學」, 距今已有四百年, 書中對火星運行的軌道, 提出了至精至簡的描述。 火星繞著太陽運轉, 其軌道並非是長久以來所 認為的正圓,

在「火星」與「木星」軌道之間,存在甚多的行星。但與一般行星不一樣的是,它們 都十分地小,最大的「穀神星」 ,直徑不過 940

《智圓佛學思想研究》、《圓教的危 機與譜系的再生 ── 宋代天台宗山家山 外之爭研究》、《中國天台宗通史》(合 著)等。另在《哲學與文化》等研究

對正多面體的較系統的研究始於古希臘的數學家畢達哥拉斯。 他發現除了埃及人知道的三 種正多面體外, 還有正十二面體及正二十面體。

在全天 88 個星座中,面積排行第十五。人馬座中亮於 5.5 等的恆星有 65 顆,最亮 星為箕宿三(人馬座 ε),視星等為 1.85。每年 7 月 7 日子夜人馬座中心經過上中

我從三歲起便開始學習鋼琴,至今已有八年了,除了兩年前生病住院 那三天,以及之後休養那一星期外,我差不多每天都與鋼琴為伍

全球定位系統(GPS)是由二十多顆人造衞星組成的衞星導航系統。每顆人造衞星傳 送特定的訊號和軌道資料,讓 GPS 裝置(如流動電話、手錶和汽車)計算它們的精 確位置。每部

有的,我們全系 17 位教師和系學會為大家拍攝了一行銷與流通管理系 的介紹影片,讓大家了解行銷系,介紹影片可至 youtube