Лекція 14. Функції багатьох змінних і часткові похідні
Коротко про лекцію
Лекція переносить оптимізацію на функції кількох змінних. Ви навчитеся читати часткові похідні, розглядати зміну однієї координати за фіксованих інших і пов’язувати математичний запис зі змістом параметрів моделі.
Практичний сенс. Реальне рішення часто має кілька параметрів одночасно: обсяг двох продуктів, два режими обладнання, координати точки або два коефіцієнти моделі. Тоді критерій залежить від кількох змінних. Часткові похідні дозволяють окремо виміряти локальний вплив кожної змінної.
Постановка та базові поняття
1. Від одного параметра до кількох
У прикладній задачі кожна координата зазвичай має власний зміст. Наприклад, \(x\) може бути температурою, а \(y\) — часом обробки. В іншій моделі \(x\) і \(y\) можуть бути обсягами двох продуктів.
Тому запис \(f(x,y)\) сам по собі ще не завершує постановку. Потрібно знати зміст обох аргументів, їхні одиниці та допустимі межі.
Для двох змінних область визначення часто є частиною площини. Наприклад:
та:
задають прямокутну допустиму область.
Якщо обмежень немає, можна розглядати:
Символ \(\mathbb{R}^2\) означає всі пари дійсних чисел.
У подальших задачах область може задаватися нерівностями. Тоді оптимум визначається одночасно формою функції та геометрією допустимої множини.
Одновимірна функція має один аргумент:
Для двох керованих величин запис стає:
Розглянемо навчальну функцію:
Вона описує штраф за відхилення від бажаної точки \((2,-1)\).
Перша координата має вагу 1, а друга — вагу 2. Тому однакова за модулем помилка за \(y\) штрафується сильніше.
1.1. Чому з’являється часткова похідна
У функції багатьох змінних значення залежить від кількох координат одночасно. Щоб зрозуміти вплив однієї координати, інші тимчасово фіксують. Звичайну похідну отриманої одновимірної функції називають частковою похідною початкової функції.
Наприклад, у \(f(x,y)\) похідна за \(x\) відповідає на питання: як змінюється \(f\), якщо трохи змінити \(x\) і залишити \(y\) незмінним. Похідна за \(y\) робить те саме для другої координати.
Тому часткові похідні не є новим типом операції. Це звичайна ідея похідної, застосована по черзі до кожного координатного напряму.
2. Точка як вектор рішення
Пару значень можна зберігати як вектор:
У конкретній точці:
маємо:
Точка \((x,y)\) визначає один план, а функція повертає одне число як його оцінку.
3. Графік функції двох змінних
Поверхня \(z=f(x,y)\) є тривимірним об’єктом. Її горизонтальні координати відповідають \(x\) та \(y\), а висота — значенню функції.
Для аналізу оптимізації часто зручніший контурний графік. Він показує лінії однакового рівня так, як топографічна карта показує однакову висоту.
Якщо рухатися вздовж однієї лінії рівня, значення \(f(x,y)\) не змінюється.
Якщо переходити від зовнішнього еліпса до внутрішнього, значення функції зменшується.
Для нашої функції центр усіх еліпсів збігається з точкою \((2,-1)\). Це сильна геометрична підказка про мінімум.
Контурний графік також показує різну чутливість за координатами. Еліпси сильніше стиснуті вздовж осі \(y\), бо коефіцієнт при \((y+1)^2\) дорівнює 2. Отже, однакове відхилення за \(y\) збільшує функцію сильніше.
Для функції двох змінних графік є поверхнею у тривимірному просторі.
Однак у навчальних матеріалах часто зручніше використовувати лінії рівня. Кожна лінія містить точки з однаковим значенням функції.

