Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка одномерная.doc
Скачиваний:
80
Добавлен:
13.11.2019
Размер:
298.5 Кб
Скачать

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

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

Основные соотношения метода вытекают из следующих предпосылок. Пусть на k-ой итерации метода золотого сечения интервал неопределенности равен [akbk]. Точки xk, yk выбираются на основе следующих условий.

xk=ak+(1-)(bk-ak)

yk=ak+(bk-ak), где  (0, 1)– коэффициент сжатия.

Длина нового интервала неопределенности определяется следующим способом: bk+1 - ak+1 =  (b- ak)

Кроме того, должны выполняться равенства

bk - xk = yk - ak; xk = ak + (1 - )(bk - ak); yk = ak +(bk - ak).

Для новой итерации xk+1 и yk+1 выбираются так, что xk+1 совпадает с yk, или yk+1 совпадает с xk. Это условие обеспечивает возможность того, что на (+1)-й итерации потребуется только одно новое вычисление функции.

При сравнении значений функции в двух точках возможны два варианта. 1. Если f(xk) > f(yk), то в этом случае ak+1 xk и bk+1 bk. При xk+1 yk имеем yk+1 ak+1 + (bk+1 - ak+1) = xk + (bk+1 - ak+1). Подставляя в это выражение для xk и yk уравнения из предыдущего первого условия, получим, что 2 +  - 1 = 0.

2. Если f(xk)  f(yk), то в этом случае ak+1 ak и bk+1 yk. При yk+1 xk имеем xk+1 = ak+1 + (1 - )(bk+1 ak+1) = ak + (1 - )(yak). Подставляем в это выражение для xk и yk уравнения из предыдущего первого условия также получим 2 +  - 1 = 0.

Корнями уравнения 2 +  - 1=0 являются  = 0.618 и  = -1.618. Так как  должно быть из интервала (0, 1), то принимаем  = 0.618. На первой итерации метода необходимы два вычисления функции в точках x1 и y1, но на каждой последующей требуется только одно вычисление, так как либо xk+1 = yk, либо yk+1 xk.

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

Начальный этап. Задается конечная длина интервала неопределенности l > 0, начальный интервал [a1b1]. Вычислить xa+ (1 - )(ba1) и ya+ (ba1), приняв  = 0.618. Найти f(x1), и f(y1). Задать = 1 и перейти к основному этапу.

Основной этап. Шаг 1. Если ba< 1, то остановиться; оптимальная точка принадлежит интервалу [akbk]. При f(xk) > f(yk), перейти к шагу 2, если f(xk)  f(yk), то к шагу 3.

Шаг 2. Положить ak+1 xk; bk+1 bk; xk+1 yk; f(xk+1) = f(yk). Вычислить yk+1 = ak+1 (bk+ak+1).

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

Шаг 3. Положить аk+1 ak, bk+1 yk, yk+1 xk, f(yk+1) = f(xk). Вычислить xk+1 ak+1 + (1-)(bk+1 ak+1). Вычислить f(xk+1) и перейти к шагу 4.

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

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

Постановка задачи. Минимизировать f(x) = x+ 2x на интервале x[-3; 5] сократив его до величины  0,2.

Рассчитываем минимум функции f(x) = x+ 2x с использованием табличного процессора ECXEL по рассмотренному выше алгоритму. Результаты расчетов представлены в таблице 2.4.

Таблица 2.4

Расчет экстремума функции f(x)= x+ 2x методом золотого сечения.

аk

bk

xk

yk

f(xk)

f(yk)

|b-a|

Критерий

1

-3.000

5.000

0.056

1.944

0.115

7.667

8.000

не достигнут

2

-3.000

1.944

-1.111

0.056

-0.988

0.116

4.944

не достигнут

3

-3.000

0.056

-1.832

-1.111

-0.307

-0.988

3.056

не достигнут

4

-1.832

0.056

-1.111

-0.665

-0.988

-0.888

1.889

не достигнут

5

-1.832

-0.665

-1.387

-1.111

-0.851

-0.988

1.167

не достигнут

6

-1.387

-0.665

-1.111

-0.941

-0.988

-0.996

0.721

не достигнут

7

-1.111

-0.665

-0.941

-0.835

-0.996

-0.973

0.446

не достигнут

8

-1.111

-0.835

-1.006

-0.941

-1.000

-0.996

0.276

не достигнут

9

-1.111

-0.941

-1.046

-1.006

-0.998

-1.000

0.170

достигнут

После восьми итераций интервал неопределенности составил [-1,111; -0,941]. При этом |b9 a9|=0,170, что меньше заданной величины 0,2. В качестве точки минимума может быть взята середина интервала -1,026. Искомый минимум равен ‑1,0.