Interpolation with Cubic Spline

3.3 Interpolation with Cubic Spline

If there are more than a few data points, a cubic spline is hard to beat as a global interpolant. It is considerably “stiffer” than a polynomial in the sense that it has less tendency to oscillate between data points.

Elastic strip

y Figure 3.6. Mechanical model of natural cubic spline. Pins (data points) x

The mechanical model of a cubic spline is shown in Fig. 3.6. It is a thin, elastic strip that is attached with pins to the data points. Because the strip is unloaded between the pins, each segment of the spline curve is a cubic polynomial—recall from beam the-

ory that the differential equation for the displacement of a beam is d 4 y/dx 4 = q/(E I ), so that y(x) is a cubic since the load q vanishes. At the pins, the slope and bending moment (and hence the second derivative) are continuous. There is no bending mo- ment at the two end pins; hence the second derivative of the spline is zero at the end points. Since these end conditions occur naturally in the beam model, the resulting curve is known as the natural cubic spline. The pins, i.e., the data points, are called the knots of the spline.

Figure 3.7. Cubic spline.

Figure 3.7 shows a cubic spline that spans n knots. We use the notation f i,i+1 (x) Figure 3.7 shows a cubic spline that spans n knots. We use the notation f i,i+1 (x)

f 1,2 (x), f 2,3 (x), . . . , f n−1,n (x), all of which have different coefficients. If we denote the second derivative of the spline at knot i by k i , continuity of second derivatives requires that

(a) At this stage, each k is unknown, except for

f i−1,i ′′ (x i

)=f ′′

i,i+1 (x i )=k i

(3.9) The starting point for computing the coefficients of f i,i+1 (x) is the expression for

k 1 =k n =0

f i,i+1 ′′ (x), which we know to be linear. Using Lagrange’s two-point interpolation, we can write

f i,i+1 ′′ (x) = k i ℓ i (x) + k i+1 ℓ i+1 (x)

x i+1 −x i Therefore,

i,i+1 (x) =

(b)

x i −x i+1

Integrating twice with respect to x, we obtain

i (x − x 3 i+1 ) 3 −k i+1 (x − x )

i,i+1 (x) =

where A and B are constants of integration. The last two terms in Eq. (c) would usually

be written as C x + D. By letting C = A − B and D = −Ax i+1 + Bx i , we end up with the terms in Eq. (c), which are more convenient to use in the computations that

follow. Imposing the condition f i,i+1 (x i )=y i , we get from Eq. (c)

(d) Similarly, f i,i+1 (x i+1 )=y i+1 yields

A= x

(x

6 i −x i+1 )

i −x i+1

y i+1

B=

− i+1 (x i −x i+1 )

(e)

Substituting Eqs. (d) and (e) into Eq. (c) results in

f i ! (x − x i+1 ) 3 i,i+1 " (x) = − (x − x i+1 )(x

− (x − x i )(x i −x i+1 ) (3.10)

6 x i −x i+1 y i (x − x i+1 )−y i+1 (x − x i )

x i −x i+1

The second derivatives k i of the spline at the interior knots are obtained from the slope continuity conditions f ′ i−1,i (x i )=f ′ i,i+1 (x i ), where i = 2, 3, . . . , n − 1. After a little algebra, this results in the simultaneous equations

Because Eqs. (3.11) have a tridiagonal coefficient matrix, they can be solved econom- ically with functions LUdec3 and LUsol3 described in Art. 2.4.

If the data points are evenly spaced at intervals h, then x i−1 −x i =x i −x i+1 = −h, and the Eqs. (3.11) simplify to

k i−1 + 4k i +k i+1 = 2 (y i−1 − 2y i +y i+1 ),

i = 2, 3, . . . , n − 1 (3.12)

The first stage of cubic spline interpolation is to set up Eqs. (3.11) and solve them for the unknown k’s (recall that k 1 =k n = 0). This task is carried out by the function splineCurv :

function k = splineCurv(xData,yData) % Returns curvatures of a cubic spline at the knots. % USAGE: k = splineCurv(xData,yData) % xData = x-coordinates of data points. % yData = y-coordinates of data points.

n = length(xData); c = zeros(n-1,1); d = ones(n,1); e = zeros(n-1,1); k = zeros(n,1);

c(1:n-2) = xData(1:n-2) - xData(2:n-1); d(2:n-1) = 2*(xData(1:n-2) - xData(3:n)); e(2:n-1) = xData(2:n-1) - xData(3:n); k(2:n-1) = 6*(yData(1:n-2) - yData(2:n-1))...

- 6*(yData(2:n-1) - yData(3:n))... ./(xData(2:n-1) - xData(3:n)); [c,d,e] = LUdec3(c,d,e); k = LUsol3(c,d,e,k);

The function splineEval computes the interpolant at x from Eq. (3.10). The sub- function findSeg finds the segment of the spline that contains x by the method of bisection. It returns the segment number; that is, the value of the subscript i in Eq. (3.10).

