Інтерполяційний поліном Лагранжа дає змогу побудувати поліноміальне наближення функції за її відомими значеннями в заданих вузлах інтерполяції. У самих вузлах значення полінома точно збігаються із заданими значеннями функції, а між ними поліном використовують для її наближеного відтворення. Розглянемо принцип його побудови для нерівновіддалених вузлів, а потім застосуємо отриману формулу на прикладах.
Нерівновіддалені Вузли Інтерполяції: Умова та Постановка Задачі
Нехай на відрізку \( [a,b] \) задано \( n+1 \) попарно різних і впорядкованих вузлів інтерполяції:
\[ a\leq x_0<x_1<\dots<x_n\leq b. \]
Для кожного вузла відоме відповідне значення функції:
\[ f(x_0)=y_0,\quad f(x_1)=y_1,\quad\dots,\quad f(x_n)=y_n. \]
Відстань між двома сусідніми вузлами позначимо через
\[ h_i=x_{i+1}-x_i,\qquad i=0,1,\dots,n-1. \]
Якщо величини \( h_i \) не є однаковими для всіх \( i \), вузли називають нерівновіддаленими.
Необхідно побудувати поліном \( L_n(x) \) степеня не вище \( n \), який у кожному вузлі інтерполяції набуває відповідного заданого значення функції:
\[ L_n(x_i)=y_i,\qquad i=0,1,2,\dots,n. \]
Таким чином, графік шуканого полінома проходить через усі задані точки
\[ (x_0,y_0),\quad(x_1,y_1),\quad\dots,\quad(x_n,y_n). \]
Для \( n+1 \) попарно різних вузлів існує єдиний поліном степеня не вище \( n \), який задовольняє ці умови інтерполяції. Для його побудови скористаємося базисними поліномами Лагранжа.
Інтерполяційний Поліном Лагранжа: Побудова Через Базисні Поліноми
Поліном \( L_n(x) \) подамо як лінійну комбінацію відомих значень функції у вузлах інтерполяції:
\[ L_n(x)=\sum_{i=0}^{n}P_i(x)\cdot y_i, \]
де \( P_i(x) \) — базисні поліноми Лагранжа.
Кожний базисний поліном \( P_i(x) \) будують так, щоб у вузлі \( x_i \) він набував значення \( 1 \), а в усіх інших вузлах — значення \( 0 \):
\[ P_i(x_j)=\begin{cases}1, & i=j,\\0, & i\neq j.\end{cases} \]
Підставимо один із вузлів \( x_i \) у поліном \( L_n(x) \):
\[ L_n(x_i)=P_0(x_i)\cdot y_0+\dots+P_i(x_i)\cdot y_i+\dots+P_n(x_i)\cdot y_n=y_i. \]
Усі доданки, для яких індекс базисного полінома не збігається з індексом вузла, дорівнюють нулю. Залишається лише доданок \( P_i(x_i)\cdot y_i=y_i \), тому побудований поліном набуває необхідного значення в кожному вузлі.
Щоб забезпечити рівність \( P_i(x_j)=0 \) при \( j\neq i \), до базисного полінома включають множники, які обертаються в нуль у відповідних вузлах:
\[ P_i(x)=c_i\cdot(x-x_0)\cdot(x-x_1)\cdot\dots\cdot(x-x_{i-1})\cdot(x-x_{i+1})\cdot\dots\cdot(x-x_n), \]
де \( c_i \) — сталий коефіцієнт.
Множник \( x-x_i \) у цьому добутку відсутній, тому при \( x=x_i \) базисний поліном не обертається в нуль. Значення коефіцієнта \( c_i \) знайдемо з умови
\[ P_i(x_i)=1. \]
Підставивши \( x=x_i \), одержимо
\[ c_i\cdot(x_i-x_0)\cdot(x_i-x_1)\cdot\dots\cdot(x_i-x_{i-1})\cdot(x_i-x_{i+1})\cdot\dots\cdot(x_i-x_n)=1. \]
Звідси
\[ c_i=\frac{1}{(x_i-x_0)\cdot(x_i-x_1)\cdot\dots\cdot(x_i-x_{i-1})\cdot(x_i-x_{i+1})\cdot\dots\cdot(x_i-x_n)}. \]
Підставимо знайдений коефіцієнт у вираз для \( P_i(x) \). Отримаємо базисний поліном Лагранжа:
\[ P_i(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot\dots\cdot(x-x_{i-1})\cdot(x-x_{i+1})\cdot\dots\cdot(x-x_n)}{(x_i-x_0)\cdot(x_i-x_1)\cdot\dots\cdot(x_i-x_{i-1})\cdot(x_i-x_{i+1})\cdot\dots\cdot(x_i-x_n)}. \]
Оскільки вузли \( x_0,x_1,\dots,x_n \) попарно різні, для \( i\neq j \) виконується
\[ x_i-x_j\neq0. \]
Тому жоден із множників у знаменнику базисного полінома не дорівнює нулю.
Тепер підставимо отриманий вираз для \( P_i(x) \) у формулу для \( L_n(x) \). У результаті дістанемо загальний вигляд інтерполяційного полінома Лагранжа:
\[ L_n(x)=\sum_{i=0}^{n}\frac{(x-x_0)\cdot(x-x_1)\cdot\dots\cdot(x-x_{i-1})\cdot(x-x_{i+1})\cdot\dots\cdot(x-x_n)}{(x_i-x_0)\cdot(x_i-x_1)\cdot\dots\cdot(x_i-x_{i-1})\cdot(x_i-x_{i+1})\cdot\dots\cdot(x_i-x_n)}\cdot y_i. \]
Після побудови базисних поліномів \( P_i(x) \) їх значення разом із табличними значеннями \( y_i \) можна безпосередньо використати для обчислення \( L_n(x) \) у заданій точці.
Інтерполяційний Поліном Лагранжа: Практичне Застосування
Розглянемо, як за заданими табличними значеннями послідовно побудувати базисні поліноми та обчислити значення інтерполяційного полінома в заданій точці. Почнемо з трьох вузлів, а потім збільшимо їх кількість до чотирьох і п’яти.
Приклад 1. За наведеними табличними значеннями функції знайти наближене значення \( f(1.5) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 1 \) | \( 1 \) |
| \( 1 \) | \( 2 \) | \( 4 \) |
| \( 2 \) | \( 4 \) | \( 16 \) |
Відстані між сусідніми вузлами дорівнюють
\[ h_0=x_1-x_0=1,\qquad h_1=x_2-x_1=2. \]
Оскільки \( h_0\neq h_1 \), вузли є нерівновіддаленими.
Для трьох вузлів інтерполяційний поліном Лагранжа має вигляд
\[ L_2(x)=P_0(x)\cdot y_0+P_1(x)\cdot y_1+P_2(x)\cdot y_2. \]
Побудуємо перший базисний поліном:
\[ P_0(x)=\frac{(x-x_1)\cdot(x-x_2)}{(x_0-x_1)\cdot(x_0-x_2)}. \]
При \( x=1.5 \) одержимо
\[ P_0(1.5)=\frac{(1.5-2)\cdot(1.5-4)}{(1-2)\cdot(1-4)}=\frac{5}{12}\approx0.417. \]
Другий базисний поліном має вигляд
\[ P_1(x)=\frac{(x-x_0)\cdot(x-x_2)}{(x_1-x_0)\cdot(x_1-x_2)}. \]
Тоді
\[ P_1(1.5)=\frac{(1.5-1)\cdot(1.5-4)}{(2-1)\cdot(2-4)}=\frac{5}{8}\approx0.625. \]
Для третього базисного полінома маємо
\[ P_2(x)=\frac{(x-x_0)\cdot(x-x_1)}{(x_2-x_0)\cdot(x_2-x_1)}. \]
Підставимо \( x=1.5 \):
\[ P_2(1.5)=\frac{(1.5-1)\cdot(1.5-2)}{(4-1)\cdot(4-2)}=-\frac{1}{24}\approx-0.042. \]
Підставимо знайдені значення базисних поліномів:
\[ L_2(1.5)=\frac{5}{12}\cdot1+\frac{5}{8}\cdot4-\frac{1}{24}\cdot16\approx2.25. \]
Отже,
\[ f(1.5)\approx2.25. \]
Приклад 2. За наведеними табличними значеннями функції знайти наближене значення \( f(2) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 0 \) | \( 0 \) |
| \( 1 \) | \( 1 \) | \( 1 \) |
| \( 2 \) | \( 3 \) | \( 27 \) |
| \( 3 \) | \( 4 \) | \( 64 \) |
Відстані між сусідніми вузлами:
\[ h_0=1,\qquad h_1=2,\qquad h_2=1. \]
Вузли є нерівновіддаленими.
Для чотирьох вузлів інтерполяційний поліном Лагранжа має вигляд
\[ L_3(x)=P_0(x)\cdot y_0+P_1(x)\cdot y_1+P_2(x)\cdot y_2+P_3(x)\cdot y_3. \]
Побудуємо перший базисний поліном:
\[ P_0(x)=\frac{(x-x_1)\cdot(x-x_2)\cdot(x-x_3)}{(x_0-x_1)\cdot(x_0-x_2)\cdot(x_0-x_3)}. \]
При \( x=2 \) одержимо
\[ P_0(2)=\frac{(2-1)\cdot(2-3)\cdot(2-4)}{(0-1)\cdot(0-3)\cdot(0-4)}=-\frac{1}{6}\approx-0.167. \]
Другий базисний поліном має вигляд
\[ P_1(x)=\frac{(x-x_0)\cdot(x-x_2)\cdot(x-x_3)}{(x_1-x_0)\cdot(x_1-x_2)\cdot(x_1-x_3)}. \]
Тоді
\[ P_1(2)=\frac{(2-0)\cdot(2-3)\cdot(2-4)}{(1-0)\cdot(1-3)\cdot(1-4)}=\frac{2}{3}\approx0.667. \]
Третій базисний поліном має вигляд
\[ P_2(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot(x-x_3)}{(x_2-x_0)\cdot(x_2-x_1)\cdot(x_2-x_3)}. \]
Підставимо \( x=2 \):
\[ P_2(2)=\frac{(2-0)\cdot(2-1)\cdot(2-4)}{(3-0)\cdot(3-1)\cdot(3-4)}=\frac{2}{3}\approx0.667. \]
Для четвертого базисного полінома маємо
\[ P_3(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot(x-x_2)}{(x_3-x_0)\cdot(x_3-x_1)\cdot(x_3-x_2)}. \]
Тоді
\[ P_3(2)=\frac{(2-0)\cdot(2-1)\cdot(2-3)}{(4-0)\cdot(4-1)\cdot(4-3)}=-\frac{1}{6}\approx-0.167. \]
Підставимо знайдені значення базисних поліномів:
\[ L_3(2)=-\frac{1}{6}\cdot0+\frac{2}{3}\cdot1+\frac{2}{3}\cdot27-\frac{1}{6}\cdot64=8. \]
Отже,
\[ f(2)\approx8. \]
Приклад 3. За наведеними табличними значеннями функції знайти наближене значення \( f(5.5) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 0 \) | \( 0 \) |
| \( 1 \) | \( 1 \) | \( 1 \) |
| \( 2 \) | \( 3 \) | \( 81 \) |
| \( 3 \) | \( 5 \) | \( 625 \) |
| \( 4 \) | \( 6 \) | \( 1296 \) |
Відстані між сусідніми вузлами:
\[ h_0=1,\qquad h_1=2,\qquad h_2=2,\qquad h_3=1. \]
Вузли є нерівновіддаленими.
Для п’яти вузлів інтерполяційний поліном Лагранжа має вигляд
\[ L_4(x)=P_0(x)\cdot y_0+P_1(x)\cdot y_1+P_2(x)\cdot y_2+P_3(x)\cdot y_3+P_4(x)\cdot y_4. \]
Побудуємо перший базисний поліном:
\[ P_0(x)=\frac{(x-x_1)\cdot(x-x_2)\cdot(x-x_3)\cdot(x-x_4)}{(x_0-x_1)\cdot(x_0-x_2)\cdot(x_0-x_3)\cdot(x_0-x_4)}. \]
При \( x=5.5 \) одержимо
\[ P_0(5.5)=\frac{(5.5-1)\cdot(5.5-3)\cdot(5.5-5)\cdot(5.5-6)}{(0-1)\cdot(0-3)\cdot(0-5)\cdot(0-6)}=-\frac{1}{32}\approx-0.031. \]
Другий базисний поліном має вигляд
\[ P_1(x)=\frac{(x-x_0)\cdot(x-x_2)\cdot(x-x_3)\cdot(x-x_4)}{(x_1-x_0)\cdot(x_1-x_2)\cdot(x_1-x_3)\cdot(x_1-x_4)}. \]
Тоді
\[ P_1(5.5)=\frac{(5.5-0)\cdot(5.5-3)\cdot(5.5-5)\cdot(5.5-6)}{(1-0)\cdot(1-3)\cdot(1-5)\cdot(1-6)}=\frac{11}{128}\approx0.086. \]
Третій базисний поліном має вигляд
\[ P_2(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot(x-x_3)\cdot(x-x_4)}{(x_2-x_0)\cdot(x_2-x_1)\cdot(x_2-x_3)\cdot(x_2-x_4)}. \]
При \( x=5.5 \) маємо
\[ P_2(5.5)=\frac{(5.5-0)\cdot(5.5-1)\cdot(5.5-5)\cdot(5.5-6)}{(3-0)\cdot(3-1)\cdot(3-5)\cdot(3-6)}=-\frac{11}{64}\approx-0.172. \]
Для четвертого базисного полінома одержимо
\[ P_3(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot(x-x_2)\cdot(x-x_4)}{(x_3-x_0)\cdot(x_3-x_1)\cdot(x_3-x_2)\cdot(x_3-x_4)}. \]
Тоді
\[ P_3(5.5)=\frac{(5.5-0)\cdot(5.5-1)\cdot(5.5-3)\cdot(5.5-6)}{(5-0)\cdot(5-1)\cdot(5-3)\cdot(5-6)}=\frac{99}{128}\approx0.773. \]
П’ятий базисний поліном має вигляд
\[ P_4(x)=\frac{(x-x_0)\cdot(x-x_1)\cdot(x-x_2)\cdot(x-x_3)}{(x_4-x_0)\cdot(x_4-x_1)\cdot(x_4-x_2)\cdot(x_4-x_3)}. \]
Підставимо \( x=5.5 \):
\[ P_4(5.5)=\frac{(5.5-0)\cdot(5.5-1)\cdot(5.5-3)\cdot(5.5-5)}{(6-0)\cdot(6-1)\cdot(6-3)\cdot(6-5)}=\frac{11}{32}\approx0.344. \]
Підставимо знайдені значення базисних поліномів:
\[ L_4(5.5)=-\frac{1}{32}\cdot0+\frac{11}{128}\cdot1-\frac{11}{64}\cdot81+\frac{99}{128}\cdot625+\frac{11}{32}\cdot1296\approx915.063. \]
Отже,
\[ f(5.5)\approx915.063. \]
Що Вивчати Далі: Теми для Продовження
Після знайомства з поліномом Лагранжа варто розглянути інші способи наближення таблично заданих функцій. Вони допоможуть порівняти різні підходи та зрозуміти, який із них краще відповідає конкретній задачі.
- Метод найменших квадратів: Наближення функції за табличними даними — Дізнайтеся, як побудувати наближену функцію за набором даних так, щоб сумарне відхилення обчислених значень від заданих було мінімальним.
- Лінійна інтерполяція: Обчислення проміжних значень функції — Розгляньте, як за двома сусідніми табличними значеннями просто й швидко оцінити значення функції всередині заданого проміжку.
- Квадратична інтерполяція: Наближення функції за трьома вузлами — Дізнайтеся, як використання квадратичного полінома та кількох сусідніх вузлів дає змогу точніше оцінювати проміжні значення функції.
Інтерполяційний Поліном Лагранжа: Від Блок-Схеми до Програмного Коду
Захоплюєтеся програмуванням? Тоді спробуйте перетворити знання про інтерполяційний поліном Лагранжа на власний програмний код. Скористайтеся наведеною блок-схемою та реалізуйте поданий у ній алгоритм мовою, яка вам подобається найбільше — Pascal, Python, JavaScript, C++ чи будь-якою іншою. Програма має зчитати вузли інтерполяції, значення функції та задану точку, а потім обчислити наближене значення за формулою Лагранжа. Так ви зможете не лише перевірити роботу методу на різних наборах даних, а й побачити, як послідовність математичних обчислень перетворюється на програмний код.
