- •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. Запрограммировать метод доверительных областей. Показать его работу на функциях.
11. Метод Фибоначчи. Запрограммировать, показать работу на функциях.
def search(interval, tol):
h = 0
a, b = interval
F = [1, 1]
while F[-1] < (b - a) / tol:
F.append(F[-1] + F[-2])
N = len(F) - 1
print(N)
print(F)
coords = []
# F_const = (1 + np.sqrt(5.csv)) / 2
x1 = a + (F[N - 2] / F[N]) * (b - a)
x2 = a + (F[N - 1] / F[N]) * (b - a)
f1 = f(x1)
f2 = f(x2)
neval = 2
for k in range(1, N-1):
h += 1
coords.append([x1, x2, a, b])
if f1 < f2:
b = x2
x2 = x1
f2 = f1
xmin = x1
fmin = f1
x1 = a + (b-a)*(F[N-k-2]/F[N-k])
print(F[N-k-2],F[N-k])
f1 = f(x1)
neval += 1
else:
a = x1
x1 = x2
f1 = f2
xmin = x2
fmin = f2
x2 = a + (b - a) * (F[N - k - 1] / F[N - k])
f2 = f(x2)
neval += 1
# if np.abs(f2-f1) < tol: break
print(h)
answer_ = [xmin, fmin, neval, coords]
return answer_
15. Почему метод Фибоначчи эффективнее золотого сечения? Потому что он точнее управляет длиной интервала — сокращение происходит в соответствии с соотношениями чисел Фибоначчи, а значит, ни одно вычисление функции не тратится зря.
16. Почему метод Фибоначчи требует заранее знать количество шагов? Потому что длина интервала на каждом шаге выражается через Fn, и нужно заранее знать, сколько раз он будет сужаться, чтобы достичь точности ε.
17. Что будет, если задать неправильное количество чисел Фибоначчи? Если меньше — не достигнешь нужной точности; если больше — лишние итерации без пользы.
18. Почему метод Фибоначчи ближе к теоретическому минимуму числа вычислений? Он использует минимально возможное количество обращений к функции, при которых сохраняется гарантированная точность результата.
19. Можно ли применить метод Фибоначчи для негладких функций? Да, можно, потому что не нужны производные — только значения функции на отрезке.
20. Что произойдёт, если ошибка округления в вычислении чисел Фибоначчи? Интервал может уменьшаться неправильно, и метод даст неточную точку минимума. (Поэтому в коде часто используют заранее вычисленные целые значения.)
21. Почему говорят, что метод золотого
сечения — “предельный случай” метода
Фибоначчи?
22. Какую формулу использовать для подбора числа итераций n?
Эта формула определяет, сколько чисел Фибоначчи нужно для достижения точности ε.
23. В чём практическая разница между золотым сечением и Фибоначчи?
Золотое сечение — проще, универсальнее.
Фибоначчи — требует расчёта последовательности, но выполняет меньше вычислений функции.
24. Можно ли модифицировать метод Фибоначчи под поиск максимума? Да, точно так же: нужно искать минимум для −f(x).
25. Можно ли комбинировать метод Фибоначчи с другими? Да — его часто используют на финальной стадии, когда нужно уточнить результат после грубого метода (например, дихотомии).
26. Что будет, если интервал [a,b] выбран так, что минимум вне его? Метод не найдёт правильный результат, так как он всегда сужает интервал внутри исходного диапазона.
27. Почему в методе Фибоначчи иногда говорят “экономим одно вычисление”? Потому что в последней итерации одно из значений функции уже известно, и новое вычисление не требуется.
28. Можно ли применять метод Фибоначчи для дискретных функций? Нет, он предполагает непрерывность и унимодальность функции — иначе принцип сравнения f(x1) и f(x2) теряет смысл.
29. Что будет, если функция не унимодальна (несколько минимумов)? Метод может “поймать” не тот минимум — поэтому важно заранее проверить форму функции на интервале.
