330 likes | 359 Views
Chapter 15 Curve Fitting : Splines. Gab Byung Chae. Oscillation in a higher order interpolation. The alternative : spline. Notation used to derive splines. n-1 intervals in n data points. Splines in 1 st , 2 nd , 3 rd order. Linear spline Quadratic spline Cubic spline.
E N D
Chapter 15 Curve Fitting : Splines Gab Byung Chae
Notation used to derive splines n-1 intervals in n data points
Splines in 1st, 2nd, 3rd order • Linear spline • Quadratic spline • Cubic spline
15.2 Linear Splines linear splines passing thru Example : (3,2.5),(4.5,1),(7,2.5),(9,.5) -> (5,?)
15.3 Quadratic Splines • The objective in quadratic splines is to derive a second-order polynomial for each interval between data points • The polynomial : si(x) =ai + bi(x-xi)+ ci(x-xi)2 For n data points, there are n-1 intervals and, consequently, 3(n-1) unknown constants to evaluate. 3(n-1) equations or conditions are required to evaluate the unknowns.
Let for all i=1,,..,n-1 1. Continuity condition : the function must pass through all the points. --- (15.6) for all i=1,,..,n-1 : (n-1) equations 2. The function values of adjacent polynomials must be equal at the knots. --- (15.8) for all i=1,,..,n-1 : (n-1) equations
Let for all i=1,,..,n-1 3. The first derivatives at the interior nodes must be equal. (n-2) eq.s --- (15.9) 4. Assume that the second derivative is zero at the first point. 1 equation Example : (3,2.5),(4.5,1),(7,2.5),(9,.5) -> (5,?)
Example 15.2 • Problem] Fit quadratic splines to the data in Table 15.1. Use the results to estimate the value at x=5.
Solution] Equation (15.8) is written for i=1 through 3 (with c1=0) to give f1+ b1h1 = f2 f2+ b2h2 + c2h22 = f3 f3+ b3h3 + c3h32 = f4 Equation (15.9) creates 2 conditions with c1=0 : b1 = b2 b2+ 2c2h2 = b3
f1 = 2.5 h1 = 4.5-3.0 = 1.5 • f2 = 1.0 h2 = 7.0-4.5 = 2.5 • f3 = 2.5 h3 = 9.0-7.0 = 2.0 • f4 = 0.5 2.5 + 1.5 b1 = 1.0 1.0 + 2.5 b2 + 6.25 c2 = 2.5 2.5 + 2.0 b3 + 4c3 = 0.5 b1 - b2 = 0 b2 - b3 + 5c2= 0
b1 = -1 b2 = -1 c2 = 0.64 b3= 2.2 c3 = -1.6 s1(x) = 2.5 –(x-3) s2(x) = 1.0 –(x-4.5)+0.64(x-4.5)2 s3(x) = 2.5 + 2.2(x-7.0)-1.6(5-7.0)2 x=5 이므로 s2(5) = 1.0 –(5-4.5)+0.64(5-4.5)2 =0.66
15.4 Cubic Splines a. (n-1) eq.s b. (n-1) eq.s c. (n-2) eq.s d. (n-2) eq.s e. 2 eq.s
Example 15.3 Fit cubic splines to the data . Utilize the results to estimate the value at x =5
Solution : employ Eq.(15.27) • f1 = 2.5 h1 = 4.5-3.0 = 1.5 • f2 = 1.0 h2 = 7.0-4.5 = 2.5 • f3 = 2.5 h3 = 9.0-7.0 = 2.0 • f4 = 0.5
So we have • Using MATLAB the results are • c1 = 0 c2 = 0.839543726 • c3 = -0.766539924 c4 = 0
Using Eq. (15.21) and (15.18), • b1 = -1.419771863 d1 = 0.186565272 • b2 = -0.160456274 d2 = -0.214144487 • b3 = 0.022053232 d3 = 0.127756654
15.4.2 End Conditions • Clamped End Condition : Specifying the first derivatives at the first and last nodes. • Not-a-Knot End Condition : Force continuity of the third derivative at the second and the next-to-last knots. – same cubic functions will apply to each of the first and last two adjacent segments,
15.5 Piecewise interpolation in Matlab 15.5.1 MATLAB function : spline • Syntax : yy = spline(x, y, xx)
Example 15.4 Splines in MATLAB • Use MATLAB to fit 9 equally spaced data points sampled from this function in the interval [-1, 1]. • a) a not-a-knot spline b) a clamped spline with end slopes of f1’=1 and f’n-1 = -4
Solution : a) >> x = linspace(-1,1,9); >> y = 1./(1+25*x.^2); >> xx = linspace(-1,1); >> yy = spline(x,y,xx); >> yr = 1./(1+25*xx.^2); >> plot(x,y,’o’,xx,yy,xx,yr,’—’)
b) >> yc =[1 y -4]; >> yyc =spline(x,yx,xx); >> plot(x,y,’o’,xx,yyc,xx,yr,’—’)
15.5.2 MATLAB function : interp1 • Implement a number of different types of piecewise one-dimensional interpolation. • Syntax : yi = interp1(x,y,xi, ‘method’) yi = a vector containing the results of the interpolation as evaluated at the points in the vector xi , and ‘method’ = the desired method.
method • Nearest – nearest neighbor interpolation. • Linear – linear interpolation • Spline – piecewise cubic spline interpolation(identical to the spline function) • pchip and cubic – piecewise cubic Hermite interpolation. • The default is linear.
MATLAB’s methods >> yy=spline(x,y,xx); cubic spilne >> yy=interp1(x,y,xx): (piecewise) linear spline >> yy=interp1(x,y,xx,’spline’): cubic spline >> yy=interp1(x,y,xx,’nearest’) : nearest neighbormethod >> yy=interp1(x,y,xx,’pchip’): piecewise cubic Hermite interpolation >> zz=interp2(x,y,z,xx,yy): 2 dimensional interpolation
Example 15.5 Trade-offs Using interpl • Linear, nearest, cubic spline, piecewise cubic Hermite interpolation
>> t = [ 0 20 40 56 68 80 84 96 104 110]; >> v = [0 20 20 38 80 80 100 100 125 125]; >> tt = linspace(0,110); >> vl=interp1(t,v,tt); %(piecewise) linear spline >> plot(t,v,’o’,tt,vl) >> vn=interp1(t,v,tt,’nearest’); % nearest >> plot(t,v,’o’,tt,vn) >> vs=interp1(t,v,tt,’spline’); % cubic spline >> plot(t,v,’o’,tt,vs) >> vh=interp1(t,v,tt,’pchip’); % piecewise cubic Hermite interpolation >> plot(t,v,’o’,tt,vh)