Аппроксимация квадратичными функциями гораздо более распространена. Пусть задана квадратичная функция (3): , которая является, как было показано ранее, выпуклой функцией с минимумом в точке . Возьмем начальную точку х0=(1, 1) (это можно считать начальной локализацией). Зафиксируем и найдем экстремум по координате х2 из уравнения: , , .
Далее фиксируем и отыскиваем экстремум по х1, , , . Как видно за одну итерацию, содержащую два шага, экстремум не найден.
Делаем следующий шаг из точки х1, , , , . Следующий шаг из дает . Закончена вторая итерация. Продолжая вычисления, получим точку , т.е. последовательность сходится к экстремальной точке. Теперь встает вопрос, когда закончить вычисления? Т.к. метод З-Г сходится, то вычисления можно прервать на любой итерации. Обычно задают некоторую малую величину e, по координатам или d по значению функции. Вычисления заканчиваются тогда, когда разница между значениями координат (или функции) на текущей и на предыдущей итерациях станет меньше или равна данной величине e или d. Метод З-Г достаточно прост, но имеет малую скорость сходимости, т.к. на каждой итерации в общем случае надо делать n шагов при несепарабельных функциях.
|
|
Градиентные методы.
В градиентных методах направление движения к экстремальной точке выбирается по градиенту или антиградиенту, а шаг mk выбирается различными способами в зависимости от метода.
Метод наискорейшего спуска.
Пусть задана сепарабельная функция и начальная точка х0=(–0,6;–2,6), у0=4,68. Вычислим в точке х0 проекции градиента:
Построим на графике линий равного уровня проекции градиента в определенном масштабе и результирующий вектор L1, который дает направление наибольшего изменения функции в точке х0. Если провести через L1 плоскость, перпендикулярную {x1, x2}, то эта плоскость, рассекая поверхность , выделит на ней параболу. Теперь надо найти точку экстремума полученной параболы. Для этого следует записать уравнение параболы в данной плоскости (плоскости градиента) с помощью параметра m, учитывающего направление антиградиента:
Подставляя значения координат и проекций градиента, получим:
Определим параметр m исходя из экстремума функции :
,
Теперь определим координаты точки х(1), в которой функция по направлению L1 достигает экстремума.
,
,
Значение функции в этой точке: у(1)=1,3. Полученная точка х(1) по направлению L1 показана на рисунке. Линия градиента касается в этой точке линии равного уровня функции у.
Продолжая вычисления, а именно: 1) определяя проекции градиента, 2) составляя уравнения параболы в плоскости градиента , 3) находя параметр m из условия экстремума функции , 4) определяя координаты точки х(2), в которой функция по направлению градиента достигает экстремум, получим следующие результаты:
|
|
Итерация | ||||||
х | (-0,6;2,6) | (-0,08;1,82) | (0,48;2,19) | (0,65;1,94) | (0,83;2,06) | (0,89;1,98) |
у | 4,68 | 1,3 | 0,41 | 0,14 | 0,043 | 0,014 |
В математике доказывается, что метод наискорейшего спуска сходится. Значит, вычисления можно прервать на любом шаге, если выполнена заданная точность. Например, если задана точность по значениям функции у на смежных шагах d£0,05. Тогда разность на 4 и 5 итерациях , следовательно, на пятой итерации вычисления можно закончить.
Метод наискорейшего спуска в изложенном выше пошаговом варианте достаточно универсален и применим для широкого класса функций, имеющих конечную производную в каждой точке, т.е. гладких. Но уравнение для m иногда получается сложным и громоздким. Для квадратичных функций определение m можно упростить и сделать более удобным для расчетов на ЭВМ.
Пусть дано квадратичное уравнение в матричной форме:
,
которое запишем в развернутой форме через матрицу Н и С:
Запишем градиент функции у:
Возьмем теперь любое направление S с проекциями S1 и S2 и составим для этого направления уравнение экстремальной линии через параметр m для любой точки (х1, х2):
Раскрыв скобки и продифференцировав по m, получим:
Отсюда определяем m из условия экстремума по m:
Нетрудно заметить, что данное выражение можно переписать так:
,
что соответствует матричной записи:
Если вместо произвольного направления взять градиент, то получим:
, или:
, (6)
В общем виде, для функции многих переменных:
Покажем, насколько упростилась процедура определения m для квадратичной функции . Зададимся начальной точкой с координатами .
Определим проекции градиента в точке х0:
На рисунке показаны линии уровня и проекции градиента. Определяем m по (6):
Координаты экстремальной точки по L1:
;
Далее вычисляются проекции градиента во вновь найденной точке :
, и строится направление L2. Затем вычисляется m для второй итерации по (6): .
Координаты экстремальной точки по направлению L2:
Как видно, за две итерации методом наискорейшего спуска была достигнута малая окрестность экстремума функции. В этом и состоит основное преимущество данного метода над методом Зейделя-Гаусса.
Градиентные методы с заданием параметра шага m
Для поиска экстремума функций с большим числом переменных метод наискорейшего спуска становится трудоемким (если не применять ЭВМ). Поэтому был предложен ряд его модификаций.
Самая трудная операция в методе наискорейшего спуска – нахождение экстремального параметра m. Чтобы ее исключить, можно задавать параметр m в виде некоторой сходящейся числовой последовательности, например, в виде ряда:
, где n=1,2… – номер итерации, К – коэффициент.
Скорость сходимости данной модификации данной модификации в целом ниже, чем в методе с определением m по экстремуму функции у(m), и зависит от выбора коэффициента К и самой последовательности. Последовательность должна выбираться такой, чтобы скорость ее сходимости была ниже скорости сходимости градиента, иначе ряд сойдется к 0 быстрее, чем градиент. Для определения коэффициента К желательно определить на первой итерации параметр m по экстремуму у(m) или по уравнению (6).
Например, пусть задана функция: , . Данный пример уже рассматривался в методе наискорейшего спуска. На первой итерации проекции градиента имели значения: , Параметр .
Выбираем m в виде последовательности , причем К берем близким к m0, пусть К=0,2.
Тогда на первой итерации m0=0,2.
На второй итерации при и проекциях градиентов в точке х(1)
получим:
Расчеты можно продолжить дальше, получим сходящуюся минимизирующую последовательность. Хотя скорость сходимости данного метода будет меньше, чем у метода наискорейшего спуска, зато значительно упрощается расчет m на каждом шаге.
|
|