Під час експериментів значення функції часто відомі лише в окремих точках, а отримані дані можуть містити похибки вимірювань. У такій ситуації не завжди доцільно будувати функцію, яка точно проходить через кожну задану точку. Метод найменших квадратів дає змогу знайти залежність, яка в цілому найкраще описує наявні дані, а практичні приклади допоможуть побачити, як цей підхід застосовується для побудови апроксимуючих поліномів і знаходження наближених значень функції.
Апроксимація Експериментальних Даних: Постановка Задачі
Нехай у результаті наукового або інженерного експерименту отримано систему точок
\[
(x_0,y_0),\quad(x_1,y_1),\quad\dots,\quad(x_n,y_n).
\]
Кожному значенню \( x_i \) відповідає експериментальне значення \( y_i \), де
\[
i=0,1,\dots,n.
\]
Потрібно знайти наближену функцію
\[
y=f(x),
\]
значення якої в заданих точках якомога менше відрізняються від експериментальних значень \( y_i \).
На перший погляд така задача нагадує інтерполяцію. Проте між інтерполяцією та апроксимацією є важлива відмінність. Інтерполяційний поліном повинен точно проходити через усі задані точки:
\[
P(x_i)=y_i.
\]
Для апроксимуючої функції така умова не є обов’язковою. У загальному випадку її значення в точках \( x_i \) можуть відрізнятися від заданих значень:
\[
P(x_i)\ne y_i.
\]
Це особливо важливо під час роботи з експериментальними даними. Через похибки вимірювань окремі точки можуть відхилятися від загальної закономірності, тому функція, яка точно проходить через кожну з них, не завжди найкраще описує досліджувану залежність.
Отже, задача апроксимації полягає в тому, щоб побудувати функцію, яка не обов’язково відтворює кожне значення точно, але достатньо добре описує весь набір даних.
Апроксимуючий Поліном: Вибір Наближеної Залежності
Як апроксимуючу функцію можна використовувати різні математичні залежності. У цьому матеріалі розглянемо поліноміальну апроксимацію, тобто шукатимемо наближену функцію у вигляді полінома степеня \( m \), де \( m<n \):
\[
P_m(x)=a_0+a_1\cdot x+a_2\cdot x^2+\dots+a_m\cdot x^m.
\]
Тут \( a_0,a_1,\dots,a_m \) — невідомі коефіцієнти, які потрібно визначити за заданими експериментальними даними.
У точці \( x_i \) значення апроксимуючого полінома дорівнює
\[
P_m(x_i)=a_0+a_1\cdot x_i+a_2\cdot x_i^2+\dots+a_m\cdot x_i^m.
\]
Порівняємо його з відповідним експериментальним значенням \( y_i \). Різницю
\[
P_m(x_i)-y_i
\]
можна розглядати як відхилення апроксимуючої функції від заданих даних у точці \( x_i \).
Якщо таких точок багато, виникає природне питання: як оцінити якість апроксимації відразу для всього набору даних? Для цього потрібен критерій, який одночасно враховує всі ці відхилення.
Метод Найменших Квадратів: Критерій Якості Апроксимації
Окремі відхилення можуть бути як додатними, так і від’ємними. Якщо просто знайти їх суму, значення з різними знаками можуть частково або повністю компенсувати одне одного. У такому разі мала сума ще не означатиме, що апроксимуюча функція добре описує дані.
Щоб уникнути такої компенсації, у методі найменших квадратів використовують квадрати відхилень. Для всіх заданих точок утворимо суму
\[
S=\sum_{i=0}^{n}\left(P_m(x_i)-y_i\right)^2.
\]
Підставивши вираз для апроксимуючого полінома, отримаємо
\[
S=\sum_{i=0}^{n}\left(a_0+a_1\cdot x_i+a_2\cdot x_i^2+\dots+a_m\cdot x_i^m-y_i\right)^2.
\]
Величина \( S \) характеризує загальне відхилення апроксимуючого полінома від експериментальних даних. Чим менше її значення, тим краще поліном узгоджується із заданими точками.
Отже, потрібно визначити коефіцієнти \( a_0,a_1,\dots,a_m \), за яких сума квадратів відхилень набуває найменшого значення. Для цього перейдемо до умов мінімуму функції \( S \).
Мінімізація Суми Відхилень: Побудова Нормальної Системи Рівнянь
Функція \( S \) залежить від невідомих коефіцієнтів \( a_0,a_1,\dots,a_m \). Щоб знайти її мінімум, обчислимо частинні похідні за кожним із цих коефіцієнтів та прирівняємо їх до нуля:
\[
\left\{
\begin{array}{l}
\dfrac{\partial S}{\partial a_0}=0,\\[6pt]
\dfrac{\partial S}{\partial a_1}=0,\\[6pt]
\vdots\\[6pt]
\dfrac{\partial S}{\partial a_m}=0.
\end{array}
\right.
\]
Розпишемо ці умови детальніше:
\[
\left\{
\begin{array}{l}
\dfrac{\partial S}{\partial a_0}
=2\cdot\displaystyle\sum_{i=0}^{n}
\left(a_0+a_1\cdot x_i+a_2\cdot x_i^2+\cdots+a_m\cdot x_i^m-y_i\right)=0,\\[8pt]
\dfrac{\partial S}{\partial a_1}
=2\cdot\displaystyle\sum_{i=0}^{n}
\left(a_0+a_1\cdot x_i+a_2\cdot x_i^2+\cdots+a_m\cdot x_i^m-y_i\right)\cdot x_i=0,\\[8pt]
\vdots\\[8pt]
\dfrac{\partial S}{\partial a_m}
=2\cdot\displaystyle\sum_{i=0}^{n}
\left(a_0+a_1\cdot x_i+a_2\cdot x_i^2+\cdots+a_m\cdot x_i^m-y_i\right)\cdot x_i^m=0.
\end{array}
\right.
\]
За відповідних умов щодо заданих точок розв’язок отриманої системи визначає коефіцієнти, за яких функція \( S \) набуває мінімального значення.
Спільний множник \( 2 \) можна скоротити, оскільки він не впливає на розв’язок системи. Після цього розкриємо суми та згрупуємо доданки за невідомими коефіцієнтами \( a_0,a_1,\dots,a_m \).
У результаті отримаємо систему нормальних рівнянь методу найменших квадратів:
\[
\left\{
\begin{array}{l}
(n+1)\cdot a_0+a_1\cdot\displaystyle\sum_{i=0}^{n}x_i+a_2\cdot\displaystyle\sum_{i=0}^{n}x_i^2+\cdots+a_m\cdot\displaystyle\sum_{i=0}^{n}x_i^m=\displaystyle\sum_{i=0}^{n}y_i,\\[8pt]
a_0\cdot\displaystyle\sum_{i=0}^{n}x_i+a_1\cdot\displaystyle\sum_{i=0}^{n}x_i^2+a_2\cdot\displaystyle\sum_{i=0}^{n}x_i^3+\cdots+a_m\cdot\displaystyle\sum_{i=0}^{n}x_i^{m+1}=\displaystyle\sum_{i=0}^{n}y_i\cdot x_i,\\[8pt]
\vdots\\[8pt]
a_0\cdot\displaystyle\sum_{i=0}^{n}x_i^m+a_1\cdot\displaystyle\sum_{i=0}^{n}x_i^{m+1}+a_2\cdot\displaystyle\sum_{i=0}^{n}x_i^{m+2}+\cdots+a_m\cdot\displaystyle\sum_{i=0}^{n}x_i^{2\cdot m}=\displaystyle\sum_{i=0}^{n}y_i\cdot x_i^m.
\end{array}
\right.
\]
Усі суми, що містять \( x_i \) та \( y_i \), обчислюються за заданими експериментальними даними. Після їх обчислення отримуємо систему лінійних алгебраїчних рівнянь відносно невідомих коефіцієнтів \( a_0,a_1,\dots,a_m \).
Розв’язавши цю систему, визначимо коефіцієнти апроксимуючого полінома
\[
P_m(x)=a_0+a_1\cdot x+a_2\cdot x^2+\dots+a_m\cdot x^m.
\]
Розв’язок нормальної системи визначає поліном, який найкраще узгоджується із заданими даними за критерієм найменших квадратів. Розглянемо, як ця схема застосовується на практиці.
Метод Найменших Квадратів: Практичні Приклади Апроксимації Функції
Тепер застосуємо отриману нормальну систему до конкретних наборів даних. Спочатку побудуємо поліном першого степеня, далі розглянемо квадратичну апроксимацію, а потім використаємо знайдену залежність для наближеного обчислення значення функції.
Приклад 1. Методом найменших квадратів знайти поліном першого степеня, який апроксимує таблично задану функцію
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 1 \) | \( 3 \) |
| \( 1 \) | \( 2 \) | \( 3 \) |
| \( 2 \) | \( 3 \) | \( 6 \) |
Шукатимемо апроксимуючу функцію у вигляді
\[
P_1(x)=a_0+a_1\cdot x.
\]
Для полінома першого степеня система нормальних рівнянь має вигляд
\[
\left\{
\begin{array}{l}
3\cdot a_0+a_1\cdot\sum x_i=\sum y_i,\\[6pt]
a_0\cdot\sum x_i+a_1\cdot\sum x_i^2=\sum x_i\cdot y_i.
\end{array}
\right.
\]
Обчислимо необхідні суми:
\[
\begin{gathered}
\sum x_i=1+2+3=6,\\[4pt]
\sum x_i^2=1^2+2^2+3^2=14,\\[4pt]
\sum y_i=3+3+6=12,\\[4pt]
\sum x_i\cdot y_i=1\cdot3+2\cdot3+3\cdot6=27.
\end{gathered}
\]
Підставимо отримані значення в систему нормальних рівнянь:
\[
\left\{
\begin{array}{l}
3\cdot a_0+6\cdot a_1=12,\\[6pt]
6\cdot a_0+14\cdot a_1=27.
\end{array}
\right.
\]
Помножимо перше рівняння на \( 2 \):
\[
6\cdot a_0+12\cdot a_1=24.
\]
Віднімемо його від другого рівняння:
\[
2\cdot a_1=3.
\]
Звідси
\[
a_1=1.5.
\]
Підставимо знайдене значення в перше рівняння:
\[
\begin{gathered}
3\cdot a_0+6\cdot1.5=12,\\[4pt]
3\cdot a_0=3,\\[4pt]
a_0=1.
\end{gathered}
\]
Отже, шуканий апроксимуючий поліном має вигляд
\[
P_1(x)=1+1.5\cdot x.
\]
Приклад 2. Методом найменших квадратів знайти поліном другого степеня для таблично заданої функції
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( -2 \) | \( 5 \) |
| \( 1 \) | \( -1 \) | \( 2 \) |
| \( 2 \) | \( 0 \) | \( 1 \) |
| \( 3 \) | \( 1 \) | \( 2 \) |
| \( 4 \) | \( 2 \) | \( 4 \) |
Шукатимемо апроксимуючу функцію у вигляді
\[
P_2(x)=a_0+a_1\cdot x+a_2\cdot x^2.
\]
Для полінома другого степеня система нормальних рівнянь має вигляд
\[
\left\{
\begin{array}{l}
5\cdot a_0+a_1\cdot\sum x_i+a_2\cdot\sum x_i^2=\sum y_i,\\[6pt]
a_0\cdot\sum x_i+a_1\cdot\sum x_i^2+a_2\cdot\sum x_i^3=\sum x_i\cdot y_i,\\[6pt]
a_0\cdot\sum x_i^2+a_1\cdot\sum x_i^3+a_2\cdot\sum x_i^4=\sum x_i^2\cdot y_i.
\end{array}
\right.
\]
Спочатку обчислимо суми степенів \( x_i \):
\[
\begin{gathered}
\sum x_i=-2-1+0+1+2=0,\\[4pt]
\sum x_i^2=(-2)^2+(-1)^2+0^2+1^2+2^2=10,\\[4pt]
\sum x_i^3=(-2)^3+(-1)^3+0^3+1^3+2^3=0,\\[4pt]
\sum x_i^4=(-2)^4+(-1)^4+0^4+1^4+2^4=34.
\end{gathered}
\]
Тепер обчислимо суми, що містять значення \( y_i \):
\[
\begin{gathered}
\sum y_i=5+2+1+2+4=14,\\[4pt]
\sum x_i\cdot y_i=(-2)\cdot5+(-1)\cdot2+0\cdot1+1\cdot2+2\cdot4=-2,\\[4pt]
\sum x_i^2\cdot y_i=4\cdot5+1\cdot2+0\cdot1+1\cdot2+4\cdot4=40.
\end{gathered}
\]
Підставимо отримані значення в систему нормальних рівнянь:
\[
\left\{
\begin{array}{l}
5\cdot a_0+10\cdot a_2=14,\\[6pt]
10\cdot a_1=-2,\\[6pt]
10\cdot a_0+34\cdot a_2=40.
\end{array}
\right.
\]
Із другого рівняння знаходимо
\[
a_1=-0.2.
\]
Для знаходження \( a_0 \) та \( a_2 \) використаємо перше та третє рівняння. Помножимо перше рівняння на \( 2 \):
\[
10\cdot a_0+20\cdot a_2=28.
\]
Віднімемо отримане рівняння від третього:
\[
14\cdot a_2=12.
\]
Звідси
\[
a_2\approx0.857.
\]
Підставимо знайдене значення в перше рівняння:
\[
5\cdot a_0+10\cdot0.857\approx14,
\]
звідки
\[
a_0\approx1.086.
\]
Отже, апроксимуючий поліном другого степеня має вигляд
\[
P_2(x)=1.086-0.2\cdot x+0.857\cdot x^2.
\]
Приклад 3. Для заданих табличних даних методом найменших квадратів побудувати поліном першого степеня та за його допомогою наближено знайти значення функції при \( x=3 \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 0 \) | \( 1.5 \) |
| \( 1 \) | \( 1 \) | \( 1 \) |
| \( 2 \) | \( 2 \) | \( 3.5 \) |
| \( 3 \) | \( 4 \) | \( 5 \) |
Шукатимемо апроксимуючу функцію у вигляді
\[
P_1(x)=a_0+a_1\cdot x.
\]
Оскільки побудову нормальної системи для полінома першого степеня вже розглянуто в попередньому прикладі, одразу обчислимо необхідні суми:
\[
\begin{gathered}
\sum x_i=0+1+2+4=7,\\[4pt]
\sum x_i^2=0^2+1^2+2^2+4^2=21,\\[4pt]
\sum y_i=1.5+1+3.5+5=11,\\[4pt]
\sum x_i\cdot y_i=0\cdot1.5+1\cdot1+2\cdot3.5+4\cdot5=28.
\end{gathered}
\]
Підставимо отримані значення в систему нормальних рівнянь:
\[
\left\{
\begin{array}{l}
4\cdot a_0+7\cdot a_1=11,\\[6pt]
7\cdot a_0+21\cdot a_1=28.
\end{array}
\right.
\]
Щоб виключити \( a_0 \), помножимо перше рівняння на \( 7 \), а друге — на \( 4 \):
\[
\left\{
\begin{array}{l}
28\cdot a_0+49\cdot a_1=77,\\[6pt]
28\cdot a_0+84\cdot a_1=112.
\end{array}
\right.
\]
Віднімемо перше рівняння від другого:
\[
35\cdot a_1=35.
\]
Звідси
\[
a_1=1.
\]
Підставимо знайдене значення в перше рівняння:
\[
\begin{gathered}
4\cdot a_0+7=11,\\[4pt]
4\cdot a_0=4,\\[4pt]
a_0=1.
\end{gathered}
\]
Отже, апроксимуючий поліном має вигляд
\[
P_1(x)=1+x.
\]
Тепер використаємо знайдену залежність для обчислення наближеного значення функції при \( x=3 \):
\[
P_1(3)=1+3=4.
\]
Отже,
\[
f(3)\approx4.
\]
Інші Методи Наближення Функцій: Теми Для Продовження
Після знайомства з методом найменших квадратів варто розглянути інші способи наближення таблично заданих функцій. Наступні теми допоможуть порівняти різні підходи до обчислення значень функції між відомими вузлами.
- Лінійна інтерполяція: Наближення функції між сусідніми вузлами — Дізнайтеся, як за двома сусідніми табличними значеннями побудувати лінійну залежність і наближено обчислити значення функції між ними.
- Квадратична інтерполяція: Обчислення проміжних значень функції — Розгляньте, як за кількома вузлами побудувати квадратичний поліном і використати його для наближеного визначення проміжних значень.
- Кубічна сплайн-інтерполяція: Наближення функції без різких зламів — Дізнайтеся, як кубічні сплайни поєднують окремі ділянки та утворюють гладку криву, що проходить через задані табличні точки.
Метод Найменших Квадратів: Від Блок-Схеми До Програмного Коду
Захоплюєтеся програмуванням? Тоді спробуйте реалізувати поданий на блок-схемі алгоритм своєю улюбленою мовою. Програма має зчитати табличні дані, побудувати апроксимуючий поліном методом найменших квадратів, знайти його коефіцієнти та обчислити значення в заданій точці. Pascal, Python, JavaScript чи C++ — вибір за вами. Так ви не лише перевірите розуміння алгоритму, а й побачите, як математичні обчислення перетворюються на готову програмну реалізацію.

Объясните, что за параметры m и n ?
Для тех людей, у кого плохо с высшей математикой
Шановний Nik, тут все доволі просто: n – це кількість точок в яких значення функції відомі (отримані в результеті наукового чи інженерного експеременту) і m – степінь многочлена за допомогою якого здійснюється апроксимація функції.
На сколько я понял, если я имею, к примеру, два вектора длинной в 10 элементов (Реализую алгоритм в программе, длина вектора = количество элементов в массиве, думаю поняли 🙂 ), то n это количество элементов в векторе, в этом случае n = 10, а m это самый высший степень в векторе, верно?
Спасибо большое за ответ <3
Не зовсім так Nik. Давайте почнемо з наступного означення: апроксимація (наближення) – це заміна заданої функції наближеною (апроксимуючою) функцією так, щоб відхилення в заданому діапазоні зміни х було мінімальним.
Зазначимо, що вибір апроксимуючої функцій – це окрема задача, яка часто може бути вирішена методом проб і послідовних наближень. У цьому випадку вихідні дані, представляють в графічній формі (у вигляді сімейства точок або кривих) і зіставляють їх з сімейством графіків ряду типових функцій, які використовуються, зазвичай, для цілей апроксимації. Однак, у багатьох випадках, в якості наближеної функції вибирають степеневий поліном Pm(x).
Так ось, параметр m – це степінь (порядок) даного полінома (значення m не повинно перевищувати n).