- •1. Множество. Функция. Скалярные и векторные функции.
- •2. Поле, пространство. Виды пространств.
- •3. Критические точки. Стационарные точки. Лемма Ферма. Связь оптимизации и поиска корня.
- •Вопрос 6. Чем выпуклая функция упрощает задачу оптимизации?
- •Вопрос 7. Если функция имеет одинаковые минимальные значения в двух точках, можно ли говорить о двух глобальных минимумах?
- •Вопрос 8. Как критерии максимума связаны с критериями минимума?
- •4. Градиент. Матрица Гессе. Ряд Тейлора.
- •5. Квадратичная форма. Квадратичная функция. Связь знакоопределенности и собственных чисел матрицы.
- •6. Квадратичная форма. Квадратичная функция. Критерии минимума (максимума) квадратичной формы.
- •7. Условия Вульфа. Их геометрическая интерпретация. Правило Армихо.
- •8. Метод дихотомии. Запрограммировать, показать работу на функциях.
- •9. Метод трехточечного деления. Запрограммировать, показать работу на функциях.
- •10. Метод золотого сечения. Запрограммировать, показать работу на функциях.
- •11. Метод Фибоначчи. Запрограммировать, показать работу на функциях.
- •12. Метод Ньютона одномерный. Запрограммировать, показать работу на функциях.
- •13. Метод секущих. Запрограммировать, показать работу на функциях.
- •14. Метод Мюллера. Запрограммировать, показать работу на функциях.
- •15. Метод обратной параболической интерполяции. Запрограммировать, показать работу на функциях.
- •16. Запрограммировать метод градиентного спуска. Показать его работу на функциях.
- •17. Запрограммировать метод наискорейшего спуска. Показать его работу на функциях.
- •19. Запрограммировать метод Ньютона многомерный. Показать его работу на функциях.
- •20. Запрограммировать метод Левенберга-Марквардта. Показать его работу на функциях.
- •21. Запрограммировать метод Нестерова-Немировского. Показать его работу на функциях.
- •22. Запрограммировать метод Барзилая-Борвейна 1. Показать его работу на функциях.
- •23. Запрограммировать метод Барзилая-Борвейна 2. Показать его работу на функциях.
- •28. Запрограммировать метод Армихо. Показать его работу на функциях.
- •29. Запрограммировать метод dfp. Показать его работу на функциях.
- •30. Запрограммировать метод bfgs. Показать его работу на функциях.
- •31. Запрограммировать метод l- bfgs. Показать его работу на функциях.
- •32. Запрограммировать метод доверительных областей. Показать его работу на функциях.
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_
В чем идея квазиньютоновских методов? Идея квазиньютоновских методов состоит в замене точной матрицы Гессе ∇²f(xₖ) или её обратной на приближение, которое обновляется итеративно и не требует вычисления вторых производных.
Какие проблемы метода Ньютона решают квазиньютоновские методы? Квазиньютоновские методы устраняют необходимость вычисления матрицы Гессе и обходят проблему её неположительной определённости, которая может приводить к неверному направлению поиска.
Чем матрицы Bₖ и Hₖ отличаются друг от друга? Bₖ аппроксимирует матрицу Гессе ∇²f(xₖ), а Hₖ аппроксимирует обратную матрицу Гессе (∇²f(xₖ))⁻¹.
Как записывается квазиньютоновское направление спуска? Направление задаётся формулой pₖ = −Hₖ∇f(xₖ), где Hₖ — приближение обратной матрицы Гессе.
Зачем требуется положительная определённость матрицы Hₖ или Bₖ? Положительная определённость гарантирует, что направление pₖ является направлением убывания функции.
Что такое уравнение секущих в квазиньютоновских методах? Уравнение секущих имеет вид Bₖ₊₁ dₖ = yₖ или Hₖ₊₁ yₖ = dₖ и обеспечивает согласованность приближения с изменением градиента.
Что означают векторы dₖ и yₖ? dₖ = xₖ₊₁ − xₖ — шаг метода, yₖ = ∇f(xₖ₊₁) − ∇f(xₖ) — изменение градиента.
Почему требуется выполнение условия кривизны dₖᵀyₖ > 0? Это условие необходимо для сохранения положительной определённости матрицы Hₖ₊₁ или Bₖ₊₁.
В чем состоит принцип минимального изменения матрицы в методе ДФП? Новая матрица выбирается как наиболее близкая к предыдущей по норме, но при этом удовлетворяющая уравнению секущих и симметричности.
Как выглядит формула обновления Hₖ в методе ДФП? Hₖ₊₁ = Hₖ + (dₖdₖᵀ)/(dₖᵀyₖ) − (HₖyₖyₖᵀHₖ)/(yₖᵀHₖyₖ).
Чем метод ДФП отличается от метода БФГШ? Метод ДФП обновляет Hₖ на основе вектора dₖ в первом слагаемом, тогда как БФГШ использует dₖ во втором, что улучшает численную устойчивость.
Почему на практике чаще используют БФГШ, а не ДФП? Метод БФГШ лучше сохраняет положительную определённость матрицы и более устойчив при вычислениях.
Как выбирается длина шага αₖ в методе ДФП? Длина шага определяется с помощью линейного поиска: точного минимума по α или условий Армихо и Вульфа.
Как выглядит общий итерационный шаг метода ДФП? xₖ₊₁ = xₖ + αₖpₖ, где pₖ = −Hₖ∇f(xₖ).
Какой начальный выбор матрицы H₀ обычно используется? Обычно H₀ = I — единичная матрица.
Какое условие остановки используется в методе ДФП? Метод останавливается, когда норма градиента становится меньше заданного порога или выполняется критерий оптимальности первого порядка.
Какова вычислительная сложность одной итерации метода ДФП? Одна итерация имеет сложность O(n²), что значительно дешевле, чем O(n³) в методе Ньютона.
В каких задачах метод ДФП особенно эффективен? Метод ДФП эффективен для гладких задач без ограничений средней и большой размерности, где вычисление Гессе невозможно или слишком дорого.
Дайте оценку, насколько более эффективным будет использование алгоритма линейного поиска на основе правила Вульфа по сравнению с методом золотого сечения для поиска αₖ в методах ДФП и БФГШ.
Алгоритмы линейного поиска на основе условий Вульфа существенно эффективнее метода золотого сечения, так как используют информацию о градиенте функции. В методах ДФП и БФГШ вычисление градиента всё равно выполняется для обновления матрицы Hₖ, поэтому проверка условий Вульфа практически не увеличивает вычислительные затраты. При этом шаг αₖ выбирается так, чтобы гарантировать достаточное убывание функции и выполнение условия кривизны, что напрямую влияет на сохранение положительной определённости Hₖ₊₁. Метод золотого сечения не использует градиент, требует большего числа вычислений функции и не гарантирует выполнение условий кривизны, из-за чего может ухудшаться сходимость квазиньютоновских методов.
Если в качестве квазиньютоновской матрицы использовать линейную комбинацию матриц, даваемых формулами ДФП и БФГШ, будет ли такой метод работать?
Формально такой метод может работать, однако его теоретические свойства не гарантированы. Линейная комбинация матриц ДФП и БФГШ может нарушить уравнение секущих и условие положительной определённости, от которых зависит корректность направления спуска. В результате метод может терять суперлинейную сходимость или даже перестать быть методом убывания. Именно поэтому на практике используют либо чистый ДФП, либо БФГШ, для которых доказана сходимость и сохранение положительной определённости при выполнении условий Вульфа.
