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

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。
在这里插入图片描述
以五一杯 A题为例子,以下是咱们做的一些想法呀!

问题1:

(1)建立数学模型:

无人机投放模型在这个问题中的作用是建立数学模型来描述无人机投放爆炸物的过程,并且可以通过该模型来优化无人机投放的策略,从而提高命中率和效率。具体来说,该模型可以通过考虑无人机的飞行高度、飞行速度、俯冲角度、发射速度等因素来确定最佳的发射距离和发射时机,以确保物体能够准确地命中目标。此外,该模型还可以考虑外部因素,如风速和风向等,来调整无人机的飞行轨迹和姿态,以提高投放精度和稳定性。

对于本题的模型,有:

其中 ρ 为空气密度,S 为物资横截面积, 为物资的阻力系数, g 为重力加速度,F 为无人机与物资之间的牵引力。

当无人机投放物资时,物资与无人机之间断开连接,牵引力 F取0,上式可以化简为:

其中为重力加速度。

(2)在无人机的飞行高度为 300m,飞行速度为 300km/h,风速为 5m/s,风向与水平面平行的情况下,使用代码解决:

import

 math# 定义常量
v0 = 300      # 飞行速度,单位km/h
vw = 5        # 风速,单位m/s
h = 300       # 飞行高度,单位m
r = 0.2       # 球形物资半径,单位m
m = 50        # 球形物资质量,单位kg
g = 9.8       # 重力加速度,单位m/s^2# 计算投放距离
d0 = v0**2/g * math.sin(0*2*math.pi/360) + vw*v0/g * math.cos(0*2*math.pi/360)
d180 = v0**2/g * math.sin(180*2*math.pi/360) + vw*v0/g * math.cos(180*2*math.pi/360)
d90 = v0**2/g * math.sin(90*2*math.pi/360) + vw*v0/g * math.cos(90*2*math.pi/360)# 输出结果
print(f"无人机飞行方向与风向相同时,投放距离为:{d0:.1f}m")
print(f"无人机飞行方向与风向相反时,投放距离为:{d180:.1f}m")

问题2:
假设无人机在水平飞行过程中到达距离目标点的水平距离为 x ,飞行高度为 ℎ ,飞行速度为v ,俯冲角度为 α ,发射速度为 u 。则无人机发射炸弹的轨迹可以分解为水平方向和竖直方向两个分量。

在水平方向上,无人机在 秒到达目标点,发射炸弹的时间为 秒。发射炸弹时无人机的水平速度为vcos⁡α ,炸弹的水平初速度为 ucos⁡α。

在竖直方向上,炸弹自由落体运动,竖直初速度为 usin⁡α ,竖直加速度为g 。设炸弹飞行的时间为 秒,则有:

将 t3 的值代入到水平方向上的运动中,则可以求得无人机与目标点之间的距离 x1 :

假设无人机发射炸弹的距离为 d ,则需要满足 1000≤d≤3000 。为了使无人机在发射炸弹时仍能保持安全的飞行高度,假设无人机的飞行高度为 800m ,则有 ℎ≥300m 。

为了使发射策略可行,需要选择合适的俯冲角度 α 和发射速度u。假设 α 为定值,可以根据上述模型求出发射速度u与发射距离d的关系,并绘制出其图像,如下图所示。

由图像可知,当俯冲角度为 30∘ 时,发射速度最小,约为 426.8m/s ,此时发射距离为d≈1716.2m

问题3:
无人机的飞行稳定性可以用无人机的俯仰角和偏航角的变化率来描述,即:

其中, θ表示俯仰角, 表示偏航角。这个数值越小,说明无人机的飞行越稳定。

无人机的命中精度可以用命中目标的距离来描述,与无人机的飞行稳定性呈反比关系,即:

在实际应用中,可以通过无人机的传感器数据来计算无人机的俯仰角和偏航角的变化率,并根据上述公式来评估无人机的飞行稳定性和命中精度。

