具有複雜行為的簡單模型,即混沌
技術

具有複雜行為的簡單模型,即混沌

計算機是一種越來越多地被科學家用來揭開大自然精心隱藏的秘密的工具。 建模與實驗和理論一起,正在成為研究世界的第三種方式。

三年前,我們在西里西亞大學啟動了一個將電腦方法融入教育的計畫。 因此,我們創造了各種極具吸引力的教材,使探索許多主題變得更容易、更深入。 選擇的主要工具是 Python,它與可用科學庫的強大功能相結合,可能是使用方程式、圖像或數據進行「電腦實驗」的最佳解決方案。 成熟的桌面環境最有趣的實作之一是 Sage [2]。 它是電腦代數系統與 Python 語言的開放集成,並且還允許您立即開始使用 Web 瀏覽器以及透過雲端服務 [3] 或互動式運算伺服器上的可能存取選項之一來開始遊戲。本文的版本基於[ 4]。

生態中的混沌

澳洲科學家羅伯特·梅早年在牛津大學研究人口動態的理論方面。 他在《自然》雜誌上發表了一篇論文,總結了自己的工作,論文標題頗具挑釁性:「具有高度複雜動力學的簡單數學模型」。 多年來,這篇論文已成為理論生態學領域被引用最多的著作之一。 是什麼激發了人們對這項工作如此濃厚的興趣?

種群動態的經典問題是在給定物種當前狀態的情況下計算其未來的種群數量。 從數學上講,最簡單的生態系統是其中一代人的生命持續一個季節的生態系統。 一個很好的例子是一群在一個季節內經歷完全變態的昆蟲,例如蝴蝶。 時間自然地被劃分為與人口生命週期相對應的離散時期2。 因此,描述這樣一個生態系的方程式自然具有所謂的離散時間,即t = 1,2,3…。 除其他事項外,羅伯特·梅也參與了此類動態。 在他的推理中,他將生態系統簡化為單一物種,其族群數量是前一年族群數量的二次函數。 這個模型從哪裡來?

描述族群演化的最簡單的離散方程式是線性模型:

其中 Ni 是第 i 個季節的人口,Ni + 1 描述下一個季節的人口。 很容易看出,這樣的方程式可以導致三種情況。 當a=1時,演化不會改變族群規模,<1導致滅絕,a>1的情況意味著族群無限成長。 這將導致自然界的不平衡。 由於自然界中的一切都是有限的,因此調整這個方程式以考慮有限的資源是有意義的。 想像一下害蟲每年吃掉相同數量的穀物。 如果昆蟲的數量與它們能夠繁殖的食物量相比很少,它們就可以以完全繁殖能力繁殖,這在數學上由常數a > 1 決定。然而,隨著害蟲數量的增加,食物將變得稀缺,繁殖能力也會下降。 在一種危急的情況下,人們可以想像,如此多的昆蟲誕生了,以至於它們在繁殖之前就吃掉了所有的穀物,然後整個種群就死亡了。 Verhulst 於 1838 年首次提出了一個考慮到食物獲取有限的影響的模型。在該模型中,增長率不是恆定的,而是取決於人口狀況:

成長率 a 和 Ni 之間的關係應具有以下性質:如果人口增加,則成長率應下降,因為取得食物很困難。 當然,有很多函數具有此屬性:這些是自上而下的函數。 Verhulst 提出以下關係:

其中a>0和常數K>0表徵食物資源,稱為環境容量。 K 的變化如何影響人口成長率? 如果 K 增加,Ni/K 就會減少。 反過來,這導致1-Ni/K增加,這意味著它增加。 這意味著成長率在增加,人口成長速度更快。 因此,我們假設成長率如方程式(1)所示變化,從而修改先前的模型(3)。 然後我們得到方程

這個方程式可以寫成遞迴方程

其中 xi = Ni / K 和 xi + 1 = Ni + 1 / K 分別表示在時間 i 和時間 i + 1 處重新調整後的人口數量。方程式(5)稱為邏輯方程式。

透過如此小的修改,我們的模型似乎很容易分析。 讓我們來看看。 讓我們考慮參數 a = 5 的方程式 (0.5),從初始總體 x0 = 0.45 開始。 使用遞歸方程式(5)可以得到連續的總體值:

x1= 斧頭0(1 p0)

x2= 斧頭1(1 p1)

x3= 斧頭2(1 p2)

為了方便(6)中的計算,我們可以使用以下程式(它是用Python編寫的,可以在Sage平台上運行等)。我們建議您閱讀 http://icse.us 這本書。edu.pl/ e-book .),模擬我們的模型:

a = 0.5 x = 0.45 對於範圍 (10) 內的 i:      x = a*x*(1–x)      列印 x

我們計算 xi 的連續值並注意到它們趨於零。 透過對上面的程式碼進行實驗,也很容易看出,無論 x0 的初始值如何,這都是正確的。 這意味著人口不斷死亡。

