Линейная интерполяция
Линейная интерполяция — это метод приближённого нахождения промежуточных значений функции по известным значениям в двух крайних точках, основанный на предположении, что на заданном отрезке функция изменяется линейно. Является простейшим и наиболее распространённым видом интерполяции, широко применяется в численных методах, компьютерной графике, обработке сигналов, инженерных расчётах и статистическом анализе.
Математическое определение
Пусть известны значения функции \( f(x) \) в двух точках \( (x_0, y_0) \) и \( (x_1, y_1) \), где \( y_0 = f(x_0) \), \( y_1 = f(x_1) \). Линейная интерполяция предполагает, что на отрезке \( [x_0, x_1] \) функция \( f(x) \) аппроксимируется прямой линией, проходящей через эти точки. Тогда значение функции в произвольной точке \( x \in [x_0, x_1] \) вычисляется по формуле:
\[ f(x) \approx y_0 + \frac{y_1 - y_0}{x_1 - x_0} (x - x_0) \]
Эта формула представляет собой уравнение прямой в форме с угловым коэффициентом. Выражение \( \frac{y_1 - y_0}{x_1 - x_0} \) — это тангенс угла наклона прямой (скорость изменения функции). В более симметричной форме, часто используемой в компьютерных алгоритмах, формула записывается через параметр \( t \in [0, 1] \):
\[ f(x) = (1 - t) y_0 + t y_1 \]
где \( t = \frac{x - x_0}{x_1 - x_0} \). Такая запись называется линейной интерполяцией (LERP) и является базовой операцией в трёхмерной графике и анимации.
Геометрическая интерпретация
Геометрически линейная интерполяция означает проведение прямой линии между двумя известными точками на графике. Искомое значение функции в точке \( x \) лежит на этой прямой. Погрешность метода тем меньше, чем ближе истинная функция на отрезке \( [x_0, x_1] \) к линейной. Если функция является строго линейной, то интерполяция даёт точное значение.
История
Понятие интерполяции восходит к древним цивилизациям. Вавилонские астрономы (II тысячелетие до н. э.) использовали линейную интерполяцию для предсказания положений планет, заполняя пробелы в таблицах наблюдений. В древнегреческой математике метод упоминается в работах Клавдия Птолемея (II век н. э.) в «Альмагесте» для вычисления синусов и дуг.
В эпоху Возрождения линейная интерполяция активно применялась в навигации и картографии. С развитием численного анализа в XVII—XVIII веках (работы Исаака Ньютона, Готфрида Лейбница, Леонарда Эйлера) были разработаны более сложные методы (полиномиальная интерполяция, сплайны), однако линейная интерполяция осталась базовым инструментом из-за своей простоты и вычислительной эффективности.
Погрешность и ограничения
Линейная интерполяция даёт точный результат только для линейных функций. Для нелинейных функций возникает погрешность, величина которой зависит от кривизны функции на отрезке и длины интервала.
Оценка погрешности
Если функция \( f(x) \) дважды непрерывно дифференцируема на отрезке \( [x_0, x_1] \), то погрешность \( R(x) \) линейной интерполяции в точке \( x \) может быть оценена по формуле:
\[ |R(x)| \leq \frac{M_2}{2} \max_{x \in [x_0, x_1]} |(x - x_0)(x - x_1)| \]
где \( M_2 = \max_{x \in [x_0, x_1]} |f''(x)| \) — максимальное значение второй производной (кривизны) на отрезке. Максимальная погрешность достигается в середине отрезка и равна \( \frac{M_2}{8} (x_1 - x_0)^2 \).
Из этого следует, что:
- Погрешность пропорциональна квадрату длины интервала. Для уменьшения погрешности необходимо уменьшать шаг между узлами.
- Погрешность пропорциональна кривизне функции. Для функций с большими изгибами (например, синуса или экспоненты) линейная интерполяция может давать значительные ошибки.
Ограничения
- Линейная интерполяция не является гладкой: в точках соединения отрезков производная терпит разрыв (если используется кусочно-линейная интерполяция).
- Метод не подходит для экстраполяции (выхода за пределы отрезка \( [x_0, x_1] \)), так как линейная аппроксимация за пределами известных точек может быстро расходиться с истинным значением.
- Для функций с резкими пиками или разрывами линейная интерполяция даёт сглаженное, но неверное представление.
Применение
Численные методы и вычислительная математика
Линейная интерполяция является основой для построения таблиц функций (например, тригонометрических, логарифмических, статистических). В численном интегрировании используется метод трапеций, который основан на кусочно-линейной аппроксимации подынтегральной функции. В численном решении дифференциальных уравнений (метод Эйлера) используется линейная аппроксимация производной.
Компьютерная графика и анимация
В трёхмерной графике операция LERP (Linear Interpolation) используется для:
- Плавного перехода между двумя значениями (например, цветом, положением, масштабом) во времени.
- Расчёта текстурных координат (UV) при растеризации треугольников.
- Интерполяции нормалей и векторов.
- Создания анимации движения (tweening) между ключевыми кадрами.
Обработка сигналов и аудио
В цифровой обработке сигналов линейная интерполяция применяется для:
- Изменения частоты дискретизации (resampling) — пересчёта отсчётов сигнала на новую сетку времени.
- Восстановления аналогового сигнала по цифровым отсчётам (в простейших ЦАП).
- Сглаживания данных при визуализации временных рядов.
Инженерные расчёты
- Интерполяция табличных данных (например, свойств материалов, термодинамических величин, прочностных характеристик).
- Построение графиков по экспериментальным точкам.
- Приближённое решение уравнений (метод хорд).
Статистика и анализ данных
- Восстановление пропущенных значений в временных рядах (линейная интерполяция по соседним наблюдениям).
- Сглаживание данных (например, при построении линии тренда).
- Калибровка измерительных приборов (построение линейной зависимости между показаниями и эталонными значениями).
Смежные методы
Полиномиальная интерполяция
Обобщение на случай \( n+1 \) точек: строится многочлен степени \( n \), проходящий через все точки. Даёт более точную аппроксимацию для гладких функций, но подвержен осцилляциям (феномен Рунге) при большом числе узлов.
Сплайн-интерполяция
Кусочно-полиномиальная интерполяция, где на каждом отрезке используется многочлен низкой степени (обычно кубический), а в узлах обеспечивается непрерывность первой и второй производной. Обеспечивает гладкость и высокую точность, но сложнее в реализации.
Билинейная интерполяция
Двумерное обобщение линейной интерполяции. Используется для интерполяции значений функции двух переменных (например, яркости пикселя в изображении) по четырём ближайшим точкам. Применяется в обработке изображений (масштабирование, поворот).
Трилинейная интерполяция
Трёхмерное обобщение, используемое в объёмной визуализации (например, в медицинской томографии) и текстурировании трёхмерных объектов.
Реализация в программировании
Линейная интерполяция реализуется крайне просто. Пример на языке Python:
```python def lerp(y0, y1, t): """Линейная интерполяция между y0 и y1 с параметром t (0 <= t <= 1)""" return (1 - t) y0 + t y1
def linear_interpolation(x, x0, y0, x1, y1): """Линейная интерполяция для произвольного x между x0 и x1""" t = (x - x0) / (x1 - x0) return lerp(y0, y1, t) ```
В графических библиотеках (OpenGL, DirectX, Unity, Unreal Engine) функция LERP встроена в аппаратное обеспечение и выполняется за один такт.
Интересные факты
- В компьютерной графике часто используется нормализованная линейная интерполяция (NLERP) для интерполяции кватернионов, хотя для точного вращения предпочтительнее сферическая линейная интерполяция (SLERP).
- В задачах машинного обучения линейная интерполяция используется для аугментации данных (например, в методе Mixup — смешивание изображений и их меток).
- В физике линейная интерполяция применяется в методе конечных разностей для аппроксимации производных.
Источники
- Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. — М.: Бином, 2008.
- Форсайт Дж., Малькольм М., Моулер К. Машинные методы математических вычислений. — М.: Мир, 1980.
- Ширли П., Маршнер С. Основы компьютерной графики. — М.: ДМК Пресс, 2018.
- Амосов А. А., Дубинский Ю. А., Копченова Н. В. Вычислительные методы для инженеров. — М.: Высшая школа, 1994.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →