2014年国赛高教杯数学建模A题嫦娥三号软着陆轨道设计与控制策略解题全过程文档及程序

news2024/12/25 12:20:38

2014年国赛高教杯数学建模

A题 嫦娥三号软着陆轨道设计与控制策略

  嫦娥三号于2013年12月2日1时30分成功发射,12月6日抵达月球轨道。嫦娥三号在着陆准备轨道上的运行质量为2.4t,其安装在下部的主减速发动机能够产生1500N到7500N的可调节推力,其比冲(即单位质量的推进剂产生的推力)为2940m/s,可以满足调整速度的控制要求。在四周安装有姿态调整发动机,在给定主减速发动机的推力方向后,能够自动通过多个发动机的脉冲组合实现各种姿态的调整控制。嫦娥三号的预定着陆点为19.51W,44.12N,海拔为-2641m(见附件1)。
  嫦娥三号在高速飞行的情况下,要保证准确地在月球预定区域内实现软着陆,关键问题是着陆轨道与控制策略的设计。其着陆轨道设计的基本要求:着陆准备轨道为近月点15km,远月点100km的椭圆形轨道;着陆轨道为从近月点至着陆点,其软着陆过程共分为6个阶段(见附件2),要求满足每个阶段在关键点所处的状态;尽量减少软着陆过程的燃料消耗。
根据上述的基本要求,请你们建立数学模型解决下面的问题:
  (1)确定着陆准备轨道近月点和远月点的位置,以及嫦娥三号相应速度的大小与方向。
  (2)确定嫦娥三号的着陆轨道和在6个阶段的最优控制策略。
  (3)对于你们设计的着陆轨道和控制策略做相应的误差分析和敏感性分析。

  附件1: 问题的背景与参考资料;
  附件2: 嫦娥三号着陆过程的六个阶段及其状态要求;
  附件3:距月面2400m处的数字高程图;
  附件4:距月面100m处的数字高程图。

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

  本文研究的是嫦娥三号软着陆轨道设计与最优控制策略问题,根据动力学相关原理,建立了嫦娥三号软着陆轨迹模型,以燃料消耗量最小为目标,得到软着陆过程中各阶段的最优控制策略。
  针对问题1,首先确定通过嫦娥三号着陆准备轨道位于其着陆点所在经线与月心构成的平面内,然后对嫦娥三号在主减速段进行受力分析,以近月点在月球表面的投影点为原点,以着陆轨道参考系纵向平面为xoy面,以初始飞行方向为x轴,以原点与近月点的连线方向为y轴,建立平面直角坐标系,根据牛顿第二定律,建立嫦娥三号主减速段轨迹模型,以燃料消耗量最小为目标,通过轨迹离散化,逐步迭代求得该阶段的水平位移,再依据地理学经纬度计算规则,建立地表距离与经纬度转化模型,最终得到近月点在月球表面的投影位置为19.51’W,31.68’N,距离月球表面高度为15km,远月点在月球表面的投影位置为160.49’E,31.68’S,距离月球表面高度为100km。利用机械能守恒定理和开普勒第二定律,最终得到近月点与远月点速度的大小分别为为1.692 km/s ,1.614km/s。
  针对问题2,根据牛顿第二定律,以每个阶段初始点和终值点的状态为约束,以燃料消耗最小为目标,建立全局最优模型,通过轨迹离散化,逐步迭代求得每个阶段的水平位移,分别得到软着陆过程6个阶段着陆轨迹方程及其对应的最优控制策略;在粗避障段和精避障段,我们将所给数字高程图均分成9块,综合相对高程差与标准差定义平坦度指标来衡量每一块区域,从而选取最佳着陆点;在粗避障段,分别从两种运动状态:其一是先把主减速发动机关闭,在进行一段时间匀加速直线运动后,再次打开发动机,进行减速直线运动,其二是整个阶段都进行匀速直线运动,以燃料消耗最小为目标,确定前者更优从而确定该阶段最优控制策略。
  针对问题3,从改变近月点离月球表面的距离和主减速发动机提供的推力两个方面,对嫦娥三号在该段的水平位移、燃料消耗等参数进行灵敏度分析,发现近月点离月球表面的距离与该段的水平位移和燃料消耗呈线性正相关,发现主减速发动机提供的推力与该段的水平位移呈线性负相关,与该段的燃料消耗呈线性正相关。由于嫦娥三号在主减速段水平位移最大,选取该段从对近月点离月球表面的距离变化和主减速发动机提供的推力变化两个角度对模型进行局部阶段误差分析,通过计算每个阶段时间的相对误差对模型进行整体误差分析。
  最后,对模型的优缺点进行评价,并提出改进的方向。

