数学建模——微分方程

在前面三章中通过线性规划、整数规划、非线性规划三方面对规划问题有了一个初步的认识。

线性规划:https://blog.csdn.net/qq_51564046/article/details/118568020?spm=1001.2014.3001.5501

整数规划:https://blog.csdn.net/qq_51564046/article/details/118571195?spm=1001.2014.3001.5501

非线性规划:https://blog.csdn.net/qq_51564046/article/details/118576469?spm=1001.2014.3001.5501

今天我们进入新的篇章——微分方程

适用范围:当直接导出变量之间的函数关系比较困难,但导出包含未知函数的导数或微分关系比较容易时。

一、人口模型(Malthus模型和Logistic模型)

1.马尔萨斯模型:

基本假设:人口增长率r是常数。

N(t+\Delta t)-N(t)=r\Delta N(t)

\frac{dN}{dt}=rN

N(t)=N_{0}e^{r(t-t_{0}))}

显著特点:种群数量翻一番的时间是固定的。故T=\frac{ln2}{r}

模型总结:适用于群体总数不太大时合理。人口的净增长率不可能保持常数,与人口数量有关。

马尔萨斯模型实例:

1625 1830 1930 1960 1974 1987 1999
5 10 20 30 40 50 60
T=1999-1960;
r=log(2)/T
x=[1960 1974 1987 1999 2011 2016];
y=[30 40 50 60 70 74.42];
plot(x,y,'*')
hold on
tt=1960:2050
xx=30*exp(r*(tt-1960));
plot(tt,xx,'r-')
legend('实际数据’,‘拟合数据')
xlabel('time')
ylabel('人数(亿)')

数学建模——微分方程_第1张图片

线性最小二乘法拟合

最小二乘拟合:作为度量误差“大小”标准的函数逼近

在次数不超过n的多项式中找一个函数使残差平方和最小

解决:matlab中的polyfit指令:x,y分别表示横纵坐标,n为拟合多项式的次数,P为输出的多项式系数向量。

polyval(p,x)。p为polyfit的结果。x为预测值得x坐标。函数结果即为x处对应得y值。

最小二乘法模型实例:

给出美国人口从1790年到1990年的人口,估计2010年的人口。

年份 1790 1800 1810 1820 1830 1840 1850 1860 1870 1880
人口 3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2
年份 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980
人口 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5
xxdata=[1790 1800 1810 1820 1830 1840 1850 1860];
xdata=xxdata-1790;
yydata=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4];
ydata=log(yydata)
p=polyfit(xdata,ydata,1)%polyfit 基于最小二乘法的曲线拟合
xxxdata=[1790:2000];
xx=[0:2000-1790];
z1=polyval(p,xx)%求的xx处的y值
y1=exp(z1); 
xxx=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980];
yyy=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 106.5 123.2 131.7 150.7 179.3 204 226.5];
plot(xxx,yyy,'*',xxxdata,y1,'r-')
hold on
legend('实际数据','预测数据')
xlabel('时间','fontsize',18)
ylabel('人口','fontsize',16)

看完上面的代码肯定有不少人都想问,为什么xdata做了-1790的处理和ydata用了log函数。

我们拟合的是一次函数,马尔萨斯模型的式子为N(t)=N_{0}e^{r(t-t_{0}))}

 经过处理变为一次函数形式:lny=lnc+r(t-t_{0}),看到这里相信大家的困惑就迎刃而解了。

这里还有一种函数类型:增函数,t->0时y=0;t->inf时,y趋于一个定值。指数类型:y=ae^{\frac{b}{t}}

非线性最小二乘法拟合

适用matlab中的lsqcurvefit函数。[x,resnorm]=lsqcurvefit(fun,x0,xdata,ydata)

fun为需要拟合的函数。x0为函数系数的初始猜测值。xdata为x的坐标值,ydata为y的坐标值。

output:x经拟合后的系数。resnorm误差

2.Logistic模型

人口的净增长率与人口的数量有关,r=r(N)=r-aN

\frac{dN}{dt}=(r-aN)N        或者        \frac{dN}{dt}=r(1-\frac{N}{K})N

N(t)=\frac{N_{0}K}{N_{0}+(K-N_{0})e^{-rt}}

用Logistic模型预测美国2010年人口(数据见上表)

function [F]=myfun1(x,xdata)
F= x(1) ./ (1 + (x(1) / 3.9 - 1) .* exp(- x(2) .* xdata)); 
end
xx=[1790 1800 1810 1820 1830 1840 1850 1860 1870];
xdata=xx-1790;
ydata=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6];
x0=[1,1];
xi=lsqcurvefit(@myfun1,x0,xdata,ydata)
x1=1790:1:1980; xx1=x1-1790;
y1=myfun1(xi,xx1);
xxdata=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980];
yydata=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 106.5 123.2 131.7 150.7 179.3 204 226.5]; 
plot(xxdata,yydata,'ro',x1,y1,'b-')

Logistic模型同样适用于新产品推广问题和捕鱼业问题。只要是随着变量x的增加会导致目标结果涨幅的变慢,Logistic模型都适用。

二、传染病模型

模型1 :已感染人数i(t)

假设:每个病人每天有效接触人数为\lambda

i(t+\Delta t)-i(t)=\lambda i(t)\Delta t

i(t)=i_{0}e^{\lambda t}

模型2:区分已感染者和未感染者(SI模型)

假设:1.总人数不变,病人和健康人的比例分别未i(t)和s(t)。2.每个病人每天有效接触人数为\lambda,且使接触的健康人致病。

N[i(t+\Delta t)-i(t)]=[\lambda s(t)]Ni(t)\Delta t

\frac{di}{dt}=\lambda i(1-i)

属于Logistic方程:i(t)=\frac{1}{1+(\frac{1}{i_{0}}-1)e^{-\lambda t}}

模型3:病人治愈成为健康人,健康人可再次被感染。(SIS模型)

1.总人数不变,病人和健康人的比例分别未i(t)和s(t)。2.每个病人每天有效接触人数为\lambda,且使接触的健康人致病。3.病人每天的治愈比例为\mu

N[i(t+\Delta t)-i(t)]=\lambda Ns(t)i(t)\Delta t-\mu Ni(t)\Delta t
\frac{di}{dt}=\lambda i(1-i)-\mu i

 

 令 \sigma =\frac{\lambda }{\mu }。一个感染期内每个病人的有效接触人数。

\frac{di}{dt}=-\lambda i[i-(1-\frac{1}{\sigma })]

\sigma=1为阈值,当其大于1时,i(t)按S形曲线增长。当期小于1时,呈下降趋势。

SI模型可以看作SIS模型的一个特例。

模型4:病人治愈后移出感染系统。(SIR模型)

总人数N不变,病人、健康人和移出者的比例分别为i(t),s(t),r(t)。 每个病人每天有效接触人数为\lambda 

。 病人每天的治愈比例为\mu

 N[i(t+\Delta t)-i(t)]=\lambda Ns(t)i(t)\Delta t-\mu Ni(t)\Delta t

 N[s(t+\Delta t)-s(t)]=-\lambda Ns(t)i(t)\Delta t

微分形式:

\frac{di}{dt}=\lambda si-\mu i

\frac{ds}{dt}=-\lambda si

三、种群模型

一个自然环境种有两个种群生存,它们之间的关系:相互竞争,相互依存,弱肉强食。

甲乙两个种群,它们独自生存时数量变化均服从Logistic规律

两个种群生存在一起时,乙对甲的增长有阻滞作用与乙的数量成正比。甲对乙有同样作用

x_{1}(t)=r_{1}x_{1}\left [ 1-\frac{x_{1}}{N_{1}} -\sigma _{1}\frac{x_{2}}{N_{2}}\right ]

x_{2}(t)=r_{2}x_{2}\left [ 1-\frac{x_{2}}{N_{2}} -\sigma _{2}\frac{x_{1}}{N_{1}}\right ]

寻找该非线性方程的平衡点。

平衡点稳定判定准则:考虑方程的Jacobian矩阵

你可能感兴趣的:(数学建模)