微分方程式で数学モデルを作ろう 1章

1章の人口についてmatlabで書いてみました。

function dNdt=population_model(t,N);
r=[0.307 0.3134];
N_inf=197;
dNdt=[r(1)*N(1);r(2)*N(2)*(1-N(2)/N_inf)];


 [t,N]=ode45(@population_model,[0,14],[3.9,3.9]);
T=[0:1:14];
real_N=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2];
figure;
plot(t,N(:,1),'r',t,N(:,2),'g');
title('人口予測値と実測値/マルサス(赤)、ヴェアフルスト(緑)、実測値(青)');
xlabel('時間(1790〜*10年)');
ylabel('人口(*10^6)');
axis([0,15,0,300]);
hold on;
plot(T,real_N,'b*')
hold off;


マルサスの仮定は単位時間・単位人口当たりの人口変化数\frac{dN}{dt\times N}がγ(=一定)ということ。
一方、ヴェアフルストの仮定は単位時間・単位人口当たりの人口変化数が\gamma\times(1-N/N_{\infty})としていること。
この(1-N/N_{\infty})は「未利用の人口資源の上限に対する比」を表しているらしい。
この項の由来はこちらhttp://www.phys.chuo-u.ac.jp/public/tag/kougi/2002/suurikaiseki/print2.pdfにのっています。(藤井さんの日記から見つけました)
ヴェアフルストのモデルも1930年以降は合わなくなっているそうだが、原因は2通りあると思った。
1つは今日の最後にあったように、N_{\infty}が何らかの要因で増加した可能性。
もう1つはそもそも(1-N/N_{\infty})の修正が芳しくなかった可能性。
プロットから見るに確かに
\frac{d}{dN}\{\frac{dN}{dt\times N}\}=-C
と見えなくもないけど、実は違った関数形であらわしたほうがいいとか。
もしくは、\frac{dN}{dt\times N}はNよりも他の変数への依存が大きかったとか。

そうすると、このロジスティック式に他の変数を持ち出してくる必要が出てくる。
山田先生が冒頭に仰ったように、そうなるとどの変数を捨ててきたか、そこからどの変数を拾ってくるのかがとても重要になってくるようで。