МЕТОДЫ ОПТИМИЗАЦИИ — КОМПЛЕКТ 5

ЛЕКЦИЯ 5. МЕТОД ИСКУССТВЕННОГО БАЗИСА
Файлы two_phase.py и simplex_tableau.py используют только стандартную
библиотеку Python. Держите оба файла в одной папке.
Запуск:
    python two_phase.py
В программе уже введён пример лекции. Ожидаемые результаты:
фаза I: цели -10, -2, 0; сумма искусственных переменных w*=0;
фаза II: цели 10, 16; план (x1,x2,s1,s2)=(5,1/2,3/2,0).

Функция two_phase принимает уже составленную расширенную матрицу A,
правую часть b, исходную цель c (с нулями при искусственных переменных),
начальный базис basis и индексы искусственных переменных artificial.
Требуются единичные базисные столбцы и неотрицательные правые части.
Индексы Python начинаются с нуля. Автоматического преобразования
произвольных неравенств и свободных по знаку переменных нет.
Для дробей используйте Fraction или строки '1/3', а не float.

Возможные статусы: optimal, infeasible, unbounded.
При infeasible второй фазы нет. При unbounded конечного максимума нет.
Функция очистки обрабатывает нулевые искусственные базисные переменные,
в том числе обмен по отрицательному ненулевому коэффициенту, и удаляет
избыточные строки. Неположительный элемент при обычном выборе отношения
по-прежнему не участвует в проверке допустимого шага.

ЛАБОРАТОРНАЯ РАБОТА 5. КЛАССИЧЕСКИЕ МЕТОДЫ ПОИСКА ЭКСТРЕМУМА
Зависимости: SymPy, NumPy, Matplotlib.
Установка в своей среде:
    python -m pip install -r requirements.txt
Проверка общих примеров:
    python classical_extrema.py
Выполнение варианта (номер 1...18):
    python run_variant.py 1

Файлы:
classical_extrema.py — производные, стационарность, классификация,
                       система Лагранжа и поиск нерегулярных точек;
run_variant.py      — расчёт варианта, таблица и два рисунка;
variants.json       — параметры 18 вариантов.

Программа создаёт папку classical_variant_01 в текущей рабочей папке:
results.txt — функции, производные, точки, матрицы и классификация;
points.csv — значения и типы точек (UTF-8 с BOM, разделитель ;);
free_extrema.png — линии уровня первой функции и стационарные точки;
constrained_extremum.png — вторая функция и прямая ограничения.
Повторный запуск обновляет файлы того же варианта.

Модель варианта, u=x-h, v=y-t:
F=(u^2-a^2)^2+b(v-ku)^2+c на всей плоскости;
Q=u^2+b(v-ku)^2+c при x+y=s.
Координаты x,y не ограничены условием неотрицательности.
Все параметры даны в variants.json; a>0, b>0.

ПРОВЕРКИ И ГРАНИЦЫ ПРИМЕНИМОСТИ
В безусловной задаче проверьте обе первые производные в каждой точке.
Матрицу Гессе подставляют отдельно для каждого кандидата.
При нулевом определителе критерий второго порядка не решает вопрос.
В условной задаче проверяют ограничение, стационарность L,
регулярность, касательное направление и d^T Hess(L) d.
Решения g=gx=gy=0 выводятся отдельно и исследуются вручную.
Например, f=x при x^2+y^2=0 имеет экстремум в единственной допустимой
точке, хотя обычная система Лагранжа не имеет решения.

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

Символьные ответы сохраняются точными; для графиков используются
числа с плавающей точкой. Округляйте ответы только при оформлении.
