Оптимизация в автоматизированных системах управления
Скачать 1.35 Mb.
|
3.2. Выполнение заданийЗадание 1. Нарисуйте с помощью MATLAB пример функции η(x) Ck в соответствии с (2) для n = 2 и k =1 при x−=0,4 и x+=0,6. clear all % очистили всё Xminus=0.4; Xplus=0.6; n=2; k=1; x=linspace(Xminus,Xplus); y=k.*(x-Xminus).^(2*n).*(x-Xplus).^(2*n); plot([0 x 1],[0 y 0]) % рисуем set(get(gcf,'CurrentAxes'),... 'FontName','Times New Roman Cyr','FontSize',12) title('\bfГрафик функции \rm\eta\rm(\itx\rm)') xlabel('\itx') % метка оси OX ylabel('\eta\rm(\itx\rm)') % метка оси OY xlim([0 1]); % пределы по оси OX. Задание 2. Нарисуйте трёхмерный график этой функции с помощью MATLAB для n =2 и k =1 при x0=0,5, y0=0,5, δ=0,2. Чтобы вычислить функцию z на заданной сетке, надо провести вычисления по первой части формулы (5), а затем умножить поэлементно на булевский массив. При этом происходит автоматическое приведение типов, и булевский массив преобразуется в массив нулей и единиц. Таким образом, в области D вычисления проводятся по первой части (10), а вне D будет 0. clear all % очистили всё x0=0.5; y0=0.5; delta=0.2; n=2; k=1; [X,Y]=meshgrid(linspace(0,1),linspace(0,1)); z=k.*((X-x0).^2+(Y-y0).^2-delta^2).^n.*... ((delta^2-(X-x0).^2-(Y-y0).^2)>0); surf(X,Y,z) % рисуем set(get(gcf,'CurrentAxes'),... 'FontName','Times New Roman Cyr','FontSize',12) title(['\bfГрафик функции '... '\rm\eta\rm(\itx\rm,\ity\rm)']) % заголовок xlabel('\itx') % метка оси OX ylabel('\ity') % метка оси OY zlabel('\eta\rm(\itx\rm,\ity\rm)') % метка оси OZ Контрольные вопросыСформулируйте основную лемму вариационного исчисления и докажите её. 4. РЕШЕНИЕ ВАРИАЦИОННЫХ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ЭЙЛЕРА 4.1. Дифференциальное уравнение ЭйлераОпределение 1. Задача вариационного исчисления называется элементарной, если она формулируется следующим образом. Задан функционал, зависящий от функции одной переменной y(t) и её производной y’(t):
и граничные условия
где F(x,y,y’) – непрерывная функция трех переменных и дифференцируемая функция двух своих последних аргументов. Определение 2. Дифференциальным уравнением Эйлера называется уравнение
где Fy и Fy' – частные производные от F(x,y,y’) по ее второму и третьему аргументам. Определение 3. Любое решение задачи (3) с граничными условиями (2) называется экстремалью. 4.2. Выполнение заданийЗадание 1. Рассмотрите пример. Требуется найти экстремум функционала:
при граничных условиях
Решить пример аналитически. Найти частные производные Fy и Fy' от функции F(x,y,y’) по второму и третьему аргументам:
Вычислить полную производную по x от Fy':
Составить дифференциальное уравнение Эйлера вида :
или после упрощений
Его общее решение имеет вид
Для нахождения произвольных постоянных C1 и C1 подставить решение (10) в граничные условия(5):
Видно, что система (11) имеет единственное решение. Решая эту систему, найти значения C1 и C2:
и тогда уравнение экстремали примет вид
По условию Лежандра, если на экстремали выполняется условие Fy'y' > 0, а на функциях, близких к экстремали, для произвольных y' имеет место Fy'y' ≥ 0, то достигается сильный минимум. В нашем случае это выполняется:
и, следовательно, на экстремали достигается сильный минимум. Проверить этот результат: вычислить J(y) на нескольких функциях вида Эти функции удовлетворяют граничным условиям (5) и, следовательно, являются допустимыми. Для вычислений применить MATLAB. clear all % очистили всё syms x % описали символический аргумент k=1:5; % показатели степени y=x.^k; % символические функции Dy=diff(y,x); % производные F=Dy.^2+12*x.*y; % подынтегральные функции J=int(F,x,0,1); % функционалы Jm=eval(J); % посчитали значения disp('k J(x^k)') % печатаем заголовок fprintf('%d %12.10f\n',[k;Jm]) % печатаем результаты J(x^k) 1 5. 000 000 000 0 2 4. 333 333 333 3 3 4. 200 000 000 0 4 4. 285 714 285 7 5 4. 492 063 492 1 Убедитесь, что полученный результат не противоречит выводу о том, что на функции достигается минимум. Проведенная проверка не доказывает этот факт, так как проверили только несколько из бесконечного числа функций, графики которых проходят через точки M1(0,0) и M2(1,1). Доказать, применив необходимые условия экстремума функционала, что на экстремали достигается минимум. Построить с помощью MATLAB график функции J(k). Библиографический список Советов, Б.Я. Теоретические основы автоматизированного управления: учеб. для вузов / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. − М.: Высш. школа, 2006. Куропаткин, П.В. Оптимальные и адаптивные системы: учеб. пособие для вузов / П.В. Куропаткин. − М.: Высш. школа, 1980. Краснов, Л.М. Вариационное исчисление / Л.М Краснов, Г.И. Макаренко, А.И. Киселев. − М.: Наука, 1973. Корн, Г. Справочник по математике для научных работников и инженеров / Г. Корн., Т. Корн. − М.: Наука, 1973. Иглин, С.П. Математические расчеты на базе MATLAB / С.П. Иглин. − СПб.: БВХ-Петербург, 2005. Дьяконов, В.П. MATLAB 6/6.1/6.5 + Simulink 4/5. Основы применения: полное руководство пользователя / В.П. Дьяконов. − М.: Солон-Пресс, 2002. Потемкин, В.Г. Система MATLAB: справ. пособие / В.Г. Потемкин. − М.: Диалог-МИФИ, 1998. Приложение элементы программирования на MATLAB Рассмотрены элементы программирования на MATLAB, используемые для решения приведенных задач: символические вычисления, построение графиков, решение конечных и дифференциальных уравнений. Для более полного ознакомления с системой инженерных и научных расчетов MATLAB рекомендуется обратиться, например, к [5 – 7]. 1. Символические вычисленияСимволические переменные описываются с помощью команды syms. Функция от символических переменных, построенная по обычным правилам, автоматически становится символической. Для печати в MATLAB можно использовать два приёма. Не ставить точку с запятой в конце выражения при вычислении какой-либо величины. Точка с запятой подавляет вывод на экран. Использовать команды форматированной печати fprintf. Команда fprintf не печатает непосредственно символические переменные. Для печати такую переменную нужно представить в виде строки символов. Преобразование любых типов в строку выполняется с помощью команды char. Символическую функцию можно аналитически дифференцировать и интегрировать. Производные вычисляются с помощью команды diff. Для интегрирования символических выражений используется функция int, которая позволяет вычислять и неопределённые, и определённые интегралы. Если пределы интегрирования не указаны, то вычисляется неопределённый интеграл, а если указаны – то определённый. Пределы могут быть константами или символическими переменными. Вычисление значения символического выражения осуществляется с помощью функции eval. Если строка с командой или оператором очень длинная, её можно перенести на следующую строку с помощью многоточия. 2. Построение графиковПростейший двумерный (2D) график можно построить с помощью команды plot. В этой команде нужно задать массивы абсцисс и ординат одинаковой длины. График будет построен по точкам и автоматически масштабирован. Линейный массив аргументов на заданном интервале можно задать командой linspace. Этот массив нужно подставить в функцию вместо аргумента командой subs. Для построения на одном графике нескольких функций нужно указать несколько массивов абсцисс и ординат. После построения графика можно вручную оформить рисунок: написать заголовок (команда title), метки осей (команды xlabel и ylabel); отрегулировать масштаб (функция и команда daspect); установить пределы по координатным осям (команды xlim и ylim). Трёхмерные (3D) графики рисуются так же. Вместо команды plot используются её 3D аналоги: команды plot3, mesh или surf. Они рисуют 3D графики в разных вариантах. 3. Решение конечных уравненийДля аналитического решения систем нелинейных уравнений служит команда solve. Уравнения задаются в виде символьных строк, а также символьной строкой задается список переменных, относительно которых нужно решить систему. Результат возвращается в виде массива символических переменных. Для численного решения систем нелинейных уравнений в инструментарии для решения задач оптимизации Optimization Toolbox есть команда fsolve. При вызове команды fsolve информация о решаемой системе передается в виде функции, записанной в отдельный файл, озаглавленный так же, как называется функция (расширение дать *.m). Эта функция (написанная пользователем) по заданному вектору аргументов возвращает значения функций, которые должны обращаться в нуль. 4. Решение дифференциальных уравненийДля аналитического решения систем дифференциальных уравнений применятся команда dsolve. Она позволяет находить как общее, так и частное решение. Если начальные (или граничные) условия заданы, то команда находит частное решение, а если нет − то общее. Сами дифференциальные уравнения, а также начальные или граничные условия должны быть заданы в виде строковых переменных. При этом применяются такие правила для обозначения производных: Dy – для первой производной; D2y − для второй; D3y − для третьей; и так далее, если y − искомая функция. Нужно указать, относительно какого аргумента решать уравнение. Результат возвращается в виде массива символических переменных. Длина массива − это количество найденных решений. Если искомых функций несколько, то каждый элемент массива является структурой, поля которой имеют такие же имена, как и искомые переменные. Вывод строк для граничных условий осуществляется с помощью функции sprintf, которая выдаёт результат в строку. Для численного решения систем дифференциальных уравнений в MATLAB существуют решатели дифференциальных уравнений: ode113, ode23, ode45 и др. Они применяются для разных систем (мягкие, жёсткие) и используют различные схемы численного интегрирования. Для них систему уравнений нужно привести к нормальному виду и задать начальные условия. Преобразование типов от строки к символическому выражению создаётся командой sym. Обратная команда char применяется для преобразования символического выражения в строку. СОДЕРЖАНИЕ Предисловие 3 1. Критерии оптимальности автоматизированных систем управления 4 2. Основные понятия и определения вариационного исчисления 13 3. Основная лемма вариационного исчисления 19 4. Решение вариационных задач с использованием диффренциального уравнения Эйлера 23 5. Исследование экстремалей функционалов 28 6. Решение вариационных задач в частных случаях уравнения Эйлера 34 7. Решение вариационных задач для функционалов с ограничениями 39 Библиографический список 46 Приложение. Элементы программирования на MATLAB 47 |