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