天天看點

藍橋杯2012決賽JAVA大學組決賽第一題個人了解

        複雜現象背後的推動力,可能是極其簡單的原理。科學的目标之一就是發現紛繁複雜的自然現象背後的簡單法則。愛因斯坦的相對論是這方面的典範例證。 很早的時候,生物學家觀察某區域某種昆蟲的數量(稱為蟲口數)之逐年變化規律,就十分迷惑:有的時候是逐漸增多達到一個平衡值。有的時候在兩個數字間周期跳動。 有的時候則進入一片混亂,類似随機數字一樣變化(稱為混沌現象)。 慢慢地,人們從數學中更清晰地觀察到了這一現象,并是以開創了:符号動力學、非線性動力學等研究領域。 一個著名的蟲口數目簡化模型如下: 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 的時候,你觀察到有什麼周期現象發生嗎? 不需要送出源代碼,隻要寫出你的結論即可! 答案寫在:“解答.txt”中,不要寫在這裡。

import java.util.Random;
public class First {
	 double x1=0,r=3.62;
	 long result=0;
	 int run (double x,int j){
		if(j==50) return 0;									//遞歸50次
		 x1 = x * (1 - x) * r;
		 result=Math.round(x1*10);
		 for(int num=0;num<result;num++){
			 System.out.print('█');							//将結果用圖形█表示出來
		 }System.out.println();
		run(x1,j+1);
		return 0;
	}
	public static void main(String[] args) {
		double i=new Random().nextDouble();
		new First().run(i,0);
	}
}
           

運作結果:

███

███████

████████

██████

████████

█████

█████████

███

████████

██████

████████

█████

█████████

███

████████

██████

█████████

████

█████████

████

████████

█████

█████████

███

████████

██████

████████

█████

█████████

███

████████

██████

█████████

████

█████████

████

████████

█████

█████████

███

████████

██████

████████

█████

█████████

███

████████

██████

█████████

████

可以看出 呈不穩定波形狀,但是有一個規律是每隔一年蟲口的數量會特别高,然後下一年就會降低,但不會低于3個,是以可以總結一下:

當r=3.62時,x會在0.25到0.95之間以每隔一年的規律增加跟減少。也就是說如果今年蟲口數非常多,那麼下一年必然會減少,再隔一年會再次增加,按這個規律循環。

這隻是我個人觀點,希望大家多多發表自己的意見,多多交流。