У нашому прикладі лінії рівня мають форму еліпсів. Вони стискаються до точки \((2,-1)\).
Ця точка є природним кандидатом на глобальний мінімум.
4. Навіщо потрібні часткові похідні
Звичайна похідна вимірює зміну функції при русі вздовж однієї осі.
Для функції \(f(x,y)\) можна змінювати \(x\), залишаючи \(y\) фіксованим. Можна також змінювати \(y\), залишаючи \(x\) фіксованим.
Ці два локальні впливи вимірюють часткові похідні.
Позначення:
та:
Символ \(\partial\) підкреслює, що функція має кілька змінних.
Математична логіка
5. Часткова похідна за першою змінною
Під час диференціювання за \(x\) значення \(y\) вважається сталою.
Маємо:
Другий доданок не змінюється разом із \(x\), тому його часткова похідна за \(x\) дорівнює нулю.
Отримуємо:
Це число показує локальну чутливість функції до зміни першої координати.
6. Часткова похідна за другою змінною
Тепер фіксуємо \(x\) і змінюємо \(y\).
Перший доданок стає сталою.
Похідна другого доданка:
Коефіцієнт 4 виникає через множник 2 та похідну квадрата.
Отже, функція реагує на зміну \(y\) сильніше, ніж на таке саме відхилення за \(x\).
7. Як читати часткову похідну в точці
Число \(-4\) для першої координати не означає, що функція обов’язково зменшиться рівно на 4. Похідна описує зміну на одиницю дуже малого локального руху.
Для малого приросту \(\Delta x\) можна використовувати наближення:
У точці \((0,0)\) при \(\Delta x=0.01\) маємо:
Тобто очікується невелике зменшення функції.
Аналогічно для другої координати:
Якщо \(\Delta y=0.01\), то:
Ці формули є локальними наближеннями. Для великих кроків кривизна функції вже має помітний вплив.
Саме тому в оптимізаційних алгоритмах напрям і довжина кроку є різними питаннями.
У точці \((0,0)\):
та:
Перше число означає, що мале збільшення \(x\) локально зменшує функцію.
Друге число означає, що мале збільшення \(y\) локально збільшує функцію.
Тому для зменшення цілі природно рухати \(x\) вправо, а \(y\) вниз.
8. Що означає фіксувати іншу змінну
Під час обчислення часткової похідної ми аналізуємо один координатний напрям.
Якщо \(y=-1\), функція стає:
Це звичайна парабола за \(x\).
Якщо \(x=2\), маємо:
Це інша парабола, тепер за \(y\).

