Page 149 - Applied Numerical Methods Using MATLAB
P. 149
138 INTERPOLATION AND CURVE FITTING
y 1 − y 0 y 2 − y 1 y 3 − y 2
dy 0 = = 1, dy 1 = = 3, dy 2 = = 1 (E3.3.3)
h 0 h 1 h 2
we write Eq. (3.5.8) as
3(dy 0 − S 0,1 )
2 100 S 0,2 −3
1 410 6
3(dy 1 − dy 0 )
S 1,2 = (E3.3.4)
0 141 S 2,2 = −6
3(dy 2 − dy 1 )
0 012 S 3,2 3
3(S 3,1 − dy 1 )
Then we solve this equation to get
S 0,2 =−3, S 1,2 = 3, S 2,2 =−3, S 3,2 = 3 (E3.3.5)
and substitute this into Eq. (3.5.9) to obtain
S 0,0 = 0, S 1,0 = 1, S 2,0 = 4 (E3.3.6)
1
h 0
S 0,1 = dy 0 − (S 1,2 + 2S 0,2 ) = 1 − (3 + 2 × (−3)) = 2 (E3.3.7a)
3 3
1
h 1
S 1,1 = dy 1 − (S 2,2 + 2S 1,2 ) = 3 − (−3 + 2 × 3) = 2 (E3.3.7b)
3 3
1
h 2
S 2,1 = dy 2 − (S 3,2 + 2S 2,2 ) = 1 − (3 + 2 × (−3)) = 2 (E3.3.7c)
3 3
3 − (−3)
S 1,2 − S 0,2
S 0,3 = = = 2 (E3.3.8a)
3h 0 3
S 2,2 − S 1,2 −3 − 3
S 1,3 = = =−2 (E3.3.8b)
3h 1 3
3 − (−3)
S 3,2 − S 2,2
S 2,3 = = = 2 (E3.3.8c)
3h 2 3
%do_csplines.m
KC = 1; dy0 = 2; dyN = 2; % with specified 1st derivatives on boundary
x = [0 1 2 3]; y = [0 1 4 5];
xi = x(1)+[0:200]*(x(end)-x(1))/200; %intermediate points
[yi,S] = cspline(x,y,xi,KC,dy0,dyN); S %cubic spline interpolation
clf, plot(x,y,’ko’,xi,yi,’k:’)
yi = spline(x,[dy0 y dyN],xi); %for comparison with MATLAB built-in ftn
hold on, pause, plot(x,y,’ro’,xi,yi,’r:’)
yi = spline(x,y,xi); %for comparison with MATLAB built-in ftn
pause, plot(x,y,’bo’,xi,yi,’b’)
KC = 3; [yi,S] = cspline(x,y,xi,KC);%with the 2nd derivatives extrapolated
pause, plot(x,y,’ko’,xi,yi,’k’)