Closed as not planned
Description
Now that basic functionality is in place, we need to extend what we have with more cases, to make the library feature complete. That's a good case for a wishlist =) This issue is intended to keep track of overall progress toward feature parity with (interpolation parts of) Grid.jl - actual implementation details can be discussed in separate issues.
Boundary condtions (assuming a grid on 1:n
)
-
Flat
, i.e.f'(x=1) = f'(x=n) = 0
(WIP features (so far: Flat BC, Constant extrap) #8) -
Line
(orNatural
), i.e.f''(x=1) = f''(x=n) = 0
(More boundary conditions for quadratic B-splines #9) -
Tangent
, i.e. with specified derivatives at the edges (Flat
is essentiallyTangent(0,0)
) -
Reflect
, i.e. all continuous derivatives are 0 at the edge, to preserve continuity properties when extrapolating (Added in Reflecting BC for quadratic itp #20) -
Periodic
, i.e. function value and all derivatives are equal at both edges; withOnGrid
, the data should include both cell boundaries (andA[1]==A[end]
), while withOnCell
this assumption is not necessary (but ratherA[-.5] == A[end+.5]
) (More boundary conditions for quadratic B-splines #9) -
Free
, i.e. with extra continuous derivatives close to the edges, to close the system. (For e.g. cubic splines, which have continuous second derivatives, the third derivatives are also continuous at the second-to-last boundaries). (More boundary conditions for quadratic B-splines #9)
Extrapolation behaviors
-
Constant
, i.e. return the value at the closest data point (WIP features (so far: Flat BC, Constant extrap) #8) -
Linear
(Linear extrapolation #23) -
Quadratic
etc, valid up to the same degree as the interpolation. When the same degree, just continue the outermost polynomial; when lower degree, construct an extrapolation polynomial with as many continuous derivatives as necessary for a smooth transition. For example, linear extrapolation of a quadratic interpolation object, would have continuous value and first derivative (which conveniently specifies the extrapolation uniquely...). -
Periodic
, i.e.f(x + T) = f(x)
for a function with periodT
(More boundary conditions for quadratic B-splines #9) -
Reflec
, i.e.f(end - 1 + T/3) = f(end - T/3 + 1)
(More boundary conditions for quadratic B-splines #9)
Interpolation degrees
- Cubic b-splines (WIP on cubic #90 - thanks @spencerlyon2!)
Other functionality
- Derivative evaluation, up to the highest continuous degree supported by the interpolation object. E.g.
gradient(itp::Quadratic, x)
orhessian(itp::Cubic, x)
. (Gradient fixed in Gradient evaluation #18, higher orders will be added when higher order interpolations are added...) - Multi-valued interpolation (i.e. interpolation that yields more than one value per coordinate), More of a decision: do we do anything special to make it easier, or just force users to shape their data accordingly? Discussed separately under Multi-valued interpolation #3
- Range/vector-valued indexing (i.e. indexing with multiple values at the same time, e.g.
itp[1:.1:10]
) (Vector-valued evaluation #24, Restrict scalar indexing to Numbers #54, Improve testing #55) - Non-uniform interpolation (Non-uniform interpolation #11, Add GriddedInterpolation for non-uniform grids #56)
- Uniform interpolation on non-unit scales (the same problem that
CoordInterpGrid
inGrid.jl
solves) (Something equivalent to CoordInterpGrid #25, RFC: Scaling of interpolation objects (fixes #25) #47)
Metadata
Metadata
Assignees
Labels
No labels