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:20itheta_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:20itheta_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:20itheta_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名片即可

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

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

相关文章

558、Vue 3 学习笔记 -【常用Composition API(七)】 2024.05.13

目录 一、Composition API的优势1. Options API存在的问题2. Composition API的优势 二、 新的组件1. Fragment2. Teleport3. Suspense 三、其他1. 全局API的转移2. 其他改变 四、参考链接 一、Composition API的优势 1. Options API存在的问题 使用传统OptionsAPI中&#xf…

Rust的协程机制:原理与简单示例

在现代编程中,协程(Coroutine)已经成为实现高效并发的重要工具。Rust,作为一种内存安全的系统编程语言,也采用了协程作为其并发模型的一部分。本文将深入探讨Rust协程机制的实现原理,并通过一个简单的示例来…

C++|内存管理(1)

目录 C/C内存分布 堆区 栈区 静态存储区 代码区 总结 C语言中动态内存管理方式:malloc/calloc/realloc/free C内存管理方式 new/delete操作内置类型 new和delete操作自定义类型 operator new与operator delete函数(重要点进行讲解)…

R语言手把手教你进行支持向量机分析

1995年VAPINK 等人在统计学习理论的基础上提出了一种模式识别的新方法—支持向量机 。它根据有限的样本信息在模型的复杂性和学习能力之间寻求一种最佳折衷。 以期获得最好的泛化能力.支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部极小值,从而也保证了它对未知…

4.2 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”

方法一:在程序内部设置两个字符串内容,终端返回是否匹配 运行效果: 思路: 1、先比较两个字符串的长度,如果长度不一样,则两组字符串肯定不匹配;如果长度一样,再进行内容的匹配 2、如…

大模型崛起与就业危机

大模型,特别是像我这样的人工智能,最有可能首先替代那些重复性高、标准化程度高、不需要太多人类直觉和情感判断的工作。这些工作通常包括数据输入、初级数据分析和处理、简单的客户服务任务等。例如,可以自动化的一些岗位包括: 1…

zabbix监控mariadb

zabbix 服务端安装请参阅:红帽 9 zabbix 安装流程_红帽安装zabbix-CSDN博客 源码包安装mariadb请参阅:源码包安装mariadb_mariadb 11 源码编译安装-CSDN博客 在MariaDB中,你需要创建一个专门的用户,用于Zabbix进行监控。这个用户…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

绝地求生:艾伦格回归活动来了,持续近1个月,新版本皮肤、G币等奖励白嫖

嗨,我是闲游盒~ 29.2版本更新在即,新活动来啦!目前这个活动国内官方还没发,我就去台湾官方搬来了中文版方便大家观看,也分析一下这些奖励应该怎样才能获得。 新版本将在周二进行约9小时的停机维护,请注意安…

JSON在线解析及格式化验证 - JSON.cn网站

JSON在线解析及格式化验证 - JSON.cn https://www.json.cn/

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置国内镜像源 修改anaconda的源,即修改.condarc配置文件 .condarc在 home/用户/user/ conda config --add channels https://mirrors.tuna.…

【专利】一种日志快速分析方法、设备、存储介质

公开号CN116560938A申请号CN202310311478.5申请日2023.03.28 是我在超音速人工智能科技股份有限公司(833753) 职务作品,第一发明人是董事长夫妇,第二发明人是我。 ** 注意** : 内容比较多,还有流程图、界面等。请到 专利指定页面…

初始Django

初始Django 一、Django的历史 ​ Django 是从真实世界的应用中成长起来的,它是由堪萨斯(Kansas)州 Lawrence 城中的一个网络开发小组编写的。它诞生于 2003 年秋天,那时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和…

自作聪明的AI? —— 信息处理和传递误区

一、背景 在人与人的信息传递中有一个重要问题——由于传递人主观处理不当,导致信息失真或产生误导。在沟通交流中,确实存在“自作聪明”的现象,即传递人在转述或解释信息时,根据自己对信息的理解、经验以及个人意图进行了过多的…

配置 IDEA 识别自定义规则的 Dockerfile 文件

目录 配置所在位置解决方案其他 配置所在位置 打开 IntelliJ IDEA,然后转到顶部菜单中的 “File” > “Settings”(Windows/Linux)或 “IntelliJ IDEA” > “Preferences”(macOS)。 在弹出的设置窗口中&#x…

疯狂学英语

我上本科的时候,学校出国留学的气氛不浓厚,我们班只有一名同学有出国留学的倾向,我们宿舍八个人没有一个考虑过留学。 只有小昊,在本校上了研究生之后,不知道受到什么影响,想出国留学。那时候小昊利用一切…

[GWCTF 2019]re3

int mprotect(void *addr, size_t len, int prot);实现内存区域的动态权限控制: addr:要修改保护权限的内存区域的起始地址。len:要修改保护权限的内存区域的长度(以字节为单位)。prot:要设置的新的保护权限&#xff…

在线视频教育平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的在线视频教育平台设计实现

目录 一. 前言 二. 功能模块 2.1. 用户功能模块 2.2. 管理员功能模块 2.3. 教师功能模块 2.4. 前台首页功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优…

Golang | Leetcode Golang题解之第88题合并两个有序数组

题目: 题解: func merge(nums1 []int, m int, nums2 []int, n int) {for p1, p2, tail : m-1, n-1, mn-1; p1 > 0 || p2 > 0; tail-- {var cur intif p1 -1 {cur nums2[p2]p2--} else if p2 -1 {cur nums1[p1]p1--} else if nums1[p1] > n…

5.nginx常用命令和日志定时切割

一. nginx常用的相关命令介绍 1.强制关闭nginx: ./nginx -s stop 2.优雅的关闭nginx: ./nginx -s quit 3.检查配置文件是否正确: ./nginx -t 4.查看nginx版本: ./nginx -v 5.查看nginx版本相关的配置环境信息:./nginx -V 6.nginx帮助信…