function y = splineEval(xData,yData,k,x) % Returns value of cubic spline interpolant at x. % USAGE: y = splineEval(xData,yData,k,x) % xData = x-coordinates of data points. % yData = y-coordinates of data points. %k

= curvatures of spline at the knots; %

returned by function splineCurv.

i = findSeg(xData,x); h = xData(i) - xData(i+1);

y = ((x - xData(i+1))ˆ3/h - (x - xData(i+1))*h)*k(i)/6.0... - ((x - xData(i))ˆ3/h - (x - xData(i))*h)*k(i+1)/6.0... + yData(i)*(x - xData(i+1))/h... - yData(i+1)*(x - xData(i))/h;

function i = findSeg(xData,x) % Returns index of segment containing x. iLeft = 1; iRight = length(xData); while 1

if(iRight - iLeft) <= 1 i = iLeft; return end i = fix((iLeft + iRight)/2); if x < xData(i) iRight = i; else iLeft = i; end

EXAMPLE 3.5 Use natural cubic spline to determine y at x = 1.5. The data points are

Solution The five knots are equally spaced at h = 1. Recalling that the second deriva- tive of a natural spline is zero at the first and last knot, we have k 1 =k 5 = 0. The second derivatives at the other knots are obtained from Eq. (3.12). Using i = 2, 3, 4 we get the simultaneous equations

0 + 4k 2 +k 3 = 6 [0 − 2(1) + 0] = −12 k 2 + 4k 3 +k 4 = 6 [1 − 2(0) + 1] = 12

k 3 + 4k 4 + 0 = 6 [0 − 2(1) + 0] = −12

The solution is k 2 =k 4 = −30/7, k 3 = 36/7.

The point x = 1.5 lies in the segment between knots 1 and 2. The corresponding interpolant is obtained from Eq. (3.10) by setting i = 1. With x i −x i+1 = −h = −1, we obtain

y(1.5) = f 3

The plot of the interpolant, which in this case is made up of four cubic segments, is shown in the figure.

y 0.60

EXAMPLE 3.6 Sometimes it is preferable to replace one or both of the end conditions of the cu-

bic spline with something other than the natural conditions. Use the end condition

f 1,2 ′ (0) = 0 (zero slope), rather than f ′′ 1,2 (0) = 0 (zero curvature), to determine the cubic spline interpolant at x = 2.6 based on the data points

Solution We must first modify Eqs. (3.12) to account for the new end condition. Setting

i = 1 in Eq. (3.10) and differentiating, we get k !

Thus the end condition f ′ 1,2 (x 1 ) = 0 yields

From the given data we see that y 1 =y 2 = 1, so that the last equation becomes

2k 1 +k 2 =0

(a) The other equations in Eq. (3.12) are unchanged. Noting that k 4 = 0 and h = 1, we

have k 1 + 4k 2 +k 3 = 6 [1 − 2(1) + 0.5] = −3

(b)

k 2 + 4k 3 = 6 [1 − 2(0.5) + 0] = 0

(c) The solution of Eqs. (a)–(c) is k 1 = 0.4615, k 2 = −0.9231, k 3 = 0.2308.

The interpolant can now be evaluated from Eq. (3.10). Substituting i = 3 and x i −x i+1 = −1, we obtain

y(2.6) = f 3,4

EXAMPLE 3.7 Write a program that interpolates between given data points with the natural cubic

spline. The program must be able to evaluate the interpolant for more than one value of x. As a test, use data points specified in Example 3.4 and compute the interpolant at x = 1.5 and x = 4.5 (due to symmetry, these values should be equal).

Solution The program below prompts for x; it is terminated by pressing the “return” key.

% Example 3.7 (Cubic spline) xData = [1; 2; 3; 4; 5]; yData = [0; 1; 0; 1; 0]; k = splineCurv(xData,yData); while 1

x = input(’x = ’); if isempty(x)

fprintf(’Done’); break end y = splineEval(xData,yData,k,x) fprintf(’\n’)

end

Running the program produces the following results: x = 1.5

x= Done

PROBLEM SET 3.1

1. Given the data points

2. Find the zero of y(x) from the following data:

0 0.5 1 1.5 2 2.5 3 y

1.8421 2.4694 2.4921 1.9047 0.8509 −0.4112 −1.5727 Use Lagrange’s interpolation over (a) three; and (b) four nearest-neighbor data

points. Hint: after finishing part (a), part (b) can be computed with a relatively small effort.

3. The function y(x) represented by the data in Prob. 2 has a maximum at x = 0.7679. Compute this maximum by Neville’s interpolation over four nearest-neighbor

data points.

4. Use Neville’s method to compute y at x = π/4 from the data points

5. Given the data

find y at x = π/4 and at π/2. Use the method that you consider to be most con- venient.

6. The points

