2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型

2025年数学建模美赛 A题分析(1)Testing Time: The Constant Wear On Stairs
2025年数学建模美赛 A题分析(2)楼梯磨损分析模型
2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型
2025年数学建模美赛 A题分析(4)楼梯使用人数模型

特别提示:

  • 本文针对 2025年 A题进行分析,每天不断更新,建议收藏。
  • 其它题目的分析详见【youcans 的数学建模课】 专栏。

文章目录

  • 2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型
    • 1. 问题概述:
    • 2. 楼梯使用频率的数学模型
      • 2.1 楼梯使用频率数学模型的建立
      • 2.2 所需数据与测量方法
      • 2.3 假设条件
    • 3. 模型推导
      • 3.1 基本公式
      • 3.2 楼梯总使用人次
      • 3.3 时间跨度的单位换算
    • 4. 实施步骤
    • 4. 模型扩展
    • 5. 模型验证
    • 6. 模型结论
    • 7. 微分方程数值解法
      • 7.1 基本概念
      • 7.3 scipy.integrate.odeint() 函数
      • 7.4 例题 1:求微分方程的数值解
      • 7.5 常微分方程的编程步骤


2025年数学建模美赛 A题分析(2)楼梯使用频率数学模型


1. 问题概述:

用于建造台阶的石材和其他材料经受着持续的长期磨损,并且这种磨损可能是不均匀的。

问题的任务是:开发一个模型,通过特定楼梯的磨损模式得出以下基本预测:

  • 楼梯使用的频率。
  • 使用楼梯时是否更倾向于某一方向。
  • 同时使用楼梯的人数(例如,人们是否成对并排爬楼梯,还是单列行走)。

进一步地,假设已经获得楼梯的建造年代、使用方式以及建筑中日常生活模式的估算信息,需要回答以下问题:

  • 磨损是否与现有信息一致?
  • 楼梯的年龄及其估算的可靠性如何?
  • 楼梯是否经历过维修或翻修?
  • 能否确定材料的来源?例如,石材的磨损是否与考古学家认为的原始采石场材料一致?若使用木材,其磨损是否与假定使用的树种和年代相符?
  • 有关楼梯典型每日使用人数的信息,以及是否有大量人群在短时间内使用,或少量人群长期使用的情况?

在这里插入图片描述


2. 楼梯使用频率的数学模型

2.1 楼梯使用频率数学模型的建立

楼梯的使用频率可以通过磨损深度与材料的磨损速率之间的关系推导出来。以下将具体讨论所需数据、假设条件以及模型推导过程。


2.2 所需数据与测量方法

  1. 必须测量的数据
    (1)楼梯表面磨损深度
    使用激光扫描或高精度3D建模技术,获取每一级台阶的表面高度变化。
    关键指标:磨损深度 (𝑑),以毫米为单位。
    (2)楼梯材料的物理特性
    硬度,如通过莫氏硬度或布氏硬度测量。
    磨损速率 (𝑘):单位人次使用对材料造成的磨损深度(毫米/人次),可通过实验测得。
    (3)楼梯使用的时间跨度
    建造时间与当前时间的差值(𝑇),以年为单位。

  2. 非破坏性测量方法
    激光扫描技术:测量台阶表面微小的高度变化,精度达到亚毫米级。
    材料分析:通过便携式X射线荧光仪(XRF)获取材料成分,结合实验数据确定磨损速率。

  3. 其他辅助信息
    使用的历史记录:如建筑物的使用时间、功能(宗教场所、住宅等)以及可能的高峰使用时期。


2.3 假设条件

  1. 磨损线性性假设
    假设材料的磨损随使用人次呈线性关系,即磨损深度与人次成正比。
    合理性:对于硬质材料如石材,这一假设在低应力范围内普遍成立。

  2. 均匀使用假设
    假设楼梯的磨损主要集中在中心区域,所有使用者大致遵循相似的路径。
    假设楼梯的磨损随时间均匀分布。

  3. 无重大维修假设
    假设楼梯在建造后未经历大规模维修或翻新。


3. 模型推导

3.1 基本公式

磨损深度(𝑑) 的表达式为:

d = k ∗ N d = k * N d=kN

其中:
𝑑:楼梯的平均磨损深度(毫米)。
𝑘:材料的磨损速率(毫米/人次)。
𝑁:楼梯总使用人次。


3.2 楼梯总使用人次

总使用人次 𝑁 可通过以下公式计算:

N = f ⋅ T N=f⋅T N=fT

其中:
𝑓:楼梯的日平均使用频率(人次/天)。
𝑇:楼梯的使用时间(天)。

结合以上两式,得到楼梯日平均使用频率的表达式:

