2024年国赛高教杯数学建模A题板凳龙闹元宵解题全过程文档及程序

2024年国赛高教杯数学建模

A题 板凳龙闹元宵

原题再现

  “板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头,龙身和龙尾相随盘旋,整体呈圆盘状。一般来说,在舞龙队能够自如地盘入和盘出的前提下,盘龙所需要的面积越小、行进速度越快,则观赏性越好。
  某板凳龙由223节板凳组成,其中第1节为龙头,后面221节为龙身,最后1节为龙尾。龙头的板长为341 cm,龙身和龙尾的板长均为220 cm,所有板凳的板宽均为30 cm。每节板凳上均有两个孔,孔径(孔的直径)为5.5 cm,孔的中心距离最近的板头27.5 cm(见图1和图2)。相邻两条板凳通过把手连接(见图3)。
在这里插入图片描述
  请建立数学模型,解决以下问题:
  问题1 舞龙队沿螺距为55 cm的等距螺线顺时针盘入,各把手中心均位于螺线上。龙头前把手的行进速度始终保持1 m/s。初始时,龙头位于螺线第16圈A点处(见图4)。请给出从初始时刻到300 s为止,每秒整个舞龙队的位置和速度(指龙头、龙身和龙尾各前把手及龙尾后把手中心的位置和速度,下同),将结果保存到文件result1.xlsx中(模板文件见附件,其中“龙尾(后)”表示龙尾后把手,其余的均是前把手,结果保留6位小数,下同)。同时在论文中给出0 s、60 s、120 s、180 s、240 s、300 s时,龙头前把手、龙头后面第1、51、101、151、201节龙身前把手和龙尾后把手的位置和速度(格式见表1和表2)。
在这里插入图片描述
在这里插入图片描述
  问题2 舞龙队沿问题1设定的螺线盘入,请确定舞龙队盘入的终止时刻,使得板凳之间不发生碰撞(即舞龙队不能再继续盘入的时间),并给出此时舞龙队的位置和速度,将结果存放到文件result2.xlsx中(模板文件见附件)。同时在论文中给出此时龙头前把手、龙头后面第1、51、101、151、201条龙身前把手和龙尾后把手的位置和速度。
  问题3 从盘入到盘出,舞龙队将由顺时针盘入调头切换为逆时针盘出,这需要一定的调头空间。若调头空间是以螺线中心为圆心、直径为9 m的圆形区域(见图5),请确定最小螺距,使得龙头前把手能够沿着相应的螺线盘入到调头空间的边界。
在这里插入图片描述
  问题4 盘入螺线的螺距为1.7 m,盘出螺线与盘入螺线关于螺线中心呈中心对称,舞龙队在问题3设定的调头空间内完成调头,调头路径是由两段圆弧相切连接而成的S形曲线,前一段圆弧的半径是后一段的2倍,它与盘入、盘出螺线均相切。能否调整圆弧,仍保持各部分相切,使得调头曲线变短? 龙头前把手的行进速度始终保持1 m/s。以调头开始时间为零时刻,给出从−100 s开始到100 s为止,每秒舞龙队的位置和速度,将结果存放到文件result4.xlsx中(模板文件见附件)。同时在论文中给出−100 s、−50 s、0 s、50 s、100 s时,龙头前把手、龙头后面第1、51、101、151、201节龙身前把手和龙尾后把手的位置和速度。
  问题5 舞龙队沿问题4设定的路径行进,龙头行进速度保持不变,请确定龙头的最大行进速度,使得舞龙队各把手的速度均不超过2 m/s。

整体求解过程概述(摘要)

  本文以中国传统舞龙表演中的“板凳龙”为研究对象,分析并优化了舞龙队在复杂路径下的运动过程,旨在确定板凳龙的运动轨迹和速度限制。研究重点在于确保板凳龙各个部分在特定几何约束下能够顺利运行。
  针对问题一,利用极坐标下的阿基米德螺旋线方程,设定龙头速度为1 m/s,建立舞龙队沿等距螺线行进的数学模型。通过螺旋线模型,计算出从初始时刻至300秒时龙头及各板凳的位置信息与速度分布,并通过微分方法求解速度,确保各把手间的距离保持一致。模型得出了各时间点下龙身与龙尾的运动轨迹,并对关键节点进行了速度分析。
  针对问题二,本文通过建立碰撞检测模型,计算舞龙队在螺旋线盘入时的终止时刻。在此过程中,实时监测相邻板凳间的距离变化,确定在螺距设定条件下,约440秒时板凳将发生碰撞,达到无法继续盘入的终止时刻。
  针对问题三,本文分析了舞龙队在9米直径的圆形调头空间内的最小螺距问题。通过优化螺旋线螺距,确保舞龙队顺利从顺时针盘入到逆时针盘出,并避免碰撞。结果显示,最小螺距为0.179米。
  针对问题四,本文设计并优化了板凳龙在调头空间内的S形调头路径。路径由两段圆弧组成,最小化路径长度,并确保调头过程中位置、速度、加速度的连续性。通过数值求解,得出了从-100秒至100秒期间各板凳的运动轨迹,并对调头路径进行了可视化。仿真结果显示,优化后的S形曲线有效缩短了调头路径,保证了调头过程的平滑性与连续性。
  针对问题五,本文构建了动态速度约束优化模型,确定了在不超过2 m/s速度限制下龙头的最大行进速度。利用二分搜索法,最终确定龙头的最大允许速度约为1.6 m/s,在此速度下,舞龙队各板凳的速度均不超过2 m/s,符合题目要求。

模型假设:

  1.假设舞龙队在运动过程中不受除自身运动外的其他外力作用。
  2.假设忽略板凳和连接部件的弹性变形,在整个运动过程中保持形状不变。
  3.假设舞龙队的运动简化为二维平面上的运动,忽略垂直方向上的运动。

问题分析:

  问题一的分析
  针对问题一,舞龙队沿等距螺旋线运动的问题涉及到计算龙头、龙身和龙尾在300秒内的位置和速度。龙头以1米/秒的速度沿螺旋线前进,龙身和龙尾的位置则根据它们与龙头的相对角度确定。通过数学建模,我们可以计算出每个时间点舞龙队各部分的具体位置和速度。
  问题二的分析
  针对问题2,舞龙队沿问题一设定的螺线盘入的过程中,确定一个终止时刻,该时刻标志着舞龙队无法再继续盘入而板凳之间不发生碰撞。意味着舞龙队盘入到某个程度时,其占用的空间或形状达到了螺线所能容纳的极限。 为了找到这个终止时刻,考虑舞龙队的整体长度、螺线的螺距以及每节板凳之间的连接方式和空间需求。由于板凳龙由多节板凳首尾相连组成,随着盘入过程的进行,板凳之间的相对位置会不断变化,直至达到一个临界点,此时再进一步盘入就会导致板凳间的碰撞。
  问题三的分析
  针对问题3,从顺时针盘入到逆时针盘出的过程中,为确保龙头前把手能够沿着螺线顺利盘入到指定的调头空间边界,需确定一个最小的螺距,该调头空间是以螺线中心为圆心、直径为9米的圆形区域。考虑螺距对螺线形状和间距的影响,螺距决定了螺线每旋转一周时径向增加的距离,从而影响到螺线的紧密程度和所占用的空间范围。在舞龙队盘入的过程中,如果螺距过大,会导致调头空间的浪费;如果螺距过小,则可能使得舞龙队内部发生碰撞。通过计算和优化来确定一个最小的螺距值,使得龙头前把手在盘入过程中能够恰好达到或接近调头空间的边界,同时保证舞龙队内部不会发生碰撞。
  问题四的分析
  针对问题4,在给定螺距和调头空间内,舞龙队通过调整S形调头曲线的圆弧来缩短路径长度,同时保持与两段螺线的相切关系。模拟舞龙队从-100秒到100秒内的运动,包括螺线盘入、S形调头及盘出过程,保持龙头前把手速度恒定。计算每秒舞龙队各关键部分的位置和速度,并将其记录。
  问题五的分析
  针对问题5,沿问题4中,龙头的最大行进速度保持不变。将龙头的行进速度将作为控制变量,目标是确保舞龙队中每一个把手在运动过程中的速度都不超过2 m/s。 龙头速度变化时,龙身各部分如何随之移动,监测所有把手的速度是否保持在安全限制以内。通过逐步调整龙头速度并观察结果,可以确定一个最大的龙头行进速度,使得舞龙队在运动过程中所有把手的速度均不超过2 m/s。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.colors import ListedColormap# 设置中文字体为SimHei(黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
matplotlib.rcParams['axes.unicode_minus'] = False  # 解决负号 '-' 显示为方块的问题# 参数设定
a = 55 / (2 * np.pi)  # 螺距与圆周率的比例
v = 1  # m/s 龙头速度
time_end = 300  # s 终止时间
dt = 1  # 时间步长
n_segments = 221  # 龙身节数
dragon_head_length = 3.41  # 龙头长度(米)
segment_length = 2.2  # 每节龙身长度(米)
colors = plt.cm.cool(np.linspace(0, 1, n_segments + 3))  # 颜色渐变# 初始角度和半径
theta_0 = 16 * 2 * np.pi# 时间序列
times = np.arange(0, time_end + dt, dt)# 计算龙头位置
theta = theta_0 + (v / a) * times
r = a * theta
x_head = r * np.cos(theta)
y_head = r * np.sin(theta)# 初始化位置和速度存储
positions = np.zeros((2 * (n_segments + 3), len(times)))  # 位置
speeds = np.zeros((n_segments + 3, len(times)))  # 速度# 计算龙头位置和速度
positions[0, :] = x_head
positions[1, :] = y_head
speeds[0, :] = v# 计算龙身和龙尾位置及速度,考虑龙头与龙身长度不同
for i in range(1, n_segments + 3):if i == 1:  # 龙头与第一节龙身之间长度不同theta_i = theta - (dragon_head_length / a)else:theta_i = theta - (segment_length * i / a)r_i = a * theta_ix_i = r_i * np.cos(theta_i)y_i = r_i * np.sin(theta_i)positions[2 * i, :] = x_ipositions[2 * i + 1, :] = y_ispeeds[i, 1:] = np.sqrt((x_i[1:] - x_i[:-1]) ** 2 + (y_i[1:] - y_i[:-1]) ** 2) / dt# 创建螺线
theta_spiral = np.linspace(0, theta_0, 1000)
r_spiral = a * theta_spiral
x_spiral = r_spiral * np.cos(theta_spiral)
y_spiral = r_spiral * np.sin(theta_spiral)# 可视化图像
fig, ax = plt.subplots(figsize=(14, 10))
cmap = ListedColormap(plt.cm.cool(np.linspace(0.1, 0.9, n_segments + 3)))# 绘制螺旋线
ax.plot(x_spiral, y_spiral, 'k--', lw=1, label='初始螺线')# 绘制龙身轨迹
for i in range(n_segments + 3):ax.plot(positions[2 * i], positions[2 * i + 1], color=cmap(i), lw=2,label=f'第{i}节' if i > 0 else '龙头')# 龙头和龙尾用特殊标记表示
ax.plot(positions[0], positions[1], 'o', color='red', markersize=6, label='龙头')
ax.plot(positions[-2], positions[-1], 'o', color='blue', markersize=6, label='龙尾')# 中文标注
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.1), fontsize=10, ncol=5)
ax.set_title('板凳龙盘旋轨迹', fontsize=18)
ax.set_xlabel('X 位置 (米)', fontsize=14)
ax.set_ylabel('Y 位置 (米)', fontsize=14)
ax.grid(True)# 高分辨率保存图像
plt.savefig('dragon_trajectory_with_spiral_cn.png', dpi=300, bbox_inches='tight')
plt.show()# 保存位置和速度数据到Excel文件
df_positions = pd.DataFrame(positions, columns=[f"{t}秒" for t in times])
df_speeds = pd.DataFrame(speeds, columns=[f"{t}秒" for t in times])with pd.ExcelWriter('result1_optimized_cn.xlsx') as writer:df_positions.to_excel(writer, sheet_name='位置')df_speeds.to_excel(writer, sheet_name='速度')
clc; clear all; close all;% 参数设定
pitch = 55;  % 螺距
v = 1;  % m/s
time_end = 300;  % s
dt = 1;  % 时间步长
n_segments = 221;  % 龙身节数
dragon_head_length = 3.41;  % 龙头长度(米)
segment_length = 2.2;  % 每节龙身长度(米)% 初始参数
theta_0 = 16 * 2 * pi;
a = pitch / (2 * pi);  % 螺距/2pitimes = 0:dt:time_end;  % 时间序列% 计算龙头位置
theta = theta_0 + (v / a) * times;
r = a * theta;
x_head = r .* cos(theta);
y_head = r .* sin(theta);% 初始化位置与速度数组
positions = zeros(2 * (n_segments + 3), length(times));
speeds = zeros(n_segments + 3, length(times) - 1);% 计算每一节的龙身与龙尾位置(x和y)
positions(1, :) = x_head;  % x 位置
positions(2, :) = y_head;  % y 位置for i = 1:n_segments+2theta_i = theta - (segment_length * i / a);r_i = a * theta_i;positions(2 * i + 1, :) = r_i .* cos(theta_i);  % xpositions(2 * i + 2, :) = r_i .* sin(theta_i);  % y
end% 计算速度
for i = 1:n_segments+3dx = diff(positions(2*i-1, :));dy = diff(positions(2*i, :));speeds(i, :) = sqrt(dx.^2 + dy.^2) / dt;
end% 数据平滑处理(使用移动平均)
smooth_window = 5;
smooth_speeds = movmean(speeds, smooth_window, 2);% 绘制速度随时间的变化图
figure;
hold on;% 龙头速度
plot(times(1:end-1), smooth_speeds(1, :), 'r-', 'LineWidth', 2, 'DisplayName', '龙头');
plot(times(1:end-1), smooth_speeds(ceil(n_segments/2), :), 'g--', 'LineWidth', 2, 'DisplayName', '中间龙身');
plot(times(1:end-1), smooth_speeds(end, :), 'b-.', 'LineWidth', 2, 'DisplayName', '龙尾');% 标记点
plot(times(1:end-1), smooth_speeds(1, :), 'ro', 'MarkerFaceColor', 'r');
plot(times(1:end-1), smooth_speeds(ceil(n_segments/2), :), 'go', 'MarkerFaceColor', 'g');
plot(times(1:end-1), smooth_speeds(end, :), 'bo', 'MarkerFaceColor', 'b');% 添加中文标签和标题
xlabel('时间 (秒)', 'FontSize', 14);
ylabel('速度 (m/s)', 'FontSize', 14);
title('龙头、龙身和龙尾的速度随时间变化', 'FontSize', 16);% 设置网格和图例
grid on;
legend('show', 'Location', 'northeast');% 调整图像显示范围
xlim([0 time_end]);
ylim([0 max(smooth_speeds(:)) * 1.2]);  % 适当扩大y轴范围% 保存为高分辨率图片
saveas(gcf, 'speed_vs_time_optimized.png');
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

