Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по моделированию.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

Методы одномерного поиска

Дихотомия. Как и при описании сканирования, рассмотрим поиск максимума на отрезке [а, b], показанном на рис. 25.3. Разделим отрезок пополам - точка л (левая) на рисунке. Рассчитаем значение R = R(л) в этой точке. Пока мы еще ничего не можем сказать об экстремуме, кроме того, что он принадлежит нашему отрезку.

Теперь выберем малое приращение фактора, равное е, и поставим на отрезке правую точку п=л+е. Рассчитаем R(n). Теперь, поскольку R(л)>R(п), как изображено на рис. 25.3, можно утверждать, что, если R(х) унимодальна, то максимум находится в левой половине отрезка.

Проделаем теперь следующее. Отбросим правую половину отрезка (на ней максимума нет). Для этого правый конец - точку b- перенесем в точку л. Сделаем это так. Точку л обозначим через b (такая операция не вполне привычна для традиционной математики, но в алгоритмических языках она чрезвычайно распространена). На рис. 25:3 этот перенос обозначен стрелкой. (Разумеется, если бы было R(л)<R(п), то в точку л мы перенесли бы точку а).

После того, как правый конец отрезка перенесен, задача вернулась к исходным условиям: задан отрезок от а до b, на котором нужно найти максимум. Поэтому проводится следующий цикл расчета, ничем не отличающийся от предыдущего, кроме значения b. Снова делим пополам отрезок, снова ставим вспомогательную точку на расстоянии е, снова переносим в середину либо правый, либо левый конец. Такой алгоритм (расчет слагается из одинаковых циклов, различающихся лишь начальными условиями) называют итерационным.

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

Эффективность алгоритма дихотомии определяется так: каждая пара расчетов (точки лип) уменьшает отрезок [а, b] вдвое. Обозначим исходный отрезок индексом исх. Если сделать q расче­тов (q — четное), то

Золотое сечение. Пропорция золотого сечения (деления от­резка в среднем и крайнем отношении) определяются так. Разделим отрезок длины l на две части: т и lт так, чтобы меньшая часть относилась к большей, как большая ко всему отрезку

Легко сосчитать, что

Рассмотрим опять отрезок [а, b], на котором нужно найти максимум (рис. 25.4).

Поиск максимума начинаем с того, что делим отрезок слева и справа в отношении золотого сечения — получаем точки л и п. Расстояние от а до л составляет ~ 0,382 (b-а), от а до п ~ 0,618(b-а). В этих точках рассчитаем значение R. Как и в методе дихотомии, здесь имеем две точки л и п; но, в отличие от дихотомии, расстояние между ними не мало, и вероятность, что точка экстремума попадет между ними, достаточно велика. Поэтому, например, если R(п)>R(л) (рис. 25.4), то нельзя сказать, где окажется максимум — он может быть и в средней части отрезка (левый пунктир на рисунке), и в правой (правый пунктир). Но в левой части (мы приняли, что функция унимодальна) максимума быть не может. Поэтому можно ее отбросить — перенести левый конец отрезка в точку л, назвав ее а (левая стрелка). Теперь задача как будто вернулась к исходной формулировке: найти максимум на отрезке [а, b]. Но на этом отрезке уже есть точка (точка п рис. 25.4), в которой рассчитано значение функции, причем, благодаря свойству (25.5), эта точка, отсекавшая от предыдущего, большего отрезка справа ~38,2%, отсекает от нового, уменьшенного отрезка справа ~61,8%, т.е. и на новом отрезке она является точкой золотого сечения. Теперь, на новом этапе расчета мы можем назвать ее л (см. правую стрелку на рис. 25.4) и поставить на уменьшенном отрезке не две точки для расчета R, а только одну - правую (на рис. 25.4 обозначена треугольником). Таким образом, на каждом этапе расчета, кроме самого первого, мы должны рассчитывать R только в одной точке, что повышает эффективность метода.

В качестве правила останова можно воспользоваться формулой (25.3).

Эффективность метода определяется следующим образом. После двух первых расчетов R и после каждого последующего остаю­щийся интервал неопределенности составляет 0,618 предыдущего, тогда при q расчетах целевой функции

При q<4 эффективность метода золотого сечения ниже, чем метода дихотомии; при небольших q, порядка 10, эффективность обоих методов близка, но при q>20 золотое сечение становится намного эффективнее. Таким образом, если не нужно очень точно фиксировать абсциссу оптимума, то можно пользоваться любым из этих методов. Если нужна высокая точность (или если каждый расчет громоздок), предпочтительнее метод золотого сечения.

Пример 25.1. Сравнение эффективности методов.

Желательно определить положение экстремума на интервале [0,1] с точностью до 0,001 длины исходного интервала неопределенности.

Формулы (25.2), (25.4) и (25.6)

показывают, что при сканировании для этого потребуется провести ~2000 расчетов функции R, при использовании дихотомии ~20 расчетов, а при использовании метода золотого сечения ~16 расчетов.