【2024数模国赛赛题思路公开】国赛A题思路丨附可运行代码丨无偿自提

news2024/9/22 13:29:29
2024年国赛A题解题思路

【题目分析】

问题1:舞龙队沿螺距为55 cm的等距螺线顺时针盘入,给出300秒内舞龙队每秒的位置和速度

分析思路:

·  螺线方程: 需要建立螺线方程,以便描述龙头及每节板凳的位置。螺线是基于极坐标系的,可以通过设置龙头的速度为1 m/s,确定螺线的参数。

·  龙头运动: 龙头的速度为已知定值,需通过对时间的积分求出龙头的运动轨迹。

·  龙身和龙尾: 龙身和龙尾的板凳通过把手连接,其运动需考虑整体的曲率变化,因此可以通过数值方法模拟整个龙队每节的速度和位置。

·  数值模拟: 通过离散化时间,编程计算每秒的各节板凳的位置和速度,并导出结果文件 result1.xlsx。

·  关键点: 在0s, 60s, 120s等时间点分别记录特定板凳(如第1、51、101、151、201节板凳)的运动状态,输出表格化的数据用于报告。

【解题思路】

1. 龙头的运动路径

龙头前把手沿着等距螺线顺时针盘入,螺线的极坐标方程为:

其中:

  •  是龙头前把手在角度  时的径向距离;
  •  r0是螺线的起始半径,已知龙头初始位于第16圈;
  •  p=0.55m 是螺距(55 cm);
  •  是极角,单位为弧度。

龙头前把手的行进速度恒定为 1 m/s,因此我们可以通过时间t计算出龙头的角速度 和径向速度Vr:

2. 龙头的位置信息

利用螺线的极坐标方程,可以将龙头前把手的坐标从极坐标转换为直角坐标系下的 x和y 位置:

其中r(t)和是通过时间t计算出的螺线半径和极角。

3. 龙身和龙尾的位置信息

每节龙身的前把手和后把手都需要沿螺线上行进。由于各板凳的长度不同,每节龙身的后把手相对于前把手的偏移量由板凳的长度 li。通过以下公式修正:

前把手位置:

后把手位置根据板凳长度li和宽度w进行调整:

4. 数值模拟

通过离散化时间 t=1,2,3...,300,可以逐步计算每节龙身和龙尾的位置和速度。对每个时间点 t,首先计算龙头位置,再根据龙头的位置推导出龙身和龙尾的位置。

每一节板凳的速度可以通过数值微分计算:

5. 结果导出

将每秒的位置信息和速度保存到文件 result1.xlsx 中,按照以下格式:

  • 位置信息

速度信息

Python参考代码】

import numpy as np
import matplotlib.pyplot as plt

# 定义常量
p = 0.55  # 螺距 (m)
v_head = 1.0  # 龙头速度 (m/s)
t_total = 300  # 总时间 (s)
r_0 = 16 * p  # 螺线起始半径,假设起始在第16圈
num_sections = 223  # 总板凳节数
length_head = 3.41  # 龙头长度 (m)
length_body = 2.20  # 龙身和龙尾长度 (m)
section_lengths = [length_head] + [length_body] * (num_sections - 1)  # 各节板凳长度

# 初始化位置和速度列表
positions = np.zeros((t_total + 1, num_sections, 2))  # x, y 坐标
velocities = np.zeros((t_total + 1, num_sections))  # 每节板凳速度

# 计算角速度
def calculate_angular_velocity(v_head, r_head):
    return v_head / r_head

# 计算每节板凳在t时刻的位置
def calculate_position(t, section_index):
    r = r_0 + p * t / (2 * np.pi)  # 半径随时间变化
    theta = t / r  # 极角随时间变化
    # 计算每节板凳的前把手位置
    if section_index == 0:
        x = r * np.cos(theta)
        y = r * np.sin(theta)
    else:
        prev_x, prev_y = positions[t, section_index - 1]
        section_length = section_lengths[section_index]
        direction = np.arctan2(prev_y, prev_x) + np.pi  # 与前一节相反方向
        x = prev_x + section_length * np.cos(direction)
        y = prev_y + section_length * np.sin(direction)
    return x, y

