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

Лабораторна робота 20. Калібрування датчика за багатьма вимірюваннями

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

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

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

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

1. Ситуація

Промисловий датчик реагує на еталонний сигнал, але на показ також трохи впливає температура. Є 12 вимірювань, а знайти треба лише три параметри: постійне зміщення, коефіцієнт підсилення та температурний коефіцієнт.

Головне питання роботи: Як самостійно побудувати матрицю ознак і перевірити, що знайдені коефіцієнти справді є LS-розв’язком?

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

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

  • метод найменших квадратів;
  • матриця ознак;
  • вектор залишків;
  • np.linalg.lstsq;

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

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

У вас більше вимірювань, ніж невідомих параметрів. Тому точного проходження через усі точки зазвичай немає, і ми шукаємо коефіцієнти з найменшою сумою квадратів залишків.

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

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

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

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

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

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

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

Головне тут — не виклик lstsq. Спочатку вирішіть, які три стовпці має мати матриця. Після розв’язання перевірте важливу властивість LS: залишок має бути майже ортогональний до кожного стовпця матриці ознак.

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

  1. Чому матрицю ознак треба побудувати самостійно, а не сприймати як готовий масив?
  2. Що означає умова X.T@residuals≈0 для LS-розв’язку?

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

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

Крок 1. Прочитати таблицю вимірювань

Визначте еталонний сигнал, temperature та measured response.

Крок 2. Побудувати три ознаки

Створіть стовпці [1, signal, temperature_shift] і поясніть фізичний зміст кожного.

Крок 3. Перевірити ранг

Переконайтеся, що три параметри можна оцінити незалежно.

Крок 4. Знайти коефіцієнти

Використайте np.linalg.lstsq.

Крок 5. Порахувати прогноз і залишки

Знайдіть y_hat, r = y_hat - y, SSE та RMSE.

Крок 6. Перевірити умову LS

Обчисліть A.T @ r. Поясніть, чому цей вектор має бути близьким до нуля.

7. Python

Використовуйте: NumPy; Pandas і Matplotlib за бажанням.

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

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

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

Змінна Що записати
design_matrix матриця [1, signal, temperature-24] розміру 12x3
coefficients три LS-коефіцієнти
rank_design ранг design_matrix
predictions design_matrix @ coefficients
residuals predictions - measured
sse sum(residuals**2)
rmse sqrt(sse/12)
normal_equation_residual норма design_matrix.T @ residuals

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

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

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

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

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

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

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

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

  1. Навіщо в матриці ознак потрібен стовпець одиниць?
Показати відповідь Він відповідає вільному члену — постійному зміщенню датчика.
  1. Що означає малий вектор A.T @ residual?
Показати відповідь Залишок майже ортогональний до всіх стовпців матриці ознак, що є характерною умовою LS-розв’язку.