МЕТОДЫ ОПТИМИЗАЦИИ — ЛЕКЦИЯ 6 И ЛАБОРАТОРНАЯ РАБОТА 6
Python 3.10 или новее. Учебная реализация четырёх методов для SPD-квадратичных задач.

Установка:
  python -m pip install -r requirements.txt

Запуск общего примера:
  python run_variant.py --example
Ожидаемые числа внешних итераций при eps=1e-6:
fixed: 29; steepest: 13; coordinate: 8 полных циклов; newton: 1.
Постоянный шаг в общем примере: 1/4; в вариантах: 1/L.

Индивидуальный вариант (номера 1–18):
  python run_variant.py --variant 6 --eps 1e-6
  python run_variant.py --variant 6 --eps 1e-4
  python run_variant.py --variant 6 --angle 0 --eps 1e-6
  python run_variant.py --variant 6 --angle 45 --eps 1e-6
Дополнительный параметр: --max-iter 100000.
Результаты появляются в подпапке results_... текущей рабочей папки:
summary.csv, history.csv, parameters.json, trajectories.png, convergence.png.
Повторный запуск одинаковых параметров обновляет эти результаты.

Лекция: демонстрация трёх шагов исключения интервала:
  python one_dim_basics.py
Ожидаемые отрезки: [0,3], [1,3], [1.4,3].
Предпосылка функции reduce_interval: строгая унимодальность на исходном отрезке.
Код проверяет порядок точек и конечность, но не доказывает унимодальность.

Счётчики:
iterations — векторные шаги / полные координатные циклы;
updates — векторные обновления / отдельные координатные перемещения;
n_f — начальное значение и значения после внешних итераций, включая историю;
n_g — все полные градиенты (в координатном методе после каждой координаты);
n_linear_solves — решения системы в методе Ньютона.
Проверка спектра и построение графиков не включены в эти счётчики.

Статусы: converged, max_iter, stagnation, nonfinite.
Нужно проверять статус, а не только напечатанную точку.
Общий критерий: евклидова норма градиента <= eps.
Код специально ограничен положительно определёнными квадратичными функциями.
Точная одномерная формула и один шаг Ньютона не являются общими гарантиями
для нелинейной невыпуклой оптимизации.

Проверено: 72 запуска (18 вариантов x 4 метода), точность 1e-6,
монотонность функции, оценка ошибки, ортогональность градиентов,
первые ручные шаги, начальная точка в минимуме, нулевой лимит,
отклонение недопустимых шагов и неположительно определённой матрицы.