$$ f = \frac{d}{k*T}


3.3 时间跨度的单位换算

若 𝑇 以年为单位,则需要转换为天:

T d a y = T ∗ 365 T_{day} = T*365 Tday=T365


4. 实施步骤

  1. 数据采集
    (1)使用激光扫描技术,获取楼梯表面高度数据,计算磨损深度 𝑑。
    (2)分析楼梯材料,通过实验获取磨损速率 𝑘。
    (3)收集建筑物历史记录,确定楼梯的使用年限 𝑇。

  2. 参数计算
    (1)根据扫描数据,计算每一级台阶的磨损深度 𝑑,取平均值。
    (2)使用实验室数据或文献值,确定材料的磨损速率 𝑘。

  3. 频率计算
    将 𝑑、𝑘 和 𝑇 代入公式 f = d k ∗ T f = \frac{d}{k*T} f=kTd,计算楼梯的日均使用频率 𝑓。


4. 模型扩展

  1. 对复杂磨损模式的改进
    若楼梯中央和边缘的磨损显著不同,可分区域计算磨损深度,构建更精细的模型:

f = d c e n t e r + d e d g e 2 ∗ k ∗ T f = \frac{d_{center} + d_{edge}}{2*k*T} f=2kTdcenter+dedge

  1. 非均匀使用的时间分布
    若历史记录显示某段时间人流量较大,可引入时间权重因子 w ( t ) w(t) w(t),调整模型:

f = 1 T ∫ 0 T d k ∗ w ( t ) d t f = \frac{1}{T} \int^T_0 \frac{d}{k*w(t)} dt f=T10Tkw(t)ddt


5. 模型验证

  1. 实验验证
    在实验室中模拟不同频率的磨损,验证磨损深度与使用人次的线性关系。

  2. 历史数据验证
    将模型预测值与历史使用记录对比,验证日均使用频率 𝑓 的合理性。


6. 模型结论

该模型通过分析楼梯磨损深度、材料特性和历史时间,计算出楼梯的日均使用频率。模型的简单线性结构便于应用,并可扩展至处理更复杂的磨损模式。需要注意的是,模型的准确性依赖于材料磨损速率 𝑘 和历史数据的准确性。


7. 微分方程数值解法

7.1 基本概念

微分方程是描述系统的状态随时间和空间演化的数学工具。物理中许多涉及变力的运动学、动力学问题,如空气的阻力为速度函数的落体运动等问题,很多可以用微分方程求解。微分方程在化学、工程学、经济学和人口统计等领域也有广泛应用。

具体来说,微分方程是指含有未知函数及其导数的关系式。

  • 微分方程按自变量个数分为:只有一个自变量的常微分方程(Ordinary Differential Equations)和包含两个或两个以上独立变量的偏微分方程(Partial Differential Equations)。
  • 微分方程按阶数分为:一阶、二阶、高阶,微分方程的阶数取决于方程中最高次导数的阶数。
  • 微分方程还可以分为:(非)齐次,常(变)系数,(非)线性,初值问题/边界问题…

求解常微分方程的基本方法,有欧拉法、龙格库塔法等,可以详见各种教材,撰写数模竞赛论文时还是可以抄几段的。本文沿用“编程方案”的概念,不涉及这些算法的具体内容,只探讨如何使用 Python 的工具包、库函数,零基础求解微分方程模型。

我们的选择是 Python 常用工具包三剑客:Scipy、Numpy 和 Matplotlib:

  • Scipy 是 Python 算法库和数学工具包,包括最优化、线性代数、积分、插值、特殊函数、傅里叶变换、信号和图像处理、常微分方程求解等模块。有人介绍 Scipy 就是 Python 语言的 Matlab,所以大部分数学建模问题都可以用它搞定。
  • Numpy 提供了高维数组的实现与计算的功能,如线性代数运算、傅里叶变换及随机数生成,另外还提供了与 C/C++ 等语言的集成工具。
  • Matplotlib 是可视化工具包,可以方便地绘制各种数据可视化图表,如折线图、散点图、直方图、条形图、箱形图、饼图、三维图,等等。

### 7.2 一阶常微分方程(组)模型

给定初始条件的一阶常微分方程(组)的标准形式是:
{ d y d t = f ( y , t ) y ( t 0 ) = y 0 \begin{cases} \begin{aligned} &\frac{dy}{dt} = f(y,t)\\ &y(t_0) = y_0 \end{aligned} \end{cases} dtdy=f(y,t)y(t0)=y0

式中的 y 在常微分方程中是标量,在常微分方程组中是数组向量。


7.3 scipy.integrate.odeint() 函数

SciPy 提供了两种方式求解常微分方程:基于 odeint 函数的 API 比较简单易学,基于 ode 类的面向对象的 API 更加灵活。

**scipy.integrate.odeint() **是求解微分方程的具体方法,通过数值积分来求解常微分方程组。在 odeint 函数内部使用 FORTRAN 库 odepack 中的 lsoda,可以求解一阶刚性系统和非刚性系统的初值问题。官网介绍详见: scipy.integrate.odeint — SciPy v1.6.3 Reference Guide 。

scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0, tfirst=False)

