飞机最低可俯冲高度

近日,埃航空难的新闻牵动了无数人的心。

据悉,空难很可能是由于波音737MAX飞机的失速保护系统错误触发所致。

在飞机进行高空飞行时,驾驶辅助系统如果检测到飞机失速,无法维持足够的飞行升力,会压低机头进行俯冲,以重新获得速度,进而获取足够的飞行升力,维持飞行高度。

但是在飞机进行低空飞行时,触发俯冲机制极有可能在飞机还未获得足够飞行速度并上升之前已经撞击地面。

鉴于半年内的两起事故,波音公司决定在低于一定高度时屏蔽自动俯冲机制,现提供K架飞机用于测试最低可俯冲高度,设定需要测试的海拔范围为1~H(单位米)(注意:测试高度只从整数中选取),请问最不理想情况下,至少需要多少次才能求出飞机的最低可俯冲高度?

输入格式

输入为整数K, H,用空格分隔。

K代表用于测试的飞机数量,H代表需要测试的高度范围为1~H米(包含H)。

输出格式

输出整数N,代表最坏情况下需要测试的次数。

数据范围

1≤K≤201≤K≤20
1≤H≤10001≤H≤1000

输入样例1:

1 1000

输出样例1:

1000

输入样例2:

15 1000

输出样例2:

10

代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int dp[21][1001];
int i,j,k,n,m;
cin>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
dp[i][j]=j;
for(i=2;i<=m;i++)
for(j=2;j<=n;j++)
for(k=1;k<=j;k++)
dp[i][j]=min(dp[i][j],max(dp[i-1][k-1]+1,dp[i][j-k]+1));
cout<<dp[m][n]<<endl;
return 0;
}

 

