ЛЕКЦИЯ 11. ДИФФЕРЕНЦИРОВАНИЕ ФУНКЦИЙ МНОГИХ ПЕРЕМЕННЫХ

Состав: derivatives_2d.py, variants.json, README.txt.
Требуется Python 3.10 или новее, NumPy, Matplotlib.
После распаковки откройте терминал в этой папке:
  python -m pip install numpy matplotlib
  python derivatives_2d.py
  python derivatives_2d.py --example quadratic
  python derivatives_2d.py --variant 7
В Windows вместо python можно использовать py.

По умолчанию f(x,y)=exp(x)+x*y+y*y, точка (0,1).
Квадратичный пример: 2(x-1)^2+2(x-1)(y+1)+2(y+1)^2+3, точка (2,0).
Варианты 1–18: параметры совпадают с лекциями 10 и 11.
Исходная точка варианта (s+1,t+1), приращение (0.1,-0.05).

Программа сравнивает аналитические производные с центральными разностями
при h=10^(-1),...,10^(-8). Ошибка градиента — евклидова норма,
ошибка Гессиана — норма Фробениуса. На каждый h используются 9 значений
функции с повторным использованием общих точек. Этот счётчик не включает
отдельные вычисления для моделей Тейлора.

В подпапке results_... сохраняются:
  results.json — точка, аналитические производные, модели и ошибки;
  derivative_errors.csv — таблица разностного эксперимента;
  derivative_errors.png — график, 300 dpi.
Повторный запуск того же примера перезаписывает его результаты.
Если ошибка вычислилась ровно нулевой, соответствующая точка пропускается
на логарифмическом графике, но сохраняется в CSV и JSON.

finite_differences(f,x,h) возвращает численный градиент, Гессиан и число 9.
Все пробные точки должны принадлежать области определения f.
Численное дифференцирование — проверка на выбранных точках, не доказательство.
Матрица симметризована конструктивно: один смешанный элемент записывается
в обе позиции. Симметрия не гарантирует точность.

Квадратичные модели Тейлора для квадратичных функций точны в математической
модели. При вычислениях с плавающей точкой остаётся округление.
Для примера с exp есть также ошибка усечения, и уменьшение h сначала
повышает точность, а затем может её ухудшить. Последние цифры зависят от
платформы и библиотек.
