Метод поиска минимума функции одной переменной с использованием кубичной аппроксимации

Пусть функцию f(x) можно аппроксимировать полиномом третьего порядка. Тогда произвольно выбираем точку х1 и находим другую точку х2, такую, что производные f¢(x1) и f¢(x2) в этих точках имеют различные знаки. При этом стационарная точка clip_image002, в которой clip_image004, будет находиться на отрезке [x1, x2].

Аппроксимирующий кубичный полином j(х) будет иметь вид [9]:

clip_image006 (36)

Коэффициенты уравнения (36) подбираются таким образом, чтобы значения j(х) и ее производной в точках x1 и x2 совпадали со значениями f(x) и f¢(x) в этих точках. Первая производная полинома j(х) имеет вид

clip_image008.(37)

Значения коэффициентов а1, а2 и а3 уравнения (36) вычисляются по известным значениям f(x1), f(x2), f¢(x1) и f¢(x2) путем решения рекурсивным методом системы следующих линейных уравнений clip_image010

clip_image012 (38)

После того, как коэффициенты а1, а2, а3 найдены, оценка координаты стационарной точки функции f(x) производится с помощью аппроксимирующего полинома (36). Приравнивание к нулю производной (37) приводит к квадратному уравнению. В результате решения квадратного уравнения получаем следующую формулу для оценки координаты стационарной точки полинома

clip_image014 (39)

где

clip_image016 (40)

clip_image018 (41)

clip_image020 (42)

В результате получаем точку clip_image002[1], расположенную между х1 и х2. Затем снова выбираются две точки для реализации процедуры кубичной аппроксимации - clip_image002[2] и одна из точек х1 и х2, причем значения производной функции f(x) в этих точках должны быть противоположны по знаку. Описанная процедура повторяется до тех пор, пока не будет достигнута заданная точность оценки координаты точки х* экстремума функции f(x).

Алгоритм метода состоит из следующих формализованных процедур поиска.

1 Вычислить значение производной clip_image023 в начальной точке х0. Если значение clip_image023[1]< 0, вычислить хk+1 = xk +2kD для k = 0, 1, …. Если clip_image023[2] > 0, вычислить хk+1 = xk -2kD для k = 0, 1, ….

2 Вычислить значения clip_image027 в точках xk+1 при k = 0, 1, …, xm, где m – точка, в которой clip_image029. Положить х1 = xm-1, x2 = xm. Вычислить значения clip_image031

3 Вычислить значение clip_image002[3], используя формулы (33)-(35).

4 Если clip_image034< clip_image036, то перейти к п. 5; иначе вычислять clip_image002[4] по формуле clip_image038 до тех пор, пока не будет выполняться неравенство clip_image034[1]£clip_image036[1].

5 Провести проверку на окончание поиска. Если | clip_image042 | £ e1 и

clip_image044 £ e2, поиск закончить; иначе положить либо

а) clip_image046если clip_image048 либо

б) clip_image050 если clip_image052 затем перейти к п. 3.

Предлагаю ознакомиться с аналогичными статьями: