Метод Найменших Квадратів: Апроксимація Функції За Експериментальними Даними

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

Апроксимація Експериментальних Даних: Постановка Задачі

Нехай у результаті наукового або інженерного експерименту отримано систему точок

\[ (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. \]

Інші Методи Наближення Функцій: Теми Для Продовження

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

  1. Лінійна інтерполяція: Наближення функції між сусідніми вузлами — Дізнайтеся, як за двома сусідніми табличними значеннями побудувати лінійну залежність і наближено обчислити значення функції між ними.
  2. Квадратична інтерполяція: Обчислення проміжних значень функції — Розгляньте, як за кількома вузлами побудувати квадратичний поліном і використати його для наближеного визначення проміжних значень.
  3. Кубічна сплайн-інтерполяція: Наближення функції без різких зламів — Дізнайтеся, як кубічні сплайни поєднують окремі ділянки та утворюють гладку криву, що проходить через задані табличні точки.

Метод Найменших Квадратів: Від Блок-Схеми До Програмного Коду

Захоплюєтеся програмуванням? Тоді спробуйте реалізувати поданий на блок-схемі алгоритм своєю улюбленою мовою. Програма має зчитати табличні дані, побудувати апроксимуючий поліном методом найменших квадратів, знайти його коефіцієнти та обчислити значення в заданій точці. Pascal, Python, JavaScript чи C++ — вибір за вами. Так ви не лише перевірите розуміння алгоритму, а й побачите, як математичні обчислення перетворюються на готову програмну реалізацію.

Блок-схема алгоритму обчислення значення таблично заданої функції використовуючи метод найменших квадратів

4 коментарів

  1. Объясните, что за параметры m и n ?
    Для тех людей, у кого плохо с высшей математикой

  2. Шановний Nik, тут все доволі просто: n – це кількість точок в яких значення функції відомі (отримані в результеті наукового чи інженерного експеременту) і m – степінь многочлена за допомогою якого здійснюється апроксимація функції.

  3. На сколько я понял, если я имею, к примеру, два вектора длинной в 10 элементов (Реализую алгоритм в программе, длина вектора = количество элементов в массиве, думаю поняли 🙂 ), то n это количество элементов в векторе, в этом случае n = 10, а m это самый высший степень в векторе, верно?
    Спасибо большое за ответ <3

  4. Не зовсім так Nik. Давайте почнемо з наступного означення: апроксимація (наближення) – це заміна заданої функції наближеною (апроксимуючою) функцією так, щоб відхилення в заданому діапазоні зміни х було мінімальним.

    Зазначимо, що вибір апроксимуючої функцій – це окрема задача, яка часто може бути вирішена методом проб і послідовних наближень. У цьому випадку вихідні дані, представляють в графічній формі (у вигляді сімейства точок або кривих) і зіставляють їх з сімейством графіків ряду типових функцій, які використовуються, зазвичай, для цілей апроксимації. Однак, у багатьох випадках, в якості наближеної функції вибирають степеневий поліном Pm(x).

    Так ось, параметр m – це степінь (порядок) даного полінома (значення m не повинно перевищувати n).

Коментарі закриті.