# Cubic spline interpolation with slope at left end equal to zero?

18 views (last 30 days)
Qingjie on 25 Apr 2014
Commented: Qingjie on 30 Apr 2014
Hi, all,
I am doing a cubic spline interpolation with some data points. I want the slope at the left end to be zero and don't do anything to the slope at the right end(In the online example, both slope at both ends are forced to be zero). Does anyone know how to do this? Thank you.
Here is my data points:
if true
x = [0,0.152789493879,0.305539702586,0.458371723707,...
0.59356259,0.728929965449,0.864429595769,1];
y = [0,0.013083199999528,0.155041100006201,0.209241100004874,...
0.178395800001454,0.093888600007631,-0.033515100003569,-0.196524899991346];
end

John D'Errico on 25 Apr 2014
Why do you think you need the (if true) conditional wrapped around it?
Qingjie on 25 Apr 2014
Physically, the left point is a energy minimum point, which means the slope should be zero. But due to the limited number of data points, I guess spline interpolation cannot produce a zero slope at the left point.

John D'Errico on 25 Apr 2014
My SLM tool box will let you create an interpolating spline with the properties you desire.
pp = slmengine(x,y,'knots',x,'leftslope',0,'result','pp');
There are many other things it can do, but this is a simple one. You can get the result in a pp form as I show, or in my own SLM format.

Qingjie on 25 Apr 2014
Thank you John. I haven't used such tool box before, should I put it in the toolbox directory of MATLAB after I download it?
John D'Errico on 26 Apr 2014
Qingjie on 30 Apr 2014
Thank you very much John. It works really well. Also thank you for a very wonderful comment on my previous question on nonlinear fitting.