ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.03.2025
Просмотров: 104
Скачиваний: 0
Практикум 8. Численный поиск экстремумов функций
Цель работы – приобрести опыт численного нахождения экстремумов функций нескольких переменных.
Продолжительность работы - 2 часа.
Оборудование – работа выполняется в компьютерном классе с использованием пакета MATLAB.
Порядок выполнения
1.Знакомство со справочным материалом по математике
2.Знакомство со справочным материалом по пакету MATLAB.
3.Изучение примеров.
4.Самостоятельное выполнение упражнений. При выполнении упражнений в случае сообщения системы об ошибке рекомендуется найти и исправить ошибку самостоятельно; однако, если после многократных попыток сделать
это не удается, то можно и нужно проконсультироваться с преподавателем.
P.S. Отчитываться перед преподавателем о выполнении упражнений не нужно. Однако, следует учесть, что их выполнение – залог успешного написания контрольной работы по модулю, поскольку контрольная работа составлена из аналогов упражнений.
|
Справочный материал по математике |
|
|
|
Пусть функция y = f (x1, x2 ,..., xn ) определена на множестве X . |
|
|
|
|
Рассмотрим задачу в следующей постановке: требуется найти |
x = ( x* , x* ,..., x* ) |
, |
||
|
|
1 2 |
n |
|
при котором |
функция f достигает наименьшего значения на |
множестве |
X |
|
( f (x ) f (x) для всех x X ). |
|
|
|
|
Множество |
X обычно задают системой уравнений и/или неравенств и называют |
допустимым множеством.
Если нас интересует не наименьшее, а наибольшее значение функции на множестве X , то переформулируем задачу. Вместо того, чтобы искать наибольшее значение функции f на допустимом множестве, будем искать на этом множестве наименьшее значение функции g = − f .
Справочный материал по пакету MATLAB
В MatLab есть несколько встроенных функций, которые ищут как безусловные минимумы функции нескольких переменных, так и минимумы при наличии ограничений на значения аргументов. Эти программные функции не являются универсальными, каждая используется для решения лишь определенного класса задач (для определенного вида функций и ограничений). В качестве примера рассмотрим одну из таких встроенных функций – fmincon.
Функция fmincon вычисляет вектор x = ( x1* , x2* ,..., xn* ) , который является локальным минимумом функции f ( x1, x2 ,..., xn ) при условии, что переменные (x1, x2 ,..., xn ) удовлетворяют линейным неравенствам и уравнениям следующего вида:
1
(1)
a11x1 + a12 x2 +... + a1n xn b1
…
am1x1 + am2 x2 + ... + amn xn bm
(2)
c11x1 + c12 x2 + ... + c1n xn = d1
…
ck1x1 + ck 2 x2 + ... + ckn xn = dk
(3)
s1 x1 t1
…
sn xn tn
Важное о функции fmincon:
-если функция имеет в области несколько точек минимума, fmincon найдет одну из них;
-когда локальный минимум не находится во внутренних точках допустимой
области, fmincon минимизирует f ( x1, x2 ,..., xn ) в точках, лежащих на границе
допустимой области.
Условия применения fmincon:
1) минимизируемая функция f ( x1, x2 ,..., xn ) должна быть непрерывной функцией аргументов;
2)значения функции f ( x1, x2 ,..., xn ) должны быть действительными (не
комплексными!).
Рассмотрим три формата вызова функции 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 – точка (вектор координат), начиная с которой идет поиск минимума функции;
|
a11 |
a12 |
... |
a1n |
|
|
|
|
|
|
|
|
A – матрица |
... ... |
... |
... |
|
и b – вектор |
(b , b ,..., b ) , посредством которых |
||||||
|
|
|
|
|
|
|
|
1 |
2 |
m |
|
|
|
|
am1 |
... |
|
|
|
|
|
|
|
|
|
|
am1 |
amn |
|
|
|
|
|
|
||||
заданы ограничения (1); |
|
|
|
|
|
|
|
|
|
|
||
|
c11 |
c12 |
... |
c1n |
|
|
|
|
|
|
|
|
C – матрица |
... ... |
... |
... |
|
|
и d – вектор |
(d , d |
|
,..., d |
|
) , посредством которых |
|
|
|
|
|
|
|
|
|
1 |
2 |
|
k |
|
|
c |
c |
... |
c |
|
|
|
|
|
|
|
|
|
k1 |
k1 |
|
kn |
|
|
|
|
|
|
|
|
заданы ограничения (2).
2
s – вектор (s1, s2 ,..., sk ) и t – вектор (t1, t2 ,..., tk ) , посредством которых заданы
ограничения (3).
Если какой-то из перечисленных выше входных параметров не используется, вместо него задается пустой аргумент ([]). Если отсутствуют ограничения сверху или снизу на отдельные компоненты xi в условиях (3), то соответствующие компоненты
векторов s и t задаются как -inf (−) и inf (+ ) .
Чтобы получить не только координаты точки минимума, но и значение функции в найденной точке, нужно использовать более полное обращение к каждому виду функции fmincon:
[x,fm]=fmincon (…).
Примеры применений MATLAB
Пример 1. Зададимся вопросом, имеет ли функция f ( x1, x2 ) = x12 + x22 − x1x2 − x1 − x2
точки экстремума? При положительном ответе найдем координаты точки экстремума и
значение функции в этой точке.
Решение.
Чтобы прояснить ситуацию, построим график и линии уровня функции. С областью построения поэкспериментируем – будем менять ее, ища точку экстремума (в программе представлен конечный вариант).
>>[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)
6
4
2
0
-2 3
2 |
3 |
|
|
2 |
1 |
1 |
|
0 0
3
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.1818 |
|
1.5455 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
.0909 |
|
2 |
|
|
|
|
|
1818 |
||||
|
|
|
|
|
|
|
|
||||||
|
4 |
|
|
|
|
|
0. |
|
|
|
|||
|
|
.4545 |
|
.5455 |
|
|
|
|
|
|
|||
|
|
|
|
90909 |
|
|
|
|
|
||||
2.5 |
3 |
|
|
|
1 |
|
|
|
1 |
|
|||
|
.8182 |
|
|
|
|
|
|
. |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
2 |
|
|
.90909 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
0. |
|
5455 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.1818 |
|
|
|
27273 |
|
|
|
|
|
|||
|
2 |
|
|
|
.27273 |
|
|
|
|
|
|
|
|
2 |
.5455 |
|
0 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.36364 |
|
- |
|
|
|
|
|
|
|
. |
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
||
|
|
90909 |
|
-0 |
|
|
|
90909 |
|
|
|
||
|
0 |
|
|
|
|
|
36364 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
.27273 |
|
|
|
|
. |
|
|
|
||||
1.5 |
|
|
|
|
0 |
|
|
|
|||||
|
|
|
27273 |
|
|
|
1818 |
||||||
|
|
|
|
|
|
|
|
||||||
|
0 |
|
|
36364 |
|
|
|
|
|
. 5455 |
. |
||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
. |
|
2 |
|
|||
1 |
|
|
|
|
|
|
0 |
|
1 |
|
|
||
|
|
. |
|
|
|
|
|
|
|
|
|||
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
.8182 |
|
|
|
|
|
|
|
|
|
.90909 |
|
|
|
||
0.5 |
|
|
|
|
|
|
.36364 |
|
|
2 |
|
||
|
|
|
|
|
|
|
|
.4545 |
|
||||
|
|
|
|
|
|
|
0 |
|
|
|
|
||
|
|
|
|
|
|
|
-0 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
.27273 |
|
.1818 |
|
|
.0909 |
|
|
|
|
|
|
|
|
|
|
|
4 |
|
||
|
|
|
|
|
|
|
0 |
. |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
5455 |
|
|
|
|
|
|
|
|
|
|
-0.36364 |
|
|
1 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
0.5 |
1 |
1.5 |
2 |
|
2.5 |
|
|
3 |
По рисункам локализуем точку минимума и зададим область ее локализации через систему неравенств типа (3): например, 0 x1 2 , 0 x2 2 . На рисунке видно, что в
этой области есть только один локальный минимум и этот локальный минимум совпадает с наименьшим значением функции на допустимом множестве. Для нахождения его используем функцию 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. Найдем наименьшее значение функции f ( x1, x2 ) = x12 + x22 − x1x2 − x1 − x2
в области x1 + x2 0, 75 , x1 0 , x2 0
Решение.
По линиям уровня функции видно, что функция не имеет локальных минимумов внутри допустимой области. Следовательно, функция 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
4
Упражнения |
|
Упражнение 1 |
|
Найдите локальные экстремумы функции z = (x +1)e−x2 −y2 +2,1y |
в области x [−5;5] , |
y [−5;5]. С помощью графиков функций и линий уровня |
локализуйте точки |
экстремумов. Для поиска числовых значений экстремумов используйте функцию
fmincon.
Упражнение 2
Постройте график функции |
z =1,9 |
−1,3 |
x2 |
+x2 |
sin(0,6x ) cos x |
и линии ее уровня в |
||
|
1 |
2 |
||||||
|
|
|
|
|
|
1 |
2 |
|
области x [−6;6], |
y [−6;6]. |
С помощью |
графиков |
функций и линий уровня |
локализуйте точки экстремумов. Для поиска числовых значений экстремумов используйте функцию fmincon.
Упражнение 3
Внутри четырехугольника с вершинами в точках A1(−5, 2) , A2 (−2,5) , A3 (6, 4) , A4 (14, −6) найдите точку:
а) сумма квадратов расстояний которой от вершин была бы наименьшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике);
б) сумма квадратов расстояний которой от вершин была бы наибольшей (поиск сопроводите графической иллюстрацией, найденную точку отметьте на графике).
Список литературы и информационных ресурсов
1. Сборник задач по математике для втузов [Текст]: Учеб. пособие для втузов: В 4-х ч. Ч. 2: [Введение в анализ; Дифференциальное и интегральное исчисление функций одной переменной; Дифференциальное исчисление функций нескольких переменных; Кратные интегралы; Дифференциальные уравнения] / Под ред. А.В. Ефимова, А.С. Поспелова. - 5-е изд., перераб. и доп. - М.: Физматлит, 2009.
2. |
В.Г.Потемкин "Введение в Matlab" (v 5.3) |
http://matlab.exponenta.ru |
|
3. |
Мещеряков В.В. Задачи по математике с MATLAB&SIMULINK |
– М.: ДИАЛОГ-МИФИ, 2007 |
|
4. |
Амос Гилат. MATLAB. Теория и практика. 5-е изд./ Пер. с англ. |
Смоленцев Н.К. – М.:ДМК Пресс, 2016. |
|
5. |
http://matlab.exponenta.ru |
5