stringtranslate.com

Линейная интерполяция

Учитывая две красные точки, синяя линия представляет собой линейный интерполянт между точками, а значение y в точке x может быть найдено с помощью линейной интерполяции.

В математике линейная интерполяция — это метод подгонки кривой с использованием линейных полиномов для построения новых точек данных в пределах дискретного набора известных точек данных.

Линейная интерполяция между двумя известными точками

В этой геометрической визуализации значение в зеленом круге, умноженное на горизонтальное расстояние между красным и синим кругами, равно сумме значения в красном круге, умноженного на горизонтальное расстояние между зеленым и синим кругами, и значения в синем круге, умноженного на горизонтальное расстояние между зеленым и красным кругами.

Если две известные точки заданы координатами и , линейный интерполянт — это прямая линия между этими точками. Для значения в интервале значение вдоль прямой линии задается уравнением наклонов , которое может быть получено геометрически из рисунка справа. Это особый случай полиномиальной интерполяции с .

Решая это уравнение относительно , ​​которое является неизвестным значением при , получаем , что является формулой линейной интерполяции в интервале . За пределами этого интервала формула идентична линейной экстраполяции .

Эту формулу можно также понимать как взвешенное среднее. Веса обратно пропорциональны расстоянию от конечных точек до неизвестной точки; более близкая точка оказывает большее влияние, чем более дальняя. Таким образом, веса равны и , которые являются нормализованными расстояниями между неизвестной точкой и каждой из конечных точек. Поскольку их сумма равна 1, то получается формула для линейной интерполяции, приведенная выше.

Интерполяция набора данных

Линейная интерполяция набора данных (красные точки) состоит из частей линейных интерполянтов (синие линии).

Линейная интерполяция на наборе точек данных ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n , y n ) определяется как кусочно-линейная , полученная в результате конкатенации линейных сегментных интерполянтов между каждой парой точек данных. Это приводит к непрерывной кривой с разрывной производной (в общем случае), таким образом, класса дифференцируемости .

Линейная интерполяция как приближение

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

С помощью теоремы Ролля можно доказать , что если f имеет непрерывную вторую производную, то ошибка ограничена величиной

То есть, аппроксимация между двумя точками заданной функции ухудшается со второй производной аппроксимируемой функции. Это также интуитивно верно: чем «кривее» функция, тем хуже становятся аппроксимации, сделанные с помощью простой линейной интерполяции.

История и применение

Линейная интерполяция использовалась с древности для заполнения пробелов в таблицах. Предположим, что у вас есть таблица, в которой указано население какой-то страны в 1970, 1980, 1990 и 2000 годах, и вы хотите оценить численность населения в 1994 году. Линейная интерполяция — простой способ сделать это. Считается, что она использовалась в империи Селевкидов (последние три столетия до нашей эры) и греческим астрономом и математиком Гиппархом (второй век до нашей эры). Описание линейной интерполяции можно найти в древнекитайском математическом тексте под названием «Девять глав о математическом искусстве» (九章算術), [1] датируемом периодом с 200 г. до н. э. по 100 г. н. э. и « Альмагесте» (II век н. э.) Птолемея .

Основная операция линейной интерполяции между двумя значениями обычно используется в компьютерной графике . На жаргоне этой области ее иногда называют lerp (от linear int erp olation). Термин может использоваться как глагол или существительное для операции. например, « Алгоритм Брезенхэма lerp инкрементально между двумя конечными точками линии».

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

Расширения

Сравнение линейной и билинейной интерполяции некоторых 1- и 2-мерных интерполяций.
Черные и красные / желтые / зеленые / синие точки соответствуют интерполированной точке и соседним образцам соответственно.
Их высоты над землей соответствуют их значениям.

Точность

Если функции C 0 недостаточно, например, если известно, что процесс, создавший точки данных, более гладкий, чем C 0 , то обычно линейную интерполяцию заменяют сплайн-интерполяцией или, в некоторых случаях, полиномиальной интерполяцией .

Многомерный

Линейная интерполяция, описанная здесь, предназначена для точек данных в одном пространственном измерении. Для двух пространственных измерений расширение линейной интерполяции называется билинейной интерполяцией , а в трех измерениях — трилинейной интерполяцией . Обратите внимание, однако, что эти интерполянты больше не являются линейными функциями пространственных координат, а скорее произведениями линейных функций; это иллюстрируется явно нелинейным примером билинейной интерполяции на рисунке ниже. Другие расширения линейной интерполяции могут применяться к другим видам сеток , таким как треугольные и тетраэдральные сетки, включая поверхности Безье . Они могут быть определены как действительно более многомерные кусочно-линейные функции (см. второй рисунок ниже).

Пример билинейной интерполяции на единичном квадрате со значениями z 0, 1, 1 и 0,5, как указано. Интерполированные значения между ними представлены цветом.
Кусочно-линейная функция в двух измерениях (вверху) и выпуклые многогранники, на которых она линейна (внизу)

Поддержка языков программирования

Во многих библиотеках и языках шейдеров есть вспомогательная функция "lerp" (в GLSL известная как mix ), возвращающая интерполяцию между двумя входами (v0, v1)для параметра tв замкнутом единичном интервале [0, 1]. Сигнатуры между функциями lerp по-разному реализованы в формах (v0, v1, t)и (t, v0, v1).

// Неточный метод, который не гарантирует v = v1 при t = 1 из-за арифметической ошибки с плавающей точкой.// Этот метод является монотонным. Эта форма может использоваться, когда оборудование имеет собственную объединенную инструкцию умножения-сложения.float lerp ( float v0 , float v1 , float t ) {        вернуть v0 + t * ( v1 - v0 );       }// Точный метод, гарантирующий v = v1 при t = 1. Этот метод монотонен только когда v0 * v1 < 0.// Lerping между одинаковыми значениями может не дать одинаковое значениеfloat lerp ( float v0 , float v1 , float t ) {        возврат ( 1 - t ) * v0 + t * v1 ;         }

Эта функция lerp обычно используется для альфа-смешивания (параметр « t » — это «альфа-значение»), и формула может быть расширена для параллельного смешивания нескольких компонентов вектора (например, пространственных осей x , y , z или цветовых компонентов r , g , b ).

Смотрите также

Ссылки

  1. Джозеф Нидхэм (1 января 1959 г.). Наука и цивилизация в Китае: Том 3, Математика и науки о небе и земле. Cambridge University Press. С. 147–. ISBN 978-0-521-05801-8.

Внешние ссылки