2024年高教社杯全国大学生数学建模竞赛题目A 题 “板凳龙” 闹元宵完整思路 模型 代码 结果 分享(仅供学习)

“板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头,龙身和龙尾相随盘旋,整体呈圆盘状。一般来说,在舞龙队能够自如地盘入和盘出的前提下,盘龙所需要的面积越小、行进速度越快,则观赏性越好。

某板凳龙由 223 节板凳组成,其中第1节为龙头,后面 221节为龙身,最后1节为龙尾。龙头的板长为 341cm,龙身和龙尾的板长均为220cm,所有板凳的板宽均为 30cm。每节板凳上均有两个孔,孔径(孔的直径)为5.5cm,孔的中心距离最近的板头 27.5cm(见图1和图2)。相邻两条板凳通过把手连接(见图3)。

请建立数学模型,解决以下问题:

问题1 舞龙队沿螺距为 55 cm 的等距螺线顺时针盘入,各把手中心均位于螺线上。龙头前把手的行进速度始终保持1m/s。初始时,龙头位于螺线第16圈A点处(见图 4)。请给出从初始时刻到 300s为止,每秒整个舞龙队的位置和速度(指龙头、龙身和龙尾各前把手及龙尾后把手中心的位置和速度,下同),将结果保存到文件 result1.xlsx 中(模板文件见附件,其中“龙尾(后)”表示龙尾后把手,其余的均是前把手,结果保留6位小数,下同)。同时在论文中给出0s、60s、120s、180s、240 s、300s时,龙头前把手、龙头后面第 1、51、101、151、201 节龙身前把手和龙尾后把手的位置和速度(格式见表1和表 2)。


板凳龙概况:板凳龙由223节板凳组成,每节板凳首尾相连,其中第1节为龙头,后面221节为龙身,最后一节为龙尾。板凳的龙头长度为341 cm,龙身和龙尾每节长度均为220 cm。螺旋线的螺距为55 cm,龙头以1 m/s 的速度沿螺旋线运动。

任务目标:从初始时刻到300秒为止,计算并输出每秒钟龙头、龙身和龙尾把手的位置及速度。

  1. 螺旋线参数方程 螺旋线是一条三维曲线,可以用参数方程来描述,螺旋线的两个主要变量是半径和角度。假设龙头沿螺旋线运动,位置由时间 ttt 决定。螺旋线的方程可以表示为:

其中: r(t):螺旋线的半径,随时间逐渐减小; θ(t):螺旋线的角度,随着时间增大; h(t):螺旋线的高度,螺距为55 cm,则高度随角度增加的速率为固定值。

  1. 龙头位置的计算 龙头以1 m/s 的速度沿螺旋线运动。为了计算龙头的位置,需要知道螺旋线的半径和角度变化规律。 2.1 半径变化: 设螺旋线初始半径为 r0=16×55 cm,时间为t,螺旋线的螺距为h=55 cm。每秒螺旋线的半径变化为:

其中 vhead=100 cm/s为龙头的速度。 2.2 角度变化: 龙头在螺旋线上的运动角速度为:

其中 θ0=0是初始角度。 2.3 龙头位置: 根据螺旋线方程,龙头在时间t时刻的二维平面位置(x,y)为:

  1. 龙身和龙尾位置的计算 龙身和龙尾每节板凳的角度滞后龙头。假设每节板凳长度为 L=220 cm,第i节板凳的位置与龙头的相对位置为:

其中 θlag为每节板凳的角度滞后值,定义为固定值。 第i节板凳在时间 t时刻的二维平面位置 (xi,yi)为:

  1. 速度计算 龙头的速度由径向速度和切向速度两个分量组成。 4.1 径向速度: 径向速度是龙头沿半径方向的速度变化率:

4.2 切向速度: 切向速度是龙头沿切线方向的速度分量,随角速度变化:

4.3 总速度: 龙头的总速度为径向速度和切向速度的合速度:

类似地,第i节板凳的速度也由径向和切向速度合成,公式与龙头的速度类似,只需将半径和角度替换为相应的ri(t)和θi(t)。

  1. 龙尾位置和速度的特殊处理

龙尾的前把手和后把手位置与其他板凳类似,但需要注意龙尾后把手的额外滞后。

问题2 舞龙队沿问题1设定的螺线盘入,请确定舞龙队盘入的终止时刻,使得板凳之间不发生碰撞(即舞龙队不能再继续盘入的时间),并给出此时舞龙队的位置和速度,将结果存放到文件 result2.xlsx中(模板文件见附件)。同时在论文中给出此时龙头前把手、龙头后面第 1、51、101、151、201条龙身前把手和龙尾后把手的位置和速度。


1. 碰撞条件的数学表示

设舞龙队由223节板凳组成,其中:

龙头为第1节板凳,龙身为第2节到第222节板凳,龙尾为第223节板凳。

每节板凳的长度为 L=220 cm。

为了避免碰撞,相邻两节板凳(例如第i节和第i+1节)的距离必须大于等于板凳长度L。假设螺旋线方程为 x(t),y(t)表示舞龙队中每节板凳的位置,碰撞条件可以表示为:

其中,xi(t),yi(t)是第i节板凳的二维坐标,di(t)表示第i节板凳与第i+节板凳之间的距离。