在PyCharm中集成AI编程助手并嵌入本地部署的DeepSeek-R1模型:打造智能开发新体验

打造智能开发新体验:DeepSeekPycharmollamaCodeGPT 目录 打造智能开发新体验:DeepSeekPycharmollamaCodeGPT前言一、什么是ollama?二、如何使用1.进入ollama官方网站:2.点击下载ollama安装包3.根据默认选项进行安装4.安装成功5.打开命令提示符…

软件测试的基础入门(一)

文章目录 一、什么是软件测试?(1)生活中的测试案例(2)代码中的测试示例(3)软件测试的定义 二、软件测试的重要性三、测试工程师(1)定义(2)分类&am…

Linux版本控制器Git【Ubuntu系统】

文章目录 **前言**一、版本控制器二、Git 简史三、安装 Git四、 在 Gitee/Github 创建项目五、三板斧1、git add 命令2、git commit 命令3、git push 命令 六、其他1、git pull 命令2、git log 命令3、git reflog 命令4、git stash 命令 七、.ignore 文件1、为什么使用 .gitign…

20250221 NLP

1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…

Spring Boot 3 整合 Spring Cloud Gateway 工程实践

引子 当前微服务架构已成为中大型系统的标配,但在享受拆分带来的敏捷性时,流量治理与安全管控的复杂度也呈指数级上升。因此,我们需要构建微服务网关来为系统“保驾护航”。本文将会通过一个项目(核心模块包含 鉴权服务、文件服务…

flutter项目构建常见问题

最近在研究一个验证码转发的app,原理是尝试读取手机中对应应用的验证码进行自动转发。本次尝试用flutter开发,因为之前没有flutter开发的经验,遇到了诸多环境方面的问题,汇总一些常见的问题如下。希望帮助到入门的flutter开发者&a…

Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)

