Документация Engee

Общие принципы использования

Обратите внимание: текущая версия 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))

Существует также сокращенная форма записи: Удобная нотация.