100% found this document useful (1 vote)
337 views

Cubic Spline Interpolation PDF

The document describes cubic spline interpolation. Cubic splines are piecewise cubic polynomials that are twice continuously differentiable and provide a flexible way to interpolate between nodes. The key steps to construct a cubic spline given data points are: (1) define a cubic polynomial on each interval between nodes, (2) impose conditions for continuity of the function, first derivative and second derivative at nodes, (3) solve the resulting system of equations to determine the coefficients of the cubic polynomials. An example illustrates this process for a cubic spline passing through three data points with natural boundary conditions.

Uploaded by

Nadeem Farooq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
337 views

Cubic Spline Interpolation PDF

The document describes cubic spline interpolation. Cubic splines are piecewise cubic polynomials that are twice continuously differentiable and provide a flexible way to interpolate between nodes. The key steps to construct a cubic spline given data points are: (1) define a cubic polynomial on each interval between nodes, (2) impose conditions for continuity of the function, first derivative and second derivative at nodes, (3) solve the resulting system of equations to determine the coefficients of the cubic polynomials. An example illustrates this process for a cubic spline passing through three data points with natural boundary conditions.

Uploaded by

Nadeem Farooq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 67

Cubic Spline Interpolation

MATH 375, Numerical Analysis

J. Robert Buchanan

Department of Mathematics

Spring 2019
History
Given nodes and data {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}
we have interpolated using:
I Lagrange and Hermite interpolating polynomials of degree
n, with n + 1 coefficients,
unfortunately,
History
Given nodes and data {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}
we have interpolated using:
I Lagrange and Hermite interpolating polynomials of degree
n, with n + 1 coefficients,
unfortunately,

I such polynomials can possess large oscillations, and


I the error term can be difficult to construct and estimate.
History
Given nodes and data {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}
we have interpolated using:
I Lagrange and Hermite interpolating polynomials of degree
n, with n + 1 coefficients,
unfortunately,

I such polynomials can possess large oscillations, and


I the error term can be difficult to construct and estimate.

An alternative is piecewise polynomial approximation, but of


what degree polynomial?
History
Given nodes and data {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}
we have interpolated using:
I Lagrange and Hermite interpolating polynomials of degree
n, with n + 1 coefficients,
unfortunately,

I such polynomials can possess large oscillations, and


I the error term can be difficult to construct and estimate.

An alternative is piecewise polynomial approximation, but of


what degree polynomial?
I Piecewise linear results are not differentiable at xi ,
i = 0, 1, . . . , n.
I Piecewise quadratic results are not twice differentiable at
xi , i = 0, 1, . . . , n.
I Piecewise cubic!
Cubic Splines

I A cubic polynomial p(x) = a + bx + cx 2 + dx 3 is specified


by 4 coefficients.
I The cubic spline is twice continuously differentiable.
I The cubic spline has the flexibility to satisfy general types
of boundary conditions.
I While the spline may agree with f (x) at the nodes, we
cannot guarantee the derivatives of the spline agree with
the derivatives of f .
Cubic Spline Interpolant (1 of 2)

Given a function f (x) defined on [a, b] and a set of nodes

a = x0 < x1 < x2 < · · · < xn = b,

a cubic spline interpolant, S(x), for f (x) is a piecewise cubic


polynomial with components Sj (x) defined on [xj , xj+1 ] for
j = 0, 1, . . . , n − 1.
a0 + b0 (x − x0 ) + c0 (x − x0 )2 + d0 (x − x0 )3


 if x0 ≤ x ≤ x1
a1 + b1 (x − x1 ) + c1 (x − x1 )2 + d1 (x − x1 )3 if x1 ≤ x ≤ x2





 .. ..
. .

S(x) =

 ai + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 if xi ≤ x ≤ xi+1

 .. ..
. .




an−1 + bn−1 (x − xn−1 ) + cn−1 (x − xn−1 )2 + dn−1 (x − xn−1 )3 if xn−1 ≤ x ≤ xn

Cubic Spline Interpolant (2 of 2)

The cubic spline interpolant will have the following properties.


I S(xj ) = f (xj ) for j = 0, 1, . . . , n.
I Sj (xj+1 ) = Sj+1 (xj+1 ) for j = 0, 1, . . . , n − 2.
I Sj0 (xj+1 ) = Sj+1
0 (x
j+1 ) for j = 0, 1, . . . , n − 2.
00 00
I Sj (xj+1 ) = Sj+1 (xj+1 ) for j = 0, 1, . . . , n − 2.
I One of the following boundary conditions (BCs) is satisfied:

I S 00 (x0 ) = S 00 (xn ) = 0 (free or natural BCs).


I S 0 (x0 ) = f 0 (x0 ) and S 0 (xn ) = f 0 (xn ) (clamped BCs).
Example (1 of 7)
Construct a piecewise cubic spline interpolant for the curve
passing through
{(5, 5), (7, 2), (9, 4)},
with natural boundary conditions.
y
6

x
4 5 6 7 8 9 10
Example (2 of 7)
This will require two cubics:

S0 (x) = a0 + b0 (x − 5) + c0 (x − 5)2 + d0 (x − 5)3


S1 (x) = a1 + b1 (x − 7) + c1 (x − 7)2 + d1 (x − 7)3

Since there are 8 coefficients, we must derive 8 equations to


solve.
Example (2 of 7)
This will require two cubics:

S0 (x) = a0 + b0 (x − 5) + c0 (x − 5)2 + d0 (x − 5)3


S1 (x) = a1 + b1 (x − 7) + c1 (x − 7)2 + d1 (x − 7)3

Since there are 8 coefficients, we must derive 8 equations to


solve.
The splines must agree with the function (the y -coordinates) at
the nodes (the x-coordinates).

5 = S0 (5) = a0
2 = S0 (7) = a0 + 2b0 + 4c0 + 8d0
2 = S1 (7) = a1
4 = S1 (9) = a1 + 2b1 + 4c1 + 8d1
Example (3 of 7)

The first and second derivatives of the cubics must agree at


their shared node x = 7.

S00 (7) = b0 + 4c0 + 12d0 = b1 = S10 (7)


S000 (7) = 2c0 + 12d0 = 2c1 = S100 (7)
Example (3 of 7)

The first and second derivatives of the cubics must agree at


their shared node x = 7.

S00 (7) = b0 + 4c0 + 12d0 = b1 = S10 (7)


S000 (7) = 2c0 + 12d0 = 2c1 = S100 (7)

The final two equations come from the natural boundary


conditions.

S000 (5) = 0 = 2c0


S100 (9) = 0 = 2c1 + 12d1
Example (4 of 7)

All eight linear equations together form the system:

5 = a0
2 = a0 + 2b0 + 4c0 + 8d0
2 = a1
4 = a1 + 2b1 + 4c1 + 8d1
0 = b0 + 4c0 + 12d0 − b1
0 = 2c0 + 12d0 − 2c1
0 = 2c0
0 = 2c1 + 12d1
Example (5 of 7)

The solution is:


i ai bi ci di

17 5
0 5 − 0
8 32
1 15 5
1 2 − −
4 16 32
Example (6 of 7)
The natural cubic spline can be expressed as:

17 5 3
 5 − 8 (x − 5) + 32 (x − 5) if 5 ≤ x ≤ 7



S(x) =
 2 − 1 (x − 7) + 15 (x − 7)2 − 5 (x − 7)3 if 7 ≤ x ≤ 9



4 16 32
y
6

x
4 5 6 7 8 9 10
Example (7 of 7)

We can verify the continuity of the first and second derivatives


from the following graphs.
S''HxL
S'HxL

1.5
1.5
1.0

0.5
1.0
x
6 7 8 9
-0.5

-1.0 0.5

-1.5

-2.0 x
6 7 8 9
General Construction Process

Given n + 1 nodal/data values:


{(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))} we will create n cubic
polynomials.
General Construction Process

Given n + 1 nodal/data values:


{(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))} we will create n cubic
polynomials.
For j = 0, 1, . . . , n − 1 assume

Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3 .

We must find aj , bj , cj and dj (a total of 4n unknowns) subject to


the conditions specified in the definition.
First Set of Equations
Let hj = xj+1 − xj then

Sj (xj ) = aj = f (xj )
Sj+1 (xj+1 ) = aj+1 = Sj (xj+1 ) = aj + bj hj + cj hj2 + dj hj3 .

So far we know aj for j = 0, 1, . . . , n − 1 and have n equations


and 3n unknowns.

a1 = a0 + b0 h0 + c0 h02 + d0 h03
..
.
aj+1 = aj + bj hj + cj hj2 + dj hj3
..
.
2 3
an = an−1 + bn−1 hn−1 + cn−1 hn−1 + dn−1 hn−1
First Derivative

