数学建模-Logistic模型

article/2025/8/27 19:33:56

文章目录

    • Malthus模型
      • 模型假设
      • 建模与求解
      • 模型评价
    • Logistic模型
      • 模型假设
      • 建模与求解
      • 模型检验

为了更好地理解Logistic模型,我们先看看Malthus模型

Malthus模型

这是英国神父Malthus通过对一百多年人口统计资料的分析之后提出的人口模型假设

模型假设

  1. 设x(t)表示t时刻的人口数,且x(t)连续可微.
  2. 人口的增长率r是常数(增长数=出生率-死亡率)
  3. 人口的数量的变化是封闭的,即人口数量的增加与减少只取决于人口中个体的生育和死亡,且每一个体都具有同样的生育能力与死亡率.

建模与求解

由假设,t时刻到t+△t时刻人口的增量为x(t+△)-x(t)=rx(t)△t.

​ 所以得到

在这里插入图片描述

import sympy as sp
from sympy import  diff,dsolve,simplify
x=sp.symbols('x',cls=sp.Function)
t=sp.symbols('t')
r=sp.symbols('r')
eq=diff(x(t),t)-(r*x(t))
x=dsolve(eq)
print(simplify(x))

所以其解为:

x ( t ) = x 0 e r t x(t)=x0e^rt x(t)=x0ert

模型评价

考虑二百多年来人口增长的实际情况,1961年世界人口总数为 3.06 × 1 0 9 3.06\times10^9 3.06×109,我们对人口自然增长率设置为2%.
so x ( t ) = 3.06 × 1 0 9 ⋅ e 0.02 ( t − 1961 ) x(t)=3.06\times10^9\cdot e^{0.02(t-1961)} x(t)=3.06×109e0.02(t1961)

这一模型符合1961年前的历史人口增长,但对于未来人口数量增长统计却存在一定的极端和不准确性,所以对于r是常数这个地方是值得商榷的.

Logistic模型

继上个模型,我们现在来对r进行修正,因为地球上的资源是有限的,所以随着人口数量的增加,自然资源和环境条件对于人口增长的限制作用将会逐渐显著.

所以,我们将r视为一个随着人口的增加而减小的量,即将增长率r表示为人口x(t)的函数r(x),且r(x)为x的减函数.

模型假设

  1. 设r(x)为x的线性函数,r(x)=r-sx(工程师原则,首先用线性).
  2. 自然资源与环境条件所能容纳的最大人口数$\chi_m $ 即当 χ = χ m \chi=\chi_m χ=χm时,增长率r( χ m \chi_m χm)=0.

建模与求解

​ 由假设(1),(2)可得 r ( x ) = r ( 1 − χ χ m ) r(x)=r(1-\frac{\chi}{\chi_m}) r(x)=r(1χmχ),则有
在这里插入图片描述

import sympy as sp
import math
from sympy import  diff,dsolve,simplify
x=sp.symbols('x',cls=sp.Function)
t=sp.symbols('t')
r=sp.symbols('r')
xm=sp.symbols('xm')
c1=sp.symbols('c1')
x0=sp.symbols('x0')
eq=diff(x(t),t)-r*(1-(x(t)/xm))*x(t)
x=dsolve(eq)
print(simplify(x))

求解方程得到 E q ( x ( t ) , − x m / ( e x p ( C 1 ∗ x m − r ∗ t ) − 1 ) ) Eq(x(t), -xm/(exp(C1*xm - r*t) - 1)) Eq(x(t),xm/(exp(C1xmrt)1))

其中因为C1较为复杂所以这里用python求解并不是一直好办法

我们直接用分离变量法求解 得到x(t)

x ( t ) = x m 1 + ( x m x 0 − 1 ) e − r ( t − t 0 ) x(t)=\frac{xm}{1+(\frac{xm}{x0}-1)e^{-r(t-t0)}} x(t)=1+(x0xm1)er(tt0)xm

我们用pyplot来使得x(t)函数可视化

import matplotlib.pyplot as plt
import numpy as np
import math
t=np.arange(1,200,0.5)
xm=14
x0=1 #防止除0错误
t0=1 #防止除0错误
r=0.02
plt.rc('font',size=16); plt.rc('font',family='SimHei')
y=xm/(1+(xm/x0-1)*pow(math.e,-r*(t-t0)))
plt.plot(t,y,'g',label='人口随时间的变化曲线')
plt.xlabel("时间序列")
plt.ylabel("人口数",rotation=0)
plt.legend()
plt.show()

在这里插入图片描述

可以看到用logistic模型解出的回归函数会更加科学

模型检验

d 2 x d t 2 = r 2 ( 1 − x x m ) ( 1 − 2 x x m ) x \frac{d^2x}{dt^2}=r^2(1-\frac{x}{xm})(1-\frac{2x}{xm})x dt2d2x=r2(1xmx)(1xm2x)x

