Интерполяционный полином Лагранжа позволяет построить полиномиальное приближение функции по её известным значениям в заданных узлах интерполяции. В самих узлах значения полинома точно совпадают с заданными значениями функции, а между ними полином используют для её приближённого восстановления. Рассмотрим принцип его построения для неравноотстоящих узлов, а затем применим полученную формулу на примерах.
Неравноотстоящие Узлы Интерполяции: Условие и Постановка Задачи
Пусть на отрезке \( [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 \) различаются, узлы называют неравноотстоящими.
Необходимо построить полином \( 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++ или другом.
Программа должна считывать узлы интерполяции, значения функции и заданную точку, а затем вычислять приближённое значение по формуле Лагранжа. Так вы сможете не только проверить работу метода на различных наборах данных, но и увидеть, как последовательность математических вычислений превращается в программный код.