odeint 的主要参数:

求解标准形式的微分方程(组)主要使用前三个参数:

  • func: callable(y, t, …)   导数函数 f ( y , t ) f(y,t) f(y,t) ,即 y 在 t 处的导数,以函数的形式表示
  • y0: array:  初始条件 y 0 y_0 y0,对于常微分方程组 y 0 y_0 y0 则为数组向量
  • t: array:  求解函数值对应的时间点的序列。序列的第一个元素是与初始条件 y 0 y_0 y0 对应的初始时间 t 0 t_0 t0;时间序列必须是单调递增或单调递减的,允许重复值。

其它参数简介如下:

  • args: 向导数函数 func 传递参数。当导数函数 f ( y , t , p 1 , p 2 , . . ) f(y,t,p1,p2,..) f(y,t,p1,p2,..) 包括可变参数 p1,p2… 时,通过 args =(p1,p2,…) 可以将参数p1,p2… 传递给导数函数 func。argus 的用法参见 2.4 中的实例2。

  • Dfun: func 的雅可比矩阵,行优先。如果 Dfun 未给出,则算法自动推导。

  • col_deriv: 自动推导 Dfun的方式。

  • printmessg: 布尔值。控制是否打印收敛信息。

  • 其它参数用于控制求解算法的参数,一般情况可以忽略。

