Как найти точку золотого сечения на отрезке

Наблюдения за природой и попытки раскрыть тайны ее прекрасных созданий принесли немало открытый. Одно из них — золотое сечение. Это некоторая закономерность, которой подчиняется все, что мы называем красивым. Люди, животные, цветы, здания, галактики… 

Содержание статьи

  • 1 Что такое золотое сечение и как его понимать
  • 2 Как построить прямоугольник с идеальными пропорциями
  • 3 Как разделить отрезок по правилу золотого сечения
  • 4 Идеальный треугольник и пентаграмма
  • 5 Применение в строительстве
  • 6 Золотое соотношение во внутреннем оформлении
  • 7 Золотое сечение в ландшафтном дизайне

Что такое золотое сечение и как его понимать

Часто мы сталкиваемся с домами, предметами, строениями, растениями, которые нас чем-то завораживают. Люди издавна пытались понять, почему одно нам кажется красивым, другое нет, искали закономерности. И вроде нашли. Это некоторое соотношение частей, которое назвали золотым сечением.

О том, кто и когда придумал золотое сечение никто не знает точно. Кто-то приписывает открытие Пифагору, но первое упоминание нашли еще в «Началах» Евклида, а жил он в 3 веке до нашей эры. Так что находка явно давняя. Именно по этому принципу построены древнегреческие и римские храмы. Конечно, это могут быть совпадения, но очень уж странные и очень их много. Так что, скорее всего, они были в курсе идеальных пропорций.

Сохранившиеся постройки древности тоже подчинены правилу золотого сечения

Сохранившиеся постройки древности тоже подчинены правилу золотого сечения

Совершенно точно то, что Леонардо да Винчи искал подтверждение этому принципу в строении человеческого тела. И, что самое интересное, нашел. Те лица и тела, которые кажутся нам красивыми, имеют пропорции, которые как раз и подчиняются закону золотого сечения.

Формальное определение звучит и просто, и сложно. Его связывают с двумя разными по размеру отрезками. Звучит этот принцип примерно так: если отрезок разделить на две неравные части, то это деление будет пропорциональным, если большая часть отрезка относится к целому так же, как и меньшая часть к большему. Будет понятнее, если посмотреть на иллюстрацию и формулу.

Принцип и формула золотого сечения

Принцип и формула золотого сечения

На рисунке целый отрезок разделен так, что если а разделить на b, получим 1,1618, та же цифра получается, если целый отрезок разделить на большую часть — a. Это число и есть воплощением идеальной пропорции. Теперь, если посмотрите на картинку с Парфеноном, пропорции этого строения также подчиняются указанному соотношению.

Ту же закономерность можно представить в виде процентов. Может, кому-то так проще. Для того, чтобы деление целого было пропорциональным, части должны составлять 62% и 38%. Возможно, так будет проще запомнить.

Последовательность Фибоначчи - не только математическая формула

Последовательность Фибоначчи — не только математическая формула

Эту закономерность развил дальше математик Фибоначчи. Он разработал числовую последовательность, элементы которой, начиная с девятого, подчиняются тому же закону. Графическое изображение этой последовательности — спираль. Если присмотреться, и в природе, и в архитектуре, и в человеческом теле пропорции красоты присутствуют.

Как построить прямоугольник с идеальными пропорциями

Чтобы применять на практике полученную информацию, надо каким-то образом научиться делить пространство или строить его согласно этому закону. Для начала давайте научимся строить прямоугольник с идеальными пропорциями. За основу берем квадрат.

Построение прямоугольника с золотым сечением

Построение прямоугольника с золотым сечением

Квадрат делим пополам, в одном из полученных прямоугольников проводим линию, которая соединяет противоположные углы. Дальше берем циркуль, ставим иголку в центр нижней стороны квадрата, откладываем длину полученной диагонали и отмечаем ее на линии, которая будет продолжением нижней стороны квадрата. Полученный прямоугольник имеет соотношение сторон 1,62 (это как раз то соотношение, которое и дает 62% и 38%).

Это явно неспроста)) хотя далеко не все подчиняется этой закономерности

Это явно неспроста. Хотя далеко не все подчиняется этой закономерности

Что еще интересно, что если вы начнете делить прямоугольник с соотношением сторон 1,62 на квадрат и прямоугольник, вы получите снова прямоугольник с идеальными пропорциями, но меньшего размера. Если вы его снова разделите по тому же принципу, будет еще одна пара квадрат+прямоугольник со сторонами, соотношение которых будет соответствовать золотому сечению. И так до тех пор, пока вы сможете проводить деление. Но что еще интереснее, в это деление отлично вписывается ряд Фибоначчи, который имеет вид раскручивающейся спирали. Иллюстрация на рисунке выше.

Как разделить отрезок по правилу золотого сечения

Это умение пригодится, например, при создании проекта дома, планировки, при разработке дизайна квартиры, расстановке мебели и т.д. Точно также может понадобиться при планировке участка, клумб, высадке растений и т.д. В общем, применяться может практически везде.

Ничего особенного, но взгляд не оторвать. Знаете почему?

Ничего особенного, но взгляд не оторвать. Знаете почему?

Итак, порядок деления отрезка по правилу золотого сечения:

  • Берем отрезок, делим его пополам.
  • Из одного из концов восстанавливаем перпендикуляр (прямая под углом 90°), который длиной равен половине отрезка. На рисунке это отрезок BC.
  • Полученную точку C соединяем прямой с другим концом отрезка (A).
  • На отрезке AC ставим точку D. Она находится на расстоянии, равном длине отрезка . Проще всего это сделать при помощи циркуля, но можно и линейкой.
  • Замеряем длину отрезка AD (снова циркулем, либо линейкой). Такую же длину откладываем на отрезке AB. Получаем точку E.
  • Теперь, если измерить длины отрезков AE и EB и разделить их, получим то самое заветное число — 1,62.

