離散模型-北太天元學(xué)習(xí)18
離散模型-北太天元學(xué)習(xí)18
我們前面講到一個(gè)例子,是描述雞蛋的溫度隨著時(shí)間的變化的,我們讓T_n表示雞蛋在第n個(gè)時(shí)刻 的溫度, 通過遞推關(guān)系 T_{n+1} = f( T_n ) 來建立模型。這是一個(gè)離散模型。在很多情況下,我們定期跟蹤發(fā)生的事情,例如每個(gè)小時(shí),每天或每年。將時(shí)間視為連續(xù)變量可能沒有額外的好處。離散模型主要由遞歸關(guān)系和一些模型參數(shù)組成。
我們今天先以人口模型為例來講講離散模型,其實(shí)這里的人口可以是其他生物的數(shù)量,如草原上的兔子,池塘里的魚,某個(gè)培養(yǎng)皿中的細(xì)菌或者病毒。我們先統(tǒng)一的說成人口。 ?
例如,設(shè)x_n是某個(gè)時(shí)間n的人口數(shù)量。遞歸關(guān)系可以以如下形式的方程給出
x_n=f(x_{n?1},x_{n?2},…,x_{1},x_{0}).
也就是說,在時(shí)間n,x_n的是所有先前所有時(shí)間的人口數(shù)量的函數(shù)。
形式為x_n=f(x_{n?1})的簡單方程被認(rèn)為是一階遞推關(guān)系,因?yàn)樗灰蕾囉谏弦粋€(gè)時(shí)間的值。 形式為x_n=f(x_{n?1},x_{n?2}) 的序列被認(rèn)為是二階遞歸關(guān)系。
如果一個(gè)模型使用一個(gè)或多個(gè)遞推關(guān)系來描述某些現(xiàn)象,則稱其為離散動力系統(tǒng)。
首先,我們研究了一個(gè)基本的人口增長模型。假設(shè)人口在下一個(gè)時(shí)間間隔的增長率與當(dāng)前人口成正比,這是一階關(guān)系。讓x_n是時(shí)間n的人口,?按照上面的假設(shè),我們就有
????? x_{n+1}?x_{n}=r*x_{n},
其中r是是一個(gè)常數(shù),稱為增長率。左側(cè)的x_{n+1}?x_{n}表示在在時(shí)間n到時(shí)間 (n+1)這一個(gè)時(shí)間單位的人口的增加,我們看到它與當(dāng)前人口x_{n}成比例。
對x_{n+1}與x_n的遞推關(guān)系就是如下的模型
x_{n+1} = x_n + r* x_n=(1+r)* x_n.
這有時(shí)被稱為指數(shù)增長模型,或馬爾薩斯模型,以托馬斯·馬爾薩斯(1766-1834)的名字命名。
注意: 當(dāng)|1+r|<1 時(shí), 這個(gè)模型給出的人口指數(shù)是隨著時(shí)間是指數(shù)衰減的;
當(dāng)1+r>1時(shí),這個(gè)模型給出的人口隨著時(shí)間是指數(shù)增長的。
通常情況下,如果種群數(shù)量增加到某一個(gè)數(shù)以上,這個(gè)模型就不再適用了, 例如,一個(gè)國家的人口接近一定的最大容量,增長率就會放緩。邏輯斯蒂克模型描述了 增長率隨人口接近最大容量。設(shè)K是環(huán)境支持人口的最大容量 (這有時(shí)被稱為人口的承載能力)。我們假設(shè)當(dāng)人口x與K相比相對較小時(shí), 人口呈指數(shù)級增長,并且隨著人口數(shù)量向承載能力的方向增加,增長放緩。 離散邏輯斯蒂克模型是
x_{n+1} = x_n + r* x_n * ( 1 -? x_n / K)
其中K是承載能力,x_n是時(shí)間n時(shí)的人口。注意,當(dāng)x_n與K相比小時(shí),x_n/K將接近于零, 這意味著x_{n+1}≈x_n+r*x_n。這意味著當(dāng)人口較少時(shí),邏輯斯蒂克模型接近指數(shù)增長模型。 另一方面,當(dāng)x_n接近K時(shí),x_{n}/K≈1,因此x_{n+1}≈x_{n}+r*x_{n}(1-1) = x_n。 換句話說,隨著人口接近承載能力K,人口是相對恒定的。
邏輯斯蒂克增長方程的另一種寫法
x_{n+1}=(1+r)x_{n}? r * K * ( x_{n} )^2 .
雖然仍然是一階,但在這種形式下,更明顯的是,邏輯斯蒂克增長是一種非線性遞推關(guān)系,
因?yàn)樗雾?xiàng)? r * K * ( x_{n} )^2.
如何確定模型參數(shù),如增長率r, 承載能力K?
對于指數(shù)增長模型,? 根據(jù)數(shù)據(jù) x_{0}, x_{1}, 可以確定r:
具體來說就是根據(jù) x_{1} = (1+r)*x_{0}, 得到 r = x_{1} /x_{0} - 1.
對于邏輯斯蒂克模型,根據(jù)數(shù)據(jù) x_{0}, x_{1}, x_{2} , 可以確定 r, K ?
x_{1}=(1+r)x_{0}? r * K * ( x_{0} )^2, ?
x_{2}=(1+r)x_{1}? r * K * ( x_{1} )^2
聯(lián)立可以求解可得 r 和 K.
我們現(xiàn)在引入一個(gè)新的詞語: 態(tài)(state), 大家去百度搜索,你會發(fā)現(xiàn)在量子力學(xué)等很多學(xué)
科都在使用這個(gè)詞語。我這里只是簡單把他用成描述某個(gè)研究對象的狀態(tài), 例如我要研究的
是一個(gè)質(zhì)點(diǎn),它在時(shí)間 t 的狀態(tài)可以用? x_t =? [q_t; p_t] 來表示, 這里 q_t 表示
時(shí)間 t 時(shí)的該質(zhì)點(diǎn)的位置, p_t 表示 時(shí)間 t 時(shí)該質(zhì)點(diǎn)的 動量。 這里 [q_t; p_t] 表示
一個(gè)列向量, q_t 和 p_t 之間的分號是北太天元 把q_t 和 p_t 做豎直方向的連接。
因此,這里的 態(tài)(state) 就是一個(gè)向量。
再舉一個(gè)態(tài)的例子: 我們僅僅考慮在草原上生活著兩種動物 兔子 和 狼, 我們要研究這
兩個(gè)物種構(gòu)成的一個(gè)系統(tǒng),這個(gè)系統(tǒng)在時(shí)間n的態(tài)(state) 可以用這個(gè)兩個(gè)物種的數(shù)量
組成的向量來表示, 也就是? ?
?? x_t = [? 兔_t ; 狼_t ]
其中 兔_t 表示 t 時(shí)刻的兔子的數(shù)量, 狼_t 表示時(shí)間t時(shí)狼的數(shù)量。 ?
下面給出一個(gè)簡單的捕食者-被捕食者(predator-prey)離散模型:
?? 兔_{t+1}? = (1+r) * 兔_{t}? -? f * 狼_{t} * 兔_{t}
?? 狼_{t+1}? = (1+w) * 狼_{t}? +? g * 狼_{t} * 兔_{t}
這里出現(xiàn)了四個(gè)模型參數(shù), r 表示兔子的自然生長率,w是狼的自然生長率,
?f 和 g 則是反應(yīng) 狼兔相逢 對兔 和 狼 數(shù)量的影響。這些參數(shù)的確定可以通過
觀測兩個(gè)時(shí)間的態(tài)[兔_0; 狼_0], [兔_1; 狼_1]來確定。?
下面我們給出北太天元寫的一個(gè)包含子函數(shù)的腳本計(jì)算兔狼數(shù)量隨時(shí)間變化:
%狼是捕食者,兔子是被捕食者
%
%
%
clf;
close all;
clear all;
x = [ 1000; 1];
r = 0.01; f = 1e-4; w = 2e-3; g = 3e-5;
para = [ r; w; f; g];
x1 = pp_step(x,para);
x2 = pp_step(x1,para);
A = [ x(1),? 0,??? -x(1)*x(2), 0;
????? 0,???? x(2), 0,????????? x(1)*x(2);
???? x1(1),? 0,??? -x1(1)*x1(2), 0;
????? 0,???? x1(2), 0,????????? x1(1)*x1(2) ] ;
b = [ x1 - x;
?? ???? x2 - x1];
para = A\b; % 模型參數(shù)求解
N = 100;
p = zeros(2,N+1);
p(:,1) = x;
for n=1:N
?? ?p(:,n+1) = pp_step(p(:,n), para); ?
end
subplot(1,2,1)
plot(0:N, p(1,:),'r-','LineWidth', 3)
title('兔子')
subplot(1,2,2)
plot(0:N, 100*p(2,:),'b-','LineWidth', 3)
title('狼')
function x1 = pp_step(x, para)
?? ?[r, w, f, g] =? deal(para(1), para(2), para(3), para(4));
?? ?x1 = x;
?? ?x1(1) = (1+r)*x(1) - f*x(2)*x(1);
?? ?x1(2) = (1+w)*x(2) + g*x(2)*x(1);
end

離散模型還有一個(gè)非常重要的應(yīng)用,是谷歌(goole)搜索的網(wǎng)頁排名模型(page rank model),
這個(gè)值得單獨(dú)講一次,因此我們留在下一節(jié)。