ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.03.2025
Просмотров: 69
Скачиваний: 0
Практикум 8. Численный поиск экстремумов функций
Цель работы – приобрести опыт численного нахождения экстремумов функций нескольких переменных.
Продолжительность работы - 2 часа.
Оборудование – работа выполняется в компьютерном классе с использованием пакета MATLAB.
Порядок выполнения
-
Знакомство со справочным материалом по математике
-
Знакомство со справочным материалом по пакету MATLAB.
-
Изучение примеров.
-
Самостоятельное выполнение упражнений. При выполнении упражнений в случае сообщения системы об ошибке рекомендуется найти и исправить ошибку самостоятельно; однако, если после многократных попыток сделать это не удается, то можно и нужно проконсультироваться с преподавателем.
P.S. Отчитываться перед преподавателем о выполнении упражнений не нужно. Однако, следует учесть, что их выполнение – залог успешного написания контрольной работы по модулю, поскольку контрольная работа составлена из аналогов упражнений.
Справочный материал по математике
Пусть функция определена на множестве .
Рассмотрим задачу в следующей постановке: требуется найти , при котором функция достигает наименьшего значения на множестве ( для всех ).
Множество обычно задают системой уравнений и/или неравенств и называют допустимым множеством.
Если нас интересует не наименьшее, а наибольшее значение функции на множестве , то переформулируем задачу. Вместо того, чтобы искать наибольшее значение функции на допустимом множестве, будем искать на этом множестве наименьшее значение функции .
Справочный материал по пакету MATLAB
В MatLab есть несколько встроенных функций, которые ищут как безусловные минимумы функции нескольких переменных, так и минимумы при наличии ограничений на значения аргументов. Эти программные функции не являются универсальными, каждая используется для решения лишь определенного класса задач (для определенного вида функций и ограничений). В качестве примера рассмотрим одну из таких встроенных функций – fmincon.
Функция fmincon вычисляет вектор , который является локальным минимумом функции при условии, что переменные удовлетворяют линейным неравенствам и уравнениям следующего вида:
(1)
…
(2)
…
(3)
…
Важное о функции fmincon:
- если функция имеет в области несколько точек минимума, fmincon найдет одну из них;
- когда локальный минимум не находится во внутренних точках допустимой области, fmincon минимизирует в точках, лежащих на границе допустимой области.
Условия применения fmincon:
1) минимизируемая функция должна быть непрерывной функцией аргументов;
2) значения функции должны быть действительными (не комплексными!).
Рассмотрим три формата вызова функции fmincon:
x=fmincon (fun,x0,A,b)
x=fmincon (fun,x0,A,b,C,d)
x=fmincon (fun,x0,A,b,C,d,s,t)
Здесь
fun - минимизируемая функция, представленная как строка (выражение в апострофах), или как имя файла функции, взятое в апострофы, или как дескриптор (указатель) на минимизируемую функцию;
x – точка минимума;
x0 – точка (вектор координат), начиная с которой идет поиск минимума функции;
A – матрица и b – вектор , посредством которых заданы ограничения (1);
C – матрица и d – вектор , посредством которых заданы ограничения (2).
s – вектор и t – вектор , посредством которых заданы ограничения (3).
Если какой-то из перечисленных выше входных параметров не используется, вместо него задается пустой аргумент ([]). Если отсутствуют ограничения сверху или снизу на отдельные компоненты в условиях (3), то соответствующие компоненты векторов s и t задаются как -inf и inf .
Чтобы получить не только координаты точки минимума, но и значение функции в найденной точке, нужно использовать более полное обращение к каждому виду функции fmincon:
[x,fm]=fmincon (…).
Примеры применений MATLAB
Пример 1. Зададимся вопросом, имеет ли функция точки экстремума? При положительном ответе найдем координаты точки экстремума и значение функции в этой точке.
Решение.
Чтобы прояснить ситуацию, построим график и линии уровня функции. С областью построения поэкспериментируем – будем менять ее, ища точку экстремума (в программе представлен конечный вариант).
>> [X,Y]=meshgrid(0:0.05:3,0:0.05:3);
>> f=X1.^2+X2.^2-X1.*X2-X1-X2;
>> surf(X1,X2,f)
[C,h]=contour(X1,X2,f,10);
clabel(C,h)
По рисункам локализуем точку минимума и зададим область ее локализации через систему неравенств типа (3): например, , . На рисунке видно, что в этой области есть только один локальный минимум и этот локальный минимум совпадает с наименьшим значением функции на допустимом множестве. Для нахождения его используем функцию fmincon. В качестве начальной точки x0 возьмем точку с координатами (0,5; 0,5) (эта точка удовлетворяет ограничениям).
s=[0 0];
t=[2 2];
x0=[0.5 0.5];
[x,fm]=fmincon(@(x)x(1).^2+x(2).^2-x(1).*x(2)-x(1)-x(2),x0,[],[],[],[],s,t)
x =
1 1
fm =
-1
Пример 2. Найдем наименьшее значение функции в области , ,
Решение.
По линиям уровня функции видно, что функция не имеет локальных минимумов внутри допустимой области. Следовательно, функция fmincon найдет минимум на границе.
clear
clc
s=[0 0];
t=[inf inf];
A=[1 1];
b=0.75;
x0=[0.25 0.25];
[x,fm]=fmincon(@(x)x(1).^2+x(2).^2-x(1).*x(2)-x(1)-x(2),x0,A,b,[],[],s,t)
x =
0.3750 0.3750
fm =
-0.6094
Упражнения
Упражнение 1
Найдите локальные экстремумы функции в области , . С помощью графиков функций и линий уровня локализуйте точки экстремумов. Для поиска числовых значений экстремумов используйте функцию fmincon.
Упражнение 2
Постройте график функции и линии ее уровня в области , . С помощью графиков функций и линий уровня локализуйте точки экстремумов. Для поиска числовых значений экстремумов используйте функцию fmincon.
Упражнение 3
Внутри четырехугольника с вершинами в точках , , , найдите точку:
а) сумма квадратов расстояний которой от вершин была бы наименьшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике);
б) сумма квадратов расстояний которой от вершин была бы наибольшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике).
Список литературы и информационных ресурсов
-
Сборник задач по математике для втузов [Текст]: Учеб. пособие для втузов: В 4-х ч. Ч. 2: [Введение в анализ; Дифференциальное и интегральное исчисление функций одной переменной; Дифференциальное исчисление функций нескольких переменных; Кратные интегралы; Дифференциальные уравнения] / Под ред. А.В. Ефимова, А.С. Поспелова. - 5-е изд., перераб. и доп. - М.: Физматлит, 2009.
-
В.Г.Потемкин "Введение в Matlab" (v 5.3) http://matlab.exponenta.ru
-
Мещеряков В.В. Задачи по математике с MATLAB&SIMULINK – М.: ДИАЛОГ-МИФИ, 2007
-
Амос Гилат. MATLAB. Теория и практика. 5-е изд./ Пер. с англ. Смоленцев Н.К. – М.:ДМК Пресс, 2016.
-
http://matlab.exponenta.ru