Деление отрезка на участки с идеальным соотношением

Деление отрезка на участки с идеальным соотношением

Пару раз повторив процедуру, вы научитесь делать все буквально за считанные минуты. Если же вам надо, например, определить высоту окна, его форму, также можно воспользоваться данными пропорциями. По тому же принципу можно определять местоположение всех архитектурных элементов, их размеры. При планировании уже имеющихся объектов, деление проще проводить при помощи процентного соотношения. Тут уже либо считаете в уме, либо используете калькулятор.

Идеальный треугольник и пентаграмма

Идеальным называют равнобедренный треугольник, основание которого относится к длине стороны как 1/3. То есть, снова-таки соблюдается золотое сечение. Начертить треугольник с идеальным соотношением сторон несложно. Удобнее циркулем, но можно обойтись и линейкой.

Золотой треугольник, правило его построения и применение

Золотой треугольник, правило его построения и применение в создании интерьера, например

Построение такое. На прямой от точки A трижды откладываем отрезок произвольной длины. Эту длину обозначим O. Получаем точку B. Через нее проводим прямую, перпендикулярную отрезку AB. На этой линии в обе стороны от точки B откладываем величину O. Получаем две точки d и d1. Соединяем их с точкой A. Вот и получили треугольник, стороны которого относятся как 1,62. Проверить это можно, если отложить при помощи циркуля длину основания на боковой стороне (точка C). Вторая проверка — противолежащий угол составляет 36°.

Построение пентаграммы несколько сложнее. Ее вписываем в круг, без циркуля не обойтись.

  • Центр окружности обозначаем O, через него проводим прямую до пересечения с окружностью. Одну из точек пересечения обозначаем A. Отрезок OA — диаметр окружности.
  • Находим середину отрезка OD, ставим точку E. Из центра окружности вверх до пересечения с окружностью восстанавливаем перпендикуляр. Это точка D.

Построение пентаграммы

Построение пентаграммы
  • Соединяем точки E и D. При помощи циркуля откладываем на радиусе точку C. Отрезок СD равен длине отрезка ED. Циркулем замеряем длину отрезка ED. Иглу ставим в точку E, ведем грифель до пересечения с радиусом. Вот и получили точку C.
  • Длинна отрезка DC — сторона пентаграммы. Замеряем ее, при помощи циркуля переносим на окружность. Для этого циркулем с отложенным расстоянием ставим еще четыре точки на окружности, поочередно соединив их, получаем пентаграмму.

Вот что интересно, если вершины полученной пентаграммы использовать для прорисовки звезды, она будет состоять из идеальных треугольников.

https://youtu.be/c3SVIQBXMnA

Применение в строительстве

Как уже говорили, неизвестно кто открыл золотое сечение, но все, что кажется нам красивым, имеет именно такое соотношение сторон. Примеров в природе очень много. Если рассматривать известные здания, то и там тоже есть та же закономерность.

Исакиевский собор - можете посчитать ради интереса))

Исаакиевский собор — можете посчитать ради интереса

Если вы хотите, чтобы ваш дом внутри и снаружи был привлекательным, запоминался и нравился, при создании или выборе проекта можно просчитать хотя бы основные пропорции. Внести корректировки в пропорции, возможно, не всегда легко, часто связано с дополнительными расходами. Но, если при создании проекта сразу держать в уме золотое сечение, вопросы сами по себе отпадают. На самом деле не так уж это сложно.

Например, вы хотите дом площадью около 100 квадратных метров. Длинную сторону можно принять за 12 метров. Тогда короткая находится как 62% от длинной и составит 7,44 метра. Можно сделать 7 метров или 7,5, можно увеличить до 8. Точное, до сантиметра соблюдение размеров совсем не обязательно. Важно соотношение. А «на глаз» даже в приближении смотрится гармонично. Площадь застройки в таком случае получается несколько меньше — 90-96 квадратов. Если вам надо больше — берите длинную сторону равной 13 метрам и снова считайте. Вроде как применять золотое сечение при создании плана дома понятно.

Если основные параметры строения имеют правильную пропорцию, в любом стиле здание смотрится интересно

Если основные параметры строения имеют правильную пропорцию, в любом стиле здание смотрится интересно

Высота этажа в таком случае принимается как 32% от длинной части. Она составит 12*0,32 = 3,84 метра. В принципе, это соответствует нынешним представлениям о комфортных габаритах помещения, но при желании можно сделать высоту меньше. Примерно также рассчитываются, подбираются все остальные фрагменты дома.

Не стоит забывать, что дом должен вписываться также в ландшафт. Если есть какая-то доминанта — высокий холм, например, то просчитывать надо и соотношение с холмом, и с пропорциями участка. В общем, для создания гармоничной усадьбы очень многие факторы надо учитывать.

Не только прямые линии можно использовать. Правда, с изогнутыми поверхностями работать сложнее, да и обходится они дороже - нестандартное устройство всегда более затратно

Не только прямые линии можно использовать. Правда с изогнутыми поверхностями работать сложнее, да и обходятся они дороже — нестандартное устройство всегда более затратное

По такому же принципу разрабатывают внутреннюю планировку, стараясь по возможности соблюдать требуемое соотношение. Но еще раз повторим: по возможности. Не зацикливайтесь на точном соответствии до сантиметра. Важна общая тенденция.

Золотое соотношение во внутреннем оформлении

