Если выбранное условие при текущем tk не выполняется, шаг уменьшается вдвое и точка вычисляется заново. При фиксированном j за одну итерацию с номером k изменяется только одна проекция точки xjk, имеющая номер k+ 1, а в течение всего цикла с номером j, т.е. начиная с k = 0 и кончая k = n – 1, изменяются все n проекций точки xj0. После этого точке xjn присваивается номер xj+1,0 и она берется за начальную точку для вычисления в j + 1 цикле. Расчет заканчивается в точке xjk при выполнении по крайней мере одного из трех критериев окончания счета: или j ≥ M, или двукратного выполнения неравенств , . Вопрос о том, является ли точка xjk найденным приближением искомой точки, решается путем проведения дополнительного исследования.
Алгоритм
Шаг 1. Задаем x00, e>0, e1>0, e2>0, предельное число M циклов счета, кратное n, где n – размерность вектора x. Находим градиент Ñf(x).
Шаг 2. Задаем номер цикла j = 0.
Шаг 3. Проверяем условие j ≥ M:
а) если j ≥ M, то x*=xjk, расчет окончен; б) если нет, то переходим к шагу 4.
Шаг 4. Задаем k=0.
Шаг 5. Проверяем условие k ≤ n – 1;
а) если k ≤ n – 1, то переходим к шагу 6;
б) если k = n, то полагаем j = j + 1 и xj+1,k = xjn и переходим к шагу 3.
Шаг 6. Вычисляем Ñf(xjk).
Шаг 7. Проверяем выполнение критерия окончания :
а) если критерий выполнен, x*=xjk, расчет окончен;
б) если нет, то переходим к шагу 8.
Шаг 8. Задаем tk.
Шаг 9. Вычисляем точку xjk+1: .
Шаг 10. Проверяем выполнение условия
.
а) если условие выполнено, то переходим к шагу 11;
б) если нет, то полагаем и переходим к шагу 9.
Шаг 11. Проверяем выполнение условий
а) если в двух последовательных циклах с номерами j и j – 1 оба условия выполняются, то расчет в точке xjk+1 окончен и x*=xjk+1;
б) если хотя бы одно из условий не выполнено, полагаем k=k+1 и переходим к шагу 5.
Геометрическая интерпретация метода для n=2 приведена на рисунке 3.
Замечания: 1. Если функция f(x) удовлетворяет условиям утверждения 1, то построение последовательности {xk} по методу координатного спуска обеспечивает выполнение условия ||Ñf(xk)|| ® 0 при k®¥. 2. Найденная в результате применения метода точка xk нуждается в дополнительном исследовании с целью ее классификации. 3. Скорость сходимости метода оценивается как линейная (т.е. со скоростью геометрической прогрессии) |
|
Рисунок 3 |
Метод Гаусса-Зейделя
Стратегия поиска
Стратегия метода Гаусса-Зейделя [Gauss-Seidel] состоит в построении последовательности точек {xk}, k= 0, 1, …, таких, что f(xk+1)<f(xk), k= 0, 1, …. Точки последовательности {xk} вычисляются по правилу
(6) |
где j – номер цикла вычислений, j= 0, 1, 2, …; k – номер интеграции внутри цикла, k= 0, 1, …, n–1; ek+1 – единичный вектор, (k+1)-я проекция которого равна 1; точка x00 задается пользователем, величина шага tk выбирается из условия
.
Эта задача является задачей одномерной минимизации функции и может быть решена либо с использованием условий , , либо численно с использованием методов одномерной минимизации, как задача .
Если условие имеет высокую степень и корни его трудно определить, можно аппроксимировать функцию j(tk) полиномом P(tk) второй или третьей степени и определить tk* из условия , .
При численном решении задачи определения величины шага степень близости найденного значения tk к оптимальному значению tk*, удовлетворяющему условиям , , зависят от задания интервала [a,b] и точности методов одномерной минимизации.
При фиксированном j за одну итерацию с номером k изменяется только одна проекция точки xjk, имеющая номер k + 1, а в течение всего цикла с номером j, т.е. начиная с k = 0 и кончая k = n – 1, изменяются все n проекции точки xj0. После этого точке xjk присваивается номер xj+1,0 и она берется за начальную точку для вычисления в (j + 1)-м цикле.
Расчет заканчивается в точке xjk при выполнении по крайней мере одного из трех критериев окончания счета: , или k ≥ M, или двукратного выполнения неравенств , . Здесь e1, e1 – малые положительные числа, M – предельное число циклов итерации. Вопрос о том, является ли точка xjk найденным приближением искомой точки, решается путем проведения дополнительного исследования.
Алгоритм
Шаг 1. Задаем x00, e1>0, e2>0, предельное число M циклов счета, кратное n, где n – размерность вектора x. Находим градиент Ñf(x).
Шаг 2. Задаем номер цикла j = 0.
Шаг 3. Проверяем условие j ≥ M:
а) если j ≥ M, то расчет окончен и x*=xjk;
б) если j < M, то переходим к шагу 4.
Шаг 4. Задаем k=0.
Шаг 5. Проверяем условие k ≤ n – 1;
а) если k ≤ n – 1, то переходим к шагу 6;
б) если k = n, то полагаем j = j + 1 и переходим к шагу 3.
Шаг 6. Вычисляем Ñf(xjk).
Шаг 7. Проверить выполнения условия :
а) если условие выполнено, то расчет окончен и x*=xjk;
б) если нет, то переходим к шагу 8.
Шаг 8. Вычисляем tk* из условия
.
Шаг 9. Вычисляем .
Шаг 10. Проверяем выполнение условий
, :
а) если оба условия выполнены в двух последовательных циклах с номерами j и j – 1, то расчет окончен, найдена точка x*=xjk+1;
б) если не выполняется хотя бы одно условие, полагаем k=k+1 и переходим к шагу 5.
Геометрическая интерпретация метода для n=2 приведена на рисунок
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.