Интерполяционный Полином Лагранжа: Теория и Примеры для Неравноотстоящих Узлов

Интерполяционный полином Лагранжа позволяет построить полиномиальное приближение функции по её известным значениям в заданных узлах интерполяции. В самих узлах значения полинома точно совпадают с заданными значениями функции, а между ними полином используют для её приближённого восстановления. Рассмотрим принцип его построения для неравноотстоящих узлов, а затем применим полученную формулу на примерах.

Неравноотстоящие Узлы Интерполяции: Условие и Постановка Задачи

Пусть на отрезке \( [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.
\]

Что Изучать Дальше: Темы для Продолжения

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

  1. Метод наименьших квадратов: Приближение функции по табличным данным — Узнайте, как построить приближённую функцию по набору данных так, чтобы суммарное отклонение вычисленных значений от заданных было минимальным.
  2. Линейная интерполяция: Вычисление промежуточных значений функции — Рассмотрите, как по двум соседним табличным значениям просто и быстро оценить значение функции внутри заданного промежутка.
  3. Квадратичная интерполяция: Приближение функции по трём узлам — Узнайте, как использование квадратичного полинома и нескольких соседних узлов позволяет точнее оценивать промежуточные значения функции.

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

Увлекаетесь программированием? Тогда попробуйте превратить знания об интерполяционном полиноме Лагранжа в собственный программный код. Воспользуйтесь приведённой блок-схемой и реализуйте представленный в ней алгоритм на любом удобном для вас языке — Pascal, Python, JavaScript, C++ или другом.

Программа должна считывать узлы интерполяции, значения функции и заданную точку, а затем вычислять приближённое значение по формуле Лагранжа. Так вы сможете не только проверить работу метода на различных наборах данных, но и увидеть, как последовательность математических вычислений превращается в программный код.

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