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

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

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

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

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

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