Файл: Ракетнокосмической техники.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.11.2023

Просмотров: 100

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Составим таблицу результатов моделирования, содержащую зависимость параметров ЛА от времени (первые 10 шагов и последние 10 шагов), для метода Рунге-Кутта и шага 0.01 (Таблица 2):

Таблица 2







Скорость , м/с

Угол возвышения , рад.

Высота , м

Дальность , м




Первые 10 шагов







0

0.7854

0

0







70.0618

0,7853

2.1213

2.1217







70.9048

0,7852

2.1708

2.1708







71.7475

0,7851

2.2209

2.2210







72.5907

0,7850

2.2717

2.2717







73.4343

0,7849

2.3230

2.3230







74.2782

0,7848

2.3749

2.3750







75.1223

0,7847

2.4274

2.4276







75.9667

0,7746

2.4805

2.4807







76.8113

0,7745

2.5342

2.5344










Последние 10 шагов




201.701

-1.0729

1.6156

6556.1

201.7043

-1.0729

1.4402

6556.2

201.7074

-1.0730

1.2649

6556.3

201.7104

-1.0730

1.0895

6556.4

201.7134

-1.0730

0.9142

6556.5

201.7164

-1.0730

0.7388

6556.6

201.7195

-1.0731

0.5634

6556.7

201.7227

-1.0731

0.3880

6556.8

201.7325

-1.0731

0.2127

6556.9

201.7375

-1.0731

0.0373

6557.0



Построение графиков зависимостей для двух методов интегрирования


Вывод

В ходе работы был произведен расчет траектории движения неуправляемого реактивного ЛА малой дальности.

Также было произведено сравнение метода Эйлера и метода Рунге-Кутта 4-порядка. При малом шаге метод Эйлера и метод Рунге-Кутта дают практически идеальные результаты, при том, что метод Рунге-Кутта имеет более высокий параметр точности.
Приложение

clear all

clc

% ввод начальных данных

d=0.132;

m0=23;

mt=3.8;

ta=0.5;

L=3;

ue=2500;

% Рассчитать время схода с направляющих и скорость

R=(mt*ue)/ta;

td=sqrt(2*L/(R/m0-9.81*(sin(pi/4)+0.15*cos(pi/4))));

fprintf('td=%d\n',td)

Vd(9,1)=(R/m0-9.81*(sin(pi/4)+0.15*cos(pi/4)))*td;

fprintf('Vd=%d\n',Vd(9,1))

t(1)=0.1;

t(2)=0.05;

t(3)=0.01;

t(4)=0.001;

c(100)=0.225;

c(150)=0.257;

c(200)=0.26;

c(250)=0.268;

c(260)=0.274;

c(270)=0.28;

c(280)=0.295;

c(290)=0.321;

c(300)=0.361;

c(310)=0.411;

c(320)=0.46;

c(330)=0.5;

c(340)=0.542;

c(350)=0.574;

c(360)=0.603;

c(370)=0.628;

c(380)=0.648;

c(390)=0.665;

c(400)=0.68;

c(410)=0.69;

c(420)=0.7;

c(430)=0.709;

c(440)=0.715;

c(450)=0.719;

c(500)=0.735;

c(550)=0.732;

c(600)=0.721;

c(650)=0.704;

c(700)=0.68;

c(750)=0.665;

c(800)=0.645;

c(850)=0.624;

c(900)=0.605;

c(950)=0.583;

c(1000)=0.567;

H=1;

% метода Эйлера

for n=1:4

T(1)=td;

b=1;

O(9,b)=pi/4;

yt(9,b)=L*sin(O(9,b));

xt(9,b)=L*cos(O(9,b));

G=5;

% активный участок

for i=td:t(n):ta

O(9,b+1)=O(9,b)-t(n)*9.81*cos(O(9,b))/Vd(9,b);

xt(9,b+1)=xt(9,b)+t(n)*Vd(9,b)*cos(O(9,b));

yt(9,b+1)=yt(9,b)+t(n)*Vd(9,b)*sin(O(9,b));

m=m0-mt*i/ta;

g=0;

k=1;

while k>=0

if Vd(9,b)<=350||Vd(9,b)>=450

g=g+50;

k=Vd(9,b)-g;

else

g=g+10;

k=Vd(9,b)-g;

end

end

Vd(9,b+1)=Vd(9,b)+t(n)*(R/m-9.81*sin(O(9,b))-(1.23*exp(-yt(9,b)/10000)*pi*d^2/4*(Vd(9,b))^2*1.15*c(g))/(2*m));

T(b+1)=i;