# 计算每节板凳在t时刻的速度
def calculate_velocity(t, section_index):
    if t == 0:
        return 0  # 初始时刻速度为0
    prev_pos = positions[t - 1, section_index]
    current_pos = positions[t, section_index]
    dist = np.sqrt((current_pos[0] - prev_pos[0])**2 + (current_pos[1] - prev_pos[1])**2)
    return dist

# 主循环:计算每秒的位置信息和速度
for t in range(t_total + 1):
    for i in range(num_sections):
        positions[t, i] = calculate_position(t, i)
        velocities[t, i] = calculate_velocity(t, i)

# 可视化螺线和板凳位置
def plot_positions():
    fig, ax = plt.subplots(figsize=(10, 10))
    ax.set_aspect('equal')
    for t in [0, 60, 120, 180, 240, 300]:
        ax.plot(positions[t, :, 0], positions[t, :, 1], label=f't={t}s')
    
    # 可视化龙头位置
    ax.scatter(positions[:, 0, 0], positions[:, 0, 1], color='red', s=50, label='龙头轨迹')
    
    ax.set_title('舞龙队沿螺线运动轨迹')
    ax.set_xlabel('x 位置 (m)')
    ax.set_ylabel('y 位置 (m)')
    ax.legend()
    plt.grid(True)
    plt.show()

# 调用绘图函数
plot_positions()

# 保存结果到 Excel 文件
import pandas as pd

# 创建DataFrame来存储结果
result = pd.DataFrame(columns=["time", "section", "x_position", "y_position", "velocity"])

for t in range(t_total + 1):
    for i in range(num_sections):
        result = result.append({
            "time": t,
            "section": i + 1,
            "x_position": positions[t, i, 0],
            "y_position": positions[t, i, 1],
            "velocity": velocities[t, i]
        }, ignore_index=True)

# 保存为 Excel 文件
result.to_excel('result1.xlsx', index=False)

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

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

相关文章

图形几何算法 -- 凸包算法

前言 常用凸包算法包括Graham Scan 算法和Jarvis March (Gift Wrapping) 算法,在这里要简单介绍的是Graham Scan 算法。 1、概念 凸包是一个点集所包围的最小的凸多边形。可以想象用一根绳子围绕着一群钉子,绳子所形成的轮廓便是这些钉子的凸包。在计算…

谈谈AI领域的认知误区、机会点与面临的挑战

谈谈AI领域的认知误区、机会点与面临的挑战 最近2年,AI 技术的火爆,到处都能看到大家在讨论AI 的发展与机会。这里我们讨论一下AI 认知的误区,机会点和面临的挑战。 by kimmking AI 认知的误区 这年头掀起了所有人讨论AI热潮的同时&#xf…

使用C语言实现字符推箱子游戏

使用C语言实现字符推箱子游戏 推箱子(Sokoban)是一款经典的益智游戏,玩家通过移动角色将箱子推到目标位置。本文将带你一步步用C语言实现一个简单的字符版本的推箱子游戏。 游戏规则 玩家只能推箱子,不能拉箱子。只能将箱子推到…

【内容审核】对审核结果进行封装

目录 1、分析返回结果示例 2、自定义封装类 在【内容审核】Java实现七牛云内容审核功能七牛 java 审核-CSDN博客 中实现了文本、图片和视频的审核功能,但是这些功能灵活性不够,既不能自己设置审核的强度,也不能内容违规的详细信息&#xff…

【教学类-52-08】20240905动物数独(6宫格)一页2张任务卡,一页一个动物贴图卡,有答案

背景需求: 前文提到6宫格数独的图片6*636图,如果将6张任务卡放在一个A4上,看上去6种动物很小,所以我换了一个word模板,变成了2张任务卡放在一个A4上。 【教学类-52-07】20240903动物数独(6宫格&#xff0…

dp练习【4】

最长数对链 646. 最长数对链 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i] [lefti, righti] 且 lefti < righti 。 现在&#xff0c;我们定义一种 跟随 关系&#xff0c;当且仅当 b < c 时&#xff0c;数对 p2 [c, d] 才可以跟在 p1 [a, b…

003: Visual Studio 配置 VTK 开发环境的方法与比较

目录 简介&#xff1a; 1 配置属性方法&#xff1a; 2 创建配置文件 3 在新项目中导入props文件 总结&#xff1a; 简介&#xff1a; 编译好VTK后&#xff0c;在安装目录里面有通常有包含bin,lib和include等文件夹&#xff0c;要在自己的项目里面使用VTK&#xff0c;主要…

