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

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

def armijo_search(f, df, x0, p0, alpha0=1.0, rho=0.5, c=1e-4, tol=1e-6, max_iter=1000):

xk = x0.copy()

coords = [xk.copy()]

neval = 0

for k in range(max_iter):

gk = df(xk)

neval += 1

if norm(gk) < tol:

break

# Проверяем, что направление спуска

if np.dot(gk, p0) >= 0:

p0 = -gk # делаем направление антиградиента

alpha = alpha0

phi0 = f(xk)

dphi0 = np.dot(gk, p0)

# Линейный поиск по Армихо

iter_armijo = 0

while f(xk + alpha * p0) > phi0 + c * alpha * dphi0 and iter_armijo < 100:

alpha *= rho

iter_armijo += 1

neval += 1

# Обновляем точку

x_new = xk + alpha * p0

coords.append(x_new.copy())

xk = x_new

xmin = xk

fmin = f(xmin)

return [xmin, fmin, neval, coords]

Зачем вообще нужен линейный поиск в методах спуска?

Ответ: Чтобы выбрать длину шага, которая обеспечивает убывание функции и сходимость метода без лишних вычислений.

Почему не всегда используют точный линейный поиск?

Ответ: Он вычислительно дорогой, требует много вызовов функции и производных.

Что такое функция ϕ(α) в линейном поиске?

Ответ: Это одномерная функция ϕ(α) = f(xₖ + αpₖ), значение целевой функции вдоль направления поиска.

Как вычисляется производная ϕ′(α)?

Ответ: ϕ′(α) = pₖᵀ∇f(xₖ + αpₖ).

Почему направление pₖ должно быть направлением спуска?

Ответ: Потому что должно выполняться pₖᵀ∇f(xₖ) < 0, иначе шаг может увеличить значение функции.

Что означает «достаточное уменьшение функции»?

Ответ: Что новое значение функции уменьшается не хуже линейного предсказания по градиенту.

Сформулируйте правило Армихо.

Ответ: ϕ(αₖ) ≤ ϕ(0) + c₁αₖϕ′(0).

Как правило Армихо записывается через f и ∇f?

Ответ: f(xₖ₊₁) ≤ f(xₖ) + c₁αₖpₖᵀ∇f(xₖ).

Каков геометрический смысл правила Армихо?

Ответ: Новая точка должна лежать ниже касательной к функции в текущей точке.

Почему правило Армихо считается слабым?

Ответ: Оно не контролирует поведение производной в новой точке.

Какую роль играет параметр c₁?

Ответ: Он задаёт строгость требования к уменьшению функции.

Почему должно выполняться 0 < c₁ < 1?

Ответ: Иначе условие либо невозможно выполнить, либо оно теряет смысл.

Что произойдёт, если c₁ выбрать слишком маленьким?

Ответ: Шаги будут слишком маленькими, метод сильно замедлится.

Что будет, если c₁ слишком большой?

Ответ: Возможны слишком большие шаги и потеря сходимости.

Как выбирается начальное значение шага α₀ в методе Армихо?

Ответ: Обычно берут максимально допустимый шаг или α₀ = 1.

Зачем вводится параметр β ∈ (0,1)?

Ответ: Для последовательного уменьшения шага, если условие Армихо не выполняется.

Почему β должен быть меньше 1?

Ответ: Чтобы шаг действительно уменьшался.

Гарантирует ли метод Армихо выполнение условия Армихо за конечное число шагов?

Ответ: Да, при разумном выборе c₁ и β.

В каких методах чаще всего используется правило Армихо?

Ответ: В градиентных, квазиньютоновских и методах сопряжённых градиентов.

Какие два требования предъявляются к шагу в условиях Вульфа?

Ответ: Достаточное уменьшение функции и достаточное уменьшение производной.

В чём отличие первого и второго условий Вульфа?

Ответ: Первое контролирует значение функции, второе — производную.

Что означает условие кривизны?

Ответ: Что производная в новой точке не должна быть слишком большой по модулю.

Зачем нужно условие кривизны?

Ответ: Чтобы шаг не был слишком маленьким и метод эффективно двигался к минимуму.

Чем сильное условие кривизны отличается от слабого?

Ответ: Сильное использует модуль производной, слабое — только знак.

Почему сильные условия Вульфа важны для сходимости?

Ответ: Они гарантируют, что ∇f(xₖ) → 0.

Почему должно выполняться 0 < c₁ < c₂ < 1?

Ответ: Чтобы сначала контролировать убывание функции, а затем уменьшение градиента.

Какие значения c₁ и c₂ обычно используют?

Ответ: c₁ = 10⁻⁴, c₂ = 0.9.

В каких методах предпочтительны сильные условия Вульфа?

Ответ: В методе Ньютона и квазиньютоновских методах.

Зачем нужен алгоритм zoom?

Ответ: Для поиска шага внутри интервала, где нарушаются условия Вульфа.

Когда вызывается функция zoom?

Ответ: Когда нарушено условие Армихо или наблюдается рост функции.

Что означает знак производной ϕ′(α)?

Ответ: Он показывает, прошли ли мы минимум вдоль направления поиска.

Зачем используется интерполяция при поиске шага?

Ответ: Чтобы быстрее найти подходящий α без перебора.

Когда используется квадратичная интерполяция?

Ответ: Когда известны ϕ(0), ϕ(α₀) и ϕ′(0).

Когда используется кубическая интерполяция?

Ответ: Когда известны значения и производные в двух точках.

Почему нужно проверять корректность интерполяционного шага?

Ответ: Возможны деление на ноль или комплексные значения.

Какой наиболее компактный код проверки корректности α?

Ответ: Проверка положительности знаменателей и подкоренного выражения, иначе возврат к предыдущему шагу.

Как повлияет замена сильного условия кривизны на слабое?

Ответ: Метод может сходиться медленнее и хуже контролировать уменьшение градиента.