The continuity of the first derivative at the nodal points


produces n more equations.
For j = 0, 1, . . . , n − 1 we have

Sj0 (x) = bj + 2cj (x − xj ) + 3dj (x − xj )2 .

Thus

Sj0 (xj ) = bj
0
Sj+1 (xj+1 ) = bj+1 = Sj0 (xj+1 ) = bj + 2cj hj + 3dj hj2

Now we have 2n equations and 3n unknowns.


Equations Derived So Far

aj+1 = aj + bj hj + cj hj2 + dj hj3 (for j = 0, 1, . . . , n − 1)


b1 = b0 + 2c0 h0 + 3d0 h02
..
.
bj+1 = bj + 2cj hj + 3dj hj2
..
.
2
bn = bn−1 + 2cn−1 hn−1 + 3dn−1 hn−1

The unknowns are bj , cj , and dj for j = 0, 1, . . . , n − 1.


Second Derivative

The continuity of the second derivative at the nodal points


produces n more equations.
For j = 0, 1, . . . , n − 1 we have

Sj00 (x) = 2cj + 6dj (x − xj ).

Thus

Sj00 (xj ) = 2cj


00
Sj+1 (xj+1 ) = 2cj+1 = Sj00 (xj+1 ) = 2cj + 6dj hj

Now we have 3n equations and 3n unknowns.


Equations Derived So Far

aj+1 = aj + bj hj + cj hj2 + dj hj3 (for j = 0, 1, . . . , n − 1)


bj+1 = bj + 2cj hj + 3dj hj2 (for j = 0, 1, . . . , n − 1)
2c1 = 2c0 + 6d0 h0
..
.
2cj+1 = 2cj + 6dj hj
..
.
2cn = 2cn−1 + 6dn−1 hn−1

The unknowns are bj , cj , and dj for j = 0, 1, . . . , n − 1.


Summary of Equations

For j = 0, 1, . . . , n − 1 we have

aj+1 = aj + bj hj + cj hj2 + dj hj3


bj+1 = bj + 2cj hj + 3dj hj2
cj+1 = cj + 3dj hj .

Note: The quantities aj and hj are known.


Summary of Equations

For j = 0, 1, . . . , n − 1 we have

aj+1 = aj + bj hj + cj hj2 + dj hj3


bj+1 = bj + 2cj hj + 3dj hj2
cj+1 = cj + 3dj hj .

Note: The quantities aj and hj are known.


Solve the third equation for dj and substitute into the other two
equations.
cj+1 − cj
dj =
3hj
This eliminates n equations of the third type.
Solving the Equations (1 of 3)

aj+1 = aj + bj hj + cj hj2 + dj hj3

bj+1 = bj + 2cj hj + 3dj hj2


Solving the Equations (1 of 3)

aj+1 = aj + bj hj + cj hj2 + dj hj3


cj+1 − cj
 
2
= aj + bj hj + cj hj + hj3
3hj
hj2
= aj + bj hj + (2cj + cj+1 )
3
bj+1 = bj + 2cj hj + 3dj hj2
Solving the Equations (1 of 3)

aj+1 = aj + bj hj + cj hj2 + dj hj3


cj+1 − cj
 
2
= aj + bj hj + cj hj + hj3
3hj
hj2
= aj + bj hj + (2cj + cj+1 )
3
bj+1 = bj + 2cj hj + 3dj hj2
cj+1 − cj
 
= bj + 2cj hj + 3 hj2
3hj
= bj + hj (cj + cj+1 )
Solving the Equations (1 of 3)

aj+1 = aj + bj hj + cj hj2 + dj hj3


cj+1 − cj
 
2
= aj + bj hj + cj hj + hj3
3hj
hj2
= aj + bj hj + (2cj + cj+1 )
3
bj+1 = bj + 2cj hj + 3dj hj2
cj+1 − cj
 
= bj + 2cj hj + 3 hj2
3hj
= bj + hj (cj + cj+1 )

Solve the first equation for bj .

1 hj
bj = (aj+1 − aj ) − (2cj + cj+1 )
hj 3
Solving the Equations (2 of 3)

Replace index j by j − 1 to obtain

1 hj−1
bj−1 = (aj − aj−1 ) − (2cj−1 + cj ).
hj−1 3
Solving the Equations (2 of 3)

Replace index j by j − 1 to obtain

1 hj−1
bj−1 = (aj − aj−1 ) − (2cj−1 + cj ).
hj−1 3

We can also re-index the earlier equation

bj+1 = bj + hj (cj + cj+1 )

to obtain
bj = bj−1 + hj−1 (cj−1 + cj ).
Substitute the equations for bj−1 and bj into the remaining
equation. This step eliminates n equations of the first type.
Solving the Equations (3 of 3)

1 hj
(aj+1 − aj ) − (2cj + cj+1 )
hj 3
1 hj−1
= (aj − aj−1 ) − (2cj−1 + cj ) + hj−1 (cj−1 + cj )
hj−1 3

Collect all terms involving c to one side.

3 3
hj−1 cj−1 +2cj (hj−1 +hj )+hj cj+1 = (aj+1 −aj )− (aj −aj−1 )
hj hj−1

for j = 1, 2, . . . , n − 1.
Solving the Equations (3 of 3)

1 hj
(aj+1 − aj ) − (2cj + cj+1 )
hj 3
1 hj−1
= (aj − aj−1 ) − (2cj−1 + cj ) + hj−1 (cj−1 + cj )
hj−1 3

Collect all terms involving c to one side.

3 3
hj−1 cj−1 +2cj (hj−1 +hj )+hj cj+1 = (aj+1 −aj )− (aj −aj−1 )
hj hj−1

for j = 1, 2, . . . , n − 1.
Remark: we have n − 1 equations and n + 1 unknowns.
Natural Boundary Conditions

If S 00 (x0 ) = S000 (x0 ) = 2c0 = 0 then c0 = 0 and if


S 00 (xn ) = Sn−1
00 (x ) = 2c = 0 then c = 0.
n n n
Natural Boundary Conditions

If S 00 (x0 ) = S000 (x0 ) = 2c0 = 0 then c0 = 0 and if


S 00 (xn ) = Sn−1
00 (x ) = 2c = 0 then c = 0.
n n n

Theorem
If f is defined at a = x0 < x1 < · · · < xn = b then f has a unique
natural cubic spline interpolant.
Natural BC Linear System (1 of 3)

In matrix form the system of n + 1 equations has the form


Ac = y where
 
1 0 0 0 ··· 0
 h0 2(h0 + h1 )
 h 1 0 · · · 0 

 0 h1 2(h1 + h2 ) h2 ··· 0 
A= .
 
. . . ..
 .. .. .. .. 
 . 

 0 0 0 hn−2 2(hn−2 + hn−1 ) hn−1 
0 0 0 0 ··· 1

Note: A is a tridiagonal matrix.


Natural BC Linear System (2 of 3)

The vector y on the right-hand side is formed as

0
 
3 3

 h1 (a2 − a1 ) − h0 (a1 − a0 )


3 3
h2 (a3 − a2 ) − h1 (a2 − a1 )
 
 
 .. 
y=
 . 

3 3
hn−2 (an−1 − an−2 ) − hn−3 (an−2 − an−3 )
 
 
3 3
 
hn−1 (an − an−1 ) − hn−2 (an−1 − an−2 )
 
0

Note: A is a tridiagonal matrix.


Natural BC Linear System (3 of 3)

 

c0
 0
3 3
 c1   h1 (a2 − a1 ) − h0 (a1 − a0 )

   3 3

c2 h2 (a3 − a2 ) − h1 (a2 − a1 )
   
  
A =

.. .. 
.   .
 
   
 cn−1 3 3
hn−1 (an − an−1 ) − hn−2 (an−1 − an−2 )
 



cn 0

We solve this linear system of equations using a common


algorithm for handling tridiagonal systems.
Natural Cubic Spline Algorithm
INPUT {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}
STEP 1 For i = 0, 1, . . . , n − 1 set ai = f (xi ); set
hi = xi+1 − xi .
STEP 2 For i = 1, 2, . . . , n − 1 set
3 3
αi = (ai+1 − ai ) − (ai − ai−1 ).
hi hi−1
STEP 3 Set l0 = 1; set µ0 = 0; set z0 = 0.
STEP 4 For i = 1, 2, . . . , n − 1 set
hi
li = 2(xi+1 − xi−1 ) − hi−1 µi−1 ; set µi = ; set
li
αi − hi−1 zi−1
zi = .
li
STEP 5 Set ln = 1; set cn = 0; set zn = 0.
STEP 6 For j = n − 1, n − 2, . . . , 0 set cj = zj − µj cj+1 ; set
aj+1 − aj hj (cj+1 + 2cj ) cj+1 − cj
bj = − ; set dj = .
hj 3 3hj
STEP 7 For j = 0, 1, . . . , n − 1 OUTPUT aj , bj , cj , dj .
Example (1 of 4)

Construct the natural cubic spline interpolant for


f (x) = ln(ex + 2) with nodal values:

x f (x)
−1.0 0.86199480
−0.5 0.95802009
0.0 1.0986123
0.5 1.2943767

Calculate the absolute error in using the interpolant to


approximate f (0.25) and f 0 (0.25).
Example (2 of 4)

In this case n = 3 and

h0 = h1 = h2 = 0.5

with

a0 = 0.86199480, a1 = 0.95802009,
a2 = 1.0986123, a3 = 1.2943767.

The linear system resembles,


    
1.0 0.0 0.0 0.0 c0 0.0
 0.5 2.0 0.5 0.0   c1   0.267402 
Ac =  0.0 0.5 2.0 0.5   c2  =  0.331034  = y
   

0.0 0.0 0.0 1.0 c3 0.0


Example (3 of 4)
The coefficients of the piecewise cubics:
i ai bi ci di
0 0.861995 0.175638 0.0 0.0656509
1 0.95802 0.224876 0.0984763 0.028281
2 1.09861 0.344563 0.140898 −0.093918
Example (3 of 4)
The coefficients of the piecewise cubics:
i ai bi ci di
0 0.861995 0.175638 0.0 0.0656509
1 0.95802 0.224876 0.0984763 0.028281
2 1.09861 0.344563 0.140898 −0.093918
The cubic spline:

0.861995 + 0.175638(x + 1) if −1 ≤ x ≤ −0.5




+ 0.0656509(x + 1)3





 0.95802 + 0.224876(x + 0.5)


S(x) = + 0.0984763(x + 0.5)2 if −0.5 ≤ x ≤ 0
 + 0.028281(x + 0.5)

 3

1.09861 + 0.344563x if 0 ≤ x ≤ 0.5




+ 0.140898x 2 − 0.093918x 3

Example (4 of 4)

y
1.3

1.2

1.1

1.0

x
-1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4

f (0.25) S(0.25) Abs. Err. f 0 (0.25) S 0 (0.25) Abs. Err.


1.18907 1.19209 3.02154 × 10−3 0.390991 0.3974 6.40839 × 10−3
Clamped Boundary Conditions (1 of 2)

If S 0 (a) = S00 (a) = f 0 (a) = b0 then

1 h0
f 0 (a) = (a1 − a0 ) − (2c0 + c1 )
h0 3
which is equivalent to

3
h0 (2c0 + c1 ) = (a1 − a0 ) − 3f 0 (a).
h0

This replaces the first equation in our system of n equations.


Clamped Boundary Conditions (2 of 2)

Likewise if S 0 (b) = Sn0 (b) = f 0 (b) = bn then

bn = bn−1 + hn−1 (cn−1 + cn )


1 hn−1
= (an − an−1 ) − (2cn−1 + cn ) + hn−1 (cn−1 + cn )
hn−1 3
1 hn−1
= (an − an−1 ) + (cn−1 + 2cn )
hn−1 3

which is equivalent to

3
hn−1 (cn−1 + 2cn ) = 3f 0 (b) − (an − an−1 ).
hn−1

This replaces the last equation in our system of n equations.


Clamped BC Linear System (1 of 2)

Theorem
If f is defined at a = x0 < x1 < · · · < xn = b and differentiable at
x = a and at x = b, then f has a unique clamped cubic spline
interpolant.
In matrix form the system of n equations has the form Ac = y
where
 
2h0 h0 0 0 ··· 0
 h0 2(h0 + h1 )
 h1 0 ··· 0 

 0 h 1 2(h 1 + h2 ) h 2 · · · 0 
A= .
 
. . . ..
 .. .. .. .. 
 . 

 0 0 0 hn−2 2(hn−2 + hn−1 ) hn−1 
0 0 0 ··· hn−1 2hn−1

Note: A is a tridiagonal matrix.


Clamped BC Linear System (2 of 2)

