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

4. Метод линейной интерполяции (метод секущих)

Метод секущих предлагает заменить вторую производную f ''(xk) в ньютоновской формуле ее линейной аппроксимацией (f '(xk) –f '(xk – 1))/(xkx– 1).

Тем самым очередное приближение xk + 1к стационарной точкеx*задается формулой видаxk + 1 = xk – f '(xk)(xk – xk  1)/(f '(xk) – f '(xk  1)).

Легко видеть, что xk + 1– точка пересечения с осью абсцисс секущей прямой, проходящей через точкиxkиxk  1.

В отличие от метода Ньютона метод секущих гарантирует сходимость точек {xk} к стационарной точкеx*, однако сходимость метода достигается ценой потери быстродействия. Как правило, метод дихотомии оказывается эффективнее метода секущих, хотя последний и получен из более быстродействующей схемы.

Начальный этап. Пусть методом Свенна получен интервал неопределенности [a1b1], границы которого удовлетворяют неравенствуf '(a1)f '(b1) < 0. Задать– погрешность вычисления минимума и принятьk = 1.

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

Шаг 1. Найти очередное приближениеxk + 1к минимумуx*и проверить условие окончания поиска:

(1) xk + 1 = bk – f '(bk)(bk – ak)/(f '(bk) – f '(ak));

(2) еслиf '(xk + 1) ≤ , то остановиться.

Шаг 2. Уменьшить интервал поиска минимума:

(1) еслиf '(xk + 1) > 0, тоak + 1 = ak,bk + 1 = xk + 1, в противном случае принятьak + 1 = xk + 1,bk + 1 = bk;

(2) положитьk = k + 1 и перейти к шагу 1.

5. Метод кубической интерполяции для одномерной минимизации

Суть алгоритма заключается в том, что на каждой итерации функция f(x) аппроксимируется кубическим полиномомF(x), точка минимумаx(*)которого берется в качестве текущего приближения к искомому минимумух*. Алгоритм предполагает вычисления в каждой очередной точке значений функцииf(x) и ее производнойf '(x).

Начальный этап. Задать,x1,h1– параметры метода, имеющие общепринятый смысл. Методом Свенна установить начальный интервал [a,b]:

(1) изменить направление поискаh1= –h1, еслиf '(x1) > 0;

(2) вычислятьfkв точкахxk + 1=xk+hkприhk= 2hk – 1,k= 2, 3, ...,m– 1 до тех пор, пока не продвинемся в точкуxm, такую, чтоf '(xm)f '(xm – 1) < 0;

(3) еслиxm – 1<xm, то положитьa=xm – 1,b=xm, иначе –a=xm,b=xm – 1.

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

Шаг 1. Найти аппроксимирующий минимум:

(1) вычислить параметр  = (z + w – f '(a))/(f '(b) – f '(a) + 2w), где z =  = f '(a) + f '(b) + 3(f(a) – f(b))/(b – a), w = (z2 – f '(a)f '(b))1/2;

(2) принять аппроксимирующий минимум

x(*)=+ (b – a), если 0 ≤  ≤ 1,

x(*)=a, если< 0, и

x(*)=b, если> 1.

Шаг 2. Проверить критерий окончания поиска:

eслиf '(x(*))<илиx(*)=a, илиx(*)=b, поиск окончить. Иначе вернуться к шагу 1, используя новый интервал [a,x(*)], еслиf '(x(*)) > 0, либо интервал [x(*),b], еслиf '(x(*)) < 0.

6. Метод Фибоначчи

Метод Фибоначчи является процедурой линейного поиска минимума унимодальной функции f(x) на замкнутом интервале [ab], отличающейся от процедуры золотого сечения тем, что очередная пробная точка делит интервал локализации в отношении двух последовательных чисел Фибоначчи. Последовательность чисел Фибоначчи задается условиямиF0 = F1= 1,Fk + 1 = Fk + Fk  1,k = 1, 2, ... . Начальными членами последовательности будут 1, 1, 2, 3, 5, 8, 13, ... . Стратегия поиска Фибоначчи требует заранее указатьn – число вычислений минимизируемой функции и– константу различимости двух значенийf(x). Рассмотрим один из возможных вариантов метода.

Начальный этап.

(1) Задать начальный интервал [a1b1], длину конечного интервалаLnи определить числоnтак, чтобы выполнялось условиеFn > (b1 – a1)/Ln. Вычислить ≤ L1/Fn + 1.

(2) Взять 2 пробные точки1 = a1 + (Fn  2/Fn)(b1 – a1) и1 = a1 + (Fn  1/Fn)(b1 – a1). Положитьk = 1.

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

Шаг 1. Сократить текущий интервал локализации:

(1) еслиf(k) <f(k), то положитьak + 1=ak,bk + 1=k,k + 1=kи вычислить новую точкуk + 1=ak + 1+ (Fn – k – 2/Fn – k)Lk + 1, гдеLk + 1=bk + 1ak + 1; перейти к шагу 2;

(2) еслиf(k) ≥f(k), то положитьak + 1=k,bk + 1=bk,k + 1=kи вычислитьk + 1=ak + 1+ (Fn – k – 1/Fn – k)Lk + 1.

Шаг 2. Проверить критерий окончания поиска:

(1) заменитьkнаk+ 1;

(2) еслиk=n– 1, перейти к шагу 3, иначе – к шагу 1.

Шаг 3. Найти аппроксимирующий минимумx(*):

(1) положитьk=k+;

(2) eслиf(k) >f(k), тоx(*)= (k+bk)/2. В противном случае –x(*)= (ak+k)/2.