模型假设:

  (1)假设月球引力场为垂直于月面的均匀引力场;
  (2)假设在几百秒范围内的下降时间里,月球引力非球项、日月引力摄动和月球自转均可以忽略;
  (3)假设只考虑惯性和引力作用下的稳定的椭圆运动状态,而对于“嫦娥三号”的变轨状态,情况过于复杂,不予以考虑;
  (4)制动发动机的最大推力与初始质量之比大于月面引力加速度,并且制动推进系统能够在一定的初始条件下将探测器停于月面上。

问题分析:

  嫦娥三号从实施近月制动到成功着陆主要经历了环月轨道→椭圆轨道→着陆轨道三个变轨过程,从环月轨道下降到着陆点的过程,称为软着陆过程,其包括着陆准备轨道、主减速段、快速调整段、粗避障段、精避障段、缓速下降阶段六个阶段。软着陆:指嫦娥三号以相对月球较小的速度着陆,速度一般为几米/每秒; 比冲:火箭发动机单位质量推进剂产生的冲量,或单位流量的推进剂产生的推力。
  针对问题1,首先对软着陆过程进行简化分析,可知主减速段终点已基本位于着陆点上方,其空间坐标在月面上投影即为着陆点坐标,仅考虑主减速段着陆过程,可利用主减速段终点逆推出近月点位置。因此,可取嫦娥三号处于主减速段终点时在月球表面的投影点作为原点,软着陆运动轨迹所在平面建立二维坐标系。结合动力学知识,建立最优主减速轨迹模型,并需满足主减速段燃料消耗最小,得到其着陆轨迹微分方程,利用仿真求解得到近月点坐标,运用地表距离与经纬度转化关系,最终得到近月点与远月点地理位置。结合开普勒第二定律和机械能守恒定律,建立两个相关等式,求得近月点、远月点处速度大小,基于最优主减速段轨迹模型求解结果,便可根据近月点运动方向与坐标轴夹角得到速度方向。
  针对问题2,确定嫦娥三号着陆轨道及6个阶段的最优控制策略时,始终要满足燃料消耗最小原则。在问题1中已经对近月点及对主减速段的运动情况进行求解,近月点和主减速段终值点的位置、速度及发动机推力大小均已知,在此基础上,给定准备轨道、主减速段最优控制策略。快速调整段主要是对探测器姿态进行调整,采取与主减速同样的建模方法,得到该段质心动力学方程,在满足约束条件及阶段要求下给出具体最优控制策略。对于粗避障段,首先对其数字高程图进行划分,对每个区域的平坦程度进行分析,取最平坦区域作为着陆大致范围。同样需建立动力学模型对运动轨迹进行描述,考虑到可能存在匀速直线运动和先匀加速后又在恒定推力下减速至0两种情况,在可行情况下,选择燃料消耗最少的方案作为最优策略。
  针对问题3, 从改变近月点离月球表面的距离和主减速发动机提供的推力两个方面,对嫦娥三号在该段的水平位移、燃料消耗等参数进行灵敏度分析,进而求得近月点离月球表面的距离与该段的水平位移和燃料消耗之间的关系、主减速发动机提供的推力与该段的水平位移及该段的燃料消耗之间的关系;由于嫦娥三号在主减速段水平位移最大,选取该段从对近月点离月球表面的距离变化和主减速发动机提供的推力变化两个角度对模型进行局部阶段误差分析,通过计算每个阶段时间的相对误差对模型进行整体误差分析。

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

