Наблюдения за природой и попытки раскрыть тайны ее прекрасных созданий принесли немало открытый. Одно из них — золотое сечение. Это некоторая закономерность, которой подчиняется все, что мы называем красивым. Люди, животные, цветы, здания, галактики…
Содержание статьи
- 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. Она находится на расстоянии, равном длине отрезка BС. Проще всего это сделать при помощи циркуля, но можно и линейкой.
- Замеряем длину отрезка 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. Если bk
– 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 + B — X2, X2 = A + B – X1. (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 are on the vertical axis, and the horizontal axis is the x parameter. The value of
has already been evaluated at the three points:
,
, and
. Since
is smaller than either
or
, it is clear that a minimum lies inside the interval from
to
.
The next step in the minimization process is to «probe» the function by evaluating it at a new value of x, namely . It is most efficient to choose
somewhere inside the largest interval, i.e. between
and
. From the diagram, it is clear that if the function yields
, then a minimum lies between
and
, and the new triplet of points will be
,
, and
. However, if the function yields the value
, then a minimum lies between
and
, and the new triplet of points will be
,
, and
. 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 and
with a length of a + c, or between
and
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
.
However, there still remains the question of where should be placed in relation to
and
. 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
or
. By maintaining the same proportion of spacing throughout the algorithm, we avoid a situation in which
is very close to
or
and guarantee that the interval width shrinks by the same constant proportion in each step.
Mathematically, to ensure that the spacing after evaluating is proportional to the spacing prior to that evaluation, if
is
and our new triplet of points is
,
, and
, then we want
However, if is
and our new triplet of points is
,
, and
, then we want
Eliminating c from these two simultaneous equations yields
or
where φ is the golden ratio:
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 ,
,
and
, terminating when within the relative accuracy bounds
where is a tolerance parameter of the algorithm, and
is the absolute value of
. The check is based on the bracket size relative to its central value, because that relative error in
is approximately proportional to the squared absolute error in
in typical cases. For that same reason, the Numerical Recipes text recommends that
, where
is the required absolute precision of
.
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.
- Specify the function to be minimized, f(x), the interval to be searched as {X1,X4}, and their functional values F1 and F4.
- 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.
- Using the triplet, determine if convergence criteria are fulfilled. If they are, estimate the X at the minimum from that triplet and return.
- From the triplet, calculate the other interior point and its functional value. The three intervals will be in the ratio c:cr:c.
- 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.
- 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 Рекомендации в выборе параметров
- 3.1 Метод деления отрезка пополам
- 4 Числовой пример
- 5 Заключение
- 6 Список литературы
- 7 Внешние ссылки
- 8 См. также
Постановка задачи
В данной статье рассмотрены симметричные методы поиска экстремума функции одного переменного.
Пусть дана функция , необходимо найти минимум этой функции на заданном отрезке
(задача максимума решается аналогично).
Предполагается, что производная функции либо не существует, либо сложно вычислима, что не позволяет свести задачу к поиску корней производной .
Методы заключаются в построении последовательности отрезков , стаягивающихся к точке
.
Проанализируем симметричные методы поиска и оценим их эффективность и точность.
Требования к функции
Рассматривая все функции, пусть даже непрерывные, можно построить такой пример, что , хотя
.
Гарантировать применимость рассматриваемых методов можно только для унимодальных функций.
Определение : Функция называется унимодальной на отрезке
, если ∃! точка минимума
на этом отрезке такая, что для любых точек
этого отрезка
,
.
Другими словами унимодальная функция монотонна на обе стороны от точки минимума . Аналогично определяется унимодальная функция и для задачи на максимум. Унимодальные функции могут быть непрерывными, разрывными, дискретными…
Далее будем рассматривать только унимодальные функции. При этом предполагаем, что они определены в достаточном количестве точек.
Симметричные методы
В классе симметричных методов на каждом шаге выбирается две точки отрезка и
, симметрично расположенных относительно центра этого отрезка. Дальнейшие действия определяются свойством унимодальной функции:
Пусть функция унимодальна на отрезке
, а ее минимум достигается в точке
. Для любых точек
и
этого отрезка и таких, что
верно следующее:
- если
, то точка минимума
,
- если
, то точка минимума
.
Исходя из определения методов, видно, что всякий симметричный метод полностью определяется заданием отрезка и правилом выбора первой точки. Тогда другая точка
находится по правилу общему для всех симметричных методов:
.
Соответственно, методы различаются способом выбора симметричных точек и
.
Метод деления отрезка пополам
Описание метода
Параметры на входе: — достаточно малые положительные константы.
1. Повторять:
- 2.
;
- 3. Если
, то
;
- 4. Если
, то
;
5. пока ;
6. .
Анализ метода
Считаем, что один шаг — это один этап цикла (п. 2-4).
Изначальная длина отрезка составляет .
После первого шага: ,
После -го шага:
.
Если мы останавливаемся на -м шаге, то погрешность результата составит:
Таким образом, чтобы погрешность вычисления была менее , должна выполняться оценка на число шагов:
На каждом шаге необходимо вычислить значение функции в 2х точках, соответственно, при шагах вычисляется
значений.
Недостаток:
Метод золотого сечения
Определение:
Говорят, что точка осуществляет золотое сечение отрезка
, если
В качестве и
выберем точку золотого сечения отрезка и симметричную ей. Если
, то при указанном выборе точек получаем, что
— точка золотого сечения отрезка
, а
— точка золотого сечения отрезка
. Таким образом, на каждом шаге, кроме первого, необходимо вычислять значение только в одной точке, вторая берется из предыдущего шага.
Описание метода
Параметр на входе: — достаточно малая положительная константа, погрешность метода.
1.
2. Повторять:
- 3. Если
, то
;
- 4. Если
, то
;
5. пока ;
6. .
Анализ метода
Считаем, что один шаг — это один этап цикла (п. 3-4), . Тогда, считая длину отрезка на каждом шаге
, получаем:
;
;
;
Нетрудно проверить, что
(1)
, где
-числа Фибоначчи.
С другой стороны, выполняется равенство:
(2)
Чтобы погрешность вычисления была менее , должна по крайней мере выполняться оценка на число шагов:
Тогда значение будет вычисляться в точках.
Недостаток:
Пусть вычисляется с погрешностью
Тогда имеем:
Из (1):
.
Подставляем (2):
(3)
.
Известно, что последовательность сходится при
, В то же время
, поэтому
.
При этом числа Фибоначчи растут со скоростью геометрической прогрессии, знаменателем которой является число . Вследствие этого при фиксированной точности «раскачка» процесса происходит довольно быстро.
Рекомендации в выборе параметров
Для сходимости процесса необходимо согласовывать точность вычисления величины
с заданной точностью
результата.
Из (3) получаем, что при
и
,
будет выполняться
Числовой пример
Заключение
Список литературы
- Карманов В.Г. Математическое программирование: Учебное пособие. — М.:ФИЗМАТЛИТ, 2004
- Горячев Л.В. Одномерная минимизация. Методические указания к самостоятельной работе студентов по курсу “Методы оптимизации” — кафедра процессов управления ДВГУ, 2003
Внешние ссылки
См. также
- Практикум ММП ВМК, 4й курс, осень 2008