所以人口总数x(t)有如下规律:

  1. lim ⁡ t → + ∞ χ ( t ) = χ m \lim_{t\rightarrow+\infty}{\chi(t)}=\chi_m limt+χ(t)=χm, 即无论人口初值 χ 0 \chi_0 χ0 如何,人口总数以 χ m \chi _m χm为极限。

  2. 0 < χ 0 < χ m 0<\chi_0<\chi_m 0<χ0<χm d x d t = r ( 1 − χ χ m ) x > 0 \frac{d_x}{d_t}=r(1-\frac{\chi}{\chi_m})x>0 dtdx=r(1χmχ)x>0 , 这说明x(t)是单调增加的。
    根据 d 2 x d t 2 = r 2 ( 1 − x x m ) ( 1 − 2 x x m ) x \frac{d^2x}{dt^2}=r^2(1-\frac{x}{xm})(1-\frac{2x}{xm})x dt2d2x=r2(1xmx)(1xm2x)x
    说明当 x < x m 2 x<\frac{x_m}{2} x<2xm时, d 2 x d t 2 > 0 \frac{d^2x}{dt^2}>0 dt2d2x>0 x=x(t)是一个凹函数

    而当 x < x m 2 x<\frac{x_m}{2} x<2xm的时候 d 2 x d t 2 < 0 \frac{d^2x}{dt^2}<0 dt2d2x<0 x=x(t)是一个凸函数

  3. 人口变化率 d x d t \frac{d_x}{d_t} dtdx x = x m 2 x=\frac{x_m}{2} x=2xm时取到最大值,即人口总数达到极限值一半以前是加速生长时期,经过这一点以后,增长速率会逐渐变小,最终达到零。

以上的结论都可以从上面我画的曲线中直观地看出.


http://chatgpt.dhexx.cn/article/7cHDusrp.shtml

相关文章

数学建模-Logistic模型附Matlab代码

目录 一、Logistic模型介绍 二、Logistic模型实例 三、Logistic模型原理 3.1 Logistic 方程定义 3.2 Yule算法 3.2 Rhodes算法 3.3 Nair算法 4、Logistic模型Matlab部分代码 4.1 Yule算法 4.2 Rhodes算法 4.3 Nair算法 一、Logistic模型介绍 logistic回归又称logi…

logistic回归模型—基于R

logistic回归模型—基于R 数据理解和准备一. 对缺失值的处理二.虚拟变量的赋值三.箱线图四.相关性分析 训练集与测试集的划分模型构建与评价一.logistic回归模型二.检查模型在训练数据集和测试数据集上的表现使用交叉验证的logistic回归 logistic回归又称logistic回归分析&…

数学模型——Logistic回归模型(含Matlab代码)

写在前面 Logistic回归模型是一种非常常见的统计回归模型&#xff0c;在处理大量数据&#xff0c;揭示各自变量如何作用于因变量&#xff08;描述X与Y之间的关系&#xff09;时有着十分重要的作用。笔者在写Logit回归模型前参加了一次市场调研比赛&#xff0c;在这次比赛中学到…

菜鸟的数学建模之路(五):Logistic模型

matlab实现 Logistic回归跟多元线性回归差不多&#xff0c;但是有区别&#xff1a; &#xff08;1&#xff09; 线性回归&#xff1a;y是一个定量的变量&#xff0c;这时y对于不同的自变量来说有相应的值。 &#xff08;2&#xff09; Logistic回归&#xff1a;y是一个定性的变…

自学鸿蒙应用开发(25)- 基本的CommonDialog

动作演示 对话框是应用程序的主要输入手段之一&#xff0c;但是遗憾的是目前鸿蒙的开发网站上只有ToastDialog用法&#xff0c;其他类型的对话框则只能参考为数不多的英文文档。 以下是作者经过不断尝试&#xff0c;终于鼓捣出来的CommonDialog对话框。 CommonDialog1 代码实…

Builder设计模式构建通用型Dialog

目录 写在前面 一、什么是Builder模式 二、AlertDialog源码分析 2.1、源码阅读 2.2、Builder模式工作流程 三、代码实战——Builder模式构建通用型Dialog 3.1、基本框架搭建 3.2、完善Builder 3.3、完善真正的构建器 3.4、自定义参数配置 四、使用Dialog 写在前面 …

自学鸿蒙应用开发(26)- 自定义CommonDialog

执行效果 上一篇文章中说过&#xff0c;直接使用鸿蒙系统中的CommonDialog大致是下面的效果&#xff1a; 这个效果实在是无法用于实际的应用开发。本文介绍如何定制自己的CommonDialog。还是先看演示视频&#xff1a; CustomizeCommonDialog 准备布局 定制CommonDialog的第一…

Android炫酷翻转Dialog及高仿苹果IOS的Dialog