−1 2 59 4 24 −53 lie on a polynomial. Use the divided difference table of Newton’s method to de-

termine the degree of the polynomial.

7. Use Newton’s method to find the expression for the lowest-order polynomial that fits the following points:

8. Use Neville’s method to determine the equation of the quadratic that passes through the points

9. The density of air ρ varies with elevation h in the following manner:

h (km)

1.225 0.905 0.652 Express ρ(h) as a quadratic function using Lagrange’s method.

ρ (kg/m 3 )

10. Determine the natural cubic spline that passes through the data points

Note that the interpolant consists of two cubics, one valid in 0 ≤ x ≤ 1, the other in 1 ≤ x ≤ 2. Verify that these cubics have the same first and second derivatives at x = 1.

11. Given the data points

determine the natural cubic spline interpolant at x = 3.4.

12. Compute the zero of the function y(x) from the following data:

1.150 0.855 0.377 −0.266 −1.049 Use inverse interpolation with the natural cubic spline. Hint: reorder the data so

that the values of y are in ascending order.

13. Solve Example 3.6 with a cubic spline that has constant second derivatives within its first and last segments (the end segments are parabolic). The end conditions

for this spline are k 1 =k 2 and k n−1 =k n .

14. Write a computer program for interpolation by Neville’s method. The program must be able to compute the interpolant at several user-specified values of x. Test the program by determining y at x = 1.1, 1.2 and 1.3 from the following data:

(Answer: y = 1.3262, 1.3938, 1.4693)

15. The specific heat c p of aluminum depends on temperature T as follows: 4

c p (kJ/kg·K) 0.0163 0.318 0.699 0.870 0.941 1.04 Determine c p at T = 200 ◦

C and 400 ◦ C.

16. Find y at x = 0.46 from the data x

17. The table shows the drag coefficient c D of a sphere as a function of Reynolds number Re. 5 Use natural cubic spline to find c D at Re = 5, 50, 500 and 5000. Hint: use log–log scale.

c D 103 13.9 2.72 0.800 0.401

18. Solve Prob. 17 using a polynomial interpolant intersecting four nearest- neighbor data points.

19. The kinematic viscosity µ k of water varies with temperature T in the following manner:

4 Source: Black, Z.B., and Hartley, J.G., Thermodynamics, Harper & Row, 1985. 5 Source: Kreith, F., Principles of Heat Transfer, Harper & Row, 1973.

T( ◦ C)

1.79 1.13 0.696 0.519 0.338 0.321 0.296 Interpolate µ k at T = 10 ◦ , 30 ◦ , 60 ◦ and 90 ◦ C.

µ k (10 −3 m 2 / s)

20. The table shows how the relative density ρ of air varies with altitude h. Deter- mine the relative density of air at 10.5 km.

h (km)

Dokumen yang terkait

WARTA ARDHIA Jurnal Perhubungan Udara Harapan dan Kepentingan Pengguna Jasa Angkutan Udara Terhadap Pelayanan di Bandar Udara H.AS Hanandjoeddin–Tanjung Pandan Belitung Air Transport Passenger Expectations and Interest of Airport Services in H.A.S Hanandj

0 0 12

The Evaluation of Air Transportation Infrastructure Performance in Indonesian Capital Province

0 0 10

Demand Forecasting of Modal Share of Bandara Internasional Jawa Barat (BJIB) in Kertajati Majalengka

0 1 12

WARTA ARDHIA Jurnal Perhubungan Udara Analisis Flutter Pada Uji Model Separuh Sayap Pesawat N219 di Terowongan Angin Kecepatan Rendah The Analysis of Half Wing Flutter Test N219 Aircraft Model in The Low Speed Wind Tunnel

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Penerapan Skema Badan Layanan Umum Dalam Pengelolaan Keuangan Bandar Udara Internasional Jawa Barat The Application of Badan Layanan Umum Scheme in The Financial Management of Jawa Barat International Airport

0 0 16

Speech Recognition Conceptual Design in Aircraft Communications to Reduce Flight Communication Mistake

0 0 10

WARTA ARDHIA Jurnal Perhubungan Udara Perencanaan Integrasi Transportasi Antarmoda Dalam Pembangunan Bandar Udara (Studi Kasus: Pembangunan Bandar Udara di Kertajati) Intermodal Transportation Integration Planning in Airport Development (Case Study: Airpo

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Gaya Hambat Saat Hidro Planing dan Gaya Angkat Aerodinamika Saat Cruise di Efek Permukaan pada Pesawat Wing in Surface Effect The Hump Drags During Hydro Planing and Aerodynamic Lift During Cruise in Surface Effect Al

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Peran Jasa Ground Handling Terhadap Pelayanan Perusahaan Air Freight di Bali dalam Menghadapi Kompetisi Global The Role of Ground Handling Services to The Air Freight Services in Bali in The Face of Global Competition

0 1 14

Advance Engineering Mathematic chaper 1

0 0 63