花草茁壯於鍵盤之間——藏身數學公式中的那些美妙植物
引子
不知不覺間,李雷和韓梅梅同窗已有五年了。
李雷記性很差,經常忘帶作業(其實是忘了做,忘帶作業受到的懲罰會小點——小編注)。但他清楚地記得,那是一個秋意乍現的早晨——樹葉翠色漸退,但都不願意落葉歸根,還在同秋風做著最後的搏鬥;蟬鳴鳥叫若隱若現,想來也為假期收尾而忿忿不平;就連李雷最喜歡的荷塘也淪為一潭死水,夏日裡的蓮花齊放蜻蜓點水總有謝幕的一天。李雷撿起一塊小石子信手扔入荷塘,荷塘不情願地泛起兩層漣漪以示回禮,便沒了下文。李雷低下頭,神情間頗為沮喪。
不過沮喪的主要原因,是李雷「忘帶」暑假作業了。
李雷不會想到,當他再次抬起頭時,他的心裡從此不再波瀾不驚。正是那麼一瞬間,猝不及防的四目相對,嫣然百媚的笑顏令李雷如痴如醉,「巧笑倩兮,美目盼兮」、「為伊消得人憔悴」、「窈窕淑女,君子好逑」甚至「十年生死兩茫茫」這種一輩子都記不住的詩句如同火山爆發般噴涌而出。直到明眸巧笑隨著一身純白的輕紗漸行漸遠,李雷方才反應過來,新學期開始了,該去報到了。
這位闖入李雷心窩的少女,正是五年前剛從外校轉來的韓梅梅。李雷暗戀韓梅梅已有五年,應該有所行動了,因為李雷得知韓梅梅心中的白馬王子——吳彥煮也就快轉到他們學校了。知己知彼百戰不殆,李雷偷偷跑去廁所照鏡子,琢磨經反覆斟酌推敲對,他認為自己顏值優勢似乎並不那麼明顯:
失之東隅收之桑榆,好在李雷知道韓梅梅很喜歡植物,投其所好定可打動芳心!不過父母把自己的零花錢控制的很嚴,哪裡有那麼多錢去買花花草草啊。於是李雷找到了小編尋求良策。
古人「讀書破萬卷,下筆如有神」,到李雷這裡就變成了「遊戲過萬關,鍵盤賽機槍」,是個不折不扣的遊戲高手。小編推斷,李雷的電腦性能定然不差,於是小編建議李雷用電腦自動畫出植物的圖案,打動韓梅梅芳心。小編送給李雷的第一種方案,叫做L系統,它是計算語言學的一大成果。
下面我們來具體看看什麼是L系統。
第一部分 L系統——計算語言學的結晶
L系統是一種形式語法(Formal Grammar,也就是可以用 1.一個由符號構成的集合;2.數學規則表示出來的語法,是所有計算機語言的基礎語法),它得名於生物學家Aristid Lindenmayer。它被廣泛地用於模擬各種生物的生長過程,例如樹木、藻類、酵母菌等等。
語法怎麼會和生物的成長過程扯上關係呢?事實上作為形式語法的一個特例,L系統非常簡單,只需要幾種符號,一個數學關係式,就可以依靠迭代演算法撰出驚世巨著,例如假設符號集合為S={ F , [ , ] , + , - }(每個符號的意思見下文,符號的如何選擇完全由讀者決定),數學規則只有一個——每一次運算把字元"F 變為字元串"FF+[+F-F]-[-F+F]"。經過數次運算(迭代)以後,我們得到了個長字元串,如果把這個長字元串翻譯為圖像,一株類似於石松的植物遍誕生了:
GIF/228K
石松是現存最古老的維管植物
具體代碼和解釋如下(小編用的python):
# -*- coding: utf-8 -*-
fromturtleimport*#需要引入的包
t,d,n =22,12,3#樹枝分叉角度,樹枝長度和分叉深度
F="FF+[+F-F]-[-F+F]"#語法形式,決定了每個樹枝的形狀
stack=[]#騰一個棧出來以儲存圖像
deff(n):# 定義遞歸函數
ifn>: L(F,n)
defL(s,n):# s是字元串,n是整數
pensize(n*2)
forcins:# c取遍s裡面的所有字元
ifc== - : lt(t)#減號代表左轉t度
elifc== + : rt(t)#加號代表右轉t度
elifc== F : f(n-1);fd(d)#遞歸併生成長度為d的樹枝
#把當前畫筆位置、角度和加(push)入棧中:
elifc== [ : stack.append((pos(),heading(),n))
elifc== ] :#結束分岔
((i,j),h,p)=stack.pop()#讀取上一個做圖點的信息
penup()#把畫筆提起來(移動時不做圖)
goto(i,j)#畫筆前往上一個做圖點
seth(h)#設置指針朝向
pensize(p)#線段
pendown()#放下畫筆(準備開始做圖)
setup(480,400);speed();ht();penup();goto(-30,-200);pendown();seth(90)
color( green , black )#設置顏色
f(n)#開始迭代做圖!
李雷看到這麼一株茁壯生長的植物,不由得心花路放。絕知此事要躬行,李雷把符號集合修改成了S={ X , F , [ , ] , + , - },把數學規則修改為X->"FF-[[X]+X]+F[+FX]-X"和F->F,然後他得到了一顆蘋果樹(當然還要重新調整顏色設定):
GIF/416K
由數學規則生成的蘋果樹,迭代次數為n=4
有興趣的讀者可以嘗試自己調整符號集合和數學規則,可以得到許多不同的奇妙植物的圖像,例如:
這幾棵樹都是用很簡單的L系統演算法得到的。圖片參考自文獻[3]
甚至三維植物:
圖片來自文獻[3]
值得一提的是,形式語法(L系統就是形式語法的一個例子)是美國社會學家喬姆斯基(Noam Chomsky)在1950年代提出的,他創立這個概念的初衷是為了更好地研究自然語言(人類語言)。或許喬姆斯基沒想到,他的理論會成為人工智慧領域的奠基石。當時美蘇正在爭霸,因此美國人自然希望能把前蘇聯的科研論文批量翻譯成英文;這時候又適逢計算機誕生不久,人們便琢磨著用計算機處理這個龐大的任務,一個全新交叉學科——計算語言學(Computational Linguistic)就這麼橫空出世了。如今各種在線翻譯工具興起,便是計算語言學的功勞。
計算語言學的例子——用遞歸神經網路(RNN)實現的AI寫詩,引用自文獻[10]。儘管詩句套路較為單一,但已有以假亂真的功力了。
在數學家眼中,形式語法無非就是自由群(Free Group)——符號集合本質上就自由群的生成元(Generator),運算規則則可以通過生成元之間的「乘法運算」來描述。利用抽象代數中的結論,人們就可以大概推算出不同的語法結構會產生怎樣不同的結果了。
第二部分 葉序(Phyllotaxis)是怎樣煉成的
李雷興高采烈地一步跨進教室,卻發現韓梅梅已經在和吳彥煮竊竊私語了。李雷一把推開吳彥煮,把自己的傑作展示給韓梅梅看,韓梅梅又驚又喜,已然被李雷所打動。然而尚未等到芳心遷都,吳彥煮有條不地地秀出了自己模擬的向日葵:
GIF/875K
其中每個圓圈代表一顆葵瓜子。吳彥煮的向日葵不盡惟妙惟肖,而且瓜子還變著色調,這自然令韓梅梅怦然心動。李雷不服,嚷嚷說吳彥煮這是花拳繡腿,哪裡有自己的蘋果樹有內涵。吳彥煮微微一笑,拿出上面這張動圖的代碼:
# -*- coding: utf-8 -*-
frommathimport*
fromturtleimport*
defdrawPhy(t, angle, size, d, petalStart):
pen(outline=1, pencolor="black", fillcolor="orange")
phi = angle * ( pi /180.0)
xcenter =0.0; ycenter =0.0
petalSize =60#花瓣大小
forninrange (, t):
r = d * sqrt(n)#半徑大小
theta = n * phi#旋轉角度
x = r * cos(theta) + xcenter
y = r * sin(theta) + ycenter
fillcolor((255, theta%255, (n*4)%255))
up();setpos(x, y);down()
seth(n * angle)
ifn > petalStart-1:#開始畫花瓣
drawPetal(x, y, petalSize)
else: stamp()#否則繼續畫瓜子
defdrawPetal(x, y, ps):#畫菱形的花瓣
up();setpos(x, y);down()#初始化指針
begin_fill()
pen(outline=1, pencolor="black", fillcolor="yellow")
rt(20);fd(ps);lt(40);fd(ps);lt(140);fd(ps);lt(40);fd(ps);up()
end_fill()
colormode(255);setup(500,500);shape("circle");speed();ht()
drawPhy(240,137.508,3,7,200)
exitonclick()
這段代碼裡面其實大有學問,因為如果我們把迭代函數中的角度從137.508度變為其他角度,得到的模擬結果就不再滿足葵瓜子的分布圖案了。植物學家們又把葵瓜子呈現出的螺旋形排列圖案叫做螺旋葉序(Spiral Phyllotaxis)圖案。這種螺旋圖案之所以能專門冠以一個專有名詞,是因為它的分布規律可以用黃金螺線(Golden Spiral)描述[4]。
黃金分割點又是斐波拉契數列相鄰項的漸近比值,而葵瓜子的排列規律可以用斐波拉契數列描述
離中心最近的兩顆葵瓜子之間的夾角大約呈137.5度,和黃金分割點相關
事實上葉序圖案在植物界乃至整個生物界都是普遍存在的。由於葉序常常與黃金分割點相伴相隨,因此黃金分割點便被賦予了美麗而又神秘的色彩。
形形色色的葉序圖案
那麼葉序圖案是怎樣產生的呢?這個問題還沒有統一的答案,人們甚至還沒完全弄明白向日葵螺旋葉序的產生機理。有人用能量觀點(使葵瓜子之間的排斥勢能最大)來解釋[6],也有人用熵的極小化原理(基於諾貝爾化學獎得主,伊利亞?普里高津提出的耗散結構理論)來解釋[7],也有人通過生長素(Auxin)在植物器官中的分布狀況來建模等等[8]。不過關於植物圖案的生成機制,始終缺乏一種像由阿蘭?圖靈提出的,簡單卻又本質的數學模型[9](圖靈提出的模型能較為本質地解釋動物圖案的生成,這是兩個非線性發展方程,小編在《一文帶你走進全球頂尖應用數學家的世界!》中已有介紹)。
第三部分 山重水複疑無路?
李雷天生是個樂觀主義者,經此一敗後他只失望了五分鐘,便又找到小編幫忙。小編也發現吳彥煮並不簡單,若這樣下去李雷幾乎毫無勝算,必須另尋奇策。
於是小編又塞給李雷一個新的錦囊。李雷回家打開一看,裡面只有六個大字:迭代函數系統(Iterated Function System)。
迭代函數系統的概念其實很簡單,就是定義域和值域都是N維歐氏空間的M個收縮函數(Contraction,也就是任意兩點經過函數作用後,它們的距離變短了),我們把這些函數記作f_1,f_2,...,f_M。迭代函數系統的不簡單之處在於,該系統總是唯一存在一個不變集合(Fixed Set)S,使得:
該結論證明並不難,本質上就是泛函分析中壓縮映照定理(Contraction Mapping Theorem,又叫Banach不動點定理)的推廣。有興趣的讀者可參考文獻[11]的第三節。
不變集合S長什麼樣呢?假設歐氏空間是2維平面,收縮函數有四個:
那麼得到的不變集合S如下(採用Matlab做圖,在單位正方形內隨機取了20萬個點,每個點迭代20次):
GIF/381K
這就是蕨類植物的葉片
稍微修改一下參數,可以得到各種蕨類植物的葉片:
圖片來自文獻[12]
我們知道,蕨類植物是很初等的植物,器官只有根莖葉。有沒有辦法用迭代函數系統畫出高等一些的植物呢?事實上如果我們只需要把收縮函數的個數改成六個,並適當選取參數,一顆漂亮的參天大樹就躍然於屏幕上了:
這張圖由10萬個迭代點生成
在數學上,函數迭代系統是分形(Fractal)的一個特例。分形可謂是數學與藝術的結晶,許多由計算機生成的圖像都依靠分形演算法,限於篇幅這裡不再展開介紹。此外,物理學家眼中的分形是自相似特性(Self Similarity)的一個體現,自相似性一個著名的例子就是海岸線悖倫(Coastline Paradox):
英國海岸線的長度有多長:用越細的尺度測量海岸線,得到的總長度越大,直到無窮
小編認為,蕨類植物的葉片之所以呈自相似結構,就是為了儘可能使其葉片表面積最大化,以便於葉片的光合作用。小編會在以後的文章中進一步介紹自相似性。
結語
看了許多奇特的植物模擬圖像,相比讀者們已經大開眼界了。一飽眼福之後我們來回味一下這篇文章介紹的幾種植物建模方法,大致總結如下:
有經驗的讀者可以從上述總結中看出,在數學上這三種建模方法都屬於離散動力系統(Discrete Dynamical System)的範疇。離散動力系統用函數(或運算元)的迭代代替了連續動力系統中對時間求導的過程,因而使得離散和連續動力系統的分析手段和結論存在很大差異。能不能提出一個「離散版本」的圖靈模型來描述植物的形態發生過程?離散和連續動力系統這兩兄弟最終能否得以相聚?這正是小編所樂見的結果。
---------------華麗麗的分割線---------------
聽完了小編的講解,李雷躊躇滿志,胸有成竹地找韓梅梅去了。讀者們認為,結果到底會如何呢(以下統計純屬玩笑)?
參考文獻:
[1] John Hutchins:Retrospect and prospect in computer-based translation. Proceedings of MT Summit VII, 1999.
[2] Aristid Lindenmayer,Mathematical models for cellular interaction in development, 1968.
[3] P. Prusinkiewicz and A. Lindenmayer,Algorithmic Beauty of Plants, Springer 1996.
[4] https://en.wikipedia.org/wiki/Golden_spiral
[5] S. Douady and Y. Couder,Phyllotaxis as a Physical Self-Organized Growth Process, Phys. Rev. Lett. 1992.
[6] LS. Levitov,Energetic Approach to Phyllotaxis. Europhys. Lett 1991.
[7] R. Jean,A systemic model of growth in botanometry, Journal of Theoretical Biology 1980.
[8] RS. Smith,The role of Auxin Transport in Plant Patterning Mechanisms. PLoS Biol 2008.
[9] A. Turing,The chemical basis of morphogenesis, 1952.
[10] http://www.aclweb.org/anthology/D14-1074
[11] John Hutchinson, Fractals and Self-Similarity, Indiana Univ. Math. J. 30 No. 5, 1981.
[12] T. Darmanto et. al,Metamorphic Animation of 3D Fern-like Fractal Images based on a Family of Transitional 3D IFS Code Approach, 2013 ICoICT.
中國生物技術網誠邀生物領域科學家在我們的平台上,發表和介紹國內外原創的科研成果。
本公眾號由中國科學院微生物研究所信息中心承辦
微信公眾號:中國生物技術網
※裴鋼院士:要研發出更多幹細胞藥品和服務,幫助更多患者維護健康,延長壽命
※國際首例幹細胞新技術治療早衰症女孩臨床最新進展
※好消息!STEMdiff造血試劑盒
※裴鋼院士:幹細胞具有改變每個人的命運和整個人類社會的潛力
※Adv.Mater.:通過調節分子間相互作用實現可見光激發的超長有機磷光
TAG:幹細胞 |