3
− a0 ) − 3f 0 (a)
 
  h0 (a1
c0 3 3
h1 (a2 − a1 ) − h0 (a1 − a0 )
 
 
 c1 3 3
h2 (a3 − a2 ) − h1 (a2 − a1 )
  
   
 c2
..
  
A . =
   
 .. . 
3 3
  
hn−2 (an−1 − an−2 ) − hn−3 (an−2 − an−3 )
   
 cn−1   
3 3
hn−1 (an − an−1 ) − hn−2 (an−1 − an−2 )
 
cn  
3
3f 0 (b) − hn−1 (an − an−1 )
Coefficients of the Cubic Splines

Since aj for j = 0, 1, . . . , n is known, once we solve the linear


system for cj (again for j = 0, 1, . . . , n) then

1 hj
bj = (aj+1 − aj ) − (cj+1 + 2cj )
hj 3
1
dj = (cj+1 − cj )
3hj

for j = 0, 1, . . . , n − 1.
Clamped Cubic Spline Algorithm (1 of 2)

INPUT {(x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn ))}, f 0 (x0 ), and
f 0 (xn ).
STEP 1 For i = 0, 1, . . . , n − 1 set ai = f (xi ); set
hi = xi+1 − xi .
3(a1 − a0 )
STEP 2 Set α0 = − 3f 0 (x0 );
h0
3(an − an−1 )
αn = 3f 0 (xn ) − .
hn−1
STEP 3 For i = 1, 2, . . . , n − 1 set
3 3
αi = (ai+1 − ai ) − (ai − ai−1 ).
hi hi−1
α0
STEP 4 Set l0 = 2h0 ; µ0 = 0.5; z0 = .
l0
Clamped Cubic Spline Algorithm (2 of 2)

STEP 5 For i = 1, 2, . . . , n − 1 set


hi
li = 2(xi+1 − xi−1 ) − hi−1 µi−1 ; µi = ;
li
αi − hi−1 zi−1
zi = .
li
αn − hn−1 zn−1
STEP 6 Set ln = hn−1 (2 − µn−1 ); zn = ;
ln
cn = zn .
STEP 7 For j = n − 1, n − 2, . . . , 0 set cj = zj − µj cj+1 ;
aj+1 − aj hj (cj+1 + 2cj ) cj+1 − cj
bj = − ; dj = .
hj 3 3hj
STEP 8 For j = 0, 1, . . . , n − 1 OUTPUT aj , bj , cj , dj .
Example (1 of 4)

Construct the clamped cubic spline interpolant for


f (x) = ln(ex + 2) with nodal values:

x f (x)
−1.0 0.86199480
−0.5 0.95802009
0.0 1.0986123
0.5 1.2943767

Calculate the absolute error in using the interpolant to


approximate f (0.25) and f 0 (0.25).
Example (2 of 4)
In this case n = 3 and

h0 = h1 = h2 = 0.5

with

a0 = 0.86199480, a1 = 0.95802009,
a2 = 1.0986123, a3 = 1.2943767.

Note that f 0 (−1) ≈ 0.155362 and f 0 (0.5) ≈ 0.451863.


The linear system resembles,
    
1.0 0.5 0.0 0.0 c0 0.110064
 0.5 2.0 0.5 0.0   c1   0.267402 
Ac =   =  = y.
 0.0 0.5 2.0 0.5   c2   0.331034 
0.0 0.0 0.5 1.0 c3 0.181001
Example (3 of 4)
The coefficients of the piecewise cubics:
i ai bi ci di
0 0.861995 0.155362 0.0653748 0.0160031
1 0.95802 0.23274 0.0893795 0.0150207
2 1.09861 0.333384 0.11191 0.00875717
Example (3 of 4)
The coefficients of the piecewise cubics:
i ai bi ci di
0 0.861995 0.155362 0.0653748 0.0160031
1 0.95802 0.23274 0.0893795 0.0150207
2 1.09861 0.333384 0.11191 0.00875717
The cubic spline:

0.861995 + 0.155362(x + 1)


+ 0.0653748(x + 1)2



 if −1 ≤ x ≤ −0.5
3




 + 0.0160031(x + 1)
0.95802 + 0.23274(x + 0.5)

S(x) =

 + 0.0893795(x + 0.5)2 if −0.5 ≤ x ≤ 0
 + 0.0150207(x + 0.5)

 3

2
 1.09861 + 0.333384x + 0.11191x if 0 ≤ x ≤ 0.5



3

+ 0.00875717x
Example (4 of 4)

y
1.3

1.2

1.1

1.0

x
-1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4

f (0.25) S(0.25) Abs. Err. f 0 (0.25) S 0 (0.25) Abs. Err.


1.18907 1.18991 1.97037 × 10−5 0.390991 0.390982 9.67677 × 10−6
Error Analysis

Theorem
Let f ∈ C 4 [a, b] with max f (4) (x) = M. If S is the unique

a≤x≤b
clamped cubic spline interpolant to f with respect to nodes
a = x0 < x1 < · · · < xn = b, then for all x ∈ [a, b],

5M
|f (x) − S(x)| ≤ max (xj+1 − xj )4 .
384 0≤j≤n−1
Example

Earlier we found the clamped cubic spline interpolant for


f (x) = ln(ex + 2). In this example xj+1 − xj = 0.5 for all j.
Note that
2ex (4 − 8ex + e2x )
f (4) (x) =
(2 + ex )4

(4)
max f (x) ≈ 0.120398
−1≤x≤0.5

|f (0.25) − S(0.25)| = 1.97037 × 10−5


5(0.120398)
≤ (0.5)4
384
≈ 9.798 × 10−5 .
Natural Cubic Spline Example (1 of 3)

Consider the following data:

x f (x)
−0.5 −0.02475
−0.25 0.334938
0.0 1.101

The linear system takes the form

Ac = y
    
1.00 0.00 0.00 c0 0.00
 0.25 1.00 0.25   c1  =  4.8765 
0.00 0.00 1.00 c2 0.00
Natural Cubic Spline Example (2 of 3)

The coefficients of the natural cubic spline interpolant are


ai bi ci di
−0.02475 1.03238 0.0 6.502
0.334938 2.2515 4.8765 −6.502
and the piecewise cubic is
−0.02475 + 1.03238(x + 0.5) + 6.502(x + 0.05)3

if −0.5 ≤ x ≤ −0.25
S(x) =
0.334938 + 2.2515(x + 0.25) + 4.8765(x + 0.25)2 − 6.502(x + 0.25)3 if −0.25 ≤ x ≤ 0.
Natural Cubic Spline Example (3 of 3)

fHxL

0.8

0.6

0.4

0.2

x
-0.5 -0.4 -0.3 -0.2 -0.1
Clamped Cubic Spline Example (1 of 4)

Here we will find the√ clamped cubic spline interpolant to the


function f (x) = J0 ( x) at the nodes xi = 5i for i = 0, 1, . . . , 10.

x f (x)
0.0 1.0
5.0 0.0904053
10.0 −0.310045
.. ..
. .
50.0 0.299655

Note: f 0 (0) = −0.25 and f 0 (50) = −0.00117217.


Clamped Cubic Spline Example (2 of 4)

The tridiagonal linear system takes the following form


 
0.204243
 

 0.305487 

10 5 0 0 · · · 0 0 0 0 c0 
 0.184846 


 5 20 5 0 · · · 0 0 0 0   c1  
  
 0.100749 


 0 5 20 5 · · · 0 0 0 0    c2  
  
0.044242


.. .. ..   ..  =  0.008211 .
 
 . .  .  
.    
−0.012944
 
 0 0 0 0 ··· 5 20 5 0   c8   
−0.023582
    
 0 0 0 0 ··· 0 5 20 5   c9   
−0.027056
 
0 0 0 0 ··· 0 0 5 10 c10 



 −0.025905 
−0.011808
Clamped Cubic Spline Example (3 of 4)

The coefficients of the clamped cubic spline interpolant are

ai bi ci di
1 −0.25 0.0154655 −0.00036986
0.09040533 −0.1230843 0.009917643 −0.0002637577
−0.3100448 −0.0436897 0.005961278 −0.0001836499
−0.4024176 0.00214934 0.003206529 −0.0001229411
−0.3268753 0.02499404 0.001362412 −0.0000780158
−0.1775968 0.03276697 0.000192174 −0.0000454083
−0.0146336 0.03128308 −0.00048895 −0.0000224102
0.12675676 0.02471281 −0.00082510 −6.79522 × 10−6
0.22884382 0.01595213 −0.00092703 3.265389 × 10−6
0.28583684 0.00692671 −0.00087805 9.088463 × 10−6
Clamped Cubic Spline Example (4 of 4)

y
1.0

0.8

0.6

0.4

0.2

x
10 20 30 40 50
-0.2

-0.4
Homework

I Read Section 3.5


I Exercises: 1, 3d, 5d, 7d, 25

You might also like