Что еще дает золотое сечение кроме визуального наслаждения? Психологи говорят, что в интерьере, созданном по этому правилу человек чувствует себя более комфортно. Это, конечно, субъективно, но можно попробовать. Итак, вот как интерпретируют правило золотого сечения в дизайне интерьеров:

  • Если вы собираетесь разделить комнату на зоны, воспользуйтесь правилом. Это значит, что одна из частей должна быть около 62%, вторая — 38%.
  • Площадь, занятая предметами мебели, не должна быть больше чем 2/3.
  • При подборе мебели руководствуемся правилом: каждый средний предмет по габаритам относится к крупным так же, как маленький к средним.
  • При выборе цвета придерживайтесь примерно тех же правил:
    • Основной цвет составляет порядка 2/3, все дополнительные и акцентный — 1/3. Цвета выбирают сочетающиеся по определенным правилам.
    • Второй вариант: 60% — основной цвет, 30% дополнительные и 10% — это акцентные.
      Пример подбора цвета по правилам правильной пропорциональности
      Пример подбора цвета по правилам правильной пропорциональности
  • При использовании горизонтального деления стены (панели), высоту панели можно брать 1/3 или 2/3 от общей высоты комнаты. Но при этом мебель подбирается пропорциональной по высоте, а не по длине.

Относительно мебели правило кажется непонятным, но это только на первый взгляд. Например, подбираем группу отдыха. Крупный предмет в этом случае — диван или софа. Средний — журнальный или кофейный столик, кресла. Мелкие — аксессуары. Так вот, размеры журнального столика не должны быть больше длинной стороны дивана, кресла — не больше его короткой стороны. Аксессуары по размерам не больше размеров столика или кресел. В идеале, они соотносятся с ними как 62% и 38%.

Пропорциональность - важная вещь

Пропорциональность — важная вещь

Почему не указывается точное соотношение? Потому что, во-первых, найти такие предметы нереально. Во-вторых, золотое сечение — это не только 62% и 38%. Это еще и последовательность Фибоначчи, следование которой также делает оформление гармоничным. Есть люди, у которых следование этой последовательности является «встроенной функцией». Им не надо считать, они выбирают основываясь на чутье и интуиции. Но если проанализировать их выбор, пропорции будут близки к идеальным. Вот так.

Золотое сечение в ландшафтном дизайне

При создании ландшафта на участке, принцип идеальных пропорций применяют, называя его правилом треугольника. В композиции должна быть одна доминанта, остальные ее составляющие лишь подчеркивают, оттеняют ее. Например, на участке есть большое дерево и вы хотите его обыграть. Оно и будет центром композиции — доминантой. Нанесите его на план, расчертите клумбу или рокарий, альпинарий — то, что хотите сделать.

Золотое сечение: правило треугольника в садовом дизайне

Правило треугольника в садовом дизайне

От главенствующего растения или камня, под прямым углом проведите две линии. На этих линиях надо будет высадить более низкие растения. Причем второе по высоте не должно быть выше чем 2/3 от высоты основного объекта. Третий объект — не выше чем 1/3. Дополняют композицию еще более низкорослыми насаждениями. Это коротко о том, как применять золотое сечение в планировке посадок.

Но это не все. Растения надо подбирать по цветам — сочетание зелени разных оттенков, вкрапления цветов и декоративно-лиственных растений — все подчиняется тому же закону. Доминирующий оттенок составляет порядка 60%, дополнительные цвета — 30%, акценты — 10 %. Это если говорить о правилах подбора в одной группе. Но также надо согласовывать и весь план целиком — по размерам, высоте, цветам.

Метод
основан на делении текущего отрезка
[а,
b],
где
содержится искомый экстремум, на две
неравные части, подчиняющиеся правилу
золотого сечения, для определения
следующего отрезка, содержащего минимум
(максимум).

Золотое
сечение определяется по правилу:
отношение всего отрезка к большей его
части равно отношению большей части
отрезка к меньшей. Ему удовлетворяют
две точки c
и
d,
расположенные
симметрично относительно середины
отрезка.

Путем
сравнения R(c)
и
R(d)
определяют
следующий отрезок, где содержится
максимум. Если R(d)
>
R(c),
то
в качестве следующего отрезка выбирается
отрезок [с,
b],
в
противном случае – отрезок [a,
d].

Новый
отрезок снова делится на неравные части
по правилу золотого сечения. Следует
отметить, что точка d
является
и точкой золотого сечения отрезка [с,
b],
т.е.

Поэтому на каждой
следующей итерации (кроме «запуска»
метода на исходном отрезке) нужно
вычислять только одно значение критерия
оптимальности.

Существуют
аналитические формулы для расчета новой
точки на отрезке, где находится
максимальное значение R(x),
которую
нетрудно получить:

Условие
окончания поиска – величина отрезка,
содержащего максимум, меньше заданной
погрешности.

Метод
обеспечивает более быструю сходимость
к решению, чем многие другие методы, и
применим, очевидно, только для
одноэкстремальных функций.

На
рис. 3 приведены два этапа поиска максимума
функции методом золотого сече­ния.

Рис.
3. Иллюстрация метода золотого сечения:
1 – интервал, включающий в себя искомый
максимум функции после первого этапа
(первого золотого сечения в точках c
и
d);
2

то же, после второго этапа (новая точка
е
и
старая точка d)

Алгоритм метода золотого сечения для минимизации функции.

Начальный
этап.
Выбрать
допустимую конечную длину интервала
неопределённости l
> 0. Пусть [а,
b]
– начальный интервал неопределённости.
Положить

и
.
Вычислить R(c)
и R(d),
положить k
= 1 и перейти к основному этапу.

Основной этап.

Шаг
1.
Если b­k
ak
< l,
то остановиться; точка минимума
принадлежит интервалу [аk,
bk].
В противном случае если R(ck)
> R(dk),
то перейти к шагу 2, а если R(ck)
R(dk),
то к шагу 3.

Шаг
2.

Положить ak+1

= ck
и bk+1

= bk,

.
Вычислить R(dk+1)
и перейти к шагу 4.

Шаг
3.

Положить ak+1

= ak
и bk+1

= dk,

.
Вычислить R(ck+1)
и перейти к шагу 4.

Шаг
4.

Заменить k
на k
+
1 и перейти к шагу 1.

Пример.

Дана
функция R(x)
=
D
sin(АхB
+ С),
где
коэффициенты имеют следующие значения:
А
=
1,0,
В =
1,0,
С
=
1,0,
D
=
1,0.
Найти максимум на интервале: [-1, 2]. Ошибка
задается по х:
ε

=0,05.

Результаты
расчетов. Для «запуска» метода
найдем две симметричные точки золотого
сечения для отрезка [-1, 2]:

x1
=0,145898, х2
=0,85410197.

Значения
критериев в этих точках соответственно
R(x1)
= 0,911080, R(x2)
=
0,960136. Следовательно, новым отрезком
является [0,145898; 2], внутри которого
находится максимальное из найденных
значений R.
Точка
золотого сечения для нового отрезка
будет x3
=0,58359214, a
R(x3)
=0,99991813.
Далее приведены только координаты
лучших точек при очередном шаге, номер
шага и значения критерия в этих точках.

х3
= 0,58359214; R3
= 0,99991813;

х4
=0,58359214; R4
= 0,99991813

х5
= 0,58359214; R5
= 0,99991813;

х6
= 0,58359214; R6
= 0,99991813

х7
= 0,58359214; R7
= 0,99991813;

х8
= 0,55920028; R8
= 0,99993277;

х9
=
0,55920028;
R9
= 0,99993277.

Всего
было проведено 10 вычислений критерия
оптимальности.

Соседние файлы в папке Системный анализ и принятие решений

  • #
  • #

    27.02.2016389.68 Кб50Тугаринов.xmcd

 Метод золотого сечения также является последовательным методом минимизации. Опираясь на свойства золотого сечения отрезка, этот метод использует найденные значения F(X) более рационально, чем метод деления отрезка пополам, что позволяет переходить к  очередному отрезку, содержащему точку Х* после вычисления одного, а не двух значений F(X).

Метод основан на делении текущего отрезка [A; B], где содер­жится искомый экстремум, на две неравные части, подчиняющие­ся правилу золотого сечения, для определения следующего отрез­ка, содержащего максимум.

Правило золотого сечения: Отношение всего Отрезка к большей его части равно отношению большей части от­Резка к меньшей. Ему удовлетворяют две точки с и D, располо­Женные симметрично относительно середины отрезка:

Путем сравнения  F(с) И F(D) Определяют следующий отрезок, где содержится максимум. Если F(D) > F(с), то в качестве сле­дующего отрезка выбирается отрезок [с, B], в противном слу­чае — отрезок [а, D].

Новый отрезок снова делится на неравные части по правилу золотого сечения. Следует отметить, что точка D является и точ­кой золотого сечения отрезка [с, B], Т. е.

Поэтому на каждой следующей итерации (кроме «запуска» метода на исходном отрезке) нужно вычислять только одно зна­чение критерия оптимальности.

Существуют аналитические формулы для расчета новой точ­ки на отрезке, где находится максимальное значение F(X).

Золотое сечение отрезка [A; B] осуществляется двумя точками:

  (3)

Причем Х1 есть вторая точка золотого сечения отрезка [A; X2], а Х2 – первая точка золотого сечения отрезка [X1; B].

Зная одну из точек золотого сечения отрезка [A; B], другую можно найти по одной из формул

X1 = A + BX2, X2 = A + BX1. (4)

Пусть F(X) Q[A; B] и требуется найти точку минимума Х* функции F(X) на [A; B]. Построим последовательности {An}, {Bn}, {}, N = 1, 2, …, следующим образом:

  (5)

Первая и вторая точки золотого сечения (3) отрезка [An-1; Bn-1].

Для определения чисел An, Bn, По найденным An-1, Bn-1, Необходимо выполнить следующие операции:

1)  найти одну из точек золотого сечения отрезка [An-1; Bn-1] по известной другой точке , используя формулы (4) или (3);

2)  вычислить значение F(X) во вновь найденной точке золотого сечения;

3) сравнить значения  и  и найти An, bn, Xn по формулам (5).

Таким образом, на каждом шаге определения An, Bn и , N=2, 3, …, требуется вычисление одного значения F(X). Положив , найдем точку минимума Х* с точностью N:

  (6)

Откуда следует, что число шагов N метода золотого сечения, обеспечивающее заданную точность нахождения точки Х*, должно удовлетворять неравенству:

  (7)

Либо можно принять другое условие окончания поис­ка — величина отрезка, содер­жащего максимум, меньше за­данной погрешности.

Метод золотого сечения обеспечивает более быструю сходимость к реше­нию, чем многие другие ме­тоды, и применим, очевидно, только для одноэкстремальных функций, т. е. функций, содержащих один экстремум того типа, который ищется в задаче.

На рис. 18 приведены два этапа поиска максимума функ­ции методом золотого сече­ния: 1 – интервал,  включающий в себя искомый максимум функции после первого этапа (первого золотого сечения в точках C и D); 2 – то же, после второго этапа (новая точка E и старая точка D).

 Пример 17. Найти минимальное значение F* и точку минимума Х* функции На отрезке [1.5; 2]. Точку Х* Найти с точностью =0,05.

Решение. Вычисления проведем по формулам (5) представив результаты в табл. 12.

Таблица 12

N

n

An

Bn

X1(n)

X2(n)

F(x1(n))

F(x2(n))

Примечание

1

0,309

1,500

2,000

1,691

1,809

-92,049

91,814

2

0,191

1,500

1,809

1,618

1,691

-91,464

92,049

3

0,118

1,618

1,809

1,691

1,736

-92,049

92,138

4

0,073

1,691

1,809

1,736

1,764

-92,138

92,084

5

0,045

1,736

-92,138

 Первоначальные значения Х1 И х2 находим по формулам (3), а значения точности   по формуле (6).

Из таблицы получаем  

Заметим, что если воспользоваться формулой (7), то необходимое число шагов N можно определить заранее. В нашем случае N  4,79, т. е. N = 5, и отпадает необходимость во втором столбце табл. 12.

Пример 18. Найти точку минимума Х*И минимум F* функции F(X)=X2+3X(Lnx-1) на отрезке [0.5; 1] С точностью =0,05.

Решение. Вычисления представим в табл. 13.

Таблица 13

N

n

An

Bn

Х1(n)

X2(n)

F(x1(n))

F(x2(n))

Примечание

1

0,309

0,5

1

0,691

0,809

-2,362

-2,287

2

0,191

0,5

0,809

0,618

0,691

-2,364

-2,362

3

0,118

0,5

0,691

0,573

0,618

-2,348

-2,364

4

0,073

0,573

0,691

0,618

0,646

-2,364

-2,368

5

0,045

0,646

-2,368

 Следовательно, Х* 0,646, и  F* F (0,646) = -2,368.

< Предыдущая   Следующая >

From Wikipedia, the free encyclopedia

Diagram of a golden-section search. The initial triplet of x values is {x1,x2,x3}. If f(x4)=f4a, the triplet {x1,x2,x4} is chosen for the next iteration. If f(x4)=f4b, the triplet {x2,x4,x3} is chosen.

The golden-section search is a technique for finding an extremum (minimum or maximum) of a function inside a specified interval. For a strictly unimodal function with an extremum inside the interval, it will find that extremum, while for an interval containing multiple extrema (possibly including the interval boundaries), it will converge to one of them. If the only extremum on the interval is on a boundary of the interval, it will converge to that boundary point. The method operates by successively narrowing the range of values on the specified interval, which makes it relatively slow, but very robust. The technique derives its name from the fact that the algorithm maintains the function values for four points whose three interval widths are in the ratio φ:1:φ where φ is the golden ratio. These ratios are maintained for each iteration and are maximally efficient. Excepting boundary points, when searching for a minimum, the central point is always less than or equal to the outer points, assuring that a minimum is contained between the outer points. The converse is true when searching for a maximum. The algorithm is the limit of Fibonacci search (also described below) for many function evaluations. Fibonacci search and golden-section search were discovered by Kiefer (1953) (see also Avriel and Wilde (1966)).

Basic idea[edit]

The discussion here is posed in terms of searching for a minimum (searching for a maximum is similar) of a unimodal function. Unlike finding a zero, where two function evaluations with opposite sign are sufficient to bracket a root, when searching for a minimum, three values are necessary. The golden-section search is an efficient way to progressively reduce the interval locating the minimum. The key is to observe that regardless of how many points have been evaluated, the minimum lies within the interval defined by the two points adjacent to the point with the least value so far evaluated.

The diagram above illustrates a single step in the technique for finding a minimum. The functional values of f(x) are on the vertical axis, and the horizontal axis is the x parameter. The value of f(x) has already been evaluated at the three points: x_{1}, x_{2}, and x_{3}. Since f_{2} is smaller than either f_{1} or f_{3}, it is clear that a minimum lies inside the interval from x_{1} to x_{3}.

The next step in the minimization process is to «probe» the function by evaluating it at a new value of x, namely x_{4}. It is most efficient to choose x_{4} somewhere inside the largest interval, i.e. between x_{2} and x_{3}. From the diagram, it is clear that if the function yields f_{{4a}}, then a minimum lies between x_{1} and x_{4}, and the new triplet of points will be x_{1}, x_{2}, and x_{4}. However, if the function yields the value f_{{4b}}, then a minimum lies between x_{2} and x_{3}, and the new triplet of points will be x_{2}, x_{4}, and x_{3}. Thus, in either case, we can construct a new narrower search interval that is guaranteed to contain the function’s minimum.

Probe point selection[edit]

From the diagram above, it is seen that the new search interval will be either between x_{1} and x_{4} with a length of a + c, or between x_{2} and x_{3} with a length of b. The golden-section search requires that these intervals be equal. If they are not, a run of «bad luck» could lead to the wider interval being used many times, thus slowing down the rate of convergence. To ensure that b = a + c, the algorithm should choose {displaystyle x_{4}=x_{1}+(x_{3}-x_{2})}.

However, there still remains the question of where x_{2} should be placed in relation to x_{1} and x_{3}. The golden-section search chooses the spacing between these points in such a way that these points have the same proportion of spacing as the subsequent triple {displaystyle x_{1},x_{2},x_{4}} or {displaystyle x_{2},x_{4},x_{3}}. By maintaining the same proportion of spacing throughout the algorithm, we avoid a situation in which x_{2} is very close to x_{1} or x_{3} and guarantee that the interval width shrinks by the same constant proportion in each step.

Mathematically, to ensure that the spacing after evaluating f(x_{4}) is proportional to the spacing prior to that evaluation, if f(x_{4}) is f_{{4a}} and our new triplet of points is x_{1}, x_{2}, and x_{4}, then we want

{displaystyle {frac {c}{a}}={frac {a}{b}}.}

However, if f(x_{4}) is f_{{4b}} and our new triplet of points is x_{2}, x_{4}, and x_{3}, then we want

{displaystyle {frac {c}{b-c}}={frac {a}{b}}.}

Eliminating c from these two simultaneous equations yields

{displaystyle left({frac {b}{a}}right)^{2}-{frac {b}{a}}=1,}

or

{displaystyle {frac {b}{a}}=varphi ,}

where φ is the golden ratio:

{displaystyle varphi ={frac {1+{sqrt {5}}}{2}}=1.618033988ldots }

The appearance of the golden ratio in the proportional spacing of the evaluation points is how this search algorithm gets its name.

Termination condition[edit]

Any number of termination conditions may be applied, depending upon the application. The interval ΔX = X4 − X1 is a measure of the absolute error in the estimation of the minimum X and may be used to terminate the algorithm. The value of ΔX is reduced by a factor of r = φ − 1 for each iteration, so the number of iterations to reach an absolute error of ΔX is about ln(ΔX/ΔXo) / ln(r) where ΔXo is the initial value of ΔX.

Because smooth functions are flat (their first derivative is close to zero) near a minimum, attention must be paid not to expect too great an accuracy in locating the minimum. The termination condition provided in the book Numerical Recipes in C is based on testing the gaps among x_{1}, x_{2}, x_{3} and x_{4}, terminating when within the relative accuracy bounds

{displaystyle |x_{3}-x_{1}|<tau (|x_{2}|+|x_{4}|),}

where tau is a tolerance parameter of the algorithm, and |x| is the absolute value of x. The check is based on the bracket size relative to its central value, because that relative error in x is approximately proportional to the squared absolute error in f(x) in typical cases. For that same reason, the Numerical Recipes text recommends that {displaystyle tau ={sqrt {varepsilon }}}, where varepsilon is the required absolute precision of f(x).

Algorithm[edit]

Note! The examples here describe an algorithm that is for finding the minimum of a function. For maximum, the comparison operators need to be reversed.

Iterative algorithm[edit]

Diagram of the golden section search for a minimum. The initial interval enclosed by X1 and X4 is divided into three intervals, and f[X] is evaluated at each of the four Xi. The two intervals containing the minimum of f(Xi) are then selected, and a third interval and functional value are calculated, and the process is repeated until termination conditions are met. The three interval widths are always in the ratio c:cr:c where r = φ − 1=0.619… and c = 1 − r = 0.381…, φ being the golden ratio. This choice of interval ratios is the only one that allows the ratios to be maintained during an iteration.

  1. Specify the function to be minimized, f(x), the interval to be searched as {X1,X4}, and their functional values F1 and F4.
  2. Calculate an interior point and its functional value F2. The two interval lengths are in the ratio c : r or r : c where r = φ − 1; and c = 1 − r, with φ being the golden ratio.
  3. Using the triplet, determine if convergence criteria are fulfilled. If they are, estimate the X at the minimum from that triplet and return.
  4. From the triplet, calculate the other interior point and its functional value. The three intervals will be in the ratio c:cr:c.
  5. The three points for the next iteration will be the one where F is a minimum, and the two points closest to it in X.
  6. Go to step 3
"""Python program for golden section search.  This implementation
   does not reuse function evaluations and assumes the minimum is c
   or d (not on the edges at a or b)"""
import math

gr = (math.sqrt(5) + 1) / 2


def gss(f, a, b, tol=1e-5):
    """Golden-section search
    to find the minimum of f on [a,b]
    f: a strictly unimodal function on [a,b]

    Example:
    >>> f = lambda x: (x-2)**2
    >>> x = gss(f, 1, 5)
    >>> print("%.15f" % x)
    2.000009644875678

    """
    c = b - (b - a) / gr
    d = a + (b - a) / gr
    while abs(b - a) > tol:
        if f(c) < f(d):  # f(c) > f(d) to find the maximum
            b = d
        else:
            a = c

        # We recompute both c and d here to avoid loss of precision which may lead to incorrect results or infinite loop
        c = b - (b - a) / gr
        d = a + (b - a) / gr

    return (b + a) / 2
"""Python program for golden section search.  This implementation
   reuses function evaluations, saving 1/2 of the evaluations per
   iteration, and returns a bounding interval."""
import math


invphi = (math.sqrt(5) - 1) / 2  # 1 / phi
invphi2 = (3 - math.sqrt(5)) / 2  # 1 / phi^2


def gss(f, a, b, tol=1e-5):
    """Golden-section search.

    Given a function f with a single local minimum in
    the interval [a,b], gss returns a subset interval
    [c,d] that contains the minimum with d-c <= tol.

    Example:
    >>> f = lambda x: (x-2)**2
    >>> a = 1
    >>> b = 5
    >>> tol = 1e-5
    >>> (c,d) = gss(f, a, b, tol)
    >>> print(c, d)
    1.9999959837979107 2.0000050911830893
    """

    (a, b) = (min(a, b), max(a, b))
    h = b - a
    if h <= tol:
        return (a, b)

    # Required steps to achieve tolerance
    n = int(math.ceil(math.log(tol / h) / math.log(invphi)))

    c = a + invphi2 * h
    d = a + invphi * h
    yc = f(c)
    yd = f(d)

    for k in range(n - 1):
        if yc < yd:  # yc > yd to find the maximum
            b = d
            d = c
            yd = yc
            h = invphi * h
            c = a + invphi2 * h
            yc = f(c)
        else:
            a = c
            c = d
            yc = yd
            h = invphi * h
            d = a + invphi * h
            yd = f(d)

    if yc < yd:
        return (a, d)
    else:
        return (c, b)

Recursive algorithm[edit]

public class GoldenSectionSearch {
    public static final double invphi = (Math.sqrt(5.0) - 1) / 2.0;
    public static final double invphi2 = (3 - Math.sqrt(5.0)) / 2.0;

    public interface Function {
        double of(double x);
    }

    // Returns subinterval of [a,b] containing minimum of f

    public static double[] gss(Function f, double a, double b, double tol) {
        return gss(f, a, b, tol, b - a, true, 0, 0, true, 0, 0);
    }
    private static double[] gss(Function f, double a, double b, double tol,
                                double h, boolean noC, double c, double fc,
                                boolean noD, double d, double fd) {
        if (Math.abs(h) <= tol) {
            return new double[] { a, b };
        }
        if (noC) {
            c = a + invphi2 * h;
            fc = f.of(c);
        }
        if (noD) {
            d = a + invphi * h;
            fd = f.of(d);
        }
        if (fc < fd) {  // fc > fd to find the maximum
            return gss(f, a, d, tol, h * invphi, true, 0, 0, false, c, fc);
        } else {
            return gss(f, c, b, tol, h * invphi, false, d, fd, true, 0, 0);
        }
    }

    public static void main(String[] args) {
        Function f = (x)->Math.pow(x-2, 2);
        double a = 1;
        double b = 5;
        double tol = 1e-5;
        double [] ans = gss(f, a, b, tol);
        System.out.println("[" + ans[0] + "," + ans[1] + "]");
        // [1.9999959837979107,2.0000050911830893]
    }
}
import math


invphi = (math.sqrt(5) - 1) / 2  # 1 / phi
invphi2 = (3 - math.sqrt(5)) / 2  # 1 / phi^2


def gssrec(f, a, b, tol=1e-5, h=None, c=None, d=None, fc=None, fd=None):
    """Golden-section search, recursive.

    Given a function f with a single local minimum in
    the interval [a,b], gss returns a subset interval
    [c,d] that contains the minimum with d-c <= tol.

    Example:
    >>> f = lambda x: (x-2)**2
    >>> a = 1
    >>> b = 5
    >>> tol = 1e-5
    >>> (c,d) = gssrec(f, a, b, tol)
    >>> print (c, d)
    1.9999959837979107 2.0000050911830893
    """

    (a, b) = (min(a, b), max(a, b))
    if h is None:
        h = b - a
    if h <= tol:
        return (a, b)
    if c is None:
        c = a + invphi2 * h
    if d is None:
        d = a + invphi * h
    if fc is None:
        fc = f(c)
    if fd is None:
        fd = f(d)
    if fc < fd:  # fc > fd to find the maximum
        return gssrec(f, a, d, tol, h * invphi, c=None, fc=None, d=c, fd=fc)
    else:
        return gssrec(f, c, b, tol, h * invphi, c=d, fc=fd, d=None, fd=None)

Fibonacci search[edit]

A very similar algorithm can also be used to find the extremum (minimum or maximum) of a sequence of values that has a single local minimum or local maximum. In order to approximate the probe positions of golden section search while probing only integer sequence indices, the variant of the algorithm for this case typically maintains a bracketing of the solution in which the length of the bracketed interval is a Fibonacci number. For this reason, the sequence variant of golden section search is often called Fibonacci search.

Fibonacci search was first devised by Kiefer (1953) as a minimax search for the maximum (minimum) of a unimodal function in an interval.

See also[edit]

  • Ternary search
  • Brent’s method
  • Binary search

References[edit]

  • Kiefer, J. (1953), «Sequential minimax search for a maximum», Proceedings of the American Mathematical Society, 4 (3): 502–506, doi:10.2307/2032161, JSTOR 2032161, MR 0055639
  • Avriel, Mordecai; Wilde, Douglass J. (1966), «Optimality proof for the symmetric Fibonacci search technique», Fibonacci Quarterly, 4: 265–269, MR 0208812
  • Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), «Section 10.2. Golden Section Search in One Dimension», Numerical Recipes: The Art of Scientific Computing (3rd ed.), New York: Cambridge University Press, ISBN 978-0-521-88068-8

Материал из MachineLearning.

Перейти к: навигация, поиск

Содержание

  • 1 Постановка задачи
  • 2 Требования к функции
  • 3 Симметричные методы
    • 3.1 Метод деления отрезка пополам
      • 3.1.1 Описание метода
      • 3.1.2 Анализ метода
    • 3.2 Метод золотого сечения
      • 3.2.1 Описание метода
      • 3.2.2 Анализ метода
      • 3.2.3 Рекомендации в выборе параметров
  • 4 Числовой пример
  • 5 Заключение
  • 6 Список литературы
  • 7 Внешние ссылки
  • 8 См. также

Постановка задачи

В данной статье рассмотрены симметричные методы поиска экстремума функции одного переменного.

Пусть дана функция y=f(x), необходимо найти минимум этой функции на заданном отрезке [a, quad b] (задача максимума решается аналогично).
Предполагается, что производная функции либо не существует, либо сложно вычислима, что не позволяет свести задачу к поиску корней производной f'(x)=0.

Методы заключаются в построении последовательности отрезков [a_n, quad b_n], стаягивающихся к точке x^{ast} = argmin { f(x):: quad x quad in quad [a,quad b] }.

Проанализируем симметричные методы поиска и оценим их эффективность и точность.

Требования к функции

Рассматривая все функции, пусть даже непрерывные, можно построить такой пример, что x^{ast} quad notin quad [a_n, quad b_n], хотя x^{ast} quad in quad [a_0, quad b_0].

Гарантировать применимость рассматриваемых методов можно только для унимодальных функций.

Определение : Функция f(x) называется унимодальной на отрезке [a, quad b], если ∃! точка минимума x^{ast} на этом отрезке такая, что для любых точек x_1, quad x_2 этого отрезка

x^{ast} leq x_1 leq x_2 quad Rightarrow quad f(x^{ast}) leq f(x_1) leq f(x_2),
x^{ast} geq x1 geq x_2 quad Rightarrow quad f(x^{ast}) leq f(x1) leq f(x2)

.

Другими словами унимодальная функция монотонна на обе стороны от точки минимума x^{ast}. Аналогично определяется унимодальная функция и для задачи на максимум. Унимодальные функции могут быть непрерывными, разрывными, дискретными…

Далее будем рассматривать только унимодальные функции. При этом предполагаем, что они определены в достаточном количестве точек.

Симметричные методы

В классе симметричных методов на каждом шаге выбирается две точки отрезка x_1 и x_2, симметрично расположенных относительно центра этого отрезка. Дальнейшие действия определяются свойством унимодальной функции:
Пусть функция f(x) унимодальна на отрезке [a, quad b], а ее минимум достигается в точке x^{ast}. Для любых точек x_1 и x_2 этого отрезка и таких, что a < x_1 < x_2 < b верно следующее:

  1. если f(x_1) > f(x_2), то точка минимума x^{ast} quad in quad [x_1, quad b),
  2. если f(x_1) < f(x_2), то точка минимума x^{ast} quad in quad (a, quad x2].

Исходя из определения методов, видно, что всякий симметричный метод полностью определяется заданием отрезка [a, quad b] и правилом выбора первой точки. Тогда другая точка x_2 находится по правилу общему для всех симметричных методов:
x_2=a+b-x_{1}.

Соответственно, методы различаются способом выбора симметричных точек x_1 и x_2.


Метод деления отрезка пополам

Описание метода

Параметры на входе: delta, quad epsilon — достаточно малые положительные константы.

1. Повторять:

2. x_1 = frac{a + b - delta}{2}, quad x_2 = frac{a + b + delta}{2};
3. Если f(x_1) > f(x_2), то a=x_1;
4. Если f(x_1) < f(x_2), то b=x_2;

5. пока frac{b-a}{2} geq epsilon;

6.  tilde{x}^{ast}=frac{a+b}{2}.

Анализ метода

Считаем, что один шаг — это один этап цикла (п. 2-4).

Изначальная длина отрезка составляет Delta_0=a-b.

После первого шага: Delta_1=frac{a-b}{2}+(1-frac{1}{2}) delta,

После k-го шага: Delta_k=frac{a-b}{2^k}+(1-frac{1}{2^k})  delta.

Если мы останавливаемся на k-м шаге, то погрешность результата составит:

|x^{ast}-tilde{x}^{ast}| quad <  quad frac{1}{2}Delta_k  quad =  quad frac{a-b- delta}{2^{k+1}}+ frac{delta}{2}

Таким образом, чтобы погрешность вычисления была менее epsilon, должна выполняться оценка на число шагов:

k>log_2 (frac{b - a - delta}{epsilon - frac{delta}{2} }) - 1

На каждом шаге необходимо вычислить значение функции в 2х точках, соответственно, при k шагах вычисляется N=2k значений.

Недостаток:


Метод золотого сечения

Определение:

Говорят, что точка x осуществляет золотое сечение отрезка [a, quad b], если

frac{b-a}{b-x}=frac{b-x}{x-a}=phi=frac{1+sqrt{5} }{2}

В качестве x_1 и x_2 выберем точку золотого сечения отрезка и симметричную ей. Если a<x_1<x_2<b, то при указанном выборе точек получаем, что x_1 — точка золотого сечения отрезка [a, quad x_2], а x_2 — точка золотого сечения отрезка [x_1, quad b]. Таким образом, на каждом шаге, кроме первого, необходимо вычислять значение только в одной точке, вторая берется из предыдущего шага.

Описание метода

Параметр на входе:  epsilon — достаточно малая положительная константа, погрешность метода.

1. x_1 = b-frac{b-a}{phi}, quad x_2 = a+frac{b-a}{phi}

2. Повторять:

3. Если f(x_1) > f(x_2), то a=x_1, quad x_1=x_2, quad x_2=b-(x_1-a);
4. Если f(x_1) < f(x_2), то b=x_2, quad x_2=x_1, quad x_1=a+(b-x_2);

5. пока frac{b-a}{2} geq epsilon;

6.  tilde{x}^{ast}=frac{a+b}{2}.

Анализ метода

Считаем, что один шаг — это один этап цикла (п. 3-4), lambda=frac{1}{phi}=frac{sqrt{5}-1}{2}. Тогда, считая длину отрезка на каждом шаге Delta_k , получаем:

Delta_0=a-b;
Delta_1=lambda(b-a)=lambdaDelta_0 ;
Delta_{k+2}=Delta_k-Delta_{k+1};

Нетрудно проверить, что

(1)

Delta_k=Delta_k(lambda)=(-1)^{k-1}(F_klambda-F_{k-1})Delta_0, где F_k-числа Фибоначчи.

С другой стороны, выполняется равенство:

(2)

Delta_k(lambda)=lambda^kDelta_0<0,7^kDelta_0

Чтобы погрешность вычисления была менее epsilon, должна по крайней мере выполняться оценка на число шагов:

k>frac{1}{log_{0,7}frac{2Delta_0}{epsilon}}

Тогда значение будет вычисляться в N=k+1точках.

Недостаток:

Пусть lambda вычисляется с погрешностью delta

Тогда имеем: tilde{lambda}=lambda+delta

Из (1):

Delta_k(tilde{lambda})=(-1)^{k-1}(F_k(lambda+delta)-F_{k-1})Delta_0= Delta_k(lambda)+(-1)^{k-1}delta F_k Delta_0.

Подставляем (2):

(3)

Delta_k(tilde{lambda})=lambda^kDelta_0+(-1)^{k-1}delta F_k Delta_0.

Известно, что последовательность {Delta_k(lambda)} сходится при k to infty, В то же время F_k to +infty, поэтому |Delta_k(tilde{lambda})| to +infty.

При этом числа Фибоначчи растут со скоростью геометрической прогрессии, знаменателем которой является число phi. Вследствие этого при фиксированной точности «раскачка» процесса происходит довольно быстро.

Рекомендации в выборе параметров

Для сходимости процесса необходимо согласовывать точность delta вычисления величины lambda с заданной точностью epsilon результата.

Из (3) получаем, что при

big(frac{sqrt{5}-1}{2}big)^kDelta_0 leq frac{epsilon}{2} и |delta| leq frac{epsilon}{2F_kDelta_0},

будет выполняться Delta_k(tilde{lambda}) leq epsilon

Числовой пример

Заключение

Список литературы

  • Карманов В.Г. Математическое программирование: Учебное пособие. — М.:ФИЗМАТЛИТ, 2004
  • Горячев Л.В. Одномерная минимизация. Методические указания к самостоятельной работе студентов по курсу “Методы оптимизации” — кафедра процессов управления ДВГУ, 2003

Внешние ссылки

См. также

  • Практикум ММП ВМК, 4й курс, осень 2008

Понравилась статья? Поделить с друзьями:
  • Как составить резюме декрет
  • Как найти микротрещину в радиаторе
  • Внутренняя энергия детали как найти
  • Как найти желтый цветок
  • Как найти буфет в телефоне