Перейти до змісту

Лабораторна робота 13. Мінімум, максимум чи сідлова точка

Коротко про роботу

Ви класифікуєте кілька стаціонарних точок однієї нелінійної моделі. Потрібно обчислити Гессіан, дослідити його власні значення та обґрунтувати, де знаходиться мінімум, максимум або сідлова точка.

Ця робота виконується після лекцій 18. Вона спирається лише на матеріал, який уже пройдено до цього заняття.

▶ Відкрити робочий зошит у браузері

1. Ситуація

Одна й та сама нелінійна модель технологічного режиму має кілька точок, де градієнт дорівнює нулю. Це ще не означає, що всі вони є мінімумами. Потрібно подивитися на кривизну біля кожної точки.

Головне питання роботи: Як за матрицею Гессе відрізнити локальний мінімум, максимум і сідлову точку?

2. Що вже потрібно знати

Перед початком достатньо розуміти такі речі з попередніх лекцій:

  • матриця Гессе;
  • власні значення симетричної матриці;
  • додатна і від’ємна кривизна;
  • сідлова точка;

Якщо якийсь пункт забувся, поверніться до відповідної лекції. У цій роботі нова теорія не вводиться без пояснення.

3. Як перейти від ситуації до математики

Нульовий градієнт лише говорить, що локально немає першого порядку зміни. Щоб зрозуміти форму поверхні, потрібен другий порядок — матриця Гессе.

Спочатку сформулюйте зміст задачі словами. Лише після цього записуйте формули й код. Це зменшує ризик правильно порахувати не ту задачу.

4. Ваш варіант

У notebook змініть тільки один рядок:

STUDENT_X = 1  # поставте свій номер 1..30

Номер варіанта змінює числа, але не дає готового способу розв’язання. Основна частина роботи однакова для всіх: побудувати правильну модель, зробити потрібний вибір і перевірити результат.

Після запуску комірки «Дані вашого варіанта» notebook покаже всі числа, потрібні для роботи. Вручну підставляти STUDENT_X у формули не потрібно. Спочатку подивіться на отримані дані та підпишіть, що означає кожен масив або параметр.

5. Де тут треба подумати

Не класифікуйте всю функцію один раз. Матриця Гессе залежить від точки. Для кожного кандидата окремо порахуйте її власні значення, а потім перевірте висновок малими зміщеннями.

Перед тим як писати код, дайте собі відповідь на два питання:

  1. Чому умова grad=0 не дозволяє одразу сказати «це мінімум»?
  2. Як знаки власних значень Гессіана пов’язані з поведінкою функції в різних напрямах?

Відповідь не треба робити довгою. Достатньо 1–2 речень на кожне питання. Це допомагає перевірити, що ви розумієте задачу до запуску обчислень.

6. Послідовність роботи

Крок 1. Перевірити стаціонарність

Для кожної заданої точки обчисліть градієнт і переконайтеся, що він близький до нуля.

Крок 2. Побудувати матрицю Гессе

Реалізуйте hessian(x,y) і виведіть матрицю для кожної точки.

Крок 3. Знайти власні значення

Використайте np.linalg.eigvalsh, бо Гессіан симетричний.

Крок 4. Класифікувати точки

Два додатних → мінімум; два від’ємних → максимум; різні знаки → сідлова точка.

Крок 5. Перевірити малими збуреннями

Порівняйте значення функції в кількох близьких точках навколо кожного кандидата.

Крок 6. Пояснити предметний зміст

Які стаціонарні режими можна вважати локально стійкими з погляду мінімізації?

7. Python

Використовуйте: NumPy.

Не намагайтеся вмістити всю роботу в одну велику комірку. Зручніше мати окремі невеликі блоки: дані → модель → обчислення → перевірка → висновок. Назви змінних повинні показувати їхній зміст.

8. Локальна самоперевірка

У робочому notebook наперед створені назви змінних, які читає автоматична перевірка. Не перейменовуйте їх. Ви самі пишете спосіб розв’язання, але фінальний результат записуєте у визначені змінні.

Змінна Що записати
grad_norms три норми градієнта у заданих points
hessian_eigenvalues список із трьох пар власних значень
classification ["максимум", "сідлова", "мінімум"] для заданих points
perturbation_check три True, якщо локальні збурення підтвердили класифікацію

Після виконання всіх кроків запустіть комірку «Локальна самоперевірка». Для вашого STUDENT_X вона читає наперед обчислені контрольні значення та порівнює з ними всі результатні змінні з таблиці вище. Числові значення порівнюються з указаним допуском; логічні, текстові та дискретні результати — точно. Для множин індексів порядок елементів не має значення, а для напрямів власних векторів враховується еквівалентність v та -v.

  • ✅ OK означає, що всі результатні змінні збігаються з контрольними значеннями в межах заданих допусків.
  • означає, що біля конкретної змінної буде вказано, яке порівняння не пройдено.

Самоперевірка не замінює короткий предметний висновок: після OK поясніть своїми словами, що означає отриманий результат у ситуації цієї лабораторної.

9. Що має бути у звіті

Звіт не повинен бути переписаним notebook. Покажіть вихідні дані, ключові проміжні результати, перевірки та короткий висновок своїми словами. У звіті обов’язково мають бути:

  1. номер вашого варіанта;
  2. вихідні дані, які реально використовувалися;
  3. ключовий проміжний результат, на якому ґрунтується рішення;
  4. фінальний результат;
  5. незалежна числова перевірка;
  6. коротке пояснення, що цей результат означає в початковій прикладній ситуації.

Наприкінці дайте відповідь на головне питання лабораторної одним коротким абзацом.

10. Контрольні питання

  1. Чому нульовий градієнт не означає автоматично мінімум?
Показати відповідь Стаціонарна точка може бути мінімумом, максимумом або сідловою точкою. Потрібна інформація про кривизну.
  1. Що означають власні значення різних знаків у Гессіані?
Показати відповідь В одному напрямі функція вигинається вгору, а в іншому вниз. Це ознака сідлової точки.