在这里插入图片描述
在这里插入图片描述

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

程序代码:

%% 整个软着陆过程的运动轨迹
clc;clear;close all;
g=1.633;  %月球重力加速度
m0=2.4*10^3;%卫星初始质量
Ve=2940; %比冲
theta=9.654*pi/180;%初速度与水平方向的夹角
F=7500;   %推力
V0=1692.464; %近日点初速度
t=0;          %初始时间
T=0.1;       %时间步长
Vx0=V0*cos(-theta); %水平初速度
Vy0=V0*sin(-theta); %竖直初速度
Ay0=g-F*sin(-theta)/(m0-F/Ve*t);%竖直初加速度
Ax0=-F*cos(-theta)/(m0-F/Ve*t);%水平初加速度
count=0;
X_res=Vx0*t+0.5*Ax0*t^2;
Y_res=Vy0*t+0.5*Ax0*t^2;
Result=[];
h=12000;%主减速阶段的下落距离
%% 迭代求 分解速度和分解位移
while (Y_res<h )
count=count+1;
Vx=Vx0+Ax0*T;
Vy=Vy0+Ay0*T;
V_res=sqrt(Vx^2+Vy^2);
Vx0=Vx;
Vy0=Vy;
X=Vx0*T+0.5*Ax0*T^2;
Y=Vy0*T+0.5*Ay0*T^2;
X_res=X_res+X;
Y_res=Y_res+Y;
 Time=count*T;
 Result=[Result;X_res,Y_res,V_res,Time];
SIN=Vy/sqrt(Vy^2+Vx^2);
COS=Vx/sqrt(Vy^2+Vx^2);
Ay=g-F*SIN/(m0-F/Ve*Time);
Ax=-F*COS/(m0-F/Ve*Time);
Ax0=Ax;
Ay0=Ay;
end
GJ=[Result(:,1),15000-Result(:,2)];
%%
clc;close all;
Ve=2940;%比冲
g=1.633;  %月球重力加速度
h=600;%该阶段的下落距离
t=0; %初始时间
T=0.1;   %时间步长
M_temp=[];
V_temp=[];
shijian=[];
X_temp=[];
lisan=1500:100:7500;
%lisan=5000:5100;
for i = lisan
F=i;  %推力
%主减速阶段的末状态量作为快速调整阶段的初状态量
theta=55.6708*pi/180;%初速度与水平面的夹角
Vx0=32.23327;%水平初速度
Vy0=47.2005;  %竖直初速度
m0=1325.255;%初始质量
Ay0=g-F*sin(theta)/(m0-F/Ve*t);%竖直初加速度
Ax0=-F*cos(theta)/(m0-F/Ve*t);%水平初加速度
count=0; %计数器
X_res=Vx0*t+0.5*Ax0*t^2;
Y_res=Vy0*t+0.5*Ax0*t^2;
Result=[];

%% 迭代求 分解速度和分解位移
while (Y_res<h )
count=count+1;
Vx=Vx0+Ax0*T;
Vy=Vy0+Ay0*T;
Vx0=Vx;
Vy0=Vy;
X=Vx0*T+0.5*Ax0*T^2;
Y=Vy0*T+0.5*Ay0*T^2;
X_res=X_res+X;
Y_res=Y_res+Y;
 Time=count*T;
SIN=Vy/sqrt(Vy^2+Vx^2);
COS=Vx/sqrt(Vy^2+Vx^2);
Ay=g-F*SIN/(m0-F/Ve*Time);
Ax=-F*COS/(m0-F/Ve*Time);
Ax0=Ax;
Ay0=Ay;
end
M=m0-F/Ve*Time;%该阶段的末质量。
X_res; %水平位移
 Time=count*T;  %运动时间
 V_res=sqrt(Vx^2+Vy^2);%合速度
 jiaodu=atan(Vy/Vx)*180/pi; %末速度角度
 %Vx  %水平速度
