Найдем точки x1 и х2, обладающие указанным свойством.
Рассмотрим сначала отрезок [0; 1] и для определенности предположим, что при его уменьшении исключается правая часть этого отрезка. Пусть х2 = t, тогда симметрично расположенная точка х1 = 1-t (рисунок 6).
Рисунок 6 - Определение пробных точек в методе золотого сечения
Пробная точка х1 отрезка [0; 1] перейдет в пробную точку х2¢ = 1-t нового отрезка [0; t]. Чтобы точки х2 = t, и х2¢ = 1-t делили отрезки [0; 1] и [0; t] в одном и том же отношении, должно выполняться равенство
или , откуда находим положительное значение …Таким образом,
х1 = 1-t =
, .Для произвольного отрезка [а; b] выражения для пробных точек примут вид
; . (5)Замечания:
1. Точки x1 и х2 из (5) обладают следующим свойством: каждая из них делит отрезок [а; b] на две неравные части так, что отношение длины всего отрезка к длине его большей части равно отношению длин большей и меньшей частей отрезка. Точки с таким свойством называются точками золотого сечения отрезка [а; b]. Это и объясняет название рассматриваемого метода.
2. На каждой итерации исключения отрезков с пробными точками (5) одна из них
переходит на следующий отрезок и значение f (x) в этой точке вычислять не следует. Если новым отрезком становится [а; х2], то на него переходит пробная точка исходного отрезка, становясь его второй пробной точкой (х2’= х1) (рисунок 6). В случае перехода к отрезку [х1; b] пробная точка исходного отрезка становится первой пробной точкой отрезка [х1; b].3. Легко проверить, что х1=а+b-х2, и x2=а+b-х1. Поэтому на каждой итерации метода золотого сечения недостающую пробную точку нового отрезка можно найти по перешедшей на него пробной точке с помощью сложения и вычитания, не используя формул (5).
4. В конце вычислений по методу золотого сечения в качестве приближенного значения х* можно взять середину последнего из полученных отрезков
.Опишем алгоритм метода золотого сечения.
Шаг 1. Найти х1 и х2 по формулам (5). Вычислить f (x1) и f (x2).
Шаг 2. Определить
. Проверка на окончание поиска: если en > e, то перейти к шагу 3, иначе - к шагу 4.Шаг 3. Переход к новому отрезку и новым пробным точкам. Еслиf (x1) £f (x2) то положить b=x2,x2=x1, f (x2) £f (x1), x1=b-t (b-a) и вычислить f (x1), иначе - положить a=x1, x1= x2, f (x1) = f (x2), x2=b+t (b-a) и вычислить f (x2). Перейти к шагу 2.
Шаг 4. Окончание поиска: положить
, .Сравнение методов исключения отрезков. При сравнении прямых методов минимизации обычно учитывают количество N значений f (x), гарантирующее заданную точность определения точки х* тем или иным методом. Чем меньше N, тем эффективнее считается метод. При этом вспомогательные операции такие, как выбор пробных точек, сравнение значений f (x) и т.п., не учитываются. Во многих практических случаях определение значений целевой функции требует больших затрат (например, времени ЭВМ или средств для проведения экспериментов) и вспомогательными вычислениями можно пренебречь. А эффективность метода минимизации особенно важна именно в таких случаях, поскольку позволяет сократить указанные затраты.
Эффективность методов минимизации можно также сравнивать, на основании гарантированной точности e (N) нахождения точки х*, которую они обеспечивают в результате определения N значений f (x). Метод золотого сечения считают более точным, чем метод дихотомии, однако разница в точности в данном случае незначительна.
Пусть заданы следующие параметры:
Примем
и . Тогда (рисунок 7).Рисунок 7 - Поведение исходной функции на заданном отрезке
Проведем несколько итерации методом дихотомии:
Поскольку f (x1) < f (x2), то b: =x2, a оставляем прежним. Тогда для следующей итерации:
Так как f (x1) > f (x2), то a: =x1, b оставляем прежним. Тогда на третьем шаге:
Результаты полного решения данной задачи представлены на рисунке 8. Листинг программы представлен в приложении А.
Рисунок 8 - Получение решения методом дихотомии
Для метода золотого сечения:
Так как f (x1) < f (x2), то b: =x2, a оставляем прежним. Тогда для следующей итерации:
Поскольку f (x1) < f (x2), то b: =x2, a оставляем прежним. Тогда на третьем шаге:
И так далее до тех пор, пока не достигнем указанной точности. Полный расчет представлен на рисунке 9. Листинг программы представлен в приложении А.
Рисунок 9 - Получение решения методом золотого сечения
Теперь рассмотрим задачи оптимизации, сводящиеся к поиску точек минимума функции многих переменных на всем пространстве. В большинстве случаев такая задача бывает сложнее задачи минимизации функции одной переменной, так как с ростом размерности пространства переменных, как правило, возрастают объем вычислений и сложность алгоритмов, а также затрудняется анализ поведения целевой функции.
Этот метод заключается в последовательной минимизации целевой функции f (x) по направлениямx1 и x2.
Рисунок 10 - Циклический покоординатный спуск.
Опишем этот алгоритм.
Шаг 0. Выбрать х ÎEn, критерий достижения точности e и шаг
. Найти f (x1 (0),x2 (0)).Шаг 1. Принять x1 (1) = x1 (0) +
. Определить f (x1 (1),x2 (0)). Сравнить полученное значение с значением начальной функции. Если f (x1 (1),x2 (0)) < f (x1 (0),x2 (0)), то перейти к шагу 5, если же f (x1 (1),x2 (0)) > f (x1 (0),x2 (0)), то перейти к шагу 2.Шаг 2. Принять x1 (1) = x1 (0) -
. Определить f (x1 (1),x2 (0)). Сравнить полученное значение с значением начальной функции. Если f (x1 (1),x2 (0)) < f (x1 (0),x2 (0)), то перейти к шагу 5, если же f (x1 (1),x2 (0)) > f (x1 (0),x2 (0)), то перейти к шагу 3.Шаг 3. Принять x2 (1) = x2 (0) +
. Определить f (x1 (0),x2 (1)). Сравнить полученное значение с значением начальной функции. Если f (x1 (0),x2 (1)) < f (x1 (0),x2 (0)), то перейти к шагу 5, если же f (x1 (0),x2 (1)) > f (x1 (0),x2 (0)), то перейти к шагу 4.Шаг 4. Принять x2 (1) = x2 (0) -
. Определить f (x1 (0),x2 (1)). Сравнить полученное значение с значением начальной функции. Если f (x1 (0),x2 (1)) < f (x1 (0),x2 (0)), то перейти к шагу 4, если же f (x1 (0),x2 (1)) > f (x1 (0),x2 (0)), то принять исходную точку за минимум.Шаг 5. Проверить условие достижения точности
.