Linear Spline in Matlab

Read through the rest of “A Practical Introduction to Matlab” by Gock-enbach, at the web site http://www.math.mtu.edu/~msgocken/intro/intro.pdf Your task. Write a Matlab function that computes the linear spline interpolation for a given data set. You might need to take a look at the file cspline_eval.m in Section 3.4 for some hints. Name your Matlab function lspline. This can be defined in the file lspline.m, which should begin with: function ls=lspline(t, y, x) % lspline computes the linear spline % Inputs: % t:vector, contains the knots % y:vector, contains the interpolating values at knots % x:vector, contains points where the lspline function % should be evaluated and plotted % Output: % ls:vector, contains the values of lspline at points x Use your Matlab function lspline on the given data set in Problem 2, plot the linear spline for the interval [1.2, 2.2]. What to hand in:Hand in the Matlab file lspline.m, and your plots. The goal of this problem is to draw mount Everest with the help of natural cubic splines. We have a rather poor quality photo of the mountain profile, which is given below. You need to set up a coordinate system, and select a set of knots along the edge of the mountain, and find the coordinates for all these interpolating points. We are aware that the mountain profiles are not very clear in that photo, so please use your imagination when you find these approximate points. You may either print out the mountain picture and work on it on a piece of paper, or send the image to some software and locate the coordinates of the interpolating points. Make sure to select at least 20 points. You may use more points if you see fit. After you have generated your data set, you need to find a natural cubic spline interpolation. Use the functions cspline and cspline_eval, which are available in Section 3.4. Read these two functions carefully, try to understand them before using them. Does it look like there is a smaller peak on the right? Does the peak look rather sharp? How would you deal with this situation, knowing that a single cubic spline function will generate a “smoothest” possible interpolation?

## Expert Answer

problem 3:

main.m

%contains knots

t=[1.2 1.5 1.6 2.0 2.2];

%contains interpolating values [assumed]

y=[0.5674 1.2879 0.1983 -0.4538 -0.2987];

%points

x=[1.2:0.1:2.1];

val_lspl=lspline(t,y,x)

lspline.m

function ls=lspline(t,y,x)

%to find length

l=length(x);

for j=1:l

for k=1:length(t)

if x(j)<t(k)

break;

end

end

i=k-1;

ls(j)=y(i)+(x(j)-t(i))*(y(i+1)-y(i))/(t(i+1)-t(i));

end

return

end