ЛЕКЦИЯ 9. МЕТОД КАСАТЕЛЬНЫХ В ОДНОМЕРНОЙ ОПТИМИЗАЦИИ
Метод Ньютона для уравнения f'(x)=0; полный шаг и дробление по Армихо.

Требуется Python 3.10 или новее, дополнительных пакетов не требуется.
Распакуйте архив и откройте терминал в этой папке.
Основной пример:
    python run_examples.py
Пример неудачного полного шага:
    python run_examples.py --failure
Индивидуальный вариант:
    python run_examples.py --variant 7 --eps 0.0001
    python run_examples.py --variant 7 --eps 0.000001
В Windows вместо python можно использовать py.

СОСТАВ
newton_1d.py — обе версии метода в одной функции newton_minimize.
run_examples.py — запуск примеров и индивидуальных вариантов.
variants.json — таблица параметров из лекции.
README.txt — инструкция.

ПРЕДПОЛОЖЕНИЯ
На всём [a,b] функция дважды непрерывно дифференцируема и
f''(x)>=mu>0. Значение mu нужно обосновать аналитически.
Проверка кривизны в отдельных точках не доказывает условие на всём отрезке.
Все сравнения и оценки предполагают достаточно точные значения производных;
интервальная арифметика не используется.

Для внутреннего минимума error_bound=abs(f'(x))/mu.
Статус converged означает error_bound<=eps_x.
Параметр eps_x относится к координате. Малый шаг сам по себе не является
критерием достижения допуска. Для минимума на границе проверяются знаки
производных; возвращается boundary_minimum и error_bound=0.

Полный шаг может выйти из [a,b]: возвращается outside_interval, последняя
допустимая точка сохраняется, функция вне отрезка не вычисляется.
Для семейства B при заданном x0 такой отказ ожидается и служит учебным примером.
При damped=True используется alpha=1,1/2,1/4,... и условие Армихо с c1=0.0001.

ОСТАЛЬНЫЕ СТАТУСЫ
curvature_assumption_failed — вычисленная f'' противоречит заданной mu;
  оценка ошибки не возвращается (None).
precision_limit — шаг неразличим либо не представим конечным числом.
line_search_failed — допустимый шаг не найден за max_backtrack делений.
max_iter — исчерпано заданное число итераций.
Неверные параметры, неконечные значения и явно несовместимые с выпуклостью
производные на границах вызывают ValueError. Иные исключения пользовательской
функции не подавляются: функцию нужно задавать корректно на всём [a,b].

СЧЁТЧИКИ
n_f, n_df, n_ddf — фактическое число вызовов f, f', f''.
Проверка производных на обеих границах включена в n_df.
Отброшенные пробные точки внутри [a,b] включены в n_f.
Точки вне [a,b] проверяются без вычисления f.
backtracks — число выполненных делений alpha на 2.
iterations — число принятых шагов.

РЕЗУЛЬТАТЫ
CSV содержит историю принятых шагов, JSON — параметры результата и историю.
Файлы создаются в подпапке results_... текущей рабочей папки.
Повторный запуск с теми же параметрами перезаписывает результаты этого запуска.
