Visual Comparison

All examples use the same sparse, non-uniform grid interpolating sin(x):

using FastInterpolations

x = [0.0, 0.9, 1.5, 2.2, 3.5, 4.5, 5.5, 2π]  # 8 non-uniform points
y = sin.(x)
xq = range(0, 2π, 500)  # query points
0.0:0.012591553721802777:6.283185307179586

Value: $S(x)$

constant_interp(x, y, xq)   # step function
linear_interp(x, y, xq)     # piecewise linear
quadratic_interp(x, y, xq)  # C¹ smooth
cubic_interp(x, y, xq)      # C² smooth
Example block output

First Derivative: $\frac{dS}{dx}$

constant_interp(x, y, xq; deriv=1)   # always 0
linear_interp(x, y, xq; deriv=1)     # piecewise constant
quadratic_interp(x, y, xq; deriv=1)  # continuous
cubic_interp(x, y, xq; deriv=1)      # smooth
Example block output

Second Derivative: $\frac{d^2S}{dx^2}$

constant_interp(x, y, xq; deriv=2)   # always 0
linear_interp(x, y, xq; deriv=2)     # always 0
quadratic_interp(x, y, xq; deriv=2)  # piecewise constant
cubic_interp(x, y, xq; deriv=2)      # continuous
Example block output

Summary

MethodValue1st Derivative2nd Derivative
ConstantStep functionAlways 0Always 0
LinearPiecewise linearPiecewise constantAlways 0
QuadraticC¹ smoothContinuousPiecewise constant
CubicC² smoothContinuousContinuous
Choosing a Method
  • Speed priority: Linear (simplest, fastest)
  • Smooth curves: Cubic (C² continuity)
  • Balance: Quadratic (C¹, simpler BC than cubic)
  • Discrete states: Constant (preserves steps)

See Also