笔记链接:https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL

图解感知机(Perceptron)

目录 1.感知机(Perceptron)介绍 2.网络结构与工作原理 3.模型工作示例 4.总结 1.感知机(Perceptron)介绍 感知机(Perceptron)是最早的人工神经网络模型之一,由弗兰克罗森布拉特(…

多旋翼+航模+直升机:多型号无人机飞行表演技术详解

多旋翼、航模、直升机等多种型号的无人机飞行表演技术,是现代科技与艺术的完美结合,它们通过精密的编程、高效的通信、先进的定位与导航技术,以及复杂的编队控制算法,共同呈现出令人震撼的视觉效果。以下是对这些无人机飞行表演技…

deepseek 导出导入模型(docker)

前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局,然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹,然后拷贝…

【MySQL】表的增删查改(CRUD)(上)

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…

Win11作为宿主机,运行VMware 总没有网络

问题: 移动了VMware到新宿主机上后,虚拟机无法连接网络,其实会显示一个圆圈的图标,这是连接上的图标。 造成这个错误的原因是多种多样的。 用下面的方法来查排查错误。 1.控制面板-> 网络连接 安装好虚拟机后,会…

edge浏览器将书签栏顶部显示

追求效果,感觉有点丑,但总归方便多了 操作路径:设置-外观-显示收藏夹栏-始终

快速入门——第三方组件element-ui

学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:10.第三方组件element-ui_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节 组件间的传值 组件可以有内部Data提供数据,也可由父组件通过prop方式传…

代码审计入门学习之sql注入

路由规则 入口文件&#xff1a;index.php <?php // ---------------------------------------------------------------------- // | wuzhicms [ 五指互联网站内容管理系统 ] // | Copyright (c) 2014-2015 http://www.wuzhicms.com All rights reserved. // | Licensed …

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示&#xff1a; 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台&#xff0c;所以对信息的安全和稳定要求非常高。为了解决本问题&#xff0c;采用前端…

QQ登录测试用例报告

QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景&#xff1a;输入账号密码并提交登录请求。预期结果&#xff1a;账号密码通过加密传输&#xff08;如HTTPS&#xff09;与存储&#xff08;如哈希加盐&#xff09;&#xff0c;无明文暴露。 2. 二…

【AI算法岗面试八股面经【超全整理】——机器学习】

AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…

luci界面开发中的MVC架构——LuCI介绍(二)

想要给openwrt开发应用&#xff0c;虽然直接可执行程序也可以运行&#xff0c;但是没有UI会很不方便&#xff0c;想要开发UI就要用openwrt的那一套&#xff0c;自然就是LuCI&#xff0c;LuCI又用了一套MVC框架&#xff0c;今天就讲讲这是个什么东西。 OpenWrt LuCI 界面开发中…

网络安全监测探针安装位置 网络安全监测系统

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 软件简介&#xff1a; SockMon(SocketMonitor)网络安全监控系统是一款为电脑专业人员打造的一款出色的安防监控软件。在如今这个恶意软件&#xff0c;攻击&#…