Линейная интерполяция — один из самых простых способов приближённого определения значений функции по известным табличным данным. Её используют, когда необходимо найти значение функции между двумя соседними узлами без построения интерполяционного полинома высокой степени. Рассмотрим принцип построения линейного интерполяционного полинома, а затем применим его на практических примерах.
Линейная Интерполяция: Идея Приближения Между Узлами
Пусть функция задана таблицей значений в узлах
\[
(x_0,y_0),\quad(x_1,y_1),\quad\dots,\quad(x_n,y_n),
\]
причём значения аргумента упорядочены:
\[
x_0<x_1<\dots<x_n.
\]
Такой порядок позволяет однозначно определять соседние узлы и соответствующие промежутки между ними. При этом узлы не обязательно должны быть равноотстоящими: для линейной интерполяции достаточно знать координаты двух соседних точек с различными значениями аргумента.
Если количество узлов велико, построение одного интерполяционного полинома для всего промежутка может быть неудобным, поскольку его степень возрастает вместе с количеством заданных точек. Более простой подход заключается в том, чтобы рассматривать каждую пару соседних узлов отдельно.
Точки \( (x_i,y_i) \) и \( (x_{i+1},y_{i+1}) \) соединяют отрезком прямой. На промежутке между этими узлами заданную функцию приближённо заменяют этой прямой.
Если выполнить такое построение для всех соседних пар узлов, получим ломаную линию, вершины которой совпадают с заданными точками. Такой способ приближения называют кусочно-линейной интерполяцией.

На каждом отдельном промежутке
\[
x_i\leq x\leq x_{i+1}
\]
приближение задаётся полиномом первой степени
\[
F(x)=a\cdot x+b.
\]
Для разных промежутков коэффициенты \( a \) и \( b \) могут иметь разные значения, поскольку каждая прямая строится по своей паре соседних узлов. Таким образом, вместо одного полинома высокой степени используют набор линейных полиномов, каждый из которых описывает функцию на соответствующем промежутке.
Линейный Интерполяционный Полином: Определение Коэффициентов
Чтобы построить линейный полином для промежутка между узлами \( (x_i,y_i) \) и \( (x_{i+1},y_{i+1}) \), необходимо определить его коэффициенты \( a \) и \( b \):
\[
F(x)=a\cdot x+b.
\]
Поскольку прямая должна проходить через оба заданных узла, получаем условия
\[
y_i=a\cdot x_i+b,\qquad y_{i+1}=a\cdot x_{i+1}+b.
\]
Поэтому коэффициенты определяются из системы двух линейных уравнений
\[
\begin{cases}
y_i=a\cdot x_i+b,\\
y_{i+1}=a\cdot x_{i+1}+b.
\end{cases}
\]
Вычитая первое уравнение из второго, получаем
\[
y_{i+1}-y_i=a\cdot(x_{i+1}-x_i).
\]
Отсюда
\[
a=\frac{y_{i+1}-y_i}{x_{i+1}-x_i}.
\]
Коэффициент \( a \) определяет наклон прямой и показывает, как изменяется значение линейного полинома при изменении аргумента на единицу. Поскольку \( x_{i+1}\neq x_i \), знаменатель в этой формуле не равен нулю.

После нахождения \( a \) коэффициент \( b \) определяем из первого уравнения:
\[
b=y_i-a\cdot x_i.
\]
Подставив полученные коэффициенты в уравнение прямой и выполнив преобразования, получаем линейный интерполяционный полином:
\[
F(x)=y_i+\frac{y_{i+1}-y_i}{x_{i+1}-x_i}\cdot(x-x_i),\qquad x_i\leq x\leq x_{i+1}.
\]
Эта формула позволяет сразу находить приближённое значение функции по координатам двух соседних узлов. Если подставить \( x=x_i \), получим
\[
F(x_i)=y_i,
\]
а при \( x=x_{i+1} \)
\[
F(x_{i+1})=y_{i+1}.
\]
Таким образом, в самих узлах интерполяционный полином точно воспроизводит заданные значения функции. Приближёнными являются значения, которые определяются для аргументов, расположенных между соседними узлами.
Линейная Интерполяция: Пошаговые Примеры
Перейдём к практическому применению линейной интерполяции для табличных данных с неравноотстоящими узлами. В каждом случае определим соседние узлы, между которыми находится заданное значение аргумента, и используем их для вычисления приближённого значения функции.
Пример 1. По приведённым табличным значениям функции найти приближённое значение \( f(2.1) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 0 \) | \( 2 \) |
| \( 1 \) | \( 1.5 \) | \( 5 \) |
| \( 2 \) | \( 3.2 \) | \( 9 \) |
Сначала определим, между какими соседними узлами находится заданное значение аргумента:
\[
1.5<2.1<3.2.
\]
Следовательно, для интерполяции используем точки
\[
(x_i,y_i)=(1.5,5)
\]
и
\[
(x_{i+1},y_{i+1})=(3.2,9).
\]
Запишем формулу линейного интерполяционного полинома:
\[
F(x)=y_i+\frac{y_{i+1}-y_i}{x_{i+1}-x_i}\cdot(x-x_i).
\]
Подставим координаты выбранных узлов:
\[
F(x)=5+\frac{9-5}{3.2-1.5}\cdot(x-1.5).
\]
Для \( x=2.1 \) получаем
\[
F(2.1)=5+\frac{9-5}{3.2-1.5}\cdot(2.1-1.5).
\]
Вычислим необходимые разности:
\[
9-5=4,\qquad 3.2-1.5=1.7,\qquad 2.1-1.5=0.6.
\]
Тогда
\[
F(2.1)=5+\frac{4}{1.7}\cdot0.6\approx5+1.412=6.412.
\]
Следовательно,
\[
f(2.1)\approx6.412.
\]
Пример 2. По приведённым табличным значениям функции найти приближённое значение \( f(5.2) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( 1 \) | \( 3 \) |
| \( 1 \) | \( 2.4 \) | \( 6.5 \) |
| \( 2 \) | \( 4 \) | \( 9 \) |
| \( 3 \) | \( 7 \) | \( 15 \) |
Определим, между какими соседними узлами расположено значение \( x=5.2 \):
\[
4<5.2<7.
\]
Поэтому для интерполяции используем точки
\[
(x_i,y_i)=(4,9)
\]
и
\[
(x_{i+1},y_{i+1})=(7,15).
\]
Подставим координаты выбранных узлов в формулу линейной интерполяции:
\[
F(x)=9+\frac{15-9}{7-4}\cdot(x-4).
\]
Для \( x=5.2 \) получаем
\[
F(5.2)=9+\frac{15-9}{7-4}\cdot(5.2-4).
\]
Вычислим необходимые разности:
\[
15-9=6,\qquad 7-4=3,\qquad 5.2-4=1.2.
\]
Тогда
\[
F(5.2)=9+\frac{6}{3}\cdot1.2=9+2.4=11.4.
\]
Следовательно,
\[
f(5.2)\approx11.4.
\]
Пример 3. По приведённым табличным значениям функции найти приближённое значение \( f(0.7) \)
| \( i \) | \( x_i \) | \( y_i \) |
|---|---|---|
| \( 0 \) | \( -2 \) | \( 4 \) |
| \( 1 \) | \( -0.5 \) | \( 1.5 \) |
| \( 2 \) | \( 1.8 \) | \( 5.2 \) |
| \( 3 \) | \( 3 \) | \( 8 \) |
| \( 4 \) | \( 6.5 \) | \( 20 \) |
Определим, между какими соседними узлами находится значение \( x=0.7 \):
\[
-0.5<0.7<1.8.
\]
Следовательно, используем точки
\[
(x_i,y_i)=(-0.5,1.5)
\]
и
\[
(x_{i+1},y_{i+1})=(1.8,5.2).
\]
Подставим координаты выбранных узлов в формулу линейной интерполяции:
\[
F(x)=1.5+\frac{5.2-1.5}{1.8-(-0.5)}\cdot(x-(-0.5)).
\]
Для \( x=0.7 \) получаем
\[
F(0.7)=1.5+\frac{5.2-1.5}{1.8-(-0.5)}\cdot(0.7-(-0.5)).
\]
Вычислим необходимые разности:
\[
5.2-1.5=3.7,\qquad 1.8-(-0.5)=2.3,\qquad 0.7-(-0.5)=1.2.
\]
Тогда
\[
F(0.7)=1.5+\frac{3.7}{2.3}\cdot1.2.
\]
Выполним вычисления:
\[
F(0.7)\approx1.5+1.93=3.43.
\]
Следовательно,
\[
f(0.7)\approx3.43.
\]
Другие Методы Интерполяции: Что Стоит Рассмотреть Дальше
Линейная интерполяция хорошо показывает основную идею приближения между соседними узлами. Далее стоит познакомиться с методами, которые позволяют строить более сложные приближения для функций, заданных таблично.
- Квадратичная интерполяция: Приближение по трём узлам — В статье рассмотрим, как по трём соседним узлам построить квадратичный полином и найти промежуточное значение функции.
- Кубическая сплайн-интерполяция: Плавное приближение между узлами — Разберём, как кубические сплайны создают согласованное приближение на отдельных промежутках и помогают вычислять значения функции.
- Тригонометрическая интерполяция: Приближение периодических функций — Узнаем, как по табличным значениям построить тригонометрический полином для приближения периодических функций.
Линейная Интерполяция: От Блок-Схемы К Программному Коду
Если вам нравится программирование, попробуйте превратить алгоритм метода линейной интерполяции в собственную программу. Используйте приведённую блок-схему: реализуйте ввод табличных данных, поиск промежутка, которому принадлежит заданное значение аргумента, и вычисление приближённого значения функции. Язык программирования можно выбрать самостоятельно — Pascal, Python, JavaScript, C++ или любой другой. Это хороший способ проверить, насколько понятным стал алгоритм, и увидеть, как математический метод работает уже в виде программного кода.