Зрізи допомагають побачити, що часткова похідна аналізує одну координату за раз.
9. Формальне означення часткової похідної
За першою змінною:
За другою:
Різниця між формулами полягає в тому, яка координата отримує приріст \(h\).
10. Стаціонарна точка для двох змінних
Для функції з \(n\) змінними внутрішня стаціонарна точка повинна зануляти всі перші часткові похідні.
Для двох змінних це система двох рівнянь.
Важливо розуміти, що система виникає з однієї функції. Кожне рівняння відповідає одному координатному напрямку.
Якщо хоча б одна часткова похідна ненульова, існує координатний напрям, уздовж якого функція локально змінюється.
Тому така точка не може бути внутрішньою гладкою точкою локального мінімуму без додаткових обмежень.
При наявності обмежень ситуація змінюється. Мінімум може лежати на межі, де одна координата вже не може рухатися у вільному напрямку.
Через це нульові часткові похідні є умовою для безумовної внутрішньої оптимізації, а не універсальним правилом для всіх задач.
У внутрішній гладкій точці кандидат на екстремум повинен мати нульові всі перші часткові похідні.
Тому розв’язуємо систему:
Для нашої функції:
Звідси:
11. Чому знайдена точка є глобальним мінімумом
Важливо відрізняти доказ для конкретної функції від загального правила.
У нашій задачі доказ простий через суму квадратів. Обидва доданки невід’ємні, тому значення менше нуля неможливе.
Для іншої функції система нульових часткових похідних може дати точку, яка не є мінімумом.
Наприклад:
Часткові похідні:
Обидві дорівнюють нулю в точці \((0,0)\).
Проте вздовж осі \(x\):
а вздовж осі \(y\):
Тому біля нуля функція має і більші, і менші значення.
Таку точку називають сідловою.
Цей приклад показує, чому стаціонарність є лише першим етапом перевірки. Пізніше матриця других похідних дасть систематичний тест кривизни.
Початкова функція складається із двох невід’ємних квадратів:
та:
Тому:
Рівність можлива тільки тоді, коли обидва квадрати дорівнюють нулю.
Отже:
і:
Це прямий доказ глобального мінімуму.
Алгоритм і покроковий розбір
12. Ручний розрахунок у початковій точці
Візьмемо:
Значення функції:
Часткова похідна за \(x\):
Часткова похідна за \(y\):
Отже, локальні зміни за двома координатами мають різні знаки.
13. Чисельний зміст малого координатного кроку
Збільшимо тільки \(x\) на 0.1:
Нове значення:
Функція зменшилася з 6 до 5.61. Це узгоджується з від’ємною частковою похідною за \(x\).
Тепер збільшимо тільки \(y\):
Отримуємо:
Функція зросла. Це узгоджується з додатною частковою похідною за \(y\).
14. Лінії рівня та координатні напрями
Розглянемо рівень \(c=8\):
Точки на цій кривій мають однакове значення цілі.
Наприклад, точка \((4,-1)\) дає:
Точка \((2,0)\) дає:
Вони лежать на різних рівнях.
Для оптимізації важливо бачити напрям переходу від більших рівнів до менших.
Часткові похідні дають інформацію тільки вздовж осей. Якщо потрібно оцінити довільний напрям, окремих координатних похідних вже незручно.
Градієнт об’єднає всі часткові похідні і дозволить працювати з довільними напрямами через скалярний добуток.
Лінія рівня задається умовою:
де \(c\) — стала.
Для нашої функції:
Якщо \(c>0\), отримуємо еліпс.
Чим менше \(c\), тим ближче еліпс до мінімізатора.
Ця геометрія стане важливою в наступній лекції, де окремі часткові похідні об’єднаються у градієнт.
15. Алгоритм первинного аналізу
Якщо область має межі, до алгоритму потрібно додати аналіз границі.
Наприклад, розглянемо ту саму функцію, але з умовою:
Без обмеження мінімізатор має \(x=2\), тому він стає недопустимим.
Для фіксованого \(y=-1\) найкраще допустиме значення першої координати знаходиться на межі:
Тоді:
Часткова похідна за \(x\) у цій точці:
вже не дорівнює нулю.
Отже, правило нульових похідних не працює для активної межі.
Ця ситуація готує тему оптимізації з обмеженнями. Там допустимий напрям руху визначають функція та геометрія обмежень.
Для простої функції двох змінних корисний порядок:
- записати змінні та область;
- обчислити значення в кількох контрольних точках;
- знайти часткові похідні;
- розв’язати систему нульових часткових похідних;
- перевірити знайдені точки;
- врахувати межі області, якщо вони є;
- використати алгебраїчну або геометричну перевірку мінімальності.
Система часткових похідних дає кандидатів тільки для внутрішніх гладких точок.
Програмна реалізація та перевірка
16. Від формул до Python
| Математика | Python | Зміст |
|---|---|---|
| \((x,y)\) | point |
поточна точка |
| \(f(x,y)\) | objective(x, y) |
значення цілі |
| \(\partial f/\partial x\) | partial_x(x, y) |
чутливість за \(x\) |
| \(\partial f/\partial y\) | partial_y(x, y) |
чутливість за \(y\) |
# Описуємо цільову функцію тією самою формулою, що й у математичній постановці.
def objective(
x: float,
y: float,
) -> float:
return (
(x - 2.0) ** 2
+ 2.0 * (y + 1.0) ** 2
)
# Описуємо похідну або її чисельне наближення для незалежної перевірки формули.
def partial_x(
x: float,
y: float,
) -> float:
return 2.0 * (x - 2.0)
# Описуємо похідну або її чисельне наближення для незалежної перевірки формули.
def partial_y(
x: float,
y: float,
) -> float:
return 4.0 * (y + 1.0)
# Виводимо результат і діагностичні величини, щоб зіставити їх з очікуваними числами.
print(objective(0.0, 0.0))
print(partial_x(0.0, 0.0))
print(partial_y(0.0, 0.0))
Очікувано:
6.0
-4.0
4.0
17. Чисельна перевірка часткових похідних
Чисельна похідна є корисним тестом для власної формули.
Припустімо, аналітична формула дає:
Ми незалежно підставляємо значення в центральну різницю.
Якщо чисельний результат дорівнює приблизно \(-4\), це підтримує правильність похідної.
Якщо замість цього виходить \(+4\) або число іншого масштабу, варто перевірити знак, коефіцієнт та порядок аргументів.
Такий тест особливо корисний для складних функцій, де похідна містить багато членів.
Крок \(h\) також потрібно контролювати. Надто великий крок дає грубе наближення. Надто малий крок підсилює похибку віднімання близьких з рухомою комою чисел.
Корисно перевірити кілька кроків, наприклад \(10^{-3}\), \(10^{-4}\) та \(10^{-5}\), і переконатися, що оцінка стабілізується.
Для першої координати:
Для другої:
Центральна різниця дозволяє незалежно перевірити аналітичні формули.
18. Python-перевірка
Для програмної роботи важливо також контролювати порядок координат.
Можна зберігати точку як NumPy-вектор:
# Імпортуємо NumPy для обчислень, розв’язання моделі та її перевірки.
import numpy as np
# Задаємо конкретну точку, план або множники, для яких далі виконаємо математичну перевірку.
point = np.array([
0.0,
0.0,
])
# Обчислюємо функцію кількох змінних або її часткову похідну.
x = point[0]
y = point[1]
Порядок x, потім y повинен залишатися сталим у функції, похідних і візуалізації.
Для багатьох змінних зручно, коли функція приймає один вектор.
# Описуємо цільову функцію для векторного представлення точки.
def objective_vector(point):
x = point[0]
y = point[1]
# Повертаємо обчислене значення, яке використає наступний крок алгоритму або перевірки.
return (
(x - 2.0) ** 2
+ 2.0 * (y + 1.0) ** 2
)
Тоді математичний вектор рішення напряму відповідає одному програмному масиву.
Перед переходом до оптимізаційної бібліотеки корисно перевірити кілька ручних точок. Це дозволяє виявити переставлені координати та помилки в коефіцієнтах.
# Описуємо похідну або її чисельне наближення для незалежної перевірки формули.
def numerical_partial_x(
function,
x: float,
y: float,
step: float = 1e-5,
) -> float:
return (
function(x + step, y)
- function(x - step, y)
) / (2.0 * step)
# Описуємо похідну або її чисельне наближення для незалежної перевірки формули.
def numerical_partial_y(
function,
x: float,
y: float,
step: float = 1e-5,
) -> float:
return (
function(x, y + step)
- function(x, y - step)
) / (2.0 * step)
# Обчислюємо функцію кількох змінних або її часткову похідну.
x = 0.0
y = 0.0
# Виводимо результат і діагностичні величини, щоб зіставити їх з очікуваними числами.
print(
numerical_partial_x(
objective,
x,
y,
)
)
# Виводимо результат і діагностичні величини, щоб зіставити їх з очікуваними числами.
print(
numerical_partial_y(
objective,
x,
y,
)
)
Результати повинні бути близькі до \(-4\) та \(4\).
19. Перевірка стаціонарної точки
Для точки \((2,-1)\):
і:
Для цієї функції глобальність підтверджує невід’ємність квадратів.
У складнішій задачі сам факт нульових часткових похідних ще не визначає тип стаціонарної точки.
Інтерпретація, межі та підсумок
20. Типові помилки
Початківці часто гублять коефіцієнт під час диференціювання квадратичного члена.
Для:
похідна за \(y\) дорівнює:
Коефіцієнт 4 складається з множника 2 перед квадратом і множника 2 від похідної квадрата.
Інша помилка — підставити точку до диференціювання і втратити інформацію про змінну. Спочатку краще отримати загальну формулу часткової похідної, а потім підставити координати.
Ще одна проблема виникає при перестановці аргументів у коді. Якщо функція очікує (x, y), а перевірочний код передає (y, x), числовий результат може виглядати правдоподібно, але описувати іншу точку.
Тому перший програмний приклад використовує явні імена x та y, а не безіменні масиви.
Типова помилка. Під час часткового диференціювання змінюють одразу всі змінні. Часткова похідна змінює одну координату, а решту фіксує.
Інша помилка — вважати нульові часткові похідні автоматичним доказом мінімуму.
Також легко переплутати значення функції та значення похідної. Функція повертає рівень цілі, а часткова похідна описує локальну чутливість.
21. Часткова похідна залежить від одиниць
Розглянемо приклад із різними масштабами.
Нехай \(x\) вимірюється в метрах, а \(y\) — у міліметрах. Числова зміна на 1 означає зовсім різний фізичний рух.
Тому часткова похідна за \(x\) та часткова похідна за \(y\) можуть мати дуже різні числові масштаби навіть за подібного фізичного впливу.
Припустімо, одна координата має характерний масштаб 1000, а інша — 0.001. Тоді оптимізаційний алгоритм, який використовує однаковий числовий крок для всіх координат, може рухатися незбалансовано.
У подальших лекціях ця проблема з’явиться як масштабування змінних і обумовленість.
Для поточної теми достатньо зафіксувати правило: часткова похідна завжди читається разом з одиницями аргументу та функції.
Якщо \(x\) вимірюється в метрах, а \(f\) — у гривнях, тоді:
має одиниці «гривні на метр».
Тому числові значення часткових похідних за різними координатами не завжди можна порівнювати без урахування масштабу.
Ця проблема стане важливою для градієнтний спуск та масштабування змінних.
22. Що змінюється для багатьох змінних
Для трьох змінних:
потрібні три перші часткові похідні.
Для ста змінних їх буде сто.
Записувати всі формули окремо стає незручно, але структура залишається простою: кожна похідна відповідає одному координатному напрямку.
У машинному навчанні та чисельній оптимізації кількість змінних може бути дуже великою. Тому похідні організовують у вектор однакового розміру з вектором рішення.
Цей структурний перехід важливіший за нову символіку. Він дозволяє застосовувати векторні операції, норми та напрямні похідні.
У наступній лекції ми побачимо, що цей вектор також має чіткий геометричний напрям.
Для функції:
існує \(n\) перших часткових похідних.
Кожна описує локальну зміну вздовж однієї координатної осі.
Зберігати їх окремо незручно, тому наступний крок — об’єднати їх у вектор.
Цей вектор називається градієнтом.
22.1. Як читати контурний графік без помилок
Контурний графік показує рівні функції, а не траєкторію алгоритму.
Дві сусідні лінії не означають два кроки оптимізації. Вони лише позначають два різні значення цілі.
Щільне розташування ліній означає швидшу зміну функції в цьому напрямку. Рідке розташування означає повільнішу зміну.
У нашій функції еліпси сильніше стиснуті за координатою \(y\). Це узгоджується з більшим коефіцієнтом у квадратному члені.
Під час аналізу графіка потрібно звіряти візуальний висновок із формулою. Масштаб осей може спотворювати враження про крутизну.
Тому контурний рисунок є поясненням геометрії, а математичний висновок завершується частковими похідними та перевіркою значення функції.
22.2. Мінімальний формат студентського розрахунку
Для функції двох змінних достатньо послідовно показати:
- саму функцію;
- дві часткові похідні;
- систему стаціонарності;
- знайдену точку;
- значення функції;
- перевірку типу точки.
Для нашого прикладу:
Система дає \((2,-1)\).
Після цього:
і сума квадратів підтверджує глобальний мінімум.
Такий формат достатньо короткий для звіту, але містить весь математичний причинний шлях.
Код додається після ручного розрахунку як незалежна перевірка.
22.3. Другий короткий приклад
Розглянемо:
Часткові похідні:
Система стаціонарності дає:
Функція є сумою невід’ємних квадратів, тому:
і точка \((0,0)\) є глобальним мінімізатором.
Цей приклад показує той самий алгоритм на іншій функції.
Коефіцієнт 3 перед \(y^2\) робить зміну за другою координатою сильнішою, що відображається і в частковій похідній \(6y\).
22.4. Перевірка порядку координат
У багатовимірній задачі навіть правильні формули можуть бути використані неправильно через перестановку координат.
Якщо вектор рішення записаний як \((x,y)\), то перша компонента всіх похідних і програмних масивів повинна відповідати \(x\).
Перестановка на \((y,x)\) змінює математичний зміст.
Тому порядок координат потрібно зафіксувати біля першого вектора й зберігати до кінця розрахунку.
22.5. Практичний висновок для багатовимірної функції
Перехід від однієї змінної до кількох збільшує кількість напрямів, але не змінює основний принцип.
Кожна координата має зміст, область та локальний вплив на ціль.
Часткові похідні дозволяють перевірити цей вплив окремо.
Після цього стає можливим побудувати спільний вектор локальної зміни.
Тому ця лекція є містком між елементарним диференціюванням і повноцінними алгоритмами багатовимірної оптимізації.
22.6. Контрольне правило
Часткова похідна завжди відповідає конкретній координаті, тому її знак і величину слід читати разом із порядком змінних.
Інтерактивна самоперевірка лекції
Пройдіть 10 коротких питань. Після кожної відповіді ви побачите пояснення, а за потреби — підказку й повний розбір.
23. Підсумок
Функція кількох змінних залежить від вектора рішення, тому локальну зміну потрібно аналізувати окремо за кожною координатою. Часткова похідна за \(x_i\) показує, як змінюється функція при зміні цієї координати за фіксованих інших компонентів. Порядок координат у формулах, векторах і коді повинен залишатися однаковим.
Для квадратичної функції \((x-2)^2+2(y+1)^2\) часткові похідні дорівнюють \(2(x-2)\) і \(4(y+1)\). Одночасне занулення обох похідних дає стаціонарну точку \((2,-1)\), а структура суми невід’ємних квадратів підтверджує глобальний мінімум. Лінії рівня допомагають побачити, як різна кривизна за координатами формує геометрію поверхні.
Кожну часткову похідну корисно перевіряти скінченною різницею, змінюючи лише одну координату. Сукупність усіх часткових похідних утворює градієнт, який у наступній лекції стане основним вектором локального аналізу напрямів.