当任意一对相邻板凳的距离di(t)小于L时,即发生碰撞。

2. 盘入螺旋线的运动模型

舞龙队沿螺旋线盘入,每节板凳的运动遵循如下螺旋线方程:

其中:

ri(t)是第i节板凳的半径,随时间减小;

θi(t)是第i节板凳的角度,随时间增加。

2.1 半径变化:

螺旋线的初始半径 r0=16×55 cm。第i节板凳的半径ri(t)随时间变化为:

其中,vhead=100 cm/s为龙头的速度,L=220 cm为板凳的长度。

2.2 角度变化:

每节板凳的角度随时间增加,其角速度为:

其中 θ0=0为初始角度。

3. 确定终止时刻的数学过程

为了确定舞龙队盘入的终止时刻,我们需要在每个时间点t上计算相邻两节板凳之间的距离di(t),并找到第一个发生碰撞的时刻tend,使得:

3.1 相邻两节板凳的距离:

将 xi(t)和yi(t)代入上式,即可得到每节板凳之间的距离公式。

3.2 终止时刻:

终止时刻 tend满足:

如果存在某个时刻 tend,使得某一对相邻板凳的距离小于板凳长度 LLL,则该时刻即为舞龙队盘入的终止时刻。

4. 龙头及关键节点位置与速度

在终止时刻 tend,我们需要记录以下关键点的位置和速度:

龙头前把手:即第1节板凳的位置和速度;

龙头后面第1节、51节、101节、151节、201节龙身前把手:这些为龙身的代表性节点;

龙尾后把手:即最后一节(第223节)板凳的后把手。

4.1 位置:

对于每个关键节点i,其位置在终止时刻 tend为:

4.2 速度:

速度为径向速度和切向速度的合成,关键节点i的速度为:

其中,径向速度 vr和切向速度vθ:

问题3 从盘入到盘出,舞龙队将由顺时针盘入调头切换为逆时针盘出,这需要一定的调头空间。若调头空间是以螺线中心为圆心、直径为9m的圆形区域(见图5),请确定最小螺距,使得龙头前把手能够沿着相应的螺线盘入到调头空间的边界。

问题 4 盘入螺线的螺距为 1.7 m,盘出螺线与盘入螺线关于螺线中心呈中心对称,舞龙队在问题 3 设定的调头空间内完成调头,调头路径是由两段圆弧相切连接而成的S形曲线,前一段圆弧的半径是后一段的2倍,它与盘入、盘出螺线均相切。能否调整圆弧,仍保持各部分相切,使得调头曲线变短?

问题五 龙头前把手的行进速度始终保持1m/s。以调头开始时间为零时刻,给出从-100s开始到100s为止,每秒舞龙队的位置和速度,将结果存放到文件result4.xlsx 中(模板文件见附件)。同时在论文中给出-100 s、-50 s、0s、50s、100s时,龙头前把手、龙头后面第 1、51、101、151、201 节龙身前把手和龙尾后把手的位置和速度。问题5 舞龙队沿问题4设定的路径行进,龙头行进速度保持不变,请确定龙头的最大行进速度,使得舞龙队各把手的速度均不超过 2m/s。

 完整↓↓↓

好的,以下是一个简单的MATLAB代码示例,用于解决2024数学建模A板凳”。这个示例假设我们需要在给定的约束条件下优化板凳的设计参数。 ```matlab % 板凳设计优化示例代码 % 目标:最小化板凳的总重量 % 约束条件:强度、尺寸限制等 % 定义设计变量 % x(1) - 板凳的长度 % x(2) - 板凳的宽度 % x(3) - 板凳的高度 % 初始设计变量 x0 = [1.5, 0.3, 0.4]; % 目标函数:总重量 objective = @(x) x(1) * x(2) * x(3) * density; % 约束函数 % 强度约束:应力 <= 允许应力 % 尺寸约束:长度、宽度、高度在一定范围内 nonlcon = @constraintFunction; % 优化选项 options = optimoptions('fmincon','Display','iter','Algorithm','sqp'); % 优化求解 [x, fval] = fmincon(objective, x0, [], [], [], [], [], [], nonlcon, options); % 输出结果 disp('最优设计变量:'); disp(x); disp('最小总重量:'); disp(fval); % 约束函数定义 function [c, ceq] = constraintFunction(x) % 强度约束 stress = calculateStress(x); allowStress = 100; % 假设允许应力为100单位 c = stress - allowStress; % 尺寸约束 lengthMin = 1.0; lengthMax = 2.0; widthMin = 0.2; widthMax = 0.5; heightMin = 0.3; heightMax = 0.6; c = [c; x(1) - lengthMax; lengthMin - x(1); x(2) - widthMax; widthMin - x(2); x(3) - heightMax; heightMin - x(3)]; % 没有等式约束 ceq = []; end % 应力计算函数 function stress = calculateStress(x) % 假设应力计算公式为:应力 = 载荷 / (宽度 * 高度) load = 1000; % 假设载荷为1000单位 stress = load / (x(2) * x(3)); end % 密度定义 density = 0.7; % 假设密度为0.7单位 ``` 这个示例代码展示了如何使用MATLAB的`fmincon`函数进行优化,求解板凳的设计参数以最小化总重量,同时满足强度尺寸约束。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值