偏微分方程解法总结 matlab解偏微分方程的函数( 二 )


(2)建立 r 的关系式
假设 r(x) = r – sx (r,s>0) 当x很小时,r仍为固有增长率,s为待求系数
xm 是当前环境可以容纳的最大人口容量
(3)模型建立 指数增长模型:
(4)结论
最终得到 s 型增长曲线,x增长先快后慢,最终接近峰值 xm
该模型同样可以用于种群数量中(鱼群的捕捞要控制在 xm/2 附近,而害虫的防治要远远低于 xm / 2)
(5)举例(Matlab代码)
已知一组数据同上:
t = [1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900];
p = [3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0];
t为年份,p为对应的人口数量,单位为:百万
下面代码由两个文件构成:
%代码如下
t = [1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990];
p = [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 131.7 150.7 179.3 204.0 226.5 251.4];
t = t-1780; %整体减去1780
x0 = [150,0.15]; %待定参数x的初值(自己根据实际情况给出初值,之后再不断调整;其中第一个参数为最大人口数,第二个参数为人口增长率)
x = lsqcurvefit(‘population’,x0,t,p) %使用函数求得最终的(xm,r)
p1 = population(x,t);
plot(t 1780,p,’o’,t 1780,p1,’-r*’)
title(‘Logistic模型拟合图’)
xlabel(‘年’);
ylabel(‘人口数’);
legend(‘实际数据’,’理论数据’)
函数m文件
%population.m函数文件
function g = population(x,t)
\uNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
g = x(1)./(1 (x(1)/3.9-1)*exp(-x(2)*t));
end
作图如下:
结果如下:
%第一个参数为 Xm,第二个参数为 r
x =
337.4308 0.0257
三.总结
Malthus 和 Logistic 均为宏观模型,它们考虑的方面比较少 。而且不考虑年龄分布 。
以下的微观模型考虑年龄结构
1)Leslie差分方程模型
2)Verhulst偏微分方程模型
3)Pollard随机方程模型

推荐阅读