2023年数维杯国际大学生数学建模挑战赛A题复合直升机的建模与优化控制问题解题全过程论文及程序

2023年数维杯国际大学生数学建模挑战赛

A题 复合直升机的建模与优化控制问题

原题再现:

  直升机具有垂直起降等飞行能力,广泛应用于侦察、运输等领域。传统直升机的配置导致旋翼叶片在高速飞行过程中受到冲击波的影响,难以稳定飞行。为了在保持直升机灵活飞行能力的同时发展其高速飞行能力,将固定翼与旋翼相结合的复合直升机的设计已成为发展的重要方向。
  同轴直升机是一种典型的复合型直升机。这种配置主要由四个动力部件组成:同轴刚性转子、螺旋桨推进器以及水平和垂直尾翼。螺旋桨推进器的中心以及水平和垂直尾翼都位于飞行器机身的对称平面上。飞行机器的姿态角是指飞行过程中的滚转角ξ、俯仰角θ和偏航角ψ,相应的力矩称为滚转力矩、俯仰力矩和偏航力矩(如图1所示)。四个功率分量对飞行器姿态角的影响如下:1)同轴刚性转子产生的气动力矩可以近似为与空气密度ρ、转子盘面积和转子叶尖速度成正比的函数,正比例因子称为转子力矩因子。2) 螺旋桨推进器通过旋转产生推力和旋转力矩。3) 水平尾翼装有升降舵控制装置,可调节水平尾翼的相对角度以提供俯仰力矩。该力矩与动压、水平尾翼面积和水平尾翼与质心之间的横向距离成比例,比例系数称为水平尾翼力矩系数。4) 与水平尾翼类似,垂直尾翼通过安装方向舵控制装置来调节相对角度,从而提供偏航/滚转力矩。该力矩与动压、垂直尾翼面积以及垂直尾翼与质心之间的横向/纵向距离成比例,比例系数称为垂直尾翼力矩系数。
  复合材料直升机的可操纵部件如下:(1)同轴旋翼总距离u_c,(2)同轴旋翼差速总距离u_cd,(3)同轴旋翼纵向周距u_e,(4)同轴旋翼横向周距u_a,(5)螺旋桨推进器工作能力u_t,(6)升降舵偏转值u_eh,(7)方向舵偏转值uav。根据直升机的飞行速度,在低速模式下(通常指85米/秒以下的速度),姿态角控制主要通过同轴转子和螺旋桨推进器实现。在高速模式下(一般指100米/秒以上的速度),姿态角控制主要通过螺旋桨推进器、升降舵和方向舵实现。
  有一个同轴复合材料直升机原型的例子,该飞行器的一些空气动力学系数和机身参数已通过风洞实验获得,如附录I所示。
