Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольная / 11 вариант

.docx
Скачиваний:
18
Добавлен:
26.01.2018
Размер:
50.26 Кб
Скачать

Задание: Определить оптимальное управление, переводящее объект, описанный матрицами состояния А и управления В, из состояния x1(0), x2(0) в состояние x1(tк), x2(tк) за заданное время tк таким образом, чтобы достигался минимум функционала J.

Решение. Требуется объект, описываемый уравнениями

перевести из состояния x1(0) = x2(0) = 0 в состояние x1(10) = 1, x2(10) = 0 та-

ким образом, чтобы обеспечить минимум потребления энергии:

Запишем гамильтониан:

.

Необходимыми условиями экстремума будут:

Получаем систему дифференциальных уравнений:

Система однородна и может быть представлена в матричном виде:

,

где , а матрица A в данном случае имеет вид:

Структура решения системы зависит от вида собственных чисел матрицы А. Определим их с помощью следующего кода Matlab:

A=[0 1 0 0;-1 -6 0 -0.5;0 0 0 1;0 -2 -1 6];

L=eig(A)

L =

-5.9137

5.9137

-0.1691

0.1691

Решение будем искать в виде:

(1)

где λj(j=1…4) – собственные числа матрицы A;

–собственные векторы, соответствующие

числам λj;

– постоянные, определяемые через дополнительные условия.

Определим собственные векторы матрицы A с помощью следующего вызова функции eig:

[V,D]=eig(A);V

V =

-0.1645 -0.0069 0.9728 -0.0408

0.9728 -0.0408 -0.1645 -0.0069

-0.0272 0.1666 0.1610 0.9852

0.1610 0.9852 -0.0272 0.1666

Матрица V состоит из столбцов, каждый из которых собственный вектор, определенный для соответствующего собственного числа. Для нахождения постоянных С1…C4 воспользуемся граничными условиями:

x1(0) = x2(0) = 0,

x1(10) = 1, x2(10) = 0.

Из первых двух уравнений (1) получаем:

или в матричной форме:

, (2)

где ,

– вектор, подлежащий определению.

Сформируем матрицы M и N и решим уравнение (2) в Matlab:

M=[V(1:2,:);V(1:2,:)*diag(exp(10*L))];

N=[0;0;1;0];

C=M\N

C =

-0.0706

0.0000

-0.2147

-4.8391

Перепишем систему (1) следующим образом:

,

где

Матрицу С определим с помощью кода

C_=V*diag(C)

C_ =

0.0116 -0.0000 -0.2089 0.1973

-0.0687 -0.0000 0.0353 0.0334

0.0019 0.0000 -0.0346 -4.7673

-0.0114 0.0000 0.0058 -0.8062

Решение системы уравнений представим в виде:

Управление:

Значение функционала определим численным интегрированием с помощью следующего кода Matlab:

t=0:.01:10;

x2=-0.0687*exp(-5.9137*t)+ 0.0353*exp(-0.1691*t)+0.0334*exp(0.1691*t);

u=0.0057*exp(-5.9137*t)- 0.0029*exp(-0.1691*t)+0.4031*exp(0.1691*t);

J=trapz(t,u.*u+x2.*x2)

J = 12.5512

Графики полученных оптимальных траекторий и оптимального управления приведены на рисунке: