2023 年 亚太赛 APMCM (B题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。

在这里插入图片描述

问题一:

建立没有作物的玻璃温室内的温度和风速分布数学模型,我们可以采用流体力学和热传导的基本方程。假设温室内的流体是不可压缩、稳定、定常的,并考虑热传导和对流。

  1. 质量守恒方程:
    ∇ ⋅ v = 0 \nabla \cdot \mathbf{v} = 0 v=0
    这里, v \mathbf{v} v 是速度场矢量。

  2. 动量守恒方程:
    ρ ( ∂ v ∂ t + v ⋅ ∇ v ) = − ∇ p + μ ∇ 2 v + ρ g \rho \left(\frac{\partial \mathbf{v}}{\partial t} + \mathbf{v} \cdot \nabla \mathbf{v}\right) = -\nabla p + \mu \nabla^2 \mathbf{v} + \rho \mathbf{g} ρ(tv+vv)=p+μ2v+ρg
    其中, ρ \rho ρ 是流体密度, p p p 是压力, μ \mu μ 是动力粘度, g \mathbf{g} g 是重力矢量。

  3. 能量守恒方程:
    ρ C p ( ∂ T ∂ t + v ⋅ ∇ T ) = ∇ ⋅ ( k ∇ T ) + ρ H \rho C_p \left(\frac{\partial T}{\partial t} + \mathbf{v} \cdot \nabla T\right) = \nabla \cdot (k \nabla T) + \rho H ρCp(tT+vT)=(kT)+ρH
    其中, C p C_p Cp 是比热容, T T T 是温度场, k k k 是热导率, H H H 是热源(考虑加热风的影响)。

  4. 边界条件:

    • 温室的外玻璃和底部土壤被设置为壁条件,即流体不能穿过它们。
    • 温室风扇一侧的边界条件被设置为速度入口条件,水平方向以平均速度吹出暖空气。
      温室外表面:速度和温度的法向梯度等于零,即流体不能穿过温室外表面。
      温室风扇一侧:速度边界条件,水平方向以平均速度吹出暖空气(具体参数可根据实际情况调整)。
      温室内部:作物的多孔介质边界条件,考虑作物的冠层阻力。
  5. 初始条件:

    • 温室内的初始温度设定为20°C。

通过数值解这组方程,可以获得在温室高度为0.5米的横截面上的风速和温度的分布。

  1. 速度场方程:
    ∂ u ∂ x + ∂ v ∂ y + ∂ w ∂ z = 0 \frac{\partial u}{\partial x} + \frac{\partial v}{\partial y} + \frac{\partial w}{\partial z} = 0 xu+yv+zw=0
    这里, u u u, v v v, 和 w w w 分别是速度场在 x、y 和 z 方向上的分量。

  2. Navier-Stokes 动量守恒方程(在稳态、不可压缩的情况下):
    ρ ( u ∂ u ∂ x + v ∂ u ∂ y + w ∂ u ∂ z ) = − ∂ p ∂ x + μ ∇ 2 u + ρ g x \rho \left(u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y} + w \frac{\partial u}{\partial z}\right) = -\frac{\partial p}{\partial x} + \mu \nabla^2 u + \rho g_x ρ(uxu+vyu+wzu)=xp+μ2u+ρgx
    同样的方程适用于 v v v w w w 分量,其中 g x g_x gx 是重力场在 x 方向上的分量。

  3. 热传导方程:
    ρ C p ( u ∂ T ∂ x + v ∂ T ∂ y + w ∂ T ∂ z ) = k ∇ 2 T + ρ H \rho C_p \left(u \frac{\partial T}{\partial x} + v \frac{\partial T}{\partial y} + w \frac{\partial T}{\partial z}\right) = k \nabla^2 T + \rho H ρCp(uxT+vyT+wzT)=k2T+ρH
    这里, T T T 是温度场。

  4. 初始条件:

    • 温室内初始时刻的速度和温度分布。
  5. 附加约束:

    • 适宜的风速范围为0.3-1m/s。
    • 适宜的温度范围为23-26°C。
    • 考虑温室结构,包括玻璃的导热性、风扇的特性等。

