Общие принципы использования
Обратите внимание: текущая версия Interpolations поддерживает вычисление интерполяции с использованием обращений по индексам [], но эта возможность в будущем будет упразднена. Мы настоятельно рекомендуем использовать вызовы функций (), как далее в этом разделе.
Для данного массива A типа AbstractArray создает «объект интерполяции» itp в виде
itp = interpolate(A, options...)
где параметры options... определяют требуемый тип интерполяции (подробное описание см. ниже). При таком синтаксисе предполагается, что выборки в A равномерно распределены.
Чтобы вычислить интерполяцию в позиции (x, y, ...), достаточно сделать следующее:
v = itp(x, y, ...)
Некоторые объекты интерполяции поддерживают вычисление градиента, который можно получить так:
g = Interpolations.gradient(itp, x, y, ...)
либо так:
Interpolations.gradient!(g, itp, x, y, ...)
где g — предварительно размещенный в памяти вектор.
Некоторые объекты интерполяции поддерживают вычисление гессиана, который можно получить так:
h = Interpolations.hessian(itp, x, y, ...)
или так:
Interpolations.hessian!(h, itp, x, y, ...)
где h — предварительно размещенная в памяти матрица.
Элементы A могут быть любого типа, поддерживающего операции сложения и умножения. Примерами могут служить скалярные значения, такие как Float64, Int и Rational, а также типы, состоящие из нескольких значений, например цветовые векторы RGB.
Позиции (x, y, ...) представляют собой кортежи из n чисел. Обычно они состоят из вещественных значений (не обязательно целочисленных), но также могут содержать такие типы, как DualNumbers, если необходимо проверить вычисленное значение градиента. (Проверять градиенты можно также с помощью пакета ForwardDiff.) Можно также использовать объекты итераторов Julia. Например, следующий код:
function ongrid!(dest, itp)
for I in CartesianIndices(itp)
dest[I] = itp(I)
end
end
сохраняет значение на сетке в каждой точке сетки itp в выходном объекте dest. Наконец, благодаря правилам индексирования Julia можно также использовать
fine = itp(range(1,stop=10,length=1001), range(1,stop=15,length=201))
Существует также сокращенная форма записи: Удобная нотация.