如何用c++判断一个类型是vector

如何用c判断一个类型是vector 我们使用模板元编程来搞定 这里我们可以定义一个模板结构体 is_std_vector&#xff0c;并对其进行特化&#xff0c;以便专门处理 std::vector 类型。 . 下面是详细的实现和使用示例。 实现 is_std_vector 类型, 继承自false_type 首先&#xff…

Unexpected token d in JSON at position 5, check bodyParser config错误解决

错误原因&#xff1a;json格式不对 { desc"设备1", iotProjectId11 } 解决&#xff1a;通过json在线校验格式校验json格式&#xff0c;找出错误原因&#xff0c;修改 在线JSON校验格式化工具&#xff08;Be JSON&#xff09; 修改&#xff1a; {"desc": &…

基于SpringBoot的校园博客系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Maven、Tomcat 系统展示 首页 博主管理…

使用 MongoDB 构建 AI:Patronus 如何自动进行大语言模型评估来增强对生成式 AI 的信心

大语言模型可能不可靠&#xff0c;这几乎算不上头条新闻。对于某些用例&#xff0c;这可能会带来不便。而对于其他行业&#xff0c;尤其是受监管行业&#xff0c;后果则要严重得多。于是&#xff0c;业内首个大语言模型自动评估平台 Patronus AI 应运而生。 Patronus AI 由 Met…

为啥给的贷款额度差距那么大?机构到底是怎么决定给你多少额度?

今日&#xff0c;我们深入探讨一个颇为引人入胜的话题——为何在不同银行或信贷机构申请贷款时&#xff0c;所能获得的额度竟能如此大相径庭&#xff1f;同时&#xff0c;揭秘这些金融机构背后是如何精密计算并决定每位申请者的“额度”的。以下内容干货满满&#xff0c;建议收…

10 先序遍历创建二叉树

这个代码是使用手动输入的方式创建二叉树 比较直观 #include "stdio.h" #include "stdlib.h"typedef int ElemType; typedef struct node {ElemType data;struct node *lchild;struct node *rchild; } Node;Node *create_node(int value) {Node *node (N…

2024国赛数学建模B题思路模型

完整的思路模型请查看文末名片

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整思路

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ A题是数模类赛事很常见的物理类赛题&#xff0c;需要学习不少相关知识。此题涉及对一个动态系统的建模&#xff0c;模拟…

弹框用户勾选过得置灰 或者不显示

弹框用户勾选过得置灰 或者不显示 添加 :disabled“row.disabled” <el-table-column label"名称" width"300"><template #default"{ row }"><el-radio:disabled"row.disabled":label"row.coursesName"v-mo…

中秋节如何利用Python发送彩信

中秋节&#xff0c;作为中国传统节日之一&#xff0c;不仅是家人团聚的时刻&#xff0c;也是商家提高销售业绩的黄金时期。在这个充满温情与消费氛围的节日里&#xff0c;合理利用短信平台进行精准营销&#xff0c;可以显著提高企业的销售业绩。 支持免费对接试用乐讯通PaaS平台…

【全网最全】2024年数学建模国赛B题保奖思路+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击末文的卡片&#xff0c;那是获取资料的入口&#xff01; 一、问题重述 本题聚焦于某电子产品制造企业在生产过程中的决策问题。企业在生产中需采购 和使用两种关键零配件&#xff0c;并在装配过程中面临如何优化质…

让Mac更Mac|明基MA系列显示器上市

凭借出色的性能和设计&#xff0c;MacBook成为了很多人的心头好。可13~16英寸的屏幕&#xff0c;时常让人感到视野受限&#xff0c;就像无边创意中的一道隐形壁垒。想要外接显示大屏&#xff0c;但除了Studio Display等苹果显示器之外&#xff0c;其他品牌的外接显示屏&#xf…

优化器与现有网络模型的修改

一、优化器 optimizer optim.SGD(model.parameters(), lr0.01&#xff08;学习速率&#xff09;, momentum0.9) optimizer optim.Adam([var1, var2], lr0.0001) 一般&#xff0c;学习率的设置&#xff0c;先从大的设置&#xff0c;逐渐变小。 神经网络可以参见上篇文章&am…