数学模型的求解可以使用数值方法,如有限体积法或有限元法,通过在计算网格上离散化方程组,迭代求解以获得温室内温度和风速的分布。

问题二

为了建立种植了作物的玻璃温室内的温度和风速分布的数学模型,我们需要考虑作物的冠层阻力以及温室内的空气流动。以下是数学模型的一般描述:

流体动力学方程:

质量守恒方程:

∇ ⋅ v = 0 \nabla \cdot \mathbf{v} = 0 v=0

Navier-Stokes 动量守恒方程:

ρ ( ∂ v ∂ t + v ⋅ ∇ v ) = − ∇ p + μ ∇ 2 v + ρ g \rho \left(\frac{\partial \mathbf{v}}{\partial t} + \mathbf{v} \cdot \nabla \mathbf{v}\right) = -\nabla p + \mu \nabla^2 \mathbf{v} + \rho \mathbf{g} ρ(tv+vv)=p+μ2v+ρg

其中, v = ( u , v , w ) \mathbf{v} = (u, v, w) v=(u,v,w) 是速度场矢量, p p p 是压力, μ \mu μ 是动力粘度, ρ \rho ρ 是流体密度, g = ( 0 , 0 , − g ) \mathbf{g} = (0, 0, -g) g=(0,0,g) 是重力矢量。

热传导方程:

能量守恒方程:

ρ C p ( ∂ T ∂ t + v ⋅ ∇ T ) = ∇ ⋅ ( k ∇ T ) + ρ H \rho C_p \left(\frac{\partial T}{\partial t} + \mathbf{v} \cdot \nabla T\right) = \nabla \cdot (k \nabla T) + \rho H ρCp(tT+vT)=(kT)+ρH

其中, T T T 是温度场, C p C_p Cp 是比热容, k k k 是热导率, H H H 是热源(可能包括作物的代谢产生的热)。

作物模型:

作物的冠层阻力可以通过适当的参数化来考虑,例如引入一个与作物生长状态相关的阻力项。

边界条件:

  1. 速度边界条件:

    • 温室风扇一侧设置为速度入口条件,水平方向以平均速度吹出暖空气。
    • 温室内其余表面设定为壁条件,防止空气穿过温室表面。
  2. 温度边界条件:

    • 温室风扇一侧设置为温度入口条件,以40°C的温暖空气吹出。
    • 温室内其余表面设定为壁条件。

初始条件:

  • 温室内的初始温度设定为20°C。

两个横截面分布:

  1. 高度为0.5米的位置(作物冠层水平):

    • 分析在作物冠层水平位置的风速和温度分布,以评估是否符合作物的生长要求。
  2. 高度为0.1米的位置(作物冠层内部):

    • 分析在作物冠层内部的风速和温度分布,以更详细地考虑作物生长的影响。

分析条件是否适宜作物生长:

通过模拟结果,比较温室内两个不同高度的横截面上的温度和风速分布与作物生长的要求,评估条件是否适宜。关注作物所需的温度范围和适宜的风速,以模拟结果在这些方面满足作物生长的基本条件。

用python进行数值模拟:

import numpy as np

import matplotlib.pyplot as plt

# 模拟参数
length = 10.0  # 温室长度
width = 3.0    # 温室宽度
height = 2.0   # 温室高度

dx = 0.1       # 空间步长
dt = 0.01      # 时间步长
time_steps = 100

# 空间网格
x = np.arange(0, length, dx)
y = np.arange(0, width, dx)
z = np.arange(0, height, dx)

# 初始化温度场和速度场
T = np.ones((len(x), len(y), len(z))) * 20.0  # 初始温度
U = np.zeros((len(x), len(y), len(z)))         # 初始速度

# 模拟时间步进
for t in range(time_steps):
    # 在这里添加 Navier-Stokes 和能量守恒的数值解法

    # 更新速度场
