- •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. Запрограммировать метод доверительных областей. Показать его работу на функциях.
15. Метод обратной параболической интерполяции. Запрограммировать, показать работу на функциях.
Вопросы по общему принципу метода
Что аппроксимирует парабола в этом методе? → В отличие от обычного Мюллера, аппроксимируется функция обратная к производной x=(f′)−1(y).
Почему аппроксимация ведётся через обратную функцию производной? → Чтобы находить точку xn+1 напрямую по формуле P(0), избегая квадратного корня и знаменателя как в Мюллере.
Что даёт точка пересечения параболы P(y) с осью абсцисс? → Следующее приближение xn+1 к корню производной, то есть критической точке функции.
Вопросы по формулам и вычислениям
Что означает fn′,fn−1′,fn−2’ в формулах? → Значения производной f′(x)f'(x)f′(x) в трёх последних итерациях: xn,xn−1,xn−2.
Что делают множители вида (y−fn−1′)(y−fn′)/((fn−2′−fn−1′)(fn−2′−fn′)) в полиноме Лагранжа? → Они строят интерполяционный полином Лагранжа через три точки для обратной функции.
Почему на каждой итерации берут y=0 для вычисления xn+1? → Потому что мы ищем корень производной f′(x)=0, а аппроксимирует обратную функцию x(y).
Вопросы по логике работы алгоритма
Сколько предыдущих точек нужно для построения полинома? → Три точки: xn,xn−1,xn−2
Что происходит, если одна из разделённых разностей равна нулю? → Могут возникнуть деления на ноль, шаг станет неопределённым → метод может “сломаться”.
Почему метод называют «обратная параболическая интерполяция»? → Потому что строится парабола обратной функции x=(f′)−1(y)x = (f')^{-1}(y)x=(f′)−1(y), а не самой f(x)f(x)f(x).
В чём отличие от обычного метода Мюллера?
Нет квадратного корня в знаменателе
Нет выбора между d+ и d−
Шаг вычисляется прямо через P(0)
Вопросы по сходимости и численным особенностям
Какая сходимость у метода обратной параболической интерполяции по сравнению с обычным Мюллером? → Сходимость немного медленнее метода Ньютона, но стабильнее, так как нет риска комплексного шага.
Что произойдёт, если шаг станет очень большим или отрицательным? → Итерации могут выйти за границы интервала, нужно контролировать шаг или ограничивать интервал поиска.
Почему метод можно использовать для максимума и минимума? → Потому что он ищет корень производной; проверка второй производной определяет максимум или минимум.
Какие преимущества у метода обратной параболической интерполяции?
Нет квадратного корня → устойчивее
Простая формула шага xn+1=P(0)
Легко программировать
Какие недостатки?
Нужно хранить три предыдущие точки
Деление на разности производных → возможны численные ошибки
Локальный метод → может сходиться к ближайшему критическому пункту
5️⃣ Вопросы для практического понимания
Что хранить в массиве итераций для анализа сходимости? → Все xnx_nxn и соответствующие f(xn).
Как адаптировать метод для многомодальной функции? → Запускать с разных интервалов и выбирать наибольший/наименьший f(xn).
Можно ли использовать этот метод, если функция производной неявная? → Нет, нужна явная производная, иначе нельзя построить полином P(y).
import numpy as np
def f(x):
return x**2 - 10*np.cos(0.3*np.pi*x) - 20
def df(x):
return 2*x + 3*np.pi*np.sin(0.3*np.pi*x)
def inverse_parabolic_search(interval, tol):
k_max = 1000
neval = 0
coords = []
x0, x2 = interval
x1 = (x0 + x2) / 2
g0 = df(x0)
g1 = df(x1)
g2 = df(x2)
neval += 3
k = 0
while k < k_max:
k += 1
#защита от деления на ноль
if (g0 == g1) or (g0 == g2) or (g1 == g2):
break
#ОБРАТНАЯ ПАРАБОЛИЧЕСКАЯ ИНТЕРПОЛЯЦИЯ
x3 = (
g1 * g2 / ((g0 - g1) * (g0 - g2)) * x0
+ g0 * g2 / ((g1 - g0) * (g1 - g2)) * x1
+ g0 * g1 / ((g2 - g0) * (g2 - g1)) * x2
)
coords.append([x3, x0, x1, x2])
if abs(x3 - x2) <= tol:
xmin = x3
fmin = f(xmin)
neval += 1
return [xmin, fmin, neval, coords]
x0, x1, x2 = x1, x2, x3
g0, g1, g2 = g1, g2, df(x3)
neval += 1
xmin = x2
fmin = f(xmin)
neval += 1
return [xmin, fmin, neval, coords]
Как вычисляется новое приближение x3?
→ Через формулу обратной параболической интерполяции (полином Лагранжа), аппроксимирующей x=(f′)−1(y)x = (f')^{-1}(y)x=(f′)−1(y) и подставляющей y=0y = 0y=0.
Как адаптировать этот код для поиска максимума?
→ Минимизировать -f(x) вместо f(x) или проверять вторую производную f′′(x)<0f''(x) < 0f′′(x)<0.
