- •Оптимизация в автоматизированных системах управления
- •Предисловие
- •1. Критерии оптимальности автоматизированных систем управления
- •Контрольные вопросы
- •2. Основные понятия и определения вариационного исчисления
- •2.1. Введение в вариационное исчисление
- •2.2. Выполнение заданий
- •Контрольные вопросы
- •3. Основная лемма вариационного исчисления
- •1. Лемма Лагранжа
- •3.2. Выполнение заданий
- •Контрольные вопросы
- •4. Решение вариационных задач с использованием дифференциального уравнения эйлера
- •4.1. Дифференциальное уравнение Эйлера
- •4.2. Выполнение заданий
- •Контрольные вопросы
- •5. Исследование экстремалей функционалов
- •5.1. Выполнение заданий
- •Задание 2
- •6.2. Выполнение заданий
- •Задание 2
- •7.2. Выполнение заданий
- •Задание 1
- •Контрольные вопросы
- •Библиографический список
- •Приложение элементы программирования на matlab
- •1. Символические вычисления
- •2. Построение графиков
- •3. Решение конечных уравнений
- •4. Решение дифференциальных уравнений
- •Содержание
Задание 2
Найти экстремаль функционала для своего варианта задания. Исследовать на выполнение необходимых условий экстремума.
Проанализируйте условие Лежандра. Достигается ли экстремум на вашей экстремали? Постройте график решения.
Варианты заданий
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Вариант 9
Вариант 10
7. РЕШЕНИЕ ВАРИАЦИОННЫХ ЗАДАЧ ДЛЯ ФУНКЦИОНАЛОВ С ОГРАНИЧЕНИЯМИ
7.1. Условные экстремумы функционалов.
Метод множителей Лагранжа
Требуется найти систему функций , реализующих минимум или максимум функционала
|
(1) |
при граничных условиях
|
(2) |
и, кроме того, подчиняющуюся достаточно гладким дополнительным условиям (или уравнениям связи)
|
(3) |
Искомую систему функций получают как решение системы дифференциальных уравнений Эйлера:
|
(4) |
где и – частные производные от
|
(5) |
по . Неизвестные функции j называются множителями Лагранжа.
Связи вида (3) называются голономными.
Метод множителей Лагранжа применяется и в случае достаточно гладких неголономных условий:
|
(6) |
Определение 1. Изопериметрической задачей называется вариационная задача вида (1 - 2) при дополнительных, так называемых «изопериметрических» ограничениях:
|
(7) |
Для получения необходимых условий экстремума в изопериметрической задаче нужно составить вспомогательный функционал:
(8) |
где j =const. Для этого функционала записать систему уравнений Эйлера и решить её. Произвольные постоянные (их и множители Лагранжа (их m) находятся из граничных условий и m условий изопериметричности.
7.2. Выполнение заданий
Задание 1
Найти экстремаль функционала, который исследовали в работе (разд. 4.2), но с дополнительным условием:
|
(9) |
Сравнить решение с решением задания (разд. 4.2). Вычислить значения функционалов на обеих кривых. Построить графики.
Составить программу для этого примера на основе программы для примера (разд. 4.2).
Вначале опишите необходимые переменные и введите исходные данные. Повторите решение примера (разд. 4.2).
clear all % очистили память
disp('Решаем задание ')
syms x y Dy D2y lambda
F=x^2+y^2+Dy^2; % подынтегральная функция
x1=-1; % вводим граничные условия
y1=1;
x2=1;
y2=2;
F1=y;
J1=2;
disp('Исходные данные:')
fprintf('F(x,y,y'')=%s\n',char(F))
fprintf('Граничное условие слева: y(%d)=%d\n',x1,y1)
fprintf('Граничное условие справа: y(%d)=%d\n',x2,y2)
disp('Условие изопериметричности:')
fprintf('Int(%s,''x'',%d,%d)=%d\n',char(F1),x1,x2,J1)
dFdy=diff(F,y); % вычислили Fy
dFdy1=diff(F,Dy); % вычислили Fy'
d_dFdy1_dx=diff(dFdy1,x); % Fy'x
d_dFdy1_dy=diff(dFdy1,y); % Fy'y
d_dFdy1_dy1=diff(dFdy1,Dy); % Fy'y'-условие Лежандра
dFy1dx=d_dFdy1_dx+d_dFdy1_dy*Dy+d_dFdy1_dy1*D2y;
Euler=simple(dFdy-dFy1dx);
deqEuler=[char(Euler) '=0']; % добавили =0
Sol=dsolve(deqEuler,'x'); % решаем уравнение Эйлера
if length(Sol)~=1 % нет решений или более одного
error('Нет решений или более одного решения!');
end
SolLeft=subs(Sol,x,x1); % подставили x1
SolRight=subs(Sol,x,x2); % подставили x2
EqLeft=[char(SolLeft) '=' char(sym(y1))]; % =y1
EqRight=[char(SolRight) '=' char(sym(y2))]; % =y2
Con=solve(EqLeft,EqRight,'C1,C2'); % решаем систему
C1=Con.C1; % присваиваем полученные решения
C2=Con.C2; % символическим константам C1 и C2
Sol21=vpa(eval(Sol),6); % вычислили с 6-ю знаками
xpl=linspace(x1,x2); % задаём массив абсцисс
y21=subs(Sol21,x,xpl); % вычислили ординаты
Решаем задание
Исходные данные:
F(x,y,y')=x^2+y^2+Dy^2
Граничное условие слева: y(-1)=1
Граничное условие справа: y(1)=2
Условие изопериметричности:
Int(y,'x',-1,1)=2
Решите пример, предлагаемый в работе (разд. 6). Сформируйте вспомогательный функционал вида (8), запишите для него дифференциальное уравнение Эйлера и решите его.
L=F+lambda*F1; % модифицированный функционал
fprintf('L(x,y,y'',lambda)=%s\n',char(L))
dLdy=diff(L,y);
dLdy1=diff(L,Dy);
d_dLdy1_dx=diff(dLdy1,x);
d_dLdy1_dy=diff(dLdy1,y);
d_dLdy1_dy1=diff(dLdy1,Dy); % d(dL/dy')/dy'
dLy1dx=d_dLdy1_dx+d_dLdy1_dy*Dy+d_dLdy1_dy1*D2y;
EulerL=simple(dLdy-dLy1dx);
deqEulerL=[char(EulerL) '=0']; % составили уравнение
fprintf('Уравнение Эйлера:\n%s\n',deqEulerL)
SolL=dsolve(deqEulerL,'x'); % решаем уравнение Эйлера
if length(SolL)~=1 % нет решений или более одного
error('Нет решений или более одного решения!');
else
disp('Общее решение:')
fprintf('y(x)=%s\n',char(SolL))
end
L(x,y,y',lambda)=x^2+y^2+Dy^2+lambda*y
Уравнение Эйлера:
2*y+lambda-2*D2y=0
Общее решение:
y(x)=exp(x)*C2+exp(-x)*C1-1/2*lambda
Получено общее решение дифференциального уравнения, в которое входят две произвольные постоянные и неопределённый множитель Лагранжа. Для их нахождения есть два граничных условия и условие изопериметричности. Вычислите левую часть условия изопериметричности:
dydx=diff(SolL,x); % dy/dx
F1_y=subs(F1,{y,Dy},{SolL,dydx});
intF1=vpa(int(F1_y,x,x1,x2),6); % вычислили интеграл
disp('Левая часть условия изопериметричности:')
disp(char(intF1))
Левая часть условия изопериметричности:
2.35040*C2+2.35040*C1-1.*lambda
Сформируйте систему уравнений и решите её − найдите произвольные постоянные и множитель Лагранжа. В данных примерах система получается линейной, и нужно решить её с помощью команды solve. Напечатайте решения.
SolLleft=vpa(subs(SolL,x,x1),6);
SolLright=vpa(subs(SolL,x,x2),6);
LeftL=[char(SolLleft) '=' char(sym(y1))];
RightL=[char(SolLright) '=' char(sym(y2))];
intF1J1=[char(intF1) '=' char(sym(J1))];
disp('Система уравнений относительно C1, C2, lambda')
fprintf('%s\n',LeftL,RightL,intF1J1)
ConL=solve(LeftL,RightL,intF1J1,'C1,C2,lambda');
C1=vpa(ConL.C1,6);
C2=vpa(ConL.C2,6);
lambda=vpa(ConL.lambda,6); % множитель Лагранжа
Sol141=vpa(eval(SolL),6); % аналитическое решение
disp('Уравнение экстремали:')
fprintf('y(x)=%s\n',char(Sol141))
disp('Множитель Лагранжа')
fprintf('lambda=%s\n',char(lambda))
Система уравнений относительно C1, C2, lambda
.367879*C2+2.71828*C1-.500000*lambda=1
2.71828*C2+.367879*C1-.500000*lambda=2
2.35040*C2+2.35040*C1-1.*lambda=2
Уравнение экстремали:
y(x)=.892300*exp(x)+.466841*exp(-1.*x)-.597260
Множитель Лагранжа
lambda=1.19452
Вычислите значения функционалов на обоих решениях. Постройте графики: сплошной линией − для задания (разд. 6), а штриховой − для задания работы (разд. 4.2) (для сравнения).
F21=subs(F,{y,Dy},{Sol21,diff(Sol21,x)});
J21=eval(int(F21,x,x1,x2))
F141=subs(F,{y,Dy},{Sol141,diff(Sol141,x)});
J141=eval(int(F141,x,x1,x2))
y141=subs(Sol141,x,xpl); % вычислили функцию
plot(xpl,y21,'--b', xpl,y141,'-r') % рисуем
set(get(gcf,'CurrentAxes'),...
'FontName','Times New Roman Cyr','FontSize',12)
title('\bfГрафики экстремалей') % заголовок
xlabel('\itx') % метка оси OX
ylabel('\ity\rm(\itx\rm)') % метка оси OY
J21 = 4. 750 3
J141 = 4. 920 5