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

§ 1.2. Метод половинного деления

Метод половинного деления (метод дихотомии), использующийся для решения задачи (1.1.1), относится к методам нулевого порядка и применяется для унимодальных на некотором начальном интервале (a, b) функций. Он предполагает выполнение двух этапов:

– отделение (локализация) положения локального минимума с целью построения начального интервала неопределенности 0 = (a, b) (в данной работе не рассматривается);

– последовательное уменьшение длины интервала неопределенности (этот этап отражает суть метода).

Уменьшение длины интервала неопределенности методом половинного деления осуществляется следующим образом. Пусть функция f(x) является унимодальной на интервале 0 = (a, b), содержащем х*  (a, b) – точку искомого минимума функции f(x). Зададим достаточно малое число  > 0, затем выберем симметрично относительно центра интервала 0 две пробные точки: x1 = (ba)/2 – /2 и x2 = (ba)/2 + /2. Число  определяет степень различимости этих точек. Построим очередной интервал неопределенности, который содержит точку минимума, используя свойства унимодальной на интервале 0 функции f(x). Очевидно, этот интервал неопределенности 1 будет совпадать с одним из интервалов: (а, x2), (x1, b) или (x1, x2). Следовательно, его возможная наибольшая длина 1 = (ba)/2 + /2.

Теперь приведем более формальное описание метода половинного деления. Пусть функция f(x) является унимодальной на интервале (a, b), заданы достаточно малые числа  > 0 и  > 0 – требуемая точность определения точки искомого минимума данной функции х*  (a, b). Тогда метод половинного деления можно записать в виде следующего алгоритма.

1. Задать функцию f(x) и числа а, b,  > 0,  > 0.

2. Если ba  2  перейти к выполнению п. 8.

3. Вычислить с = (a + b)/2.

4. Задать х1 = с – /2 и х2 = х1 + .

5. Вычислить f(x1); f(x2).

6. Если f(x1) > f(x2) положить a: = х1.

Если f(x1)  f(x2) положить b := х2.

Если f(x1) = f(x2) положить a: = х1; b : = х2;

7. Перейти к выполнению п. 2.

8. Положить х* = (a + b)/2. Процесс завершен.

Промежуточные результаты работы метода половинного деления удобно заносить в таблицу, аналогичную табл. 1.2.1.

Таблица 1.2.1

Номер итерации

a

b

ba

х1

х2

f(x1)

f(x2)

0

1

k

Дадим общую характеристику метода половинного деления:

– всегда сходится к решению задачи (1.1.1);

– скорость сходимости метода практически линейная. На каждом шаге длина интервала неопределенности уменьшается, после k-го шага процесса она составляет не более (ba)/2k + (1 - 2-k). Нетрудно подсчитать количество итераций, необходимых для уменьшения исходного интервала неопределенности в заданное количество раз. Например, чтобы уменьшить ее не менее чем в 100 раз, потребуется семь итераций;

– на каждом шаге требуется вычисление значений функции f(x) в точках х1 и х2, которые расположены симметрично относительно центра текущего интервала неопределенности на расстоянии  друг от друга. Число  > 0 рекомендуется выбирать достаточно малым; практически оно ограничено снизу точностью производимых вычислений.

Таким образом, чтобы уменьшить длину исходного интервала неопределенности не менее чем в 100 раз, потребуется вычисление значения функции f(x) в 14 пробных точках. Для сравнения отметим, что можно последовательно разместить внутри интервала неопределенности 99 точек с интервалом h = 0,01(ba) и проанализировать значения функции в этих точках (так называемый пассивный поиск). В результате этих действий интервал неопределенности также будет уменьшен в 100 раз, но уже за счет 99 вычислений значений функции f(x). Следовательно, метод половинного деления является более эффективным, чем метод одновременного размещения большого количества пробных точек внутри исходного интервала неопределенности.