[ANN] NormalSplines.jl: 1-D Interpolating Normal Splines

NormalSplines.jl package implements the normal splines method for interpolating a function based on data of the function values and its first or second derivatives known at a set of points.

The normal splines method consists in finding a solution of corresponding system of constraints having minimal norm in Hilbert space and is based on the following functional analysis results:

  • Embedding theorems (Sobolev embedding theorem and Bessel potential spaces embedding theorem)

  • The Riesz representation theorem for Hilbert spaces

  • Reproducing kernel properties.

Using these results it is possible to reduce original problem to solving a system of linear equations with symmetric positive definite matrix.

Normal splines are constructed in Sobolev space and in Bessel potential space.

Example usage

Construct a normal spline to some function and its first and second derivatives values:


using NormalSplines

x = [0.0, 1.0, 2.0] # Function knots

u = [0.0, 1.0, 4.0] # Function values 

s = [2.0]           # First derivative knot

v = [4.0]           # First derivative value

t = [0.0, 1.0]      # Second derivative knots

w = [2.0 ,2.0]      # Second derivative values

interpolate(x, u, s, v, t, w, RK_W3())

Evaluate the spline, its first and second derivatives at some points:


p = [0.0, 0.5, 1.0, 1.5, 2.0]

σ = evaluate(p)      # result = [0.0, 0.25, 1.0, 2.25, 4.0]

σ' = evaluate(p, 1)  # result = [0.0, 1.0, 2.0, 3.0, 4.0]

σ'' = evaluate(p, 2) # result = [2.0, 2.0, 2.0, 2.0, 2.0]

Detailed explanation is given in the package documentation.

Kind regards,
Igor

10 Likes