safetyduck
safetyduck

Reputation: 6844

Is there a way to use scipy.interpolate to do 1d spline interpolation with boundary conditions specified away from data?

There are lots of ways of assembling splines directly from data while specifying derivatives at the boundary but I do not see an easy way to specify derivative constraints away from the data. For example

np.random.seed(0)
M = 30
x = np.random.rand(M)
x.sort()
y = np.random.rand(M) + (10 * x) ** 2

xx = np.linspace(x.min(), x.max(), 100)  # for plotting

import scipy.interpolate as si
f = si.make_interp_spline(x, y) # ok but how to add derivative conditions away from the x-values?

x_derivs = [-1, 2]
order_derivs = [2, 1]
value_derivs = [0, 1]

More generally, is there a built in method to do this or take derivative constraints separate from value constraints?

I think it's just a matter of creating the operator matrix to solve the linear problem.

Upvotes: 0

Views: 188

Answers (1)

ev-br
ev-br

Reputation: 26030

Short answer : it's not implemented at the moment.

You can of course modify the scipy source, the relevant part is https://github.com/scipy/scipy/blob/v1.7.0/scipy/interpolate/_bsplines.py#L1105

Upvotes: 1

Related Questions