odeint 的主要返回值:

  • y: array   数组,形状为 (len(t),len(y0),给出时间序列 t 中每个时刻的 y 值。


7.4 例题 1:求微分方程的数值解

{ d y d t = s i n ( t 2 ) y ( − 10 ) = 1 \begin{cases} \begin{aligned} &\frac{dy}{dt} = sin(t^2)\\ &y(-10) = 1 \end{aligned} \end{cases} dtdy=sin(t2)y(10)=1


7.5 常微分方程的编程步骤

以该题为例讲解 scipy.integrate.odeint() 求解常微分方程初值问题的步骤:

  1. 导入 scipy、numpy、matplotlib 包;

  2. 定义导数函数 f ( y , t ) = s i n ( t 2 ) f(y,t)=sin(t^2) f(y,t)=sin(t2)

  3. 定义初值 y 0 y_0 y0 y y y 的定义区间 [ t 0 ,   t ] [t_0,\ t] [t0, t]

  4. 调用 odeint() 求 y y y 在定义区间 [ t 0 ,   t ] [t_0,\ t] [t0, t] 的数值解。


Python 例程

# 1. 求解微分方程初值问题(scipy.integrate.odeint)
from scipy.integrate import odeint  # 导入 scipy.integrate 模块
import numpy as np
import matplotlib.pyplot as plt

def dy_dt(y, t):  # 定义函数 f(y,t)
    return np.sin(t**2)

y0 = [1]  # y0 = 1 也可以
t = np.arange(-10,10,0.01)  # (start,stop,step)
y = odeint(dy_dt, y0, t)  # 求解微分方程初值问题

# 绘图
plt.plot(t, y)
plt.title("scipy.integrate.odeint")
plt.show()

例程运行结果
在这里插入图片描述


【未完待续,请继续关注】

2025年数学建模美赛 A题分析(3)楼梯方向偏好模型

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求

项目整体介绍 数据库表介绍 基于session的短信验证码登录与注册 controller层 // 获取验证码PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {return userService.sendCode(phone, session);}// 获…

Brightness Controller-源码记录

Brightness Controller 亮度控制 一、概述二、ddcutil 与 xrandr1. ddcutil2. xrandr 三、部分代码解析1. icons2. ui3. utilinit.py 一、概述 项目:https://github.com/SunStorm2018/Brightness.git 原理:Brightness Controlle 是我在 Ubuntu 发现上调…

STM32简介

STM32简介 STM32是ST公司基于ARMCortex-M内核开发的32位微控制器 (Microcontroller) MCU微控制器、MPU微处理器、CPU中央处理器 1.应用领域 STM32常应用于嵌入式领域。 如智能车:循迹小车 读取光电传感器或者摄像头的数据,…

qt-C++笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别

qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphicsRectItem的区别 code review! 参考笔记 1.qt-C笔记之重写QGraphicsItem的paint方法(自定义QGraphicsItem) 文章目录 qt-C笔记之QLine、QRect、QPainterPath、和自定义QGraphicsPathItem、QGraphic…

浏览器IndexedDB占用大

使用鲁大师清理后,用 SpaceSniffer 查看C盘占用情况,发现浏览器的 IndexedDB 有3个文件夹占用特别大,从文件名看是 youku,bilibili,v.qq.com,浏览器的数据库并不需要长期保存,删除这3个文件夹&a…

MongoDB部署模式

目录 单节点模式(Standalone) 副本集模式(Replica Set) 分片集群模式(Sharded Cluster) MongoDB有多种部署模式,可以根据业务需求选择适合的架构和部署方式。 单节点模式(Standa…

将 OneLake 数据索引到 Elasticsearch - 第二部分

作者:来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分,第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中,我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…

Formality:时序变换(三)(相位反转)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 一、引言 时序变换在Design Compiler的首次综合和增量综合中都可能发生,它们包括:时钟门控(Clock Gating)、寄存器合并(Register Merging)、…

php代码审计2 piwigo CMS in_array()函数漏洞

php代码审计2 piwigo CMS in_array()函数漏洞 一、目的 本次学习目的是了解in_array()函数和对项目piwigo中关于in_array()函数存在漏洞的一个审计并利用漏洞获得管理员帐号。 二、in_array函数学习 in_array() 函数搜索数组中是否存在指定的值。 in_array($search,$array…

房租管理系统的智能化应用助推租赁行业高效运营与决策优化

内容概要 在现代租赁行业中,房租管理系统的智能化应用正在逐步成为一个不可或缺的工具。通过整合最新技术,这些系统为租赁管理的各个方面提供了极大的便利和效率提升。从房源管理到合同签署再到财务监控,智能化功能能够帮助运营者在繁琐的事…

Hive关于数据库的语法,warehouse,metastore

关于数据库的语法 在default数据库下,查看其他数据库的表 in 打开控制台 字体大小的设置 Hive默认的库: default, 1/4说明一共有4个库,现在只展示了1个,单击>>所有架构 数据库的删除 方法一: 语法 删除有表的数据库,加cascade 方法二 当前连接的数据库 切换当前数据库…

【React】PureComponent 和 Component 的区别

前言 在 React 中,PureComponent 和 Component 都是用于创建组件的基类,但它们有一个主要的区别:PureComponent 会给类组件默认加一个shouldComponentUpdate周期函数。在此周期函数中,它对props 和 state (新老的属性/状态)会做一…

AI赋能医疗:智慧医疗系统源码与互联网医院APP的核心技术剖析

本篇文章,笔者将深入剖析智慧医疗系统的源码架构以及互联网医院APP背后的核心技术,探讨其在医疗行业中的应用价值。 一、智慧医疗系统的核心架构 智慧医疗系统是一个高度集成的信息化平台,主要涵盖数据采集、智能分析、决策支持、远程医疗等…

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式: --行内样式:写在标签的style属性中(不推荐) --内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中) --外联样式&#xf…

【学习笔记】深度学习网络-深度前馈网络(MLP)

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…

如何在IDEA社区版Service面板中管理springboot项目

1、开启service仪表盘 2、在service仪表盘中,添加启动类配置项,专业版是SpringBoot 、社区版是application。 3、控制台彩色日志输出 右键启动类配置项,添加虚拟机参数 -Dspring.output.ansi.enabledALWAYS

如何在data.table中处理缺失值

📊💻【R语言进阶】轻松搞定缺失值,让数据清洗更高效! 👋 大家好呀!今天我要和大家分享一个超实用的R语言技巧——如何在data.table中处理缺失值,并且提供了一个自定义函数calculate_missing_va…

.NET9增强OpenAPI规范,不再内置swagger

ASP.NETCore in .NET 9.0 OpenAPI官方文档ASP.NET Core API 应用中的 OpenAPI 支持概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/openapi/overview?viewaspnetcore-9.0https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/ope…

【redis初阶】redis客户端

目录 一、基本介绍 二、认识RESP(redis自定的应用层协议名称) 三、访问github的技巧 四、安装redisplusplus 4.1 安装 hiredis** 4.2 下载 redis-plus-plus 源码 4.3 编译/安装 redis-plus-plus 五、编写运行helloworld 六、redis命令演示 6.1 通用命令的…

蓝桥杯3518 三国游戏 | 排序

题目传送门 这题的思路很巧妙,需要算出每个事件给三国带来的净贡献(即本国士兵量减其他两国士兵量)并对其排序,根据贪心的原理累加贡献量直到累加结果不大于0。最后对三国的胜利的最大事件数排序取最值即可。 n int(input()) a …