在分析的第二階段,我們將參數 a 的值增加到 ae (1,3) 範圍內的任意值。 事實證明,那麼序列 xi 就會達到某個數字 x * > 0。從生態角度解釋這一點,我們可以說人口規模固定在一定水平,不會隨季節變化。 值得注意的是,x * 的值不依賴初始狀態x0。 這是生態系力求穩定的結果——族群數量根據自身的養活能力調整其規模。 從數學上來說,他們說系統趨於穩定的固定點,即滿足等式 x = f(x)(這表示下一時刻的狀態與前一刻的狀態相同)。 使用 Sage,我們可以透過繪製人口與時間的關係圖,以圖形方式視覺化這種演變。

這種穩定效果是研究人員預料到的,如果不是意外的話,邏輯方程式(5)也不會引起太多關注。 事實證明,對於某些參數值,模型(5)的行為是無法預測的。 首先,有周期性和多周期狀態。 其次,隨著每個時間步,族群的變化不均勻,就像隨機移動一樣。 第三,對初始條件有很大的敏感度:兩個幾乎無法區分的初始條件導致完全不同的族群演化。 所有這些特徵都是類似於完全隨機運動的行為特徵,被稱為確定性混沌。

讓我們來探索一下這個屬性吧!

首先,我們設定參數值a = 3.2,看看演化過程。 令人驚訝的是,這次人口數量不是達到一個值,而是達到兩個值,每隔一個季節就會連續出現一次。 然而,事實證明,問題並沒有就此結束。 當 a = 4 時,系統不再可預測。 讓我們看看圖(2)或使用電腦自己產生一個數字序列。 結果似乎是純粹隨機的,對於略有不同的起始群體來說有很大不同。 然而,細心的讀者應該反對。 一個由確定性方程式1所描述的系統,即使是一個非常簡單的系統,怎麼會表現得不可預測呢? 也許。

該系統的一個特點是其對初始條件的顯著敏感性。 從兩個相差百萬分之一的初始條件開始就足夠了,只需幾步,我們就會得到完全不同的總體值。 我們在電腦上檢查一下:

a = 4.0

x = 0.123 u=0.123+0.000001 PKC = [] 對於範圍 (25) 內的 i: x = a*x*(1-x) u = a*u*(1-u) 列印 x、y

這是確定性演化的簡單模型。 但這種決定論是具有欺騙性的,它只是數學決定論。 從實踐的角度來看,系統的行為是不可預測的,因為我們永遠無法在數學上指定初始條件。 事實上,一切都是以一定的精度確定的:每個測量設備都有一定的精度,這可能會導致具有混沌特性的確定性系統的實際不可預測性。 一個例子是天氣預報模型,它總是表現出混沌的特性。 這就是為什麼長期天氣預報如此糟糕的原因。

混沌系統的分析極其困難。 然而,借助計算機模擬,我們可以很容易地解決許多混沌之謎。 讓我們畫出所謂的分叉圖,在上面我們沿著橫坐標軸放置參數a的值,沿著縱坐標軸放置邏輯映射的穩定不動點。 我們通過同時模擬大量系統並繪製多次採樣時間後的值來獲得穩定點。 您可能會猜到,這需要大量計算。 讓我們嘗試“仔細”處理以下值:

將 numpy 導入為 np 尼克斯 = 300 那 = 500 х = np.linspace(0,1,Nx) х = х + np.zeros((Na,Nx)) h = np.轉置 (h) a=np.linspace(1,4,Na) a=a+np.zeros((Nx,Na)) 對於範圍 (100) 內的 i: x=a*x*(1-x) pt = [[a_,x_] 對於 a_,x_ 在 zip(a.展平(),x.展平())] 點(pt,大小= 1,figsize =(7,5))

我們最終應該得到類似圖 (3) 的結果。 如何解讀這張圖呢? 例如,當參數 a = 3.3 時,我們有 2 個穩定的固定點(每個第二季的人口規模相同)。 然而,對於參數a = 3.5,我們有4 個常數點(每第四個季節,族群數量相同),而對於參數a = 3.56,我們有8 個常數點(每第八個季節,族群數量相同) 。 但對於參數 a≈3.57,我們有無限多個固定點(整體規模不會重複,並且會以不可預測的方式改變)。 然而,有了電腦程序,我們就可以改變參數a的範圍,並用我們的雙手探索這個圖的無限幾何結構。

這只是冰山一角。 關於這個方程式已經寫了數千篇科學論文,但它仍然隱藏著它的秘密。 借助電腦建模,即使不求助於高等數學,您也可以成為非線性動力學世界的先驅。 我們邀請您閱讀線上版本,其中包含有關邏輯方程式許多有趣屬性的詳細資訊以及將它們視覺化的有趣方法。

1 確定性法則是未來由初始狀態唯一決定的法則。 其反義詞是機率定律。 2 在數學中,「離散」是指從特定的可數集合中取得值。 與“連續”相反。

添加評論