X(b)=xt(9,b);

Y(b)=yt(9,b);

O2(b)=O(9,b);

V(b)=Vd(9,b);

if G>0 % счетчик для начальных значений активного участка

U1(H,6-G)=roundn(Vd(9,b), -4);

U2(H,6-G)=roundn(O(9,b), -4);

U3(H,6-G)=roundn(xt(9,b), -4);

U4(H,6-G)=roundn(yt(9,b), -4);

G=G-1;

end

b=b+1;

end

for N= 1:5 % счетчик для конечных значений активного участка



U1(H+1,N)=roundn(Vd(9,b-5+N), -4);

U2(H+1,N)=roundn(O(9,b-5+N), -4);

U3(H+1,N)=roundn(xt(9,b-5+N), -4);

U4(H+1,N)=roundn(yt(9,b-5+N), -4);

end

G=5;

%Рассчет пассивного участка

while yt(9,b)>=0

O(9,b+1)=O(9,b)-t(n)*9.81*cos(O(9,b))/Vd(9,b);

xt(9,b+1)=xt(9,b)+t(n)*Vd(9,b)*cos(O(9,b));

yt(9,b+1)=yt(9,b)+t(n)*Vd(9,b)*sin(O(9,b));

g=0;

k=1;

while k>0

if Vd(9,b)<=350||Vd(9,b)>=450

g=g+50;

k=Vd(9,b)-g;

else

g=g+10;

k=Vd(9,b)-g;

end

end

Vd(9,b+1)=Vd(9,b)+t(n)*(-9.81*sin(O(9,b))-(1.23*exp(-yt(9,b)/10000)*pi*d^2/4*(Vd(9,b))^2*1.15*c(g))/(2*m));

T(b)=T(b-1)+t(n);

X(b)=xt(9,b);

Y(b)=yt(9,b);

O2(b)=O(9,b);

V(b)=Vd(9,b);

if G>0 % счетчик для начальных значений пассивного участка

U1(H,12-G)=roundn(Vd(9,b), -4);

U2(H,12-G)=roundn(O(9,b), -4);

U3(H,12-G)=roundn(xt(9,b), -4);

U4(H,12-G)=roundn(yt(9,b), -4);

G=G-1;

end

b=b+1;

end

disp ("Максимумы по Эйлеру")

for N= 1:5 % счетчик для конечных значений пассивного участка

U1(H+1,N+6)=roundn(Vd(9,b-11+N), -4);

U2(H+1,N+6)=roundn(O(9,b-11+N), -4);

U3(H+1,N+6)=roundn(xt(9,b-11+N), -4);

U4(H+1,N+6)=roundn(yt(9,b-11+N), -4);

QW1 = max(max(xt));

disp (QW1)

end

H=H+2; % конец счетчика

figure(n)

subplot(3,2,1);

plot(X, Y,'r')

title( sprintf('Метод Эйлера h=%g',t(n)));

subplot(3,2,3);

plot(T, O2,'r')

subplot(3,2,5);

plot(T, V,'r')

T=0;

end

H=10;

% метод Рунге-Кутта

for n=1:4

b=1;

h=1;

O(h,b)=pi/4;

xt(h,b)=L*cos(O(h,b));

yt(h,b)=L*sin(O(h,b));

Vd(h,b)=Vd(9,1);

T(1)=td;

G=5;

% активный участок

for i=td:t(n):ta

m=m0-mt*i/ta;

for h=1:4

k=1;

if h==2||h==3

k=0.5;

end

if h>1

O(h,b)=O(1,b)+t(n)*k*O(h+3,b);

xt(h,b)=xt(1,b)+t(n)*k*xt(h+3,b);

yt(h,b)=yt(1,b)+t(n)*k*yt(h+3,b);

Vd(h,b)=Vd(1,b)+t(n)*k*Vd(h+3,b);

end

O(h+4,b)=-9.81*cos(O(h,b))/Vd(h,b);

xt(h+4,b)=Vd(h,b)*cos(O(h,b));

yt(h+4,b)=Vd(h,b)*sin(O(h,b));

g=0;

while k>0

if Vd(h,b)<=350||Vd(h,b)>=450

g=g+50;

k=Vd(h,b)-g;

else

g=g+10;

k=Vd(h,b)-g;

end

end

Vd(h+4,b)=R/m-9.81*sin(O(h,b))-(1.23*exp(-yt(h,b)/10000)*pi*d^2/4*(Vd(h,b))^2*1.15*c(g))/(2*m);

end

