Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
непрмо_подготовка к экзую.docx
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
6.31 Mб
Скачать

29. Запрограммировать метод dfp. Показать его работу на функциях.

def Hnew(dk, yk, H):

p1 = np.dot(dk, dk.transpose()) / np.dot(dk.transpose(), yk)

p2 = np.dot(np.dot(np.dot(H, yk), yk.transpose()), H) / np.dot(np.dot(yk.transpose(), H), yk)

return H + p1 - p2

def dfpsearch(f, df, x0, tol):

c1 = tol

c2 = 0.1

coords = []

coords.append(x0.copy())

kmax = 1000

k = 0

amax = 3

g0 = df(x0)

gnew = g0

H = np.eye(2)

dk = 0.5

while (norm(dk) >= tol) and (k < kmax):

p0 = np.dot(-H, gnew)

alpha = wolfesearch(f, df, x0, p0, amax, c1, c2)

x1 = x0 + alpha * p0

dk = alpha * p0

gnew = df(x1)

yk = gnew - g0

H = Hnew(dk, yk, H)

g0 = gnew

x0 = x1

coords.append(x0)

k += 1

xmin = x0

fmin = f(xmin)

neval = k

answer_ = [xmin, fmin, neval, coords]

return answer_

  1. В чем идея квазиньютоновских методов? Идея квазиньютоновских методов состоит в замене точной матрицы Гессе ∇²f(xₖ) или её обратной на приближение, которое обновляется итеративно и не требует вычисления вторых производных.

  2. Какие проблемы метода Ньютона решают квазиньютоновские методы? Квазиньютоновские методы устраняют необходимость вычисления матрицы Гессе и обходят проблему её неположительной определённости, которая может приводить к неверному направлению поиска.

  3. Чем матрицы Bₖ и Hₖ отличаются друг от друга? Bₖ аппроксимирует матрицу Гессе ∇²f(xₖ), а Hₖ аппроксимирует обратную матрицу Гессе (∇²f(xₖ))⁻¹.

  4. Как записывается квазиньютоновское направление спуска? Направление задаётся формулой pₖ = −Hₖ∇f(xₖ), где Hₖ — приближение обратной матрицы Гессе.

  5. Зачем требуется положительная определённость матрицы Hₖ или Bₖ? Положительная определённость гарантирует, что направление pₖ является направлением убывания функции.

  6. Что такое уравнение секущих в квазиньютоновских методах? Уравнение секущих имеет вид Bₖ₊₁ dₖ = yₖ или Hₖ₊₁ yₖ = dₖ и обеспечивает согласованность приближения с изменением градиента.

  7. Что означают векторы dₖ и yₖ? dₖ = xₖ₊₁ − xₖ — шаг метода, yₖ = ∇f(xₖ₊₁) − ∇f(xₖ) — изменение градиента.

  8. Почему требуется выполнение условия кривизны dₖᵀyₖ > 0? Это условие необходимо для сохранения положительной определённости матрицы Hₖ₊₁ или Bₖ₊₁.

  9. В чем состоит принцип минимального изменения матрицы в методе ДФП? Новая матрица выбирается как наиболее близкая к предыдущей по норме, но при этом удовлетворяющая уравнению секущих и симметричности.

  10. Как выглядит формула обновления Hₖ в методе ДФП? Hₖ₊₁ = Hₖ + (dₖdₖᵀ)/(dₖᵀyₖ) − (HₖyₖyₖᵀHₖ)/(yₖᵀHₖyₖ).

  11. Чем метод ДФП отличается от метода БФГШ? Метод ДФП обновляет Hₖ на основе вектора dₖ в первом слагаемом, тогда как БФГШ использует dₖ во втором, что улучшает численную устойчивость.

  12. Почему на практике чаще используют БФГШ, а не ДФП? Метод БФГШ лучше сохраняет положительную определённость матрицы и более устойчив при вычислениях.

  13. Как выбирается длина шага αₖ в методе ДФП? Длина шага определяется с помощью линейного поиска: точного минимума по α или условий Армихо и Вульфа.

  14. Как выглядит общий итерационный шаг метода ДФП? xₖ₊₁ = xₖ + αₖpₖ, где pₖ = −Hₖ∇f(xₖ).

  15. Какой начальный выбор матрицы H₀ обычно используется? Обычно H₀ = I — единичная матрица.

  16. Какое условие остановки используется в методе ДФП? Метод останавливается, когда норма градиента становится меньше заданного порога или выполняется критерий оптимальности первого порядка.

  17. Какова вычислительная сложность одной итерации метода ДФП? Одна итерация имеет сложность O(n²), что значительно дешевле, чем O(n³) в методе Ньютона.

  18. В каких задачах метод ДФП особенно эффективен? Метод ДФП эффективен для гладких задач без ограничений средней и большой размерности, где вычисление Гессе невозможно или слишком дорого.

Дайте оценку, насколько более эффективным будет использование алгоритма линейного поиска на основе правила Вульфа по сравнению с методом золотого сечения для поиска αₖ в методах ДФП и БФГШ.

Алгоритмы линейного поиска на основе условий Вульфа существенно эффективнее метода золотого сечения, так как используют информацию о градиенте функции. В методах ДФП и БФГШ вычисление градиента всё равно выполняется для обновления матрицы Hₖ, поэтому проверка условий Вульфа практически не увеличивает вычислительные затраты. При этом шаг αₖ выбирается так, чтобы гарантировать достаточное убывание функции и выполнение условия кривизны, что напрямую влияет на сохранение положительной определённости Hₖ₊₁. Метод золотого сечения не использует градиент, требует большего числа вычислений функции и не гарантирует выполнение условий кривизны, из-за чего может ухудшаться сходимость квазиньютоновских методов.

Если в качестве квазиньютоновской матрицы использовать линейную комбинацию матриц, даваемых формулами ДФП и БФГШ, будет ли такой метод работать?

Формально такой метод может работать, однако его теоретические свойства не гарантированы. Линейная комбинация матриц ДФП и БФГШ может нарушить уравнение секущих и условие положительной определённости, от которых зависит корректность направления спуска. В результате метод может терять суперлинейную сходимость или даже перестать быть методом убывания. Именно поэтому на практике используют либо чистый ДФП, либо БФГШ, для которых доказана сходимость и сохранение положительной определённости при выполнении условий Вульфа.