matlab 人数增长模型 (小白篇)

Malthus 模型

1789 年,英国神父 Malthus 在分析了一百多年人口统计资料之后,提出了 Malthus 模型。

模型假设

(i)设 x(t) 表示t时刻的人口数,且 x(t) 连续可微。

(ii)人口的增长率r 是常数(增长率=出生率—死亡率)。

(iii)人口数量的变化是封闭的,即人口数量的增加与减少只取决于人口中个体的 生育和死亡,且每一个体都具有同样的生育能力与死亡率。

微分方程求解

数值解(numerical solution)是采用某种计算方法,在特定的条件下得到的一个近似数值结果,如有限元法,数值逼近法,插值法等等得到的解。别人只能利用数值计算的结果,而不能随意给出自变量并求出计算值。

解析解(analytical solution)是严格按照公式逻辑推导得到的,具有基本的函数形式。给出任意的自变量就可以求出其因变量,也就是问题的解,他人可以利用这些公式计算各自的问题,具有广泛适用性;

必备知识

dsolve函数(3条消息) matlab求解常微分方程(组)---dsolve、ode系列函数详解(含例程)_ode函数_lynn&&的博客-CSDN博客

1)函数格式  

Y = dsolve(‘eq1,eq2,…’ , ’cond1,cond2,…’ , ’Name’)

其中,‘eq1,eq2,…’:表示微分方程或微分方程组;

            ’cond1,cond2,…’:表示初始条件或边界条件;

            ‘Name’:表示变量。没有指定变量时,matlab默认的变量为t;
————————————————
版权声明:本文为CSDN博主「lynn&&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lynn15600693998/article/details/86597068

例题:1)matlab  在命令行窗口敲

dsolve('Dy=3*x^2','x')

通解

2)初值条件  特解

dsolve('Dy=3*x^2','y(0)=2','x')

3)微分方程组

ode函数

ode是Matlab专门用于解微分方程的功能函数。在已知点中步长迭代,两代之间的跨度,该求解器有变步长(variable-step)和定步长(fixed-step)两种类型。不同类型有着不同的求解器

1)函数格式  

[T,Y] = ode45(‘odefun’,tspan,y0)

[T,Y] = ode45(‘odefun’,tspan,y0,options)

[T,Y,TE,YE,IE] = ode45(‘odefun’,tspan,y0,options)

sol = ode45(‘odefun’,[t0 tf],y0...)

其中: odefun是函数句柄,可以是函数文件名,匿名函数句柄或内联函数名;

          tspan 是求解区间 [t0 tf],或者一系列散点[t0,t1,...,tf];

          y0 是初始值向量

          T 返回列向量的时间点

          Y 返回对应T的求解列向量

          options 是求解参数设置,可以用odeset在计算前设定误差,输出参数,事件等

           TE 事件发生时间

           YE 事件发生时之答案

            IE 事件函数消失时之指针i

2)微分方程标准化

利用ode45求解高阶微分方程时,需要做变量替换。下面说明替换的基本思路。

微分方程为

初始条件

首先做变量替换 

原微分方程可以转换为下面的微分方程组的格式:


————————————————
版权声明:本文为CSDN博主「lynn&&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lynn15600693998/article/details/86597068

例 编写odefun函数 

function dx=odefun(t,x)

dx=zeros(2,1);

dx(1)=x(2);

dx(2)=-t*y+exp(t)*x(2)+3*sin(2*t);

end

matlab模型实操

命令行窗口

desolve(‘Dx=rx(t)’,'x(0)=x0')

求两系数

polyfit(X,Y,N)

%Y为函数y   X为自变量  N为自变量的最高次幂

人口增长模型与实际结果的比较

补充知识

1)round函数

是输出接近数的函数

A=[1.2  2.4  -1.1   -1.5]

round(A)

输出结果[1  2  1  -2](其中Z+0.5  默认其绝对值较大的数)

2)format函数

format输出显示格式

3) 矩阵的相关表示

linspace(X1,X2,N)

X1为初始值  X2为终值  N为间隔点(无N时默认生成100个点)

生成N个元素的单行向量

实际与拟合图像输出

plot(x,y,'r+')%'颜色+线条组成’例如这为红色的+号所组成的线条

xlabel('')

ylabel('')%x轴y轴的命名注意这没有‘;’

title('')%图像的总名称 位置为图像的正上方

legend(‘线条名称’)

hold on;%保持第一个图形后面叠加

增长率的验证

数值微分三点公式

Logistic模型(阻滞增长模型)

绘制dx/dt~x曲线

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值