在这里插入图片描述
  B、 标题数据
  参见附录I。
  C、 需要解决的问题
  1、在给定参数的情况下,建立了复合直升机俯仰力矩表达式,建立了俯仰角变化模型。请提供飞行器在5s、10s和20s时的姿态角(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量2米/秒,u\u c=0度、u\u cd=−2.1552度、u\u e=−3.4817度、u\u a=−2.0743度、u\u t=0度、u\u eh=−9.0772×10−7度、u\u av=4.1869×10−7度)
  2、在给定参数的基础上,建立了复合直升机横摇、俯仰和偏航力矩的表达式,并建立了姿态角变化模型。请提供飞行器在5s、10s和20s时的姿态角(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量0.2米/秒,u\u c=0度、u\u cd=–2.1552度、u\u e=–3.4817度、u\u a=–2.0743度、u\u t=0度、u\u eh=–9.0772×10−7度、u\u av=4.1869×10−7度)。
  3、根据直升机在低速和高速飞行时的机动特性,设计各部件的机动幅度,以满足飞行器的水平飞行任务(零姿态角)(初始飞行高度3000米,飞行速度前向分量80米/秒,垂直上升分量0.2米/秒;初始飞行高度3000米,飞行速度前向分量180米/秒,垂直上升分量0.2米/秒)。
  4、考虑到直升机的加速度机动任务,当飞行速度前向分量在20秒内从80米/秒均匀增加到180米/秒(假设前向加速度完全由螺旋桨助推器提供)时,请根据直升机在低速和高速飞行(初始飞行高度3000米,飞行垂直上升分量率0.2米/秒)时的机动特性,设计每个控制输入的动态值,以实现飞机的前向加速度和水平飞行(零姿态角)。

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

  利用复合直升机的气动参数和机身参数对复合直升机进行力学分析,建立直升机的动力学微分方程,进而导出直升机姿态角变化模型。它还提供了不同时间点的姿态角数据,并规定了直升机各部件的控制值,以确保直升机顺利完成飞行任务。
  问题1:该问题要求建立直升机俯仰角变化模型,并提供特定时刻的特定俯仰角。在给定的基本条件下,分析了作用在直升机上的俯仰力矩。我们将俯仰力矩视为旋翼产生的气动力矩和水平尾翼的俯仰力矩之和。我们分别计算这两个力矩分量,得到总力矩。根据力矩与角加速度的关系,建立了直升机的动力学微分方程。通过求解该微分方程,得到了俯仰角的变化模型。
  问题2:该问题要求建立直升机三种不同姿态角变化的模型,并提供特定时刻的具体姿态角。在给定的基本条件下,分析了作用在直升机上的力矩。俯仰力矩为旋翼产生的气动力矩与水平尾翼的俯仰力矩之和,横摇力矩为旋翼产生的气动力矩与垂直尾翼的横摇力矩之和,横摆力矩为旋翼产生的气动力矩与垂直尾翼的横摆力矩之和。我们分别计算这些力矩分量,得到不同方向的总力矩。根据力矩与角速度的关系,建立了动力学微分方程。通过求解这些微分方程,得到了姿态角变化模型。
  问题3:该问题要求控制直升机不同部件在高速和低速两种情况下完成水平飞行任务。假设直升机以恒定速度飞行,在低速情况下,姿态角控制主要通过同轴旋翼实现,而在高速模式下,姿态角控制主要通过吊卡和方向舵实现。选取不同的控制输入,建立直升机在这两种情况下的动态微分方程,得到姿态角变化模型。优化目标是使不同时刻三个姿态角之和最小。采用粒子群优化算法,得到各部件的最优控制输入。
  问题4:该问题要求在直升机向前加速的同时,控制直升机不同部件完成水平飞行和向前加速任务。我们将飞行过程分为低速、中速和高速三个阶段,并在每个阶段选择不同的控制输入。建立了直升机在不同阶段的动力学微分方程,推导了姿态角变化模型。优化目标是使不同时刻三个姿态角之和最小。采用粒子群优化算法在不同时刻获得各部件的最优控制输入。

问题分析:

  问题1和问题2的分析
  问题1和问题2本质上是关于直升机的动态分析,唯一的区别是为每个问题提供不同的基础数据集。此外,问题1仅要求考虑俯仰力矩,而问题2涉及考虑所有三个方向的力矩。因此,我们采用相同的方法来分析这两个问题。将俯仰力矩视为旋翼产生的气动力矩与水平尾翼的俯仰力矩之和,将横摇力矩视为旋翼产生的气动力矩与垂直尾翼的横摇力矩之和,将横摆力矩视为旋翼产生的气动力矩与垂直尾翼的横摆力矩之和。我们分别计算这些力矩分量,得到不同方向的总力矩。然后,根据力矩与角速度的关系,建立动力学微分方程。通过求解这些微分方程,得到了姿态角变化模型。

  问题三分析
  问题三要求我们控制直升机顺利完成快速水平飞行任务。该问题建立在问题1和问题2建立的姿态角变化模型的基础上,用控制变量代替问题1和问题2给出的常数。我们用这些变量来表示姿态角,目的是最小化不同时刻的姿态角值之和。采用粒子群优化算法得到最优控制策略。

  问题4的分析
  问题4在问题3的基础上引入了一个变体,我们需要控制直升机以完成加速飞行任务。与问题3分别考虑高速和低速情况不同,问题4在单个飞行过程中结合了不同的速度条件。但是,对于低速、中速和高速时间段,我们仍然可以分段时间并选择不同的控制变量。需要注意的是,在前面的问题中,我们假设直升机以恒定速度飞行,而不考虑推进系统产生的扭矩。在问题4中,当直升机加速时,我们需要考虑推进系统产生的扭矩。以不同时刻姿态角值之和最小为目标,采用粒子群优化算法得到最优控制策略。

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