O(1,b+1)=O(1,b)+t(n)/6*(O(5,b)+2*(O(6,b)+O(7,b))+O(8,b));

xt(1,b+1)=xt(1,b)+t(n)/6*(xt(5,b)+2*(xt(6,b)+xt(7,b))+xt(8,b));

yt(1,b+1)=yt(1,b)+t(n)/6*(yt(5,b)+2*(yt(6,b)+yt(7,b))+yt(8,b));

Vd(1,b+1)=Vd(1,b)+t(n)/6*(Vd(5,b)+2*(Vd(6,b)+Vd(7,b))+Vd(8,b));

T(b+1)=i;

X1(b)=xt(1,b);

Y1(b)=yt(1,b);

O1(b)=O(1,b);

V1(b)=Vd(1,b);

if G>0 % счетчик для начальных значений активного участка

U1(H,6-G)=roundn(Vd(1,b), -4);

U2(H,6-G)=roundn(O(1,b), -4);

U3(H,6-G)=roundn(xt(1,b), -4);

U4(H,6-G)=roundn(yt(1,b), -4);

G=G-1;

end

b=b+1;

end

for N= 1:5 % счетчик для конечных значений активного участка

U1(H+1,N)=roundn(Vd(1,b-5+N), -4);

U2(H+1,N)=roundn(O(1,b-5+N), -4);

U3(H+1,N)=roundn(xt(1,b-5+N), -4);

U4(H+1,N)=roundn(yt(1,b-5+N), -4);

end

G=5;

%Расчет пассивного участка

while yt(1,b)>=0

for h=1:4

k=1;

if h==2||h==3

k=0.5;

end

if h>1

O(h,b)=O(1,b)+t(n)*k*O(h+3,b);

xt(h,b)=xt(1,b)+t(n)*k*xt(h+3,b);

yt(h,b)=yt(1,b)+t(n)*k*yt(h+3,b);

Vd(h,b)=Vd(1,b)+t(n)*k*Vd(h+3,b);

end

O(h+4,b)=-9.81*cos(O(h,b))/Vd(h,b);

xt(h+4,b)=Vd(h,b)*cos(O(h,b));


yt(h+4,b)=Vd(h,b)*sin(O(h,b));

g=0;

while k>0

if Vd(h,b)<=350||Vd(h,b)>=450

g=g+50;

k=Vd(h,b)-g;

else

g=g+10;

k=Vd(h,b)-g;

end

end

Vd(h+4,b)=-9.81*sin(O(h,b))-(1.23*exp(-yt(h,b)/10000)*pi*d^2/4*(Vd(h,b))^2*1.15*c(g))/(2*m);

end

O(1,b+1)=O(1,b)+t(n)/6*(O(5,b)+2*(O(6,b)+O(7,b))+O(8,b));

xt(1,b+1)=xt(1,b)+t(n)/6*(xt(5,b)+2*(xt(6,b)+xt(7,b))+xt(8,b));

yt(1,b+1)=yt(1,b)+t(n)/6*(yt(5,b)+2*(yt(6,b)+yt(7,b))+yt(8,b));

Vd(1,b+1)=Vd(1,b)+t(n)/6*(Vd(5,b)+2*(Vd(6,b)+Vd(7,b))+Vd(8,b));

T(b)=T(b-1)+t(n);

X1(b)=xt(1,b);

Y1(b)=yt(1,b);

O1(b)=O(1,b);

V1(b)=Vd(1,b);

if G>0 % счетчик для начальных значений пассивного участка

U1(H,12-G)=roundn(Vd(1,b), -4);

U2(H,12-G)=roundn(O(1,b), -4);

U3(H,12-G)=roundn(xt(1,b), -4);

U4(H,12-G)=roundn(yt(1,b), -4);

G=G-1;

end

b=b+1;

end

disp ("Максимумы по Рунге-Кутту")

for N= 1:5 % счетчик для конечных значений пассивного участка

U1(H+1,N+6)=roundn(Vd(1,b-11+N), -4);

U2(H+1,N+6)=roundn(O(1,b-11+N), -4);

U3(H+1,N+6)=roundn(xt(1,b-11+N), -4);

U4(H+1,N+6)=roundn(yt(1,b-11+N), -4);

QW2 = max(max(xt));

disp (QW2)

end

H=H+2; % конец счетчика

figure(n)

subplot(3,2,2);

plot(X1, Y1,'g')

title( sprintf('Метод Рунге-Кутта для h=%g',t(n)))

subplot(3,2,4);

plot(T, O1,'g')

subplot(3,2,6);

plot(T, V1,'g')

T=0;

end