Методичка по курсовым и лабораторным работам (1085639), страница 7
Текст из файла (страница 7)
g =
= 0×
+ 4×
– 4 =
.
Шаг 9. Проверяем выполнение критерия окончания вычислений.:
||f '(x(1))|| = ||g(1))|| = =
> e.
Переходим к шагу 10.
Шаг 10.
С = (Ap(0), g(1)) =
= 8×(–
) + 16×
=
.
Шаг 11.
b(0) = =
=
×.
Шаг 12. Определяем новое направление
p(1) = – g(1) + b(0) p(0), или покоординатно
p(1) = (p , p
),
p = – g
+ b(0)p
=
+
×4 =
,
p = – g
+ b(0)p
= –
+
×4 = –
.
Шаг 13. Перейдем к шагу 3 при m = 1. Начало новой итерации.
2-ая итерация, m = 1.
Шаг 3.
B = (g(1), p(1)) =
= –
×
+
×( –
) = –
.
Шаг 4.
Ap(1) = (A , A
),
A =
= 2×
+ 0×( –
) =
,
A =
= 0×
+ 4×( –
) = –
.
Шаг 5.
B = (Ap(1), p(1)) =
=
×
–
×( –
) =
.
Шаг 6.
a(1) = – =
.
Шаг 7.
x(2) = x(1) +a(1) p(1),
x(2) = (x , x
),
x = x
+ a(1)p
=
+
×
= 2,
x = x
+ a(1)p
=
+
×( –
) = 1.
Шаг 8.
g(2) = Ax(2) + b, или покоординатно
g(2) = (g , g
)T,
g =
= 2×2+ 0×1 – 4 = 0,
g =
= 0×2+ 4×1 – 4 = 0.
Шаг 9. Проверяем выполнение критерия окончания вычислений.:
||f '(x(2))|| = ||g(2))|| = = 0 < e.
Вычисления прекращаем, так как требуемая точность достигнута.
Таким образом, полученное значение точки минимума x* равно точному значению x* = (2, 1)T и f(x*) » –6.000.
Решение найдено за два шага.
2.8. Метод покоординатного спуска
Пусть нужно найти минимум функции f(x1, x2, … ,xn). Основная идея метода покоординатного спуска состоит в последовательной минимизации функции f(x1, x2, … ,xn) сначала в направлении координатной оси x1, затем в направлении координатной оси x2 и т. д. После окончания минимизации в направлении координатной оси xn цикл повторяется. Метод покоординатного спуска не требует вычисления производных функции f(x1, x2, … ,xn), поэтому целесообразно использовать критерии окончания вычислений в виде (2.21) или (2.22).
Опишем сначала алгоритм метода покоординатного спуска в общем виде.
Алгоритм 2.4 (Алгоритм метода покоординатного спуска).
Шаг 1. Выбрать произвольную начальную точку x(0) = (x , x
, … , x
)T, например, x(0) = (0, 0, … , 0)T и погрешность вычислений e > 0. Вычислить f (x(0) ).
Шаг 2. Положить j =1.
Шаг 3. Рассмотреть функцию f(x1, x2, … ,xn) как функцию одной переменной xj, а все остальные переменные зафиксировать. Найти x , решив задачу одномерной минимизации, т.е. найти
f(x1, x2, … ,xn).
Шаг 4. Если j < n, то положить j = j + 1 и перейти к шагу 3. В противном случае перейти к шагу 5.
Шаг 5. Найдено очередное приближение x(1) = (x , x
, …, x
). Проверить критерий окончания вычислений || x(1) – x(0)|| < e или |f(x(1)) – f(x(0))| < e. Если критерий окончания вычислений выполнен, то положить x* = x, f* = f(x*) и закончить вычисления. В противном случае положить x(0) = x(1) , f*(x(0)) = f(x(1)) и перейти к шагу 2.
На рис. 2.4 изображена геометрическая иллюстрация циклического покоординатного спуска.
Рис. 2.4
Применим метод покоординатного спуска для квадратичной функции f(x) = (Ax, x) + (b, x) + c с симметричной положительно определенной матрицей A.
Выберем произвольную начальную точку x(0) = (x , x
, … , x
)T. Рассмотрим функцию f(x1, x
, … , x
) как функцию одной переменной x1, а все остальные переменные зафиксируем. Найдем значение x1 = x
, при котором достигается
f(x1, x
, … , x
).
При этом необходимо, чтобы
= 0.
Это условие можно записать в следующем виде:
a11x1 + + b1 = 0,
x = –
(
+ b1).
Затем рассмотрим функцию f(x , x2, x
… , x
) как функцию одной переменной x2, а все остальные переменные зафиксируем. Найдем значение x
, при котором достигается
f(x
, x2, x
… , x
). Пусть на очередном j-ом шаге функция f(x1, x2, … ,xn) рассматривается как функция одной переменной xj, а все остальные переменные зафиксированы. Значение xj, определяется из условия
f(x
, x
, … , x
, xj, x
, …, x
). При этом необходимо, чтобы
= 0.
Это условие можно записать в следующем виде:
+ bj = 0.
Отсюда
x = –
(
+ bj). (2.27)
В результате n шагов будет получено первое приближение x(1) = (x , x
, …, x
). Затем итерационный процесс может быть продолжен. Опишем алгоритм этого процесса.
Алгоритм 2.5 (Алгоритм метода покоординатного спуска для квадратичной функции).
Шаг 1. Для квадратичной функции f(x) =
+
+с ввести матрицу A =(aij), вектор b = (b1, b2, … , bn)T и коэффициент c, i = 1, … , n; j = 1, … , n. Выбрать произвольную начальную точку x = (x1, x2, … , xn)T, например, x(0) = (x
, x
, … , x
)T и погрешность вычислений e > 0. Вычислить f(x(0)).
Шаг 2. В цикле по m = 0, …
В цикле по j =1, … , n вычислить
x = –
(
+ bj).
Если верхний предел суммирования окажется меньше нижнего, то положить S = 0. Положить x(1) = x = (x , x
, … , x
)T.
Шаг 3. Проверить выполнение критерия окончания вычислений:
||x(1) – x(0)|| = < e ,
или
|f(x(1)) – f(x(0))| < e.
Если критерий окончания вычислений выполнен, то положить x* = x(1), f*min = f(x*) и закончить вычисления. В противном случае положить x(0) = x(1), f(x(0)) = f(x(1)) и перейти к шагу 2.
Пример 2.6.
Как и в предыдущих примерах, найдем минимум функции f(x) = x + 2x
– 4x1 – 4x2 с точностью e = 0.1.
2 0
A = 0 4 ,
b = (– 4, – 4)T.
Как было показано ранее, эта функция имеет минимум в точке x* = (2, 1)T.
Применим метод покоординатного спуска.
Шаг 1. Возьмем начальное приближение x(0) =(x , x
)T = (0, 0)T, положим e = 0.01. Вычислим f (x(0)) = 0.
Шаг 2. Полагаем m = 0.
При j = 1 вычисляем x по формуле (2.27):
x = –
(
+
+ b1).
Первая сумма равна нулю (верхний предел суммирования меньше нижнего), поэтому
x = –
(a12x
+ b1) = –
(0×0 – 4) = 2;
При j = 2 вычисляем x по формуле (2.27):
x = –
(
+
+ b2).
Вторая сумма равна нулю (верхний предел суммирования меньше нижнего), поэтому
x = –
(a21x
+ b2) = –
(0×2 – 4) = 1;
Итак, x(1) = (2, 1)T, т.е. найденное приближение совпадает с точным решением. Очевидно, f(x(1)) = –6.000.
Сходимость метода покоординатного спуска тем лучше, чем ближе направления осей эллипсов (линий уровня) к направлениям координатных осей, т. е. чем матрица A ближе к диагональной.
2.9. Метод Ньютона
Метод Ньютона использует информацию о производных первого и второго порядка. Поэтому он относится к градиентным методам второго порядка.
Метод Ньютона для функции многих переменных является обобщением метода Ньютона для одномерного случая (разд. 1.8)
Пусть дана дважды непрерывно дифференцируемая функция n переменных f(x) = f(x1, x2, … ,xn) и начальная точка x(0) = (x , x
, … , x
)T.
Разложим функцию f(x) в ряд Тейлора в точке x(0) как функцию многих переменных и ограничимся тремя членами:
f(x)=f(x(0)) + (2.28)
Пусть x(m) приближенное значение точки минимума, полученное на m-ом шаге итерационного процесса. Разложение (2.28) будет иметь место и для точки x(m), а именно
f(x)=f(x(m))+ (2.29)
или в векторной форме
f(x) » f(x(m)) + (g(x(m)), (x – x(m)) + (G(x(m))(x – x(m)), (x – x(m))), (2.30)
где G(x(m)) – матрица Гессе (матрица вторых производных) функции f(x) в точке x(m).
Из соотношения (2.29) видно, что в окрестности точки x(m) поведение функции f(x) может быть приближенно описано квадратичной функцией с точностью до величины порядка o(||x – x(m)||)2
Необходимое условие минимума – равенство нулю в точке минимума первой производной функции f(x), т. е.
f '(x) » g(x(m)) + G(x(m))(x – x(m)) = 0. (2.31)
Умножим (2.31) на G–1(x(m)):
G–1(x(m))g(x(m)) + (x – x(m)) = 0.
Следовательно,
x = x(m) – G–1(x(m))g(x(m)).
Пусть точка минимума x* » x(m+1). Тогда
x(m+1) = x(m) – G–1(x(m))g(x(m)). (2.32)
Формула (2.32) является расчетной формулой метода Ньютона.
Для квадратичной функции матрица Гессе есть матрица квадратичной формы, равенство (2.31) является точным, и решение (точка минимума) находится за одну итерацию. В общем случае метод Ньютона обеспечивает , как правило, быструю сходимость. Недостатком метода Ньютона является необходимость на каждой итерации вычисления матрицы Гессе и обратной к ней матрицы. Кроме того, если начальная точка выбрана недостаточно близко к точке минимума x*, то последовательность x(0), x(1), …, x(m), … может расходиться. Для избежания подобной ситуации используется обобщенный метод Ньютона, со следующей расчетной формулой:
x(m+1) = x(m) – a(m)G–1(x(m))g(x(m)). (2.33)
Формула (2.33) есть расчетная формула метода спуска (см. формулу (2.18)) с направлением в точке x(m), определяемым вектором p(m) = G–1(x(m))g(x(m)), и с шагом a(m).
Величина шага a(m) может быть выбрана из условия одномерной минимизации функции j(m)(a) = f(x(m) – a(m)G–1(x(m))g(x(m)).
Формулу (2.32) также можно рассматривать как формулу спуска с шагом a(m)= 1.
Опишем теперь алгоритм метода Ньютона.
Алгоритм 2.6 (Алгоритм метода Ньютона).