Приближённые методы поиска экстремальных значений функций нескольких переменных
Тема 8. Приближенные методы поиска экстремальных значений функций нескольких переменных.
Ограничимся рассмотрением функций двух переменных вида z = f(x,y), которую будем считать имеющей вторые частные производные по каждой независимой переменной. Определение глобальных и локальных экстремумов для такой функции аналогично приведенным выше определениям для функции одной переменной. Отличием является то, что экстремум ищется не на отрезке (как в случае однгой переменной), а в области G изменения двух переменных - xÎ[ax, bx], yÎ[ay, by].
Необходимым условием наличия в некоторой точке локального экстремума функции z = f(x,y) является равенство нулю ее обеих частных производных, т.е. требуется, чтобы координаты этой точки были решениями системы уранений
. (8.1)
Это условие не является достаточным, поэтому такие точки являются только подозрительными на наличие локального экстремума. Достаточным условием наличия в них экстремума является тот факт, что этой точке определитель матрицы D, составленный из вторых частных производных функции будет положительным. Более конкретно этот определитель можно представить в виде
. (8.2)
Из условия следует утверждение, что знаки совпадают.
Рекомендуемые материалы
При этом,
· функция имеет минимум, если в подозрительной на экстремум точке значение положительно
· функция имеет максимум, если в подозрительной на экстремум точке значение отрицательно.
Если значение в подозрительной на экстремум точке равно нулю - для решения вопроса о наличии в ней экстемума необходимы более сложные исследования.
Поскольку искать корни частных призводных функции и определять в них знаки вторых ее производных не совсем просто - имеются численные методы приближенного нахождения как глобальных, так и локальных экстремумов функций (с заданной точностью). Для выполнения поиска локальных экстремумов они требуют предварительного выбора области такого поиска, т.е. определения границ интервалов изменения каждой независимой переменной, внутри которой этот экстремум содержится. А именно,
· для поска локального минимума необходимо выбирать область, внутри которой определитель матрицы D является положительным и значение положительно
· для поска локального максимума необходимо выбирать область, внутри которой определитель матрицы D является положительным и значение отрицательно.
Метод сетки предназначен для поиска глобального экстремума функции в заданной области. Суть метода состоит в том, что вся область G {xÎ[ax, bx], yÎ[ay, by]} по каждой координате покрывается “сеткой” - множеством точек, удаленных друг от друге на более чем на величину заданной точности e>0. Таким образом, вся прямоугольная область G окажется прокрытой прямоугольной сеткой с шириной каждой ее ячейки не более величины e, а затем в каждом узле такой сетки вычисляются значения функции. Далее из них выбирается минимальное (или максимальное), которое (вместе с соответствующими ей значениями переменных x и y) и будет принято в качестве искомого значения глобального экстремума заданной функции в заданной области. Выбор шага разбивки интервалов изменения каждой независимой переменной производится аналогично ранее описанному случаю одной независой переменной.
Метод покоординатного спуска предназначен для поиска локального экстремума функции z=f(x,y) в заданной области. Для начала поиска необходимо найти начальное приближение искомой точки (x0, y0). Затем производится фиксация значения переменной y на значении y0 и поиск экстремума функции
z = f(x, y0) = j(x) (8.3)
как функции одной переменной x. Ее экстремум (в заданной области) находят в точке x1. Дальше производится фиксация значения переменной x на значении x1 и поиск экстремума функции
z = f(x1, y) = y(y) (8.4)
как функции одной переменной y. Ее экстремум (в заданной области) находят в точке y1. Таким образом, от исходной точки (x0, y0) в два этапа произведен переход к точке (x1, y1). Значение функции в ней ближе к искомому экстремальному значению. Повторяя снова те же действия, можно получить новые точки (xi, yi) (i=2, 3, …), значения функции в которых постепенно и монотонно будет стремиться к экстремальному. Процесс завершается, если
max(|xi+1- xi|, |yi+1 - yi|) (8.5)
станет меньше заданной точности.
Процес поиска значения экстремума этим методом удобно проводить с занесением результатов расчетов в таблицу следующего вида (в ней введено обозначение D= Max(| xi+1- xi|, | yi+1- yi|)
i | xi | yi | j( xi+1)=f(xi+1, yi) | xi+1 | y( yi+1)=f(xi+1, yi+1) | yi+1 | D |
0 |
|
| |||||
1 |
| ||||||
… |
При использовании для расчетов Excel для поиска минимумов функций и удобно использовать опцию Поиск решения из меню Сервис.
Пример 2. Вычислить методом покоординатного спуска минимум функции двух переменных z = f(x, y) = 2(x-0.2)2 + (y-0.8)2 + 3 в области G {xÎ[0, 4], yÎ[0, 2]} с точностью 0.01.
Анализ заданной функции на наличие локального минимума в заданной области мы произвели в примере 1. За начальное приближение искомой точки минимума примем средину заданной области. Таким образом имеем (x0, y0)= (2, 1).
Результаты расчетов в Excel приведены в виде таблицы
I | xi | yi | jimin | xi+1 | ymin | yi+1 | Delta |
0 | 2 | 1 | 3,0400 | 0,2000 | 3 | 0,8000 | 1,8 |
1 | 0,2 | 0,8 | 3 | 0,2 | 3 | 0,8 | 0 |
Решение найдено за два шага - минимум функции fmin = 3.000 и достигается он в точке xmin = 0.2000 и ymin =0.8000.
Пример 3. Вычислить методом покоординатного спуска минимум функции двух переменных z = f(x, y) = 2(x+0.1y-0.1)2 + Sin2(0.5x+y-0.5) в области G {xÎ[0, 1], yÎ[0, 0.75]} с точностью 0.01.
Произведем анализ заданной функции на наличие локального минимума в заданной области и определим начальное приближение. Вычислим
fx’(x,y)=4(x+0.1y-0.1)+0.5Sin(x+2y-1)
fy’(x,y)=0.4(x+0.1y-0.1)+Sin(x+2y-1)
fxx’’(x,y)=4+0.5Cos(x+2y-1)
fxy’’(x,y)=0.4+Cos(x+2y-1)
fyy’’(x,y)=0.04+Cos(x+2y-1)
D= fxx’’ fyy’’-( fyy’’)2=3.22Cos(x+2y-1) – 0.5 Cos2 (x+2y-1)>0
fxx’’>0.
Следовательно, в области G {xÎ[0, 1], yÎ[0, 0.75]} заданная функция имеет локальный минимум. За начальное приближение искомой точки минимума примем левый нижний угол этой области, т.е. (x0, y0)= (0, 0).
Результаты расчетов в Excel приведены в виде таблицы
I | xi | yi | jimin n | xi+1 | ymin | yi+1 | Delta |
0 | 0,0000 | 0,0000 | 0,1715 | 0,1905 | 0,0336 | 0,3791 | 0,3791 |
1 | 0,1905 | 0,3791 | 0,0072 | 0,0820 | 0,0015 | 0,4535 | 0,1085 |
2 | 0,0820 | 0,4535 | 0,0003 | 0,0589 | 0,0001 | 0,4694 | 0,0231 |
3 | 0,0589 | 0,4694 | 0,0000 | 0,0540 | 0,0000 | 0,4728 | 0,0049 |
Решение найдено за четыре шага - минимум функции fmin = 0.000 и достигается он в точке xmin = 0.0540 и ymin = 0.4728.
Метод найскорейшего спуска предназначен для поиска локального экстремума функции z = f(x,y) в заданной области. В отличие от метода покоординатного спуска, движение к точке экстремума ведется не по координатным линиям, а по направлению наиболешего изменения значения функции. Такое направление задается вектором, называемым градиентом функции. Этот вектор, обозначаемый , состоит из двух компонент. Они равны значениям частных производных функции f по каждой из двух независимых переменных, т.е.
. (8.6)
Движение в направлении этого вектора (градиента) производит к наиболее быстрому возрастанию значений функции, а в протовоположном направлении (в направлении антиградиента, т.е. вектора -) - к наиболее быстрому убыванию ее значений. Обозначим через , вектор задающий напрвление наиюолее быстрого движения к экструмуму (т.е. градиент или антиградиент).
Для начала поиска необходимо найти начальное приближение искомой точки, которое представим в виде вектора с координатами (x0, y0)Т. Затем вычислим в этой точке значения координат вектора и вектор движения вдоль него в сторону экстремума с точки (x0, y0). Это направление зададим вектором следующего вида
, (8.7)
здесь t - неотрицательная величина (называемая параметром), задающая движение вдоль вектора . Таким образом, вектор становится фактически вектор-функцией от параметра t. В координатном виде вектор можно представить в виде
. (8.8)
В этой формуле знак “±” необходимо заменить на “+” при поиске максимума, и на “-“ при поиске минимума. Подставляя полученные таким образом выражения для координат x и y в исходную функцию, получим
. (8.9)
Таким образом, мы получили функцию от одной переменной t. Найдя ее экстремум (минимум или максимум, исходя из задания), мы найдем точку достижения этого экстремума и обозначим ее через t1. Подставляя затем это значение t = t1 в формулу (8.8), получим следующее приближение с координатами (x1, y1)Т
. (8.10)
Таким образом, от исходной точки (x0, y0) произведен переход к точке (x1, y1). Значение функции в ней ближе к искомому экстремальному значению.
Аналогично вышеописаному, в точке снова найдем значение градиента функции, вычислим координаты вектора и координаты вектора движения вдоль него. Затем подставим их в заданную функцию и приведем ее к функции одной независимой переменной. Найдем ее экстремум в точке t2 и найдем точку (x2, y2). Повторяя снова те же действия, можно получить новые точки (xi, yi) (i=3, 4, …), значения функции в которых постепенно и монотонно будет стремиться к экстремальному. Этот процесс завершается, если следующая точка будет мало отличаться от предыдущей. Точнее это можно выразить так, что должно быть max(|xi+1 - xi|, |yi+1 - yi|) меньше заданной точности. Результаты расчетов удобно представлять в виде, приведенном в нижеследующем примере.
Пример 4. Вычислить методом найскорейшего спуска минимум функции двух переменных z = f(x, y) = x2 + 5y2 в области G {xÎ[-1, 1], yÎ[-2, 3]} с точностью 0.01.
Произведем анализ заданной функции на наличие локального минимума в заданной области и определим начальное приближение. Вычислим
fx’(x,y)=2x; fy’(x,y)=10y;
fxx’’(x,y)=2; fxy’’(x,y)=0; fyy’’(x,y)=10.
D= fxx’’ fyy’’-( fyy’’)2=20>0;
fxx’’>0.
Следовательно, в области G {xÎ[-1, 1], yÎ[-2, 3]} заданная функция имеет локальный минимум. За начальное приближение искомой точки минимума примем правый верхний угол области - (x0, y0)= (1, 3).
Результаты расчетов в Excel приведены в виде таблицы
i | xi | yi | fx'(xi,yi) | fy'(xi,yi) | Фmin | ti+1 | xi+1 | yi+1 | Delta |
0 | 1 | 3 | 2,0000 | 30,0000 | 0,6394 | 0,10036 | 0,7993 | -0,0107 | 3,01066 |
1 | 0,7993 | -0,0107 | 1,5986 | -0,1066 | 0,0089 | 0,49130 | 0,0139 | 0,0417 | 0,78539 |
2 | 0,0139 | 0,0417 | 0,0278 | 0,4170 | 0,0001 | 0,10036 | 0,0111 | -0,0001 | 0,04185 |
3 | 0,0111 | -0,0001 | 0,0222 | -0,0015 | 0,0000 | 0,49130 | 0,0002 | 0,0006 | 0,01092 |
4 | 0,0002 | 0,0006 | 0,0004 | 0,0058 | 0,0000 | "8 - Использование алгоритмов" - тут тоже много полезного для Вас. 0,10036 | 0,0002 | 0,0000 | 0,00058 |
Решение найдено за пять шагов - минимум функции fmin = 0.000 и достигается он в точке xmin = 0.0002 и ymin = 0.0000.