- •Введение
- •1.5. Численное решение дифференциального уравнения (п. 1.2.2.) с помощью функции ode45 из matlab.
- •1.6. Аналитическое решение дифференциального уравнения 3 порядка с помощью matlab.
- •1.7. Индивидуальные задания (по бригадам)
- •2. Решение задач оптимизации методом поиска.
- •2.1. Статическая задача оптимизации
- •2.2. Динамическая задача оптимизации
- •2.3. Индивидуальные задания (по бригадам)
- •3. Модальное управление.
- •Индивидуальные задания (по бригадам)
- •4. Принцип максимума Понтрягина. Экономия управления.
- •Индивидуальные задания (по бригадам)
- •5. Принцип максимума Понтрягина. Максимальное быстродействие.
- •Индивидуальные задания (по бригадам)
- •6. Принцип максимума Понтрягина. Линейная квадратичная задача.
- •Индивидуальные задания (по бригадам)
- •Приложение. Стандартные характеристические полиномы
- •1. Биноминальные полиномы (Полиномы Ньютона)
- •Коэффициенты
- •Переходные характеристики
- •2. Полиномы Баттерворта Коэффициенты
- •Переходные характеристики
- •3. Полиномы минимизирующие функционал Коэффициенты
- •4. Полиномы минимизирующие функционал Коэффициенты
- •Переходные характеристики
1.7. Индивидуальные задания (по бригадам)
При выполнении задания необходимо найти аналитическое решение уравнения, выполнить численное решение и построить графики переходных процессов, соответствующие аналитическому и численному решениям.
Вариант (№ бригады) |
Матрица |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
2. Решение задач оптимизации методом поиска.
Одним из распространенных методов решения задач оптимизации является метод Нелдера-Мида. Следующие примеры показывают как с его помощью решаются статические и динамические задачи оптимизации.
2.1. Статическая задача оптимизации
Под статическими будем понимать задачи в которых соотношения между показателем качества и параметрами задается в виде алгебраических выражений.
Например, рассмотрим задачу определения
значений параметров
и
таких, которые обеспечивают минимальное
значения следующей функции:
Для решения задачи будут использованы средства пакета программ MATLAB.
Вызов функции FMINSEARCH, в которой реализован метод Нелдера-Мида выполняется с помощью следующего скрипта:
Файл Main5.m
X=fminsearch('fmsfun’,[0,0])
Папраметрами функции FMINSEARCH являются:
fmsfun – имя функции, которая
вычисляет значения целевой функции
в процессе поиска;
[0,0] – вектор значений параметров, соответствующий начальной точке поиска.
Файл fmsfun.m
function f=fmsfun(x)
f=(1-x(1))*(1-x(1))+100*(x(2)-x(1)*x(1))*(x(2)-x(1)*x(1));
После окончания процесса поиска найденная
комбинация параметров отображается в
виде вектора
в командном окне системы MATLAB.
Для наглядного представления поведения целевой функции в найденной точке целесообразно построить графики линий равного уровня функции в рассматриваемой бласти. Дополнительный анализ целевой функции с помощью графиков линий равного уровня целесообразен по следующим причинам:
- проверка нахождения глобального минимума;
- оценка чувствительности величины целевой функции к изменению параметров.
Построение графиков может быть реализовано с помощью следующего MATLAB-скрипта:
Файл Main6.m
% Задание диапазона построения графиков
x1=-4:0.01:5;
x2=x1;
% Формирование вспомогательных структур данных
[X1,X2]=meshgrid(x1,x2);
Z=(1-X1).^2+100*(X2-X1.^2).^2;
% Собственно построение графиков.
% Последний параметр функции contour определяет количество
% линий на графике и значения функции, для которых
% выполняются построения (См. справку MATLAB)
contour(X1,X2,Z,[0.5 4 20]);
2.2. Динамическая задача оптимизации
Под динамическими будем понимать задачи, в которых соотношения между параметрами и целевой функцией выражаются с помощью дифференциальных уравнений или функционалов от функций времени.
В качестве первого примера рассмотрим следующую задачу:
Задан динамический объект, описываемый дифференциальным уравнением;
Входным воздействием на объект является
функция времени, содержащая неизвестный
параметр
:
Функция
является кусочнолинейной и её вид
определяется следующей таблицей
значений;
-
0
0
2
4
0
Требуется найти такое значение параметра
входного воздействия
,
при котором
.
Строго говоря, приведенная задача не
является задачей на нахождение минимума,
но ее можно переформулировать как задачу
минмизации при сохранении исходного
смысла. Переформулировка заключается
в том, что мы потребуем найти такое
значение параметра входного воздействия,
которое обеспечит минимальное значение
.
Выполненная переформулировка позволяет
использовать при решении поставленной
задачи MATLAB – функцию FMINSEARCH. Кроме функции
FMINSEARCH будет использована функция ODE45,
которая предназначена для численного
решения дифференциального уравнения.
Решение поставленной задачи реализовано в MATLAB c помощью следующих скриптов:
Файл Main7.m
%Для определения значения параметра um, программа вызывает
%функцию поиска минимума (fminsearch)
%Предполагается, что функция fmsfun7, на которую ссылается
%fminsearch, вычисляет квадрат состояния объекта,
%соответствующего моменту времени t=4
global t t1 x x0 u
t1=2;
x0=10;
um=fminsearch(@fmsfun7,1)
plot(t,x,t,u)
Файл fmsfun7.m
%Основное назначение программы – вычислить квадрат значения
%состояния объекта, соответствующего моменту времени t=4.
%Для вычисления значений состояния объекта используется
%функция
%ode45 которая реализует метод численного решения
%соответствующего дифференциального уравнения.
%Функция ode45fun8, на которую ссылается ode45, предназначена
%для вычисления значений правой части дифференциального
%уравнения объекта.
function f=fmsfun7(um)
global t t1 x x0 u umax
umax=um;
t=[];
x=[];
u=[];
[t,x]=ode45(@odefun7,[0 2*t1],[x0]);
for i=1:length(t),
if t(i)<t1
u(i)=(um/t1)*t(i);
else
u(i)=-(um/t1)*t(i)+2*um;
end
end
f=x(length(t))*x(length(t));
Файл odefun7.m
function f=odefun7(t,x)
global t1 umax
if t<t1
u=(umax/t1)*t;
else
u=-(umax/t1)*t+2*umax;
end
f=-0.5*x+u;
