藍橋杯決賽真題——數量週期

複雜現象背後的推動力,可能是極其簡單的原理。科學的目標之一就是發現紛繁複雜的自然現象背後的簡單法則。愛因斯坦的相對論是這方面的典範例證。

    很早的時候,生物學家觀察某區域某種昆蟲的數量(稱爲蟲口數)之逐年變化規律,就十分迷惑:有的時候是逐漸增多達到一個平衡值。有的時候在兩個數字間週期跳動。有的時候則進入一片混亂,類似隨機數字一樣變化(稱爲混沌現象)。

    慢慢地,人們從數學中更清晰地觀察到了這一現象,並因此開創了:符號動力學、非線性動力學等研究領域。

    一個著名的蟲口數目簡化模型如下:

    x' = x * (1 - x) * r

    這裏,x  x' r 都是浮點數。

    其中,x 表示當年的蟲口數,x' 表示下一年的蟲口數。它們的取值範圍在 0 與 1 之間,實際上表示的是:蟲口的總數佔環境所能支持的最大數量的比率。

    r是常數(環境參數),r的取值範圍在 [0,4]。

    令人驚訝的是:這個簡單的迭代公式有着不同尋常的神祕性質!

    一般來說,多次迭代後,蟲口數的穩定模式與x的初始值無關,而與 r 有關!

    例如:無論x初始值是多少,當 r =2.5 的時候,x 多次迭代後會趨向於 0.6。

    而當 r = 3.2 的時候,x 的值會趨向於在 0.799與 0.513 之間週期性擺動。

    那麼,r = 3.62 的時候,你觀察到有什麼週期現象發生嗎?

 

思路:在0到1的範圍內選一個值賦給x,r=3.62。具體程序如下。將所得結果用excel表格做出散點圖,可得出結論:x的值[0.3,0.6]和[0.8,0.9]兩個區間內隨機性變化。

publicclassMain

{

    publicstaticvoid main(String args[])

    {

       double x = 0.3;

       double r = 3.62;

       f(x,r);      

    }

    staticintcount = 100;  // 執行100次退出

    publicstaticvoid f(double x,double r)

    {

       if(count<=0) return;

       x= x * (1 - x) * r;

       System.out.println(x);

       count--;

       f(x,r);

    }  

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章