# 更新速度场 - Navier-Stokes方程
for i in range(1, len(x) - 1):
    for j in range(1, len(y) - 1):
        for k in range(1, len(z) - 1):
            # Navier-Stokes 方程的简化数值解法
            dUx_dt = -((U[i+1, j, k, 0] - U[i-1, j, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i, j+1, k, 1] - U[i, j-1, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUy_dt = -((U[i, j+1, k, 0] - U[i, j-1, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i+1, j, k, 1] - U[i-1, j, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUz_dt = -((U[i, j, k+1, 0] - U[i, j, k-1, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i, j+1, k, 1] - U[i, j-1, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i+1, j, k, 2] - U[i-1, j, k, 2]) / (2*dx)) * U[i, j, k, 2]

            U[i, j, k] += np.array([dUx_dt, dUy_dt, dUz_dt]) * dt

# 更新温度场 - 热传导方程
alpha = 0.1  # 热扩散系数

for i in range(1, len(x) - 1):
    for j in range(1, len(y) - 1):
        for k in range(1, len(z) - 1):
            # 热传导方程的简化数值解法
            dT_dt = alpha * ( (T[i+1, j, k] - 2*T[i, j, k] + T[i-1, j, k]) / (dx**2) +
                              (T[i, j+1, k] - 2*T[i, j, k] + T[i, j-1, k]) / (dy**2) +
                              (T[i, j, k+1] - 2*T[i, j, k] + T[i, j, k-1]) / (dz**2) )

            T[i, j, k] += dT_dt * dt

# 绘制结果
plt.imshow(T[:, :, int(len(z)/2)], cmap='hot', extent=[0, length, 0, width])
plt.colorbar(label='Temperature (°C)')
plt.quiver(x, y, U[:, :, int(len(z)/2)], np.zeros_like(y), scale=20, scale_units='xy', color='white')
plt.title('Temperature and Airflow in the Greenhouse')
plt.xlabel('Length (m)')
plt.ylabel('Width (m)')
plt.show()

问题三:

在给定的两个情景中,我们要考虑温室内的空气流动和温度分布的理论影响。为了理解这些影响,我们依照 Navier-Stokes 方程和能量守恒方程进行分析。

情景1:将暖空气出口的速度从2 m/s增加到3 m/s

加强空气对流,高速的暖空气流动可能增加温室内的空气对流,从而影响整体温度分布。

更有效的温室加热,提高暖空气速度可能会提高空气与温室结构之间的热交换效率,可能导致温室内的温度升高。

空气流动的不均匀性,更高的速度可能引入空气流动的不均匀性,导致一些区域温度升高,而另一些区域温度较低。

情景2:通过将温室风扇从1.3m降至1m的位置进行调整:

改变空气流动路径,调整风扇位置可能会改变温室内的空气流动路径,影响空气对流和温度分布。

作物冠层的影响,风扇位置的变化可能会直接影响作物冠层的温度和空气流动,对作物生长产生重要影响。

温室底部温度变化,调整风扇位置可能影响温室底部的温度分布,进而影响底部作物的生长环境。

具体的微调代码为:

第一种情景 - 增加暖空气出口速度

warm_air_speed = 3  # 将暖空气出口速度从2 m/s

#增加到3 m/s

# 更新速度场
for i in range(1, len(x) - 1):
    for j in range(1, len(y) - 1):
        for k in range(1, len(z) - 1):
            # Navier-Stokes方程的简化数值解法
            dUx_dt = -((U[i+1, j, k, 0] - U[i-1, j, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i, j+1, k, 1] - U[i, j-1, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUy_dt = -((U[i, j+1, k, 0] - U[i, j-1, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i+1, j, k, 1] - U[i-1, j, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUz_dt = -((U[i, j, k+1, 0] - U[i, j, k-1, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i, j+1, k, 1] - U[i, j-1, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i+1, j, k, 2] - U[i-1, j, k, 2]) / (2*dx)) * U[i, j, k, 2]

            U[i, j, k] += np.array([dUx_dt, dUy_dt, dUz_dt]) * dt * warm_air_speed / 2  # 调整速度

# 更新温度场 - 热传导方程
alpha = 0.1  # 热扩散系数

for i in range(1, len(x) - 1):
    for j in range(1, len(y) - 1):
        for k in range(1, len(z) - 1):
            # 热传导方程的简化数值解法
            dT_dt = alpha * ( (T[i+1, j, k] - 2*T[i, j, k] + T[i-1, j, k]) / (dx**2) +
                              (T[i, j+1, k] - 2*T[i, j, k] + T[i, j-1, k]) / (dy**2) +
                              (T[i, j, k+1] - 2*T[i, j, k] + T[i, j, k-1]) / (dz**2) )

            T[i, j, k] += dT_dt * dt

# 第二种情景 - 调整温室风扇位置
fan_height = 1  # 将温室风扇位置从1.3m降至1m

# 更新速度场
for i in range(1, len(x) - 1):
    for j in range(1, len(y) - 1):
        for k in range(1, len(z) - 1):
            # Navier-Stokes方程的简化数值解法
            dUx_dt = -((U[i+1, j, k, 0] - U[i-1, j, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i, j+1, k, 1] - U[i, j-1, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUy_dt = -((U[i, j+1, k, 0] - U[i, j-1, k, 0]) / (2*dx)) * U[i, j, k, 0] - ((U[i+1, j, k, 1] - U[i-1, j, k, 1]) / (2*dx)) * U[i, j, k, 1] - ((U[i, j, k+1, 2] - U[i, j, k-1, 2]) / (2*dx)) * U[i, j, k, 2]
            dUz_dt = -((U[i, j, k+1, 0] - U[i, j, k-1, 0]) / (2*dx)) * U[i, j, k, 0] -

我们期望温室内的温度分布更加均匀,同时适宜的风速和温度范围将有助于提供良好的生长条件。

更多内容具体可以看看我的下方名片!里面包含有亚太赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析亚太赛APMCM的一些方向
关注 CS数模 团队,数模不迷路~

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

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

相关文章

【用unity实现100个游戏之16】Unity中程序化生成的2D地牢4(附项目源码)

文章目录 最终效果前言素材按程序放置物品放置玩家和敌人控制主角移动参考源码完结 最终效果 前言 本期紧跟着上期内容,主要实现在地牢中生成物品、放置玩家和敌人。 素材 物品素材: https://itch.io/c/1597630/super-retro-world 按程序放置物品 …

【钉钉】通过链接方式跳转到应用机器人聊天窗口

使用这个方式: dingtalk://dingtalkclient/action/jumprobot?dingtalkid可以通过机器人回调拿到chatbotUserId这个字段,这个就是dingtalkid。 示例:(chatbotUserId是不规则字符串,链接拼上这个参数最好 urlencode一…

维护工程师面经

文章目录 前言技能要求数据结构定义分类常用的数据结构 数据库原理数据的三级模式结构事务查询方式视图数据库范式 Java相关知识点总结 前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 参考网址 技能要求 数据结构 参考网址 定…

使用 Python脚本在3DMAX中加载图像和读取图像中的像素值

如何使用Python在3dmax中加载和显示图像文件?我们先看下面的代码: *测试的3dmax文件和图像文件位于同一目录中。 from MaxPlus import BitmapManagerimage_file_path rje_gray_02_4k.exrbmp_storage MaxPlus.Factory.CreateStorage(17)bmp_info bmp…

高斯Filter 和 Bilateral Filter

参考链接: Python | Bilateral Filtering - GeeksforGeeks 高斯Filter: 高斯模糊后的图像中的每个像素的强度是由它周围的像素的加权平均得到的,这个权重就是高斯函数的值,它取决于像素之间的距离。具体来说: 通常会导…

【追求卓越11】算法--二叉树

引导 接下来的几节我们开始介绍非线性的数据结构--树。树的内容比较多也比较复杂。本节,我们只需要了解关于树的一些基本概念。以及再进一步了解树的相关内容--搜索二叉树。该类型二叉树在工作中,是我们常接触的。该节我们介绍关于搜索二叉树的相关操作&…

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:分区域汇总&#xff1a…

opencv-图像金字塔

图像金字塔是一种图像处理技术,它通过不断降低图像的分辨率,形成一系列图像。金字塔分为两种类型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通过使用高斯滤波和降采样&a…

计算机网络之概述

一、概述 1.1因特网概述 定义 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)因此,互联网是“网络的网络…

企业该怎么选择IP证书

IP证书是一种数字证书,它由权威的数字证书颁发机构(CA)颁发,部署在只有公网IP地址的站点上,用于在网络中验证身份和保护信息安全。IP证书可以在各种场景下保护网站的信息安全,比如网站vip登录,线…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎,轻量级容器技术。基于Go语言,并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化容…

【计算机基础】通过插件plantuml,实现在VScode里面绘制状态机

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

DockerHub 无法访问 - 解决办法

背景 DockerHub 镜像仓库地址 https://hub.docker.com/ 突然就无法访问了,且截至今日(2023/11)还无法访问。 这对我们来说,还是有一些影响的: ● 虽然 DockerHub 页面无法访问,但是还是可以下载镜像的,只是比较慢而已 ● 没法通过界面查询相关镜像,或者维护相关镜像了…

2023年最佳Aspera替代方案,选择适合的Aspera替代方案

查找当前可用的Aspera替代方案。比较 2023年Aspera替代方案的评级、评论、定价和功能。列出了市场上最好的Aspera替代方案,它们提供与 IBM Aspera 类似的竞争产品。对下面的Aspera替代方案进行排序,以根据需求做出最佳选择。 1、镭速 镭速(私…

【追求卓越02】数据结构--链表

引导 今天我们进入链表的学习,我相信大家对链表都很熟悉。链表和数组一样,作为最基础的数据结构。在我们的工作中常常会使用到。但是我们真的了解到数组和链表的区别吗?什么时候使用数组,什么时候使用链表,能够正确的选…

笔记本外接显示器的一些基本操作

1>,安装问题直接问客服,正常情况是将显示屏接上电源,然后用先将显示屏和笔记本的HDMI接口连接即可。 按下组合键 win p ,选择 “复制”。 2>,接上显示屏后,原笔记本无声音? 1、找到笔记本电脑右下…

通过Everything 建立HTTP服务器时指定文件夹共享

在局域网传输文件,高效传输,不限文件大小 1、安装Everything 2、在Everything开启HTTP服务 【工具】—>>【选项】—>>【HTTP服务】启用HTTP服务器,设置HTTP服务器用户名和密码 3、查看网络信息 打开服务端电脑的【命令提示…

低权限(无权限)时如何在mysql客户端控制台的大量输出中快速定位mysql死锁或慢sql

查看mysql的查看死锁的方式很多,但很多时候我们普通开发者的权限比较低,无法执行某命令。比如本次就准备使用 SHOW ENGINE INNODB STATUS;命令,但客户端提示权限不够。后来本人找到了另一条低权限的命令 show full PROCESSLIST;但是show fu…

CST同轴馈电步骤

CST同轴馈电步骤 算例1. 同轴内芯2. 填充材料3. 外皮4. GND减去一个圆形,使EMWAVE可以通过5. 添加端口6. 结果比较 算例 cst模型库中的一个圆贴片 1. 同轴内芯 2. 填充材料 他这里直接使用和介质基板一样的材料并且进行了合并,我就懒得再改了&#x…

Matplotlib颜色条的配置_Python数据分析与可视化

Matplotlib颜色条配置 基本颜色颜色条选择配色方案颜色条刻度的限制与扩展功能的设置离散型颜色条 基本颜色 Matplotlib提供了8种指定颜色的方法: 在[0,1]中的浮点值的RGB或RGBA元组(例如 (0.1, 0.2, 0.5) 或(0.1, 0.…