Інтерполяційний Поліном Лагранжа: Теорія та Приклади для Нерівновіддалених Вузлів

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

Нерівновіддалені Вузли Інтерполяції: Умова та Постановка Задачі

Нехай на відрізку \( [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. \]

Що Вивчати Далі: Теми для Продовження

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

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

Інтерполяційний Поліном Лагранжа: Від Блок-Схеми до Програмного Коду

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

Блок-схема алгоритму обчислення значення функції, у якому використовується інтерполяційний поліном Лагранжа