bilim.techО проекте

Интерполяция

Метршток показал 100 см, а в таблице бака есть только 80 и 120. Тащи точки таблицы и сравни три способа найти значение между строками: отрезок, многочлен и сплайн.

01 Что это такое

Интерполяция находит значение между строками таблицы.

В паспорте насоса, в калибровке бака, в таблице вязкости масла данные даны с шагом: 40 см, 80 см, 120 см. А метршток показал 100 см. Сколько в баке литров? Нужно провести через табличные точки линию и снять с нее ответ. Можно соединить соседние точки отрезками, можно провести один гладкий многочлен через все точки, можно склеить гладкую кривую из кусочков. Ответы будут разными, и важно понимать, какой способ где врет.

h, смV, л00401 790804 6901207 87016010 78020012 570100?≈ 6 280 л100200 смобъем
Между строками 80 и 120 см проводим отрезок и читаем объем при 100 см. Пунктир: настоящая кривая бака, отрезок от нее почти не отличается.
xₖ, yₖ
Узлы таблицы. Известные пары значений: уровень и объем, температура и вязкость. Номер k идет от 0 до n.
x
Точка между узлами. Значение, для которого в таблице нет строки и ответ надо найти.
n
Степень многочлена. Через n + 1 точку проходит ровно один многочлен степени n. Через 2 точки прямая, через 3 парабола.
02 Опыт
Тащи точки таблицы. Смотри, какой способ ведет себя спокойно. РАСЧЕТ В РЕАЛЬНОМ ВРЕМЕНИ
ЧИСЛЕННЫЕ МЕТОДЫ

Интерполяция

Рис. 8.3

ТАБЛИЦА
Линейная интерполяция
Многочлен Лагранжа
Кубический сплайн

ⓘ Бак: горизонтальный цилиндр диаметром 2 м и длиной 4 м, объем считается по площади сегмента круга. Вязкость: масло ISO VG46, 46 сСт при 40 °C и 6,8 сСт при 100 °C, промежуточные значения по формуле Вальтера. Насос: условная характеристика H = 52 − 0,02Q − 0,0016Q². Сплайн естественный: на концах таблицы кривизна равна нулю.

03 Формулы по буквам

Отрезок, многочлен и сплайн

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

Что между двумя соседними строками?

y = y₀ + (y₁ − y₀) · x − x₀x₁ − x₀

Берем две ближайшие строки и проводим между ними прямую. Дробь справа показывает, какую долю пути от x₀ до x₁ мы прошли. Ту же долю проходит и y.

x₀, y₀
строка таблицы слева от x
x₁, y₁
строка таблицы справа от x
доля
(x − x₀) / (x₁ − x₀), от 0 до 1

Как провести одну кривую через все точки?

L(x) = Σ yₖ · ℓₖ(x), ℓₖ(x) = Πj≠k x − xⱼxₖ − xⱼ

Для каждого узла строим вспомогательный многочлен ℓₖ: он равен 1 в своем узле и 0 во всех остальных. Умножаем его на yₖ и складываем. В каждом узле выживает ровно одно слагаемое, поэтому кривая проходит через все точки.

ℓₖ(x)
базисный многочлен узла k
Π
произведение дробей по всем j, кроме j = k
Σ
сумма по всем узлам k от 0 до n

Как сделать гладко и без раскачки?

S(x) = aᵢ + bᵢ(x − xᵢ) + cᵢ(x − xᵢ)² + dᵢ(x − xᵢ)³

На каждом промежутке свой кубический многочлен. Их склеивают так, чтобы в узлах совпадали значение, наклон и кривизна. Как гибкая линейка, которую чертежник прижимал гвоздиками к точкам: отсюда и название, spline значит лекало.

i
номер промежутка между узлами xᵢ и xᵢ₊₁
aᵢ … dᵢ
коэффициенты куска, их находят из условий склейки
Mᵢ
кривизна (вторая производная) в узле; на концах берут 0

Почему многочлен по многим точкам раскачивается

Базисный многочлен ℓₖ обязан быть равен нулю во всех чужих узлах. Если узлов 11, у него 10 корней, и между ними он вынужден колебаться. У середины таблицы колебания маленькие, а у краев, где с одной стороны узлов уже нет, их ничто не сдерживает, и размах растет. Рисунок справа показывает три базисных многочлена для узлов 0, 1, 2: каждый равен 1 в своем узле и 0 в двух других.

В сумме L(x) = Σ yₖ · ℓₖ(x) большие колебания отдельных слагаемых должны погасить друг друга. Пока точки лежат на гладкой кривой, это почти получается. Но небольшой сдвиг одной точки, ошибка замера или округление, сразу дает волну у краев. Это и есть эффект Рунге.

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

2 точки
прямая, это линейная интерполяция
3 точки
парабола, хорошо для плавных паспортных кривых
много точек
кусочно: ломаная или сплайн, но не один многочлен
за краем таблицы
это уже экстраполяция, любой способ может сильно ошибиться
10x = 0ℓ₀x = 1ℓ₁x = 2ℓ₂L(x) = y₀·ℓ₀ + y₁·ℓ₁ + y₂·ℓ₂
Каждый ℓₖ работает как переключатель: в своем узле 1, в чужих 0. Между узлами он изгибается, и чем больше узлов, тем сильнее.
04 Где и зачем это применяют

Везде, где данные даны таблицей

Допущения модели+

Значения в таблицах точные, без ошибки замера. Если замеры шумят, проводить кривую точно через точки плохо: она будет повторять шум. Тогда кривую подбирают так, чтобы она шла рядом с точками, а не через них, см. тему «Метод наименьших квадратов». Строки таблицы в опыте сначала идут с равным шагом; при перетаскивании шаг становится неравным, формулы работают и так. Значения считаются только внутри таблицы: за ее краями кривые не продолжаются.

Еще в направлении «Математика»

Все темы направления «Математика» →