M_temp=[M_temp;F/Ve*Time];
V_temp=[V_temp;V_res,Vx];
shijian=[shijian;Time];%记录运行时间
X_temp=[X_temp;X_res];
end
Answer=[lisan',M_temp,V_temp,shijian,X_temp];%结果总结在这里
M_temp=[];
V_temp=[];
shijian=[];
F=5085;  %推力
%主减速阶段的末状态量作为快速调整阶段的初状态量
theta=55.6708*pi/180;%初速度与水平面的夹角
Vx0=32.23327;%水平初速度
Vy0=47.2005;  %竖直初速度
m0=1325.255; %初始质量
Ay0=g-F*sin(theta)/(m0-F/Ve*t);%竖直初加速度
Ax0=-F*cos(theta)/(m0-F/Ve*t); %水平初加速度
count=0; %计数器
X_res=Vx0*t+0.5*Ax0*t^2;
Y_res=Vy0*t+0.5*Ax0*t^2;
Result=[];
G=[];
%% 迭代求 分解速度和分解位移
while (Y_res<h )
count=count+1;
Vx=Vx0+Ax0*T;
Vy=Vy0+Ay0*T;
Vx0=Vx;
Vy0=Vy;
X=Vx0*T+0.5*Ax0*T^2;
Y=Vy0*T+0.5*Ay0*T^2;
X_res=X_res+X;
Y_res=Y_res+Y;
 Time=count*T;
G=[G;X_res,Y_res,V_res,Time];
SIN=Vy/sqrt(Vy^2+Vx^2);
COS=Vx/sqrt(Vy^2+Vx^2);
Ay=g-F*SIN/(m0-F/Ve*Time);
Ax=-F*COS/(m0-F/Ve*Time);
Ax0=Ax;
Ay0=Ay;
end
GJ2=[G(:,1)+GJ(end,1),3000-G(:,2)];
flag1=[377092.173014911,2999.65005894814];%主减速段结束点
flag2=[377381.089941517,2399.99226916603];%快速调整段结束点
GJ3=[GJ;GJ2];
%plot(GJ3(:,1),GJ3(:,2));
hold on;
%plot(flag1(1,1),flag1(1,2),'o','MarkerSize',20);
%plot(flag2(1,1),flag2(1,2),'o','MarkerSize',20);
ttm=2399:-1:100;
CUBI=[zeros(2300,1)+flag2(1,1),ttm'];
GJ4=[GJ3;CUBI];
%plot(GJ4(:,1),GJ4(:,2));
flag3=[377381.089941517,100];%粗避障段结束点
%%
h=70;
aaa=1.98;
T=sqrt(2*h/g);
t1=0.5*T;
t2=t1;
x3=[];
y3=[];
x33=[];

for i=0:0.01:t1
x3=[x3;0.5*1.98*i^2];
end
temp5=x3(end,1);
vvv=aaa*t1;

for i=0:0.01:t2
x33=[x33;temp5+vvv*i-0.5*aaa*i^2];
end
X3=[x3;x33];
for i=0:0.01:T
y3=[y3;100-0.5*g*i^2];
end
x5=[GJ4(end,1)+X3];
GJ5=[GJ4;x5,y3];
%plot(GJ5(:,1),GJ5(:,2));
ttn=29:-1:0;
TT5=[zeros(30,1)+GJ5(end,1),ttn'];
GJ6=[GJ5;TT5];
plot(GJ6(:,1),GJ6(:,2),'LineWidth',2);
title('后4个过程的轨迹图','FontSize',14);
xlabel('水平位移/米');
ylabel('高度/米');
%axis([377092.173014911,377500,0 3000])
%% 主减速阶段的数值近似求解(用于第一问)
clc;clear;close all;
g=1.633;  %月球重力加速度
m0=2.4*10^3;%卫星初始质量
Ve=2940; %比冲
theta=9.654*pi/180;%初速度与水平方向的夹角
F=7500;   %推力
V0=1692.464; %近日点初速度
t=0;          %初始时间
T=0.1;       %时间步长
Vx0=V0*cos(-theta); %水平初速度
Vy0=V0*sin(-theta); %竖直初速度
Ay0=g-F*sin(-theta)/(m0-F/Ve*t);%竖直初加速度
Ax0=-F*cos(-theta)/(m0-F/Ve*t);%水平初加速度
count=0;
X_res=Vx0*t+0.5*Ax0*t^2;
Y_res=Vy0*t+0.5*Ax0*t^2;
Result=[];
h=12000;%主减速阶段的下落距离
%% 迭代求 分解速度和分解位移
while (Y_res<h )
count=count+1;
Vx=Vx0+Ax0*T;
Vy=Vy0+Ay0*T;
V_res=sqrt(Vx^2+Vy^2);
Vx0=Vx;
Vy0=Vy;
X=Vx0*T+0.5*Ax0*T^2;
Y=Vy0*T+0.5*Ay0*T^2;
X_res=X_res+X;
Y_res=Y_res+Y;
 Time=count*T;
 Result=[Result;X_res,Y_res,V_res,Time];
SIN=Vy/sqrt(Vy^2+Vx^2);
COS=Vx/sqrt(Vy^2+Vx^2);
Ay=g-F*SIN/(m0-F/Ve*Time);
Ax=-F*COS/(m0-F/Ve*Time);
Ax0=Ax;
Ay0=Ay;
end
M=m0-F/Ve*Time;%该阶段的末质量。
X_res  %水平位移
 Time=count*T  %运动时间
 V_res=sqrt(Vx^2+Vy^2) %合速度
 jiaodu=atan(Vy/Vx)*180/pi %末速度角度。
 F/Ve*Time%燃料消耗量
%% 作图
plot(Result(:,1),15000-Result(:,2),'k','LineWidth',2);
title('主减速段嫦娥三号运动轨迹图','FontSize',15);
xlabel('X轴/(m)');
ylabel('Y轴/(m)');
%% 经纬度的近似计算
R=1737.013; %平均半径
weidu=44.12-X_res/((2*pi*R)/4/90)/1000  %近月点纬度
pi*R/180;  % 30.3165
%% 主减速阶段的灵敏度分析1。
clc;clear;close all;
g=1.633;  %月球重力加速度
m0=2.4*10^3;%卫星初始质量
Ve=2940;%比冲
theta=9.654*pi/180;%初速度与水平方向的夹角
F=7500;%推力
RECORD=[];
lisan=11950:1:12050;
for h=lisan
%主减速阶段的下落距离h
V0=1692.464; %近日点初速度
t=0; %初始时间
T=0.1;   %时间步长
Vx0=V0*cos(-theta); %水平初速度
Vy0=V0*sin(-theta); %竖直初速度
Ay0=g-F*sin(-theta)/(m0-F/Ve*t);%竖直初加速度
Ax0=-F*cos(-theta)/(m0-F/Ve*t);%水平初加速度
count=0;
X_res=Vx0*t+0.5*Ax0*t^2;
Y_res=Vy0*t+0.5*Ax0*t^2;
Result=[];

%% 迭代求 分解速度和分解位移
while (Y_res<h )
count=count+1;
Vx=Vx0+Ax0*T;
Vy=Vy0+Ay0*T;
V_res=sqrt(Vx^2+Vy^2);
Vx0=Vx;
Vy0=Vy;
X=Vx0*T+0.5*Ax0*T^2;
Y=Vy0*T+0.5*Ay0*T^2;
X_res=X_res+X;
Y_res=Y_res+Y;
 Time=count*T;
 Result=[Result;X_res,Y_res,V_res,Time];
SIN=Vy/sqrt(Vy^2+Vx^2);
COS=Vx/sqrt(Vy^2+Vx^2);
Ay=g-F*SIN/(m0-F/Ve*Time);
Ax=-F*COS/(m0-F/Ve*Time);
Ax0=Ax;
Ay0=Ay;
end
M=m0-F/Ve*Time;%该阶段的末质量。
%X_res  %水平位移
 Time=count*T;  %运动时间
 V_res=sqrt(Vx^2+Vy^2) ;%合速度
 jiaodu=atan(Vy/Vx)*180/pi;%末速度角度。
 consume=F/Ve*Time;%燃料消耗量
 RECORD=[RECORD;h,consume,M,Time,V_res,X_res,jiaodu];
end
flag=320;
str={'主减速燃料消耗关于h变化图','主减速阶段末质量关于h变化图','主减速阶段总时间关于h变化图','主减速阶段末速度关于h变化图','主减速阶段水平位移关于h变化图','末速度alpha关于h变化图'};
for i=1:6
    flag=flag+1;
    subplot(flag);
    plot(lisan,RECORD(:,i+1),'*');
    title(str(i));
end
%% 各阶段时间相对误差
Fact=[487	16	125	22	19]; %实际值
Value=[421.3	24.4	62.1	9.26	3.44];%模型值
cha=abs(Fact-Value);
XD=cha./Fact;
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

如何优雅的通过Spring Boot+Redission对订单实现定时关闭

简介 在电子商务及支付相关平台中&#xff0c;常规流程是首先生成订单或支付请求&#xff0c;用户随后会在规定时间内完成支付。如果用户未能在预设时限内完成支付动作&#xff0c;系统通常会执行相应的过期处理机制&#xff0c;即自动取消未支付的订单。 此外&#xff0c;这…

鸿蒙开发之ArkUI 界面篇 三十一 Extend(封装)

开发中遇到重复使用次数多的代码&#xff0c;就是封装提取成一个方法&#xff0c;那么鸿蒙中的方法是怎么封装的呢&#xff1f;下面记录组件属性的封装&#xff0c;语法格式如下&#xff1a; Extend(组件名) function 函数名 (参数, 参数2) { } 例如&#xff1a;封装一个Text…

飞机大战ai通过dqn实现

借鉴 飞机大战源码 github 王者荣耀ai训练(试了一下&#xff0c;发现电脑带不动&#xff0c;就改了一点&#xff0c;训练其他游戏) 源码 通过网盘分享的文件&#xff1a;PlaneWar (2).zip [链接]&#xff08;https://pan.baidu.com/s/1N4OorR7b36Zml8MadGmI6g?pwd1234&#xf…

6.将扩散模型与其他生成模型的关联(2)

1.归一化流与扩散模型 自一化流(Normalizing Flow)是生成模型&#xff0c;通过将易于处理的分布进行变换以队对高维数据进行建模。归一化流可以将简单的概率分布转化为极其复杂的分布&#xff0c;并用于强化学习、变分推理等领域。 现有的归一化流是基于变量替换公式构…

GS-LRM: Large Reconstruction Modelfor 3D Gaussian Splatting 论文解读

目录 一、概述 二、相关工作 1、多视图的三维重建 2、前馈重建 三、LRM 1、编码器 2、解码器 3、NeRF渲染 四、GS-LRM 1、输入处理 2、Transformer 3、损失函数 五、实验 六、局限 一、概述 该论文提出了一种利用稀疏输入图像高效预测3D高斯原语的方法&#xff…

数据结构-5.6.二叉树的先,中,后序遍历

一.遍历&#xff1a; 二.二叉树的遍历&#xff1a;利用了递归操作 1.简介&#xff1a; 二叉树的先序遍历&#xff0c;中序遍历&#xff0c;后序遍历都是以根结点遍历顺序为准的&#xff0c;如先序遍历就先遍历根结点 2.实例&#xff1a; 例一&#xff1a; 例二&#xff1a; …

【LeetCode】动态规划—188. 买卖股票的最佳时机 IV(附完整Python/C++代码)

动态规划—188. 买卖股票的最佳时机 IV 题目描述前言基本思路1. 问题定义交易规则&#xff1a; 2. 理解问题和递推关系两种情况&#xff1a;状态定义&#xff1a;状态转移方程&#xff1a;初始条件&#xff1a; 3. 解决方法动态规划方法特殊情况&#xff1a;当 k 大于等于 pric…

【最新华为OD机试E卷-支持在线评测】构成正方形的数量(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

(全网独家)面试要懂运维真实案例:HDFS重新平衡(HDFS Balancer)没触发问题排查

在面试时&#xff0c;面试官为了考察面试者是否真的有经验&#xff0c;经常会问运维集群时遇到什么问题&#xff0c;解决具体流程。下面是自己遇到HDFS Balancer没执行&#xff0c;花了半天时间进行排查&#xff0c;全网独家的案例和解决方案。 目录 使用CDH自带重新平衡操作…

数据结构 ——— 顺序表oj题:最长公共前缀

目录 题目要求 代码实现 题目要求 编写一个函数来查找字符串数组中的最长公共前缀&#xff0c;如果不存在公共前缀&#xff0c;返回空字符串 "" 代码实现 代码演示&#xff1a; void CommonPrefix(char** strs, int strsSize, char* returnStr) {char* first_r…

利用session机制造测试账号,无需前端也可以测试后端接口

适用场景&#xff1a;我们在测试的时候经常会遇到前端还没有开发完毕&#xff0c;后端已经结束开发了&#xff0c;但是后端的有些接口是需要特定的账号身份调用才会生效&#xff0c;此时因为前端未开发完毕&#xff0c;所以我们不能通过web页面进行登录&#xff0c;那么如何解决…

【Python Django + Vue】酒店在线预订系统:用技术说话!

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

Parallels Desktop意外退出,Parallels Desktop安装软件很卡闪退怎么办?

Parallels Desktop是目前很优秀的虚拟机软件&#xff0c;操作简单&#xff0c;兼容性强而且安装也非常方便&#xff0c;备受苹果用户的喜爱和满意。然而&#xff0c;部分用户在使用Parallels Desktop的时候&#xff0c;会遇到意外退出或终端关机的情况&#xff0c;这不仅会影响…

VS2017 编译 SQLite3 动态库

首先官方下载源码: Tags sqlite/sqlite (github.com) 1.安装 VS2017 community edition 2.打开VS2017命令行工具 3.安装TCL 开发库,推荐 TCL 9.0 先下载源码: Tcl/Tk 9.0 使用vs2017编译tcl&

CRC码计算原理:按位讲解计算过程

CRC8 这里先以CRC8来说明CRC的计算过程 1、CRC8在线计算器 通过CRC在线计算器可以看见CRC8的特征多项式&#xff1a;x8x2x1&#xff0c;初始值为0000’0000。 CRC计算的核心是&#xff1a;反转异或移位&#xff08;此处的CRC8没有涉及反转&#xff0c;见后面CRC16&#xff0…

基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用。本文深入探讨了Langchain框架下的Prompt工程在调教LLM&#xff08;大语言模型&#xff09;方面的应用&#xff0c…

C++入门基础知识110—【关于C++嵌套 if 语句】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 嵌套 if 语句的相关内容&#xff01; …

全院级、流程化的医院安全不良事件管理系统源码——等级医院评审工作的辅助工具

前言&#xff1a; 冰山理论”指出“每件严重不良事件背后可能隐藏着10件轻微的不良事件”“存在30件未造成伤害的差错可能存在600件引发意外的异常事件”没有一件不良事件应该被忽视&#xff01; 一项研究也指出95%医生曾目睹错误的发生&#xff0c;61%的医务人员认为医疗错误…

WebGL 小白入门学习

1. WebGL是什么&#xff1f; WebGL&#xff08;Web Graphics Library&#xff09;是一种JavaScript API&#xff0c;它允许你在不需要安装任何额外插件的情况下&#xff0c;直接在浏览器中渲染高性能的2D和3D图形。WebGL利用了用户的图形处理单元&#xff08;GPU&#xff09;来…

Unity 3d 鼠标设置的问题——隐藏/显示鼠标、锁定/解锁/限制鼠标、自定义鼠标形状

在unity开发的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;有时会发现鼠标不见了&#xff0c;有时发现鼠标在屏幕中心不能动&#xff0c;有时又想有图片自己定义一个鼠标形状。本文将对这些问题逐一进行探讨。 一、设置鼠标的可见性 使用语句&#xff1a; Cursor.vis…