from abc import ABC import numpy as np import airsim import gym # from tasks import Shaping from jsbsim_simulator import Simulation from jsbsim_aircraft import Aircraft, cessna172P, ball, x8 from debug_utils import * import jsbsim_properties as prp from simple_pid import PID from autopilot import X8Autopilot from navigation import WindEstimation from report_diagrams import ReportGraphs from image_processing import AirSimImages, SemanticImageSegmentation from typing import Type, Tuple, Dict class ClosedLoop: """ A class to run airsim, JSBSim and join the other classes together ... Attributes: ---------- sim_time : float how many seconds to run the simulation for display_graphics : bool decides whether to run the airsim graphic update in unreal, required for image_processing input airspeed : float fixed airspeed used to fly the aircraft if airspeed_hold_w_throttle a/p used agent_interaction_frequency_hz : float how often the agent selects a new action, should be equal to or the lowest frequency airsim_frequency_hz : float how often to update the airsim graphic simulation sim_frequency_hz : float how often to update the JSBSim input, should not be less than 120Hz to avoid unexpected behaviour aircraft : Aircraft the aircraft type used, x8 by default, changing this will likely require a change in the autopilot used init_conditions : Dict[prp.Property, float] = None the simulations initial conditions None by default as in basic_ic.xml debug_level : int the level of debugging sent to the terminal by JSBSim - 0 is limited - 1 is core values - 2 gives all calls within the C++ source code Methods: ------ simulation_loop(profile : tuple(tuple)) updates airsim and JSBSim in the loop get_graph_data() gets the information required to produce debug type graphics generate_figures() produce required graphics """ def __init__(self, sim_time: float, display_graphics: bool = True, airspeed: float = 30.0, agent_interaction_frequency: float = 12.0, airsim_frequency_hz: float = 392.0, sim_frequency_hz: float = 240.0, aircraft: Aircraft = x8, init_conditions: bool = None, debug_level: int = 0): self.sim_time = sim_time self.display_graphics = display_graphics self.airspeed = airspeed self.aircraft = aircraft self.sim: Simulation = Simulation(sim_frequency_hz, aircraft, init_conditions, debug_level) self.agent_interaction_frequency = agent_interaction_frequency self.sim_frequency_hz = sim_frequency_hz self.airsim_frequency_hz = airsim_frequency_hz self.ap: X8Autopilot = X8Autopilot(self.sim) self.graph: DebugGraphs = DebugGraphs(self.sim) self.report: ReportGraphs = ReportGraphs(self.sim) self.debug_aero: DebugFDM = DebugFDM(self.sim) self.wind_estimate: WindEstimation = WindEstimation(self.sim) self.over: bool = False def simulation_loop(self, profile: tuple) -> None: """ Runs the closed loop simulation and updates to airsim simulation based on the class level definitions :param profile: a tuple of tuples of the aircraft's profile in (lat [m], long [m], alt [feet]) :return: None """ update_num = int(self.sim_time * self.sim_frequency_hz) # how many simulation steps to update the simulation relative_update = self.airsim_frequency_hz / self.sim_frequency_hz # rate between airsim and JSBSim graphic_update = 0 image = AirSimImages(self.sim) image.get_np_image(image_type=airsim.ImageType.Scene) for i in range(update_num): graphic_i = relative_update * i graphic_update_old = graphic_update graphic_update = graphic_i // 1.0 # print(graphic_i, graphic_update_old, graphic_update) # print(self.display_graphics) if self.display_graphics and graphic_update > graphic_update_old: self.sim.update_airsim() # print('update_airsim') self.ap.airspeed_hold_w_throttle(self.airspeed) self.get_graph_data() if not self.over: self.over = self.ap.arc_path(profile, 400) if self.over: print('over and out!') break self.sim.run() def test_loop(self) -> None: """ A loop to test the aircraft's flight dynamic model :return: None """ update_num = int(self.sim_time * self.sim_frequency_hz) # how many simulation steps to update the simulation relative_update = self.airsim_frequency_hz / self.sim_frequency_hz # rate between airsim and JSBSim graphic_update = 0 for i in range(update_num): graphic_i = relative_update * i graphic_update_old = graphic_update graphic_update = graphic_i // 1.0 # print(graphic_i, graphic_update_old, graphic_update) # print(self.display_graphics) if self.display_graphics and graphic_update > graphic_update_old: self.sim.update_airsim() # print('update_airsim') # elevator = 0.0 # aileron = 0.0 # tla = 0.0 # self.ap.test_controls(elevator, aileron, tla) # self.ap.altitude_hold(1000) # self.ap.heading_hold(0) # self.ap.roll_hold(5 * math.pi / 180) # self.ap.pitch_hold(5.0 * math.pi / 180.0) if self.sim[prp.sim_time_s] >= 5.0: # self.ap.heading_hold(120.0) # self.ap.roll_hold(0.0 * math.pi / 180.0) self.ap.airspeed_hold_w_throttle(self.airspeed) # self.ap.pitch_hold(10.0 * (math.pi / 180.0)) self.ap.altitude_hold(800) self.get_graph_data() self.sim.run() def get_graph_data(self) -> None: """ Gets the information required to produce debug type graphics :return: """ self.graph.get_abs_pos_data() self.graph.get_airspeed() self.graph.get_alpha() self.graph.get_control_data() self.graph.get_time_data() self.graph.get_pos_data() self.graph.get_angle_data() self.graph.get_rate_data() self.report.get_graph_info() def generate_figures(self) -> None: """ Produce required graphics, outputs them in the desired graphic environment :return: None """ self.graph.control_plot() self.graph.trace_plot_abs() self.graph.three_d_scene() self.graph.pitch_rate_plot() self.graph.roll_rate_plot() # self.graph.roll_rate_plot() # self.debug_aero.get_pitch_values() def run_simulator() -> None: """ Runs the JSBSim and Airsim in the loop when executed as a script :return: None """ env = ClosedLoop(750, True) circuit_profile = ((0, 0, 1000), (4000, 0, 1000), (4000, 4000, 1000), (0, 4000, 1000), (0, 0, 20), (4000, 0, 20), (4000, 4000, 20)) ice_profile = ((0, 0, 0), (1200, 0, 0), (1300, 150, 0), (540, 530, -80), (0, 0, -150), (100, 100, -100)) square = ((0, 0, 0), (2000, 0, 0), (2000, 2000, 0), (0, 2000, 0), (0, 0, 0), (2000, 0, 0), (2000, 2000, 0)) approach = ((0, 0, 0), (2000, 0, 800), (2000, 2000, 600), (0, 2000, 400), (0, 0, 200), (2000, 0, 100), (2000, 2000, 100), (0, 2000, 100), (0, 0, 100)) rectangle = ((0, 0, 0), (2000, 0, 1000), (2000, 2000, 500), (-2000, 2000, 300), (-2000, 0, 100), (2000, 0, 20), (2000, 2000, 20), (-2000, 2000, 20)) env.simulation_loop(rectangle) env.generate_figures() env.report.trace_plot(rectangle) env.report.control_response(0, 750, 240) env.report.three_d_plot(300, 750, 240) print('Simulation ended') def run_simulator_test() -> None: """ Runs JSBSim in the test loop when executed as a script to test the FDM :return: None """ sim_frequency = 240 env = ClosedLoop(65.0, True, 30, 12, 24, sim_frequency) env.test_loop() env.generate_figures() print('Simulation ended') if __name__ == '__main__': run_simulator() # run_simulator_test()分析这个代码,我需要使得无人机按照我的初始姿态和位置向下俯冲,如何修改代码,可以先提供一个初始高度在300米,向下俯冲到地面,中间需要经过我给出的点(1.003, -0.737, -87.545) (2.006, -1.474, -82.703) (3.009, -2.211, -77.86) (4.012, -2.948, -73.018) (5.015, -3.685, -68.175) (6.017, -4.422, -63.332) (7.02, -5.16, -58.49) (8.023, -5.897, -53.647) (9.026, -6.634, -48.805) (10.029, -7.371, -43.962) (11.032, -8.108, -39.119) (12.035, -8.845, -34.277) (13.038, -9.582, -29.434) (14.041, -10.32, -24.592) (15.044, -11.057, -19.749) (16.047, -11.794, -14.906) (17.05, -12.531, -10.064) (18.053, -13.268, -5.221) (19.056, -14.005, -0.379)的在第一个点的俯仰角度是向下70度偏转角你自己给定的示例完整代码,不需要考虑安全,并且告诉我其他需要修改的代码位置和修改方案,最终完成俯冲,并且经过所有点
06-07
【基于QT的调色板】是一个使用Qt框架开发的色彩选择工具,类似于Windows操作系统中常见的颜色选取器。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式设备,支持C++和QML语言。这个调色板功能提供了横竖两种渐变模式,用户可以方便地选取所需的颜色值。 在Qt中,调色板(QPalette)是一个关键的类,用于管理应用程序的视觉样式。QPalette包含了一系列的颜色角色,如背景色、前景色、文本色、高亮色等,这些颜色可以根据用户的系统设置或应用程序的需求进行定制。通过自定义QPalette,开发者可以创建具有独特视觉风格的应用程序。 该调色板功能可能使用了QColorDialog,这是一个标准的Qt对话框,允许用户选择颜色。QColorDialog提供了一种简单的方式来获取用户的颜色选择,通常包括一个调色板界面,用户可以通过滑动或点击来选择RGB、HSV或其他色彩模型中的颜色。 横渐变取色可能通过QGradient实现,QGradient允许开发者创建线性或径向的色彩渐变。线性渐变(QLinearGradient)沿直线从一个点到另一个点过渡颜色,而径向渐变(QRadialGradient)则以圆心为中心向外扩散颜色。在调色板中,用户可能可以通过滑动条或鼠标拖动来改变渐变的位置,从而选取不同位置的颜色。 竖渐变取色则可能是通过调整QGradient的方向来实现的,将原本水平的渐变方向改为垂直。这种设计可以提供另一种方式来探索颜色空间,使得选取颜色更为直观和便捷。 在【colorpanelhsb】这个文件名中,我们可以推测这是与HSB(色相、饱和度、亮度)色彩模型相关的代码或资源。HSB模型是另一种常见且直观的颜色表示方式,与RGB或CMYK模型不同,它以人的感知为基础,更容易理解。在这个调色板中,用户可能可以通过调整H、S、B三个参数来选取所需的颜色。 基于QT的调色板是一个利用Qt框架和其提供的色彩管理工具,如QPalette、QColorDialog、QGradient等,构建的交互式颜色选择组件。它不仅提供了横竖渐变的色彩选取方式,还可能支持HSB色彩模型,使得用户在开发图形用户界面时能更加灵活和精准地控制色彩。
标题基于Spring Boot的二手物品交易网站系统研究AI更换标题第1章引言阐述基于Spring Boot开发二手物品交易网站的研究背景、意义、现状及本文方法与创新点。1.1研究背景与意义介绍二手物品交易的市场需求和Spring Boot技术的适用性。1.2国内外研究现状概述当前二手物品交易网站的发展现状和趋势。1.3论文方法与创新点说明本文采用的研究方法和在系统设计中的创新之处。第2章相关理论与技术介绍开发二手物品交易网站所涉及的相关理论和关键技术。2.1Spring Boot框架解释Spring Boot的核心概念和主要特性。2.2数据库技术讨论适用的数据库技术及其在系统中的角色。2.3前端技术阐述与后端配合的前端技术及其在系统中的应用。第3章系统需求分析详细分析二手物品交易网站系统的功能需求和性能需求。3.1功能需求列举系统应实现的主要功能模块。3.2性能需求明确系统应满足的性能指标和安全性要求。第4章系统设计与实现具体描述基于Spring Boot的二手物品交易网站系统的设计和实现过程。4.1系统架构设计给出系统的整体架构设计和各模块间的交互方式。4.2数据库设计详细阐述数据库的结构设计和数据操作流程。4.3界面设计与实现介绍系统的界面设计和用户交互的实现细节。第5章系统测试与优化说明对系统进行测试的方法和性能优化的措施。5.1测试方法与步骤测试环境的搭建、测试数据的准备及测试流程。5.2测试结果分析对测试结果进行详细分析,验证系统是否满足需求。5.3性能优化措施提出针对系统性能瓶颈的优化建议和实施方案。第6章结论与展望总结研究成果,并展望未来可能的研究方向和改进空间。6.1研究结论概括本文基于Spring Boot开发二手物品交易网站的主要发现和成果。6.2展望与改进讨论未来可能的系统改进方向和新的功能拓展。
1. 用户与权限管理模块 角色管理: 学生:查看个人住宿信息、提交报修申请、查看卫生检查结果、请假外出登记 宿管人员:分配宿舍床位、处理报修申请、记录卫生检查结果、登记晚归情况 管理员:维护楼栋与房间信息、管理用户账号、统计住宿数据、发布宿舍通知 用户操作: 登录认证:对接学校统一身份认证(模拟实现,用学号 / 工号作为账号),支持密码重置 信息管理:学生完善个人信息(院系、专业、联系电话),管理员维护所有用户信息 权限控制:不同角色仅可见对应功能(如学生无法修改床位分配信息) 2. 宿舍信息管理模块 楼栋与房间管理: 楼栋信息:名称(如 "1 号宿舍楼")、层数、性别限制(男 / 女 / 混合)、管理员(宿管) 房间信息:房间号(如 "101")、户型(4 人间 / 6 人间)、床位数量、已住人数、可用状态 设施信息:记录房间内设施(如空调、热水器、桌椅)的配置与完好状态 床位管理: 床位编号:为每个床位设置唯一编号(如 "101-1" 表示 101 房间 1 号床) 状态标记:标记床位为 "空闲 / 已分配 / 维修中",支持批量查询空闲床位 历史记录:保存床位的分配变更记录(如从学生 A 调换到学生 B 的时间与原因) 3. 住宿分配与调整模块 住宿分配: 新生分配:管理员导入新生名单后,宿管可按专业集中、性别匹配等规则批量分配床位 手动分配:针对转专业、复学学生,宿管手动指定空闲床位并记录分配时间 分配结果公示:学生登录后可查看自己的宿舍信息(楼栋、房间号、床位号、室友列表) 调整管理: 调宿申请:学生提交调宿原因(如室友矛盾、身体原因),选择意向宿舍(需有空位) 审批流程:宿管审核申请,通过后执行床位调换,更新双方住宿信息 换宿记录:保存调宿历史(申请人、原床位、新床位、审批人、时间) 4. 报修与安全管理模块 报修管理: 报修提交:学生选择宿舍、设施类型(如 "
JFM7VX690T型SRAM型现场可编程门阵列技术手册主要介绍的是上海复旦微电子集团股份有限公司(简称复旦微电子)生产的高性能FPGA产品JFM7VX690T。该产品属于JFM7系列,具有现场可编程特性,集成了功能强大且可以灵活配置组合的可编程资源,适用于实现多种功能,如输入输出接口、通用数字逻辑、存储器、数字信号处理和时钟管理等。JFM7VX690T型FPGA适用于复杂、高速的数字逻辑电路,广泛应用于通讯、信息处理、工业控制、数据中心、仪表测量、医疗仪器、人工智能、自动驾驶等领域。 产品特点包括: 1. 可配置逻辑资源(CLB),使用LUT6结构。 2. 包含CLB模块,可用于实现常规数字逻辑和分布式RAM。 3. 含有I/O、BlockRAM、DSP、MMCM、GTH等可编程模块。 4. 提供不同的封装规格和工作温度范围的产品,便于满足不同的使用环境。 JFM7VX690T产品系列中,有多种型号可供选择。例如: - JFM7VX690T80采用FCBGA1927封装,尺寸为45x45mm,使用锡银焊球,工作温度范围为-40°C到+100°C。 - JFM7VX690T80-AS同样采用FCBGA1927封装,但工作温度范围更广,为-55°C到+125°C,同样使用锡银焊球。 - JFM7VX690T80-N采用FCBGA1927封装和铅锡焊球,工作温度范围与JFM7VX690T80-AS相同。 - JFM7VX690T36的封装规格为FCBGA1761,尺寸为42.5x42.5mm,使用锡银焊球,工作温度范围为-40°C到+100°C。 - JFM7VX690T36-AS使用锡银焊球,工作温度范围为-55°C到+125°C。 - JFM7VX690T36-N使用铅锡焊球,工作温度范围与JFM7VX690T36-AS相同。 技术手册中还包含了一系列详细的技术参数,包括极限参数、推荐工作条件、电特性参数、ESD等级、MSL等级、重量等。在产品参数章节中,还特别强调了封装类型,包括外形图和尺寸、引出端定义等。引出端定义是指对FPGA芯片上的各个引脚的功能和接线规则进行说明,这对于FPGA的正确应用和电路设计至关重要。 应用指南章节涉及了FPGA在不同应用场景下的推荐使用方法。其中差异说明部分可能涉及产品之间的性能差异;关键性能对比可能包括功耗与速度对比、上电浪涌电流测试情况说明、GTH Channel Loss性能差异说明、GTH电源性能差异说明等。此外,手册可能还提供了其他推荐应用方案,例如不使用的BANK接法推荐、CCLK信号PCB布线推荐、JTAG级联PCB布线推荐、系统工作的复位方案推荐等,这些内容对于提高系统性能和稳定性有着重要作用。 焊接及注意事项章节则针对产品的焊接过程提供了指导,强调焊接过程中的注意事项,以确保产品在组装过程中的稳定性和可靠性。手册还明确指出,未经复旦微电子的许可,不得翻印或者复制全部或部分本资料的内容,且不承担采购方选择与使用本文描述的产品和服务的责任。 上海复旦微电子集团股份有限公司拥有相关的商标和知识产权。该公司在中国发布的技术手册,版权为上海复旦微电子集团股份有限公司所有,未经许可不得进行复制或传播。 技术手册提供了上海复旦微电子集团股份有限公司销售及服务网点的信息,方便用户在需要时能够联系到相应的服务机构,获取最新信息和必要的支持。同时,用户可以访问复旦微电子的官方网站(***以获取更多产品信息和公司动态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值