Під час експериментів значення функції часто відомі лише в окремих точках, а отримані дані можуть містити похибки вимірювань. У такій ситуації не завжди доцільно будувати функцію, яка точно проходить через кожну задану точку. Метод найменших квадратів дає змогу знайти залежність, яка в цілому найкраще описує наявні дані, а практичні приклади допоможуть побачити, як цей підхід застосовується для побудови апроксимуючих поліномів і знаходження наближених значень функції.
Апроксимація Експериментальних Даних: Постановка Задачі
Нехай у результаті наукового або інженерного експерименту отримано систему точок
\[ (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).