在这里插入图片描述

在这里插入图片描述

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

程序代码:

clc;
clear;
theta_final = [];
syms t theta(t)
F_dynamic = 1/2.*rho(t).*6404;
k_yaw = f2(sqrt(6404)/180)+g2(sqrt(6404)/180).*(-
3.4817)+m(sqrt(6404)/180).*(-2.1552);
M_yaw = k_yaw.*pi.*36.*rho(t).*1/2.*180.^2;
k_hor = -0.0001+phy_ud(sqrt(6404)/180).*(-9.0072).*0.0000001;
M_hor = k_hor.*F_dynamic.*1.*(-3);
M_total = M_yaw+M_hor;
% 定义二阶微分方程
eqn = 20000 * diff(theta, t, t) == M_total;
theta_d = diff(theta,t);
cond1 = theta(0) == 0;
cond2 = theta_d(0) == 0;
% 解微分方程
sol = simplify(dsolve(eqn, [cond1, cond2]));
% for t=0:0.1:20
% 
% theta_final=cat(1,theta_final,[t eval(simplify(subs(sol,'t',t)))]);
% 
% end
theta_final= eval(simplify(subs(sol,'t',20)))
clc;
clear;
theta_p_final=[];
theta_r_final =[];
theta_y_final=[];
syms t theta_p(t) theta_r(t) theta_y(t)
F_dynamic = 1/2.*rho(t).*6400.04;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 俯仰
k_pitch = f2(sqrt(6400.04)/180)+g2(sqrt(6400.04)/180).*(-
3.4817)+m(sqrt(6400.04)/180).*(-2.1552);
M_pitch = k_pitch.*pi.*36.*rho(t).*1/2.*180.^2;
k_hor = -0.0001+phy_ud(sqrt(6400.04)/180).*(-9.0772).*(-0.0000001);
M_hor = k_hor.*F_dynamic.*(-3);
M_y_total = M_pitch+M_hor; 
m(sqrt(6400.04)/180)
eval(simplify(subs(M_pitch,'t',20)))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 滚动
k_roll = f1(sqrt(6400.04)/180)+g1(sqrt(6400.04)/180).*(-
2.0743)+c1(sqrt(6400.04)/180).*(-2.1552);
M_roll = k_roll.*pi.*36.*rho(t).*1/2.*180.^2;
k_ver_r = 
sigma_v(sqrt(6400.04)/180)+phy_dir(sqrt(6400.04)/180).*(4.1869).*0.000000
1;
M_ver_r = k_ver_r.*F_dynamic.*0.5.*(0.2);
M_x_total = M_roll+M_ver_r;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 偏航
k_yaw = f3(sqrt(6400.04)/180)+c3(sqrt(6400.04)/180).*(-2.1552);
M_yaw = k_yaw.*pi.*36.*rho(t).*1/2.*180.^2;
k_ver_y = 
sigma_v(sqrt(6400.04)/180)+phy_dir(sqrt(6400.04)/180).*(4.1869).*0.000000
1;
M_ver_y = k_ver_y.*F_dynamic.*0.5.*(-3);
M_z_total = M_yaw+M_ver_y;
%% 求俯仰角度
eqn = 20000 * diff(theta_p, t, t) == M_y_total;
theta_p_d = diff(theta_p,t);
cond1 = theta_p(0) == 0;
cond2 = theta_p_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_p_final=cat(1,theta_p_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
%% 求滚动角度
eqn = 8000 * diff(theta_r, t, t) == M_x_total;
theta_r_d = diff(theta_r,t);
cond1 = theta_r(0) == 0;
cond2 = theta_r_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_r_final=cat(1,theta_r_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
%% 求偏航角度
eqn = 25000 * diff(theta_y, t, t) == M_z_total;
theta_y_d = diff(theta_y,t);
cond1 = theta_y(0) == 0;
cond2 = theta_y_d(0) == 0;
% 解微分方程
sol = dsolve(eqn, [cond1, cond2]);
for i = 0:0.1:20
 i
 theta_y_final=cat(1,theta_y_final,[i 
eval(simplify(subs(sol,'t',i)))]);
end
figure
plot(theta_p_final(:,1),theta_p_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of pitch /deg',FontSize=18)
figure
plot(theta_r_final(:,1),theta_r_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of roll /deg',FontSize=18)
figure
plot(theta_y_final(:,1),theta_y_final(:,2),'LineWidth',2)
xlabel('t /s',FontSize=18)%设置横坐标轴
ylabel('theta of yaw /deg',FontSize=18)

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

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

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

相关文章

台式电脑屏幕亮度怎么调节?让你的眼睛更舒适!

在日常使用台式电脑时,调节屏幕亮度是一项常见的需求。不同的环境和个人偏好可能需要不同的亮度设置。因此,了解台式电脑屏幕亮度怎么调节是非常重要的。本文将介绍三种常见的方法,帮助您轻松调节台式电脑屏幕亮度,以满足您的需求…

ollama 导入GGUF模型文件

GGUF模型导入 1 编写Modelfile文件 1:创建一个文本文件,建议改名为模型名,扩展名为Modelfile。 比如你下载的模型文件名是llama-8b.gguf,那这个文件名就叫llama-8b.modelfile 2:用记事本编辑文件添加模型文件地址&am…

Django模型进阶

一.配置MySQL 1.安装mysql 2.mysql驱动 使用mysqlclient pip install mysqlclient 如果上面的命令安装失败,则尝试使用国内豆瓣源安装: pip install -i https://pypi.douban.com/simple mysglclien (Linux Ubuntu下需要先安装:apt install lib…

Linux编辑器vim的配置

文章目录 简单vim配置配置文件的位置常用配置选项,用来测试 使用插件 简单vim配置 配置文件的位置 在目录/etc/下面,有个名叫vimrc的文件,这是系统中公共的vim配置文件,对所有用户有效。 [yuiiZbp19b5lvg8xtpf1tzrenZ etc]$ cl…

政安晨:【Keras机器学习示例演绎】(四十四)—— 使用序列到序列转换器实现英语到西班牙语的翻译

目录 简介 设置 下载数据 解析数据 文本数据矢量化 建立模型 训练我们的模型 解码测试句子 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不足之…

std::ref和std::cref的使用和原理分析

目录 1.用法 2.std::reference_wrapper介绍 3.std::ref原理分析 4.std::cref原理分析 5.总结 1.用法 它的定义如下: std::ref:用于包装按引用传递的值。 std::cref:用户包装按const引用传递的值。 C本身就有引用(&&#…

笔记-跨域方式实现原理

websocket Websocket是HTML5的一个持久化的协议,它实现了浏览器与服务器的全双工通信,同时也是跨域的一种解决方案。WebSocket和HTTP都是应用层协议,都基于 TCP 协议。但是 WebSocket 是一种双向通信协议,在建立连接之后&#xff…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-01-信息物理系统(CPS)技术概述

文章目录 1. 信息物理系统(CPS)1.1 来源1.2 定义1.3 本质 2. CPS的实现2.1 CPS 的体系架构2.1.1 单元级2.1.2 系统级2.1.3 SoS级 2.2 CPS 的技术体系2.2.1 感知和自动控制1)智能感知技术2)虚实融合控制技术 2.2.2 工业软件2.2.3 工…

WPF使用ItemsControl显示Object的所有属性值

对于上位机开发,我们有时候有这样的需求:如何显示所有的IO点位?比如有10个IO点位,那我们要写10个TextBlock去绑定这10个点位的属性(本文暂时不考虑显示的样式,当然也可以考虑),当点位…

绝地求生PUBG新老艾伦格有什么差别 老艾伦格什么时候回归

复古风格的艾伦格原始地图携带着那些标志性的记忆符号华丽回归,邀请您沉浸于往昔的每一处细节探索中。我们不仅还原了游戏诞生的起点,还在其中巧妙融入现代游戏元素,构筑一座连接昔日与今朝的桥梁,完美融合了经典与创新的游戏体验…

【AI大模型应用开发】LATS:比ToT和ReAct更强大的大模型思维框架

大家好,我是 同学小张,持续学习C进阶知识和AI大模型应用实战案例,持续分享,欢迎大家点赞关注,共同学习和进步。 我们在大模型中常听说CoT(思维链)、ToT(思维树)&#xff…

深入理解C#中的IO操作:Path类的详解

文章目录 前言一、Path类的概述二、Path类的主要方法2.1 Path.GetFullPath(string relativePath)2.2 Path.GetDirectoryName(string path)2.3 Path.GetFileName(string path)2.4 Path.GetFileNameWithoutExtension(string path)2.5 Path.GetExtension(string path)2.6 Path.Com…

JUC下的Future 详解

java.util.concurrent.Future 是Java并发编程中一个重要的接口,它代表一个异步计算的结果。当你提交一个任务到执行器(如ExecutorService的submit方法),它会返回一个Future对象。这个对象允许你查询任务是否完成、取消任务、获取任…

【2024年5月备考新增】】 考前篇(4)《官方平台 - 考生模拟练习平台常用操作(三)》

9 如何绘制七格图 第一步:选择图形元件“网络计划”中的七格图元件,在绘图区点击 第二步:批量复制(先选中元件,按Ctrl+C, 再 Ctrl+V) 七格形状,有多少活动复制多少个 选中多个图形后,可点左上角的对齐工具进行对齐; 第三步:逐个标注每个活动的参数,使用箭线连接每个…

vscode无法连接 , .vscode-server版本问题

vscode无法连接 , .vscode-server版本问题 解决办法 : 查看自己的版本号 2. 两边vscode版本号需要一致 找一台vscode可以远程连接的, 将它的.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a 传到 远程服务器上 或者 本地的…

2024统计建模成品论文39页(附带完整数据集和代码)

2024统计建模成品论文完整版一等奖论文【1.5w字全网最佳】2024统计建模大赛高质量成品论文39页配套完整代码运行全套数据集https://www.jdmm.cc/file/2710661/

Vue的学习 —— <vue指令>

目录 前言 正文 内容渲染指令 内容渲染指令的使用方法 v-text v-html 属性绑定指令 双向数据绑定指令 事件绑定指令 条件渲染指令 循环列表渲染指令 侦听器 前言 在完成Vue开发环境的搭建后,若想将Vue应用于实际项目,首要任务是学习Vue的基…

内存屏障 - LINUX KERNEL MEMORY BARRIERS 上 与 下

内存屏障(Memory Barrier)是在计算机体系结构中使用的一种同步机制,用于确保在多线程或多核处理器环境中,对共享内存的操作按照预期顺序进行。它们通过强制在特定点执行一些指令来规定内存访问的顺序,并防止内存乱序执…

干货分享:AI知识库-从认识到搭建

随着知识库的出现,人工智能也逐渐加入进来,形成了“AI知识库”。也许将AI和知识库拆开,你能理解是什么意思,但是当两个词结合在一起时,你又真的能理解它是做什么的吗?这就是今天我们要来聊的话题&#xff0…

未来互联网:Web3的技术革新之路

引言 随着技术的不断发展和社会的日益数字化,互联网作为信息交流和社交媒介的重要平台已经成为我们生活中不可或缺的一部分。然而,传统的互联网架构在数据安全、隐私保护和去中心化等方面存在着诸多挑战。为了解决这些问题,Web3技术应运而生…