ОТЧЕТ
по лабораторной работе № 2
по дисциплине
«Оптимальное управление детерминированными процессами»
Код программы
% Пункт 1
Результаты вычислений
Код программы
x0 = [1 1];
[Times, xvals] = ode45(@(u,x)((A - B*K)*x),[0,30],x0);
plot(Times,xvals)
legend('x1(t)','x2(t)','Location','best')
xlabel('t');
ylabel('x(t)');
grid on
рение за счет силы тяги, m m0 mt – масса КА, v – угол между вектором горизонтальной
Ф1 Vy (tk ) 0, Ф 2 Vx (tk ) 0.
r (tk )
Код программы
% Пункт 2
m0 = 270e+3;
mk = 27;
dm = 320;
P = 2.4e+6;
g = 9.81;
dxdt = @(t,x)[P/(m0-dm*t)*cos(atan(tan(N0) -
0.952*tan(N0)/tk*t)); ...
P/(m0-dm*t)*sin(atan(tan(N0) - 0.952*tan(N0)/tk*t))-g; x(1);
x(2)];
options = odeset('Events',@events);
[t,x] = ode45(dxdt,ts,x0,options);
figure
plot(t,x(:,1),t,x(:,2))
grid on
xlabel('t, s')
ylabel('V, m/s')
legend('V_{x}(t)','V_{y}(t)')
figure
plot(t,x(:,3),t,x(:,4))
grid on
xlabel('t, s')
ylabel('S, m')
legend('x(t)','y(t)')
Далее сведем данную задачу к задаче Коши, введя параметр , равный неизвестному
значению y2 0 .
y1 y2 ,
y2 y1 xy2 2 x,
y (0) 1, y (0) .
1 2
Здесь y1 1calc – полученное в результате расчета значение y1 1 . Затем снова ре-
Для того чтобы найти , при котором выполнено граничное условие в точке x 1 ,
удобно ввести еще два уравнения, продифференцировав исходную систему по параметру
и введя еще две дополнительные переменные
y1 y2
y3 , y4 .
Код программы
% Пункт 3
boundary
function boundary
% Задание начальных условий
y = zeros(2,1);
n = 0;
ips = 1e-8;
alpha = -2;
alpha_old = -1.5;
% Условие окончания процесса интегрирования
while abs(alpha-alpha_old) > ips
y0 = [1 alpha];
x0 = 0;
xk = 1;
y1end = 0;
% Интегрирование
[x,y] = ode45(@task,[x0 xk],y0);
y1 = y(length(y),1);
y2 = y(length(y),2);
y1endCalc = y1;
y2endCalc = y2;
alpha_old = alpha;
alpha = alpha_old-(y1endCalc-y1end)/y2endCalc;
n = n + 1;
end
% Печать
figure
hold on
plot(x,y(:,1),'-r',x,y(:,2),'-g')
grid on
% Вычисление правых частей
function dy = task(x,y)
dy = [y(2); -y(1)-x*y(2)+2*x];
end
end
plot(sol.x,sol.y(1,:),sol.x,sol.y(2,:));
xlabel('x');
ylabel('y');
legend('y_1','y_2','Location','Best');
grid on;
% Граничные условия
function out = border(xa,xb)
out=[xa(1) - 1, xb(1) - 0];
end
Результаты работы программы представлены на рисунке 7.
Рис. 7. График решения системы, найденного с помощью встроенной функции MATLAB
Можно заметить, что в результате получили аналогичный график. Однако, процесс
получения решения значительно проще, в отличие от полуаналитического метода стрельбы.
Выводы
В данной лабораторной работе было решено несколько задач. Первая связана с опти-
мизацией системы. Для заданного объекта управления был синтезирован оптимальный ре-
гулятор с помощью стандартной процедуры MATLAB fgoalattain. Для этого необходимо
было задать вектор цели. Результаты показали, что данный метод синтеза позволил полу-
чить систему с лучшим параметром быстродействия по сравнению с методами Эллерта и
Брайсона, используемых в предыдущей лабораторной работе.
Следующая задача связана с выведением космического аппарата на круговую орбиту.
Особенность этой задачи заключается в учете параметров, останавливающих процесс инте-
грирования. В результате программа интегрировала систему дифференциальных уравнений
до тех пор, пока не было выполнено одно из двух событий.
Последней рассмотренной задачей было исследование метода стрельбы и встроенных
функций MATLAB для решения краевых задач. При анализе графиков полученных реше-
ний стало ясно, что оба метода дают идентичные результаты, однако использование стан-
дартных процедур MATLAB значительно упростило процесс программирования.