简单的Android弹出Dialog效果&#xff08;圆角&#xff09; 最近一段时间工作挺忙的&#xff0c;一直想写一篇博文&#xff0c;总是被各种事情打破计划&#xff0c;终于这次利用这个周末来开始自己第一次的技术文章的写作&#xff0c;提前说明&#xff0c;本人还是个菜鸟&#…

Android 全局Dialog

前沿 android 弹窗好几种&#xff0c;全局弹窗是什么&#xff1f;和普通Dialog&#xff08;必须依附activity上下文的弹窗&#xff09;有什么区别&#xff1f; 逛技术blog发现【全局dialog】这个名词&#xff0c;之前用FragmentDialog&#xff0c;自定义dialog。以及dialog的…

Android开发dialog内存泄露,Android中导致内存泄漏的竟然是它----Dialog

一. 内存泄漏的 Bug 猛增 最近在 App 进行 mokey 测试的时候检测到一些内存泄漏问题。在前天的测试中,楼主一瞬间收到了4个这样的 Bug 单,瞬间心理无比纠结,真有千万只羊驼向我奔来。 登录页面出现内存泄漏??!!楼主的代码是如此的***而无懈可击,这么可能出现这么多泄漏的…

dialog.setOnDismissListener(null)过程分析

前提 为解决DialogFragment的内存泄漏&#xff0c;使用了此篇博客的处理方法 DialogFragment 内存泄露&#xff0c;简单说就是给 dialog 设置 getDialog().setOnCancelListener(null); getDialog().setOnDismissListener(null);但发现了一个问题&#xff0c;当用户返回Activi…

深入分析Android中Dialog

在Android中,Dialog是一个非常重要的UI, 它可以方便的给用户提示,用最简洁的方式向用户展示信息, 以下的图片是Dialog的一个整体架构&#xff0c;通过它&#xff0c;可以总体对Dialog有一个很清晰的认识. 从这张图中可以看到&#xff0c;Dialog为父类, 其下有最重要的&#xf…

android自定义dialog去除title,Android 自定义Dialog去除title导航栏的解决方法

Android 自定义Dialog去除title导航栏的解决方法 如下所示: Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); 以上这篇Android 自定义Dialog去除title导航栏的解决方法就是小编分享给大家的全部内…

android常见的dialog的使用及认识

介绍 在实际开发过程中 , 我们难免要经常使用提示框 (dialog), 根据不同的场景使用不同的样式的提示框(dialog). androd提供了丰富的dialog函数 , 本文将介绍在实际开发中经常使用的对话框, 包括普通对话框 , 列表对话框 , 单选对话框 , 多选对话框 , 等待对话框, 进度条对话框…

ABAP屏幕设计Dialog

目录 一、概览 1.屏幕 2.程序组织 3.屏幕定义和维护 用途&#xff1a; 组成&#xff1a; Dialog的屏幕执行过程&#xff1a; 属性&#xff1a; 创建&#xff1a; 4.屏幕属性的动态修改 5.屏幕序列 二、Screen编程实例 1.Hello World屏幕编程 建立程序&#xff1a; 设计…

Android Dialog 源码研究

Android Dialog 源码研究 在阅读Dialog源代码之前,我给自己提出了4个问题,带着这4个问题的疑问,我才开始看源码,这样的好处能让阅读中有了侧重点,往往能更快的理解某些代码的意图,这也正是为什么总说提出问题本身,要比解决问题困难。 我下面要思考的4个问题是: Dialo…

android 判断dialog,Android 7.0经验谈:Dialog不显示之迷

最近遇到个怪问题,在其他手机上都能正常的显示Dialog,但是在Android 7.0的手机上只能显示Dialog的半透明背景,无法显示Dialog的内容。 用图给大家展示一个遇到的现象,正常时应该是这个样子的: 而我们遇到的情况如下,更坏的是如果我们设置Dialog不能点击空白处取消(dismis…

Android窗口设计之Dialog、PopupWindow、系统窗口的实现

窗口设计之Dialog、PopupWindow、系统窗口的实现 Android应用程序窗口设计系列博客: Android应用程序窗口设计之Window及WindowManager的创建 Android应用程序窗口设计之setContentView布局加载的实现 普法Android的Token前世今生以及在APP,AMS,WMS之间传递 Android应用程序窗口…

理解Android中Dialog

文章收藏的好句子&#xff1a;你能走多远、爬多高&#xff0c;不仅取决于你自身的力量&#xff0c;还取决于周围人带动的力量。 PS&#xff1a;本文是基于 Android Api 26 来分析源码的。 1、Dialog 的 Window 是在哪里创建的&#xff1f; Dialog 的 Window 是在什么地方创建的…

Android之Dialog分析

Android之Dialog分析 以Dialog为引导&#xff0c;Android的弹出式消息一共是三种&#xff08;据我所知&#xff09;&#xff1a;Dialog&#xff0c;tocast&#xff0c;notification 其三种弹出式消息各有所长。今天重点是分析其中的Dialog。Android的Dialog是android界面编程的…