import numpy as np
import matplotlib.pyplot as pltdef dynamic_equation(x, u):# 状态方程A = np.array([[1, 0, 0, dt, 0, 0],[0, 1, 0, 0, dt, 0],[0, 0, 1, 0, 0, dt],[0, 0, 0, 1-0.5*rho*Cd*S/m*dt, 0, 0],[0, 0, 0, 0, 1-0.5*rho*Cd*S/m*dt, 0],[0, 0, 0, 0, 0, 1-0.5*rho*Cd*S/m*dt]])# 输入方程B = np.array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt],[0, 0, 0, -0.5*rho*S*vx0**2/m*dt]])# 状态更新x_new = np.dot(A, x) + np.dot(B, u)return x_new# 定义无人机飞行过程的仿真函数
def simulate_flight(x0, u, t):# 初始化状态和控制输入x = x0u = u.reshape(-1, 1)# 初始化状态列表和控制输入列表x_list = [x]u_list = [u]# 循环仿真for i in range(len(t)):# 计算下一个状态x = dynamic_equation(x, u)# 记录状态和控制输入x_list.append(x)、、模糊处理 完整版看文章下面~u_list.append(u)# 将列表转换为数组x_array = np.array(x_list)u_array = np.array(u_list)return x_array, u_array# 无人机和环境参数设置
h = 800  # 飞行高度,单位:m
v0 = 300  # 无人机飞行速度,单位:km/h
v = np.linspace(300, 400, 101) / 3.6  # 无人机相对地面速度,单位:m/s
vw = np.array([6, 0])  # 风速,单位:m/s
gamma = np.deg2rad(45)  # 俯冲角,单位:rad
g = 9.8  # 重力加速度,单位:m/s^2# 计算无人机稳定性
S = 2 * np.pi * (0.5 ** 2)  # 球形爆炸物的参考面积
Cd = 0.5  # 球形爆炸物的阻力系数
m = 50  # 球形爆炸物的质量,单位:kg
rho = 1.2  # 空气密度,单位:kg/m^3
K = 0.5 * rho * S * Cd / m  # 阻力系数
u = np.sqrt(v ** 2 + (v0 * np.sin(gamma)) ** 2)  # 爆炸物相对空气速度
D = K * u ** 2  # 阻力大小
H = h - np.sqrt((h ** 2) / (np.tan(gamma) ** 2 + 1))  # 爆炸物发射高度
t = (H - 300) / (v0 * np.cos(gamma))  # 爆炸物发射时间
x0 = v0 * t  # 无人机前进距离
x = x0 + (v + vw[0]) * t  # 爆炸物水平位移距离
y = H - (v0 * np.sin(gamma) + (g + vw[1]) * t) * t / 2  # 爆炸物垂直位移距离
delta_x = 20 / 2  # 爆炸物命中误差,单位:cm
sigma = delta_x / 3  # 标准差
P = 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - delta_x) ** 2 / (2 * sigma ** 2))  # 命中概率密度函数
hit_rate = np.trapz(P, x)  # 命中率# 可视化结果
plt.plot(v, P)
plt.xlabel('Horizontal displacement (m)')
plt.ylabel('Probability density')
plt.title('Hit probability density')
plt.show()print('The hit rate is %.2f%%.' % (hit_rate * 100))

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】自定义指令

自定义指令 自定义指令就是自己定义的指令,是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM,拓展额外的功能 全局定义 Vue.directive(指令名字, definition) 指令名:不包括v-前缀,使用时候包括v-,v-指令名defini…

CUTLASS 1.3.3中的 Volta884_h884gemm

CUTLASS 是 CUDA C 模板抽象的集合,用于在 CUDA 内的所有级别和规模上实现高性能矩阵-矩阵乘法 (GEMM) 和相关计算。它采用了类似于 cuBLAS 和 cuDNN 中实现的分层分解和数据移动策略。 CUTLASS 最新版本为3.3,相比1.3.3变动较大。然而重温一下1.3.3仍然…

Linux超简单部署个人博客

1 安装halo 1.1 切换到超级用户 sudo -i 1.2 新建halo文件夹 mkdir ~/halo && cd ~/halo 1.3 编辑docker-compose.yml文件 vim ~/halo/docker-compose.yml 英文输入法下,按 i version: "3"services:halo:image: halohub/halo:2.10container_…

2017年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2017 级考研管理类联考数学真题解析一、问题求解(本大题共 5 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2017-…

Python 提高篇学习笔记(一):深拷贝和浅拷贝

文章目录 一、什么是对象的引用二、深拷贝和浅拷贝2.1 浅拷贝(Shallow Copy)2.2 深拷贝(Deep Copy)2.3 copy.copy和copy.deepcopy的区别 一、什么是对象的引用 在 Python 中,对象的引用是指变量指向内存中某个对象的地址或标识符。当你创建一个新的对象(比如一个整…

【Qt开发流程】之富文本处理

描述 Scribe框架提供了一组类,用于读取和操作结构化的富文本文档。与Qt中以前的富文本支持不同,新的类集中在QTextDocument类上,而不是原始文本信息。这使开发者能够创建和修改结构化的富文本文档,而不必准备中间标记格式的内容。…

busybox制作根文件系统2

上篇内容使用busybox制作好了根文件系统,接下来需要进行一些测试和功能的完善! 根文件系统的测试 测试根文件系统的时候不是直接烧写到EMMC里面,这样测试效率太低了,Ubuntu的rootfs目录已经保存了根文件系统,只需要在…

向量数据库,展望AGI时代

无论是向量数据库,还是大模型,归根结底,大家在追捧它时的心态,焦虑大于需求。 向量数据库的热潮,在一定程度上“外化”了人们的焦虑。 但这并不能否定向量数据库的实际价值,甚至更长远来看,向…

RedisTemplate使用详解

RedisTemplate介绍StringRedisTemplate介绍RedisConnectionFactory介绍RedisConnectionFactory源码解析 RedisOperations介绍RedisOperations源码解析 RedisTemplate使用连接池配置RedisTemplate连接池连接池配置 RedisTemplate应用场景RedisTemplate主要特点RedisTemplate使用…

redis运维(十六) 有序集合

一 有序集合 把握一点: 各种redis 命令都提供各种语言对应的API 接口,后续API是关键 ① 概念 1、sorted set --> 有序集合2、redis有序集合也是集合类型的一部分,所以它保留了集合中元素不能重复的特性3、但是不同的是,有序集合给每个元素多设置…

转型做视频了,博客就是稿子,继续坚持写博客,同时发布视频,能写博客说明思路清晰了,能再讲明白,理解就更透彻了,紧跟上时代发展。

1,今天特别记录下,B站给开通了《合集》功能 最近使用视频制作了几个视频。播放量还不错,最好的已经到了 2.6K了。 然后粉丝也涨到了 200个。 添加链接描述 紧跟时代:从写博客到录视频,粉丝大涨,突破200个&…

接口自动化测试 —— 工具、请求与响应

一、工具: 1.工具介绍 postman :很主流的API测试工具,也是工作里面使用最广泛的研发工具。 JMeter: ApiPost: 2.安装postman: 安装好直接打开,不用注册。 二、通信模式: 1、…

【Java 进阶篇】从Java对象到JSON:Jackson的魔法之旅

在现代的软件开发中,处理数据的能力是至关重要的。而当我们谈及数据格式时,JSON(JavaScript Object Notation)通常是首选。为了在Java中轻松地将对象转换为JSON,我们需要一种强大而灵活的工具。这时,Jackso…

【Java 进阶篇】Redis:打开缓存之门

介绍 Redis(Remote Dictionary Server)是一个高性能的键值对存储系统,被广泛用作缓存、消息中间件和数据库。它以其快速的读写能力、支持多种数据结构和丰富的功能而闻名。在这篇博客中,我们将深入了解Redis的概念、安装以及基本…

MQTT协议消息代理服务远程连接

目录 1. Linux 搭建 Mosquitto 2. Linux 安装Cpolar 3. 创建MQTT服务公网连接地址 4. 客户端远程连接MQTT服务 5. 代码调用MQTT服务 6. 固定连接TCP公网地址 7. 固定地址连接测试 Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不…

第二十章:多线程

进程 线程的特点 1.进程是资源分配的最小单位&#xff0c;线程是最小的执行单位 2.一个进程可以有多个线程 3.线程共享进程资源 package twentyth; public class ThreadTest extends Thread { public void run() { for (int i 1; i < 10; i) {//继承重…

Unity开发之C#基础-File文件读取

前言 今天我们将要讲解到c#中 对于文件的读写是怎样的 那么没接触过特别系统编程小伙伴们应该会有一个疑问 这跟文件有什么关系呢&#xff1f; 我们这样来理解 首先 大家对电脑或多或少都应该有不少的了解吧 那么我们这些软件 都是通过变成一个一个文件保存在电脑中 我们才可以…

Spring Boot创建和使用(重要)

Spring的诞生是为了简化Java程序开发的&#xff01; Spring Boot的诞生是为了简化Spring程序开发的&#xff01; Spring Boot就是Spring框架的脚手架&#xff0c;为了快速开发Spring框架而诞生的&#xff01;&#xff01; Spring Boot的优点&#xff1a; 快速集成框架&#x…

2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲…

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;预写式日志&#xff09;机制来实现的。 在使用 WAL 的系统中&#xff0c;所有的修改都先被写入到日志中&#xff0c;然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …