0% found this document useful (0 votes)
69 views52 pages

Spline Power Point

The document discusses polynomial interpolation and cubic splines. It introduces polynomial interpolation using Lagrange polynomials to construct a polynomial that passes through given data points. It also discusses Hermite interpolation polynomials, which match both the function values and derivatives at given points. The document outlines topics including cubic splines, building spline segments, and solving associated linear systems.

Uploaded by

Shahad Algazaa
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
0% found this document useful (0 votes)
69 views52 pages

Spline Power Point

The document discusses polynomial interpolation and cubic splines. It introduces polynomial interpolation using Lagrange polynomials to construct a polynomial that passes through given data points. It also discusses Hermite interpolation polynomials, which match both the function values and derivatives at given points. The document outlines topics including cubic splines, building spline segments, and solving associated linear systems.

Uploaded by

Shahad Algazaa
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/ 52

Polynomial Interpolation

Cubic Splines
Cubic Splines...

Math 541 - Numerical Analysis


Interpolation and Polynomial Approximation —
Piecewise Polynomial Approximation; Cubic Splines

Joseph M. Mahaffy,
[email protected]

Department of Mathematics and Statistics


Dynamical Systems Group
Computational Sciences Research Center
San Diego State University
San Diego, CA 92182-7720
http://jmahaffy.sdsu.edu

Spring 2018
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (1/48)
Polynomial Interpolation
Cubic Splines
Cubic Splines...

Outline

1 Polynomial Interpolation
Checking the Roadmap
Undesirable Side-effects
New Ideas...

2 Cubic Splines
Introduction
Building the Spline Segments
Associated Linear Systems

3 Cubic Splines...
Error Bound
Solving the Linear Systems

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (2/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

An n-degree polynomial passing through n + 1 points

Polynomial Interpolation
Construct a polynomial passing through the points (x0 , f (x0 )),
(x1 , f (x1 )), (x2 , f (x2 )), . . . , (xN , f (xn )).
Define Ln,k (x), the Lagrange coefficients:

n
Y x − xi x − x0 x − xk−1 x − xk+1 x − xn
Ln,k (x) = = ··· · ··· ,
xk − xi xk − x0 xk − xk−1 xk − xk+1 xk − xn
i=0, i6=k

which have the properties

Ln,k (xk ) = 1; Ln,k (xi ) = 0, for all i 6= k.

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (3/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

The nth Lagrange Interpolating Polynomial

We use Ln,k (x), k = 0, . . . , n as building blocks for the Lagrange


interpolating polynomial:
n
X
P (x) = f (xk )Ln,k (x),
k=0

which has the property

P (xi ) = f (xi ), for all i = 0, . . . , n.

This is the unique nth degree polynomial passing through the


points
(xi , f (xi )), i = 0, . . . , n.

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (4/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Combining Taylor and Lagrange Polynomials

A Taylor polynomial of degree n matches the function and


its first n derivatives at one point.
A Lagrange polynomial of degree n matches the function
values at n + 1 points.
Question: Can we combine the ideas of Taylor and Lagrange to
get an interpolating polynomial that matches both
the function values and some number of derivatives
at multiple points?
Answer: To our euphoric joy, such polynomials exist! They
are called Osculating Polynomials.
The Concise Oxford Dictionary:
Osculate 1. (arch. or joc.) kiss. 2. (Biol., of species, etc.) be related through
intermediate species etc., have common characteristics with another or with each
other. 3. (Math., of curve or surface) have contact of higher than first order with,
meet at three or more coincident points.
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (5/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Osculating Polynomials In Painful Generality

Given (n + 1) distinct points {x0 , x1 , . . . , xn } ∈ [a, b], and


non-negative integers {m0 , m1 , . . . , mn }.
Notation: Let m = max{m0 , m1 , . . . , mn }.
The osculating polynomial approximation of a function
f ∈ C m [a, b] at xi , i = 0, 1, . . . , n is the polynomial (of lowest possible
order) that agrees with

{f (xi ), f ′ (xi ), . . . , f (mi ) (xi )} at xi ∈ [a, b], ∀i.

The degree of the osculating polynomial is at most


n
X
M =n+ mi .
i=0

In the case where mi = 1, ∀i the polynomial is called a Hermite


Interpolatory Polynomial.
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (6/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Hermite Interpolatory Polynomials The Existence Statement


If f ∈ C 1 [a, b] and {x0 , x1 , . . . , xn } ∈ [a, b] are distinct, the unique
polynomial of least degree (≤ 2n + 1) agreeing with f (x) and f ′ (x) at
{x0 , x1 , . . . , xn } is
n
X n
X
H2n+1 (x) = f (xj )Hn,j (x) + f ′ (xj )Ĥn,j (x),
j=0 j=0

where  
Hn,j (x) = 1 − 2(x − xj )L′n,j (xj ) L2n,j (x)
Ĥn,j (x) = (x − xj )L2n,j (x),
and Ln,j (x) are our old friends, the Lagrange coefficients:
n
Y x − xi
Ln,j (x) = .
i=0, i6=j
xj − xi

Further, if f ∈ C 2n+2 [a, b], then for some ξ(x) ∈ [a, b]


Qn
− xi )2 (2n+2)
i=0 (x
f (x) = H2n+1 (x) + f (ξ(x)).
(2n + 2)!

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (7/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Example of Interpreting Polynomials


Consider the function f (x) = sin(2x). The graph below shows fits of 3 and 6
points with Lagrange P2 (x) and P5 (x), respectively, and 3 points, xi , with f (xi )
and f ′ (xi ), using Hermite H5 (x) polynomials.

1.5
f (x)
P2 (x)
1 H5 (x)
P5 (x)
0.5

0
y

-0.5

-1

-1.5

-2
0 π/2 π 3π/2 2π
x
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (8/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Checking the Roadmap Interpolatory Polynomials

Inspired by Weierstrass, we have looked at a number of strategies for


approximating arbitrary functions using polynomials.
Detailed information from one point, excellent locally, but not
Taylor
very successful for extended intervals.
≤ nth degree poly. interpolating the function in (n + 1) pts.
Lagrange Representation: Theoretical using the Lagrange coefficients
Ln,k (x)
≤ (2n + 1)th degree polynomial interpolating the function, and
matching its first derivative in (n + 1) points.
Hermite
Representation: Theoretical using two types of Hermite co-
b n,k (x)
efficients Hn,k (x), and H

With (n + 1) points, and a uniform matching criteria of m derivatives


in each point we can talk about these in terms of the broader class of
osculating polynomials with:
Taylor(m,n=0), Lagrange(m=0,n), Hermite(m=1,n); with resulting
degree d ≤ (m + 1)(n + 1) − 1.
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (9/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Admiring the Roadmap... Are We Done?

There are many methods (Neville, Newton’s divided difference) to


produce representations of arbitrary osculating polynomials...
We have swept a dirty little secret under the rug: —
For all these interpolation strategies we get — provided the
underlying function is smooth enough, i.e. f ∈ C (m+1)(n+1) ([a, b]) —
errors of the form
Qn (m+1)
i=0 (x − xi )
f ((m+1)(n+1)) (ξ(x)), ξ(x) ∈ [a, b]
((m + 1)(n + 1))!
| {z }
η(x)

We have seen that with the xi ’s dispersed (Lagrange / Hermite-style),


the controllable part, η(x), of the error term is better behaved than
for Taylor polynomials (but is it well-behaved enough?!) However,
we have no control over the ((n + 1)(m + 1))th derivative of f .
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (10/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Problems with High Order Polynomial Approximation

We can force a polynomial of high degree to pass through as many


points (xi , f (xi )) as we like. However, high degree polynomials tend
to fluctuate wildly between the interpolating points.
5

P(x)
0
f(x_i)

-1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (11/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Alternative Approach to Interpolation Divide-and-Conquer

The oscillations tend to be extremely bad close to the end


points of the interval of interest, and (in general) the more
points you put in, the wilder the oscillations get!
Clearly, we need some new tricks!
Idea: Divide the interval into smaller sub-intervals, and con-
struct different low degree polynomial approximations
(with small oscillations) on the sub-intervals.

This is called Piecewise Polynomial Approximation.


Simplest continuous variant: Piecewise Linear
Approximation:

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (12/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Piecewise Linear Approximation Connect-the-Dots

P(x)
f(x_i)

0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Figure: Piecewise linear approximation of the same data as on


slide 11. Is this the end of excessive oscillations?!?

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (13/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Problem with Piecewise Linear Approximation

The piecewise linear interpolating function is not differentiable at


the “nodes,” i.e. the points xi . (Typically we want to do more than
just plot the polynomial... and even plotting shows sharp corners!)
Idea: Strengthened by our experience with Hermite polynomi-
als, why not generate piecewise polynomials that match both
the function value and some number of derivatives in the nodes!
The Return of the Cubic Hermite Polynomial!
If, for instance f (x) and f ′ (x) are known in the nodes, we can use a
collection of cubic Hermite polynomials Hj3 (x) to build up such a
function.
But... what if f ′ (x) is not known (in general getting measurements of
the derivative of a physical process is much more difficult and
unreliable than measuring the quantity itself), can we still generate
an interpolant with continuous derivative(s)???
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (14/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

An Old Idea: Splines

(Edited for Space, and “Content”) Wikipedia Definition: Spline —


A spline consists of a long strip of wood (a lath) fixed in position at a
number of points. Shipwrights often used splines to mark the curve of
a hull. The lath will take the shape which minimizes the energy
required for bending it between the fixed points, and thus adopt
the smoothest possible shape.
Later craftsmen have made splines out of rubber, steel, and other
elastomeric materials.
Spline devices help bend the wood for pianos, violins, violas, etc. The
Wright brothers used one to shape the wings of their aircraft.
In 1946 mathematicians started studying the spline shape, and
derived the piecewise polynomial formula known as the spline
curve or function. This has led to the widespread use of such
functions in computer-aided design, especially in the surface
designs of vehicles.
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (15/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Modern Spline Construction: — A Model Railroad

Pictures from Charlie Comstock’s webpage


http://s145079212.onlinehome.us/rr/

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (16/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Applications & Pretty Pictures Provided by “Uncle Google”

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (17/48)
Polynomial Interpolation Checking the Roadmap
Cubic Splines Undesirable Side-effects
Cubic Splines... New Ideas...

Applications & Pretty Pictures Provided by “Uncle Google”

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (18/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines to the Rescue!!! 1D-version

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


a = x0 < x1 < · · · < xn = b, a cubic spline interpolant S for f is a
function that satisfies the following conditions:
a. S(x) is a cubic polynomial, denoted Sj (x), on the sub-interval
[xj , xj+1 ] ∀j = 0, 1, . . . , n − 1.
b. Sj (xj ) = f (xj ), ∀j = 0, 1, . . . , (n − 1). “Left” Interpolation

c. Sj (xj+1 ) = f (xj+1 ), ∀j = 0, 1, . . . , (n − 1). “Right” Interpolation

d. Sj′ (xj+1 ) = ′
Sj+1 (xj+1 ), ∀j = 0, 1, . . . , (n − 2). Slope-match

e. Sj′′ (xj+1 ) = ′′
Sj+1 (xj+1 ), ∀j = 0, 1, . . . , (n − 2). Curvature-match

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (19/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

A Spline Segment

S{j}(x) S{j+1}(x)

x(j) x(j+1) x(j+2)

The spline segment Sj (x) “lives” on the interval [xj , xj+1 ].


The spline segment Sj+1 (x) “lives” on the interval [xj+1 , xj+2 ].
Their function values: Sj (xj+1 ) = Sj+1 (xj+1 ) = f (xj+1 )
derivatives: Sj′ (xj+1 ) = Sj+1

(xj+1 )
′′ ′′
and second derivatives: Sj (xj+1 ) = Sj+1 (xj+1 )
... are required to match in the interior point xj+1 .
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (20/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Cartoon”: Cubic Spline.

S[n]

S[0]

S[2]
S[1] S[n−1]

x[0]
x[1]
x[2]
x[n−1] x[n]
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (21/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Progressive” Cubic Spline Interpolation

4.5

3.5

2.5

1.5

0.5

0
0 2 4 6 8 10 12 14
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (22/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Progressive” Cubic Spline Interpolation

4.5

3.5

2.5

1.5

0.5

0
0 2 4 6 8 10 12 14
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (22/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Progressive” Cubic Spline Interpolation

4.5

3.5

2.5

1.5

0.5

0
0 2 4 6 8 10 12 14
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (22/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Progressive” Cubic Spline Interpolation

4.5

3.5

2.5

1.5

0.5

0
0 2 4 6 8 10 12 14
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (22/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Example “Progressive” Cubic Spline Interpolation

4.5

3.5

2.5

1.5

0.5

0
0 2 4 6 8 10 12 14
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (22/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Building Cubic Splines, I. — Applying the Conditions

We start with
Sj (x) = aj + bj (x − xj ) + cj (x − xj )2 + dj (x − xj )3
∀j ∈ {0, 1, . . . , n − 1}

and apply all the conditions to these polynomials...


For convenience we introduce the notation hj = xj+1 − xj .
b. Sj (xj ) = aj = f (xj )
c. Sj+1 (xj+1 ) = aj+1 = aj + bj hj + cj h2j + dj h3j = Sj (xj+1 )
d. Notice Sj′ (xj ) = bj , hence we get
bj+1 = bj + 2cj hj + 3dj h2j
e. Notice Sj′′ (xj ) = 2cj , hence we get cj+1 = cj + 3dj hj .
— We got a whole lot of equations to solve!!! (How many???)
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (23/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines, II. — Solving the Resulting Equations.


cj+1 − cj
We solve [e] for dj = , and plug into [c] and [d] to get
3hj
h2j
[c’] aj+1 = aj + bj hj + (2cj + cj+1 ),
3
[d’] bj+1 = bj + hj (cj + cj+1 ).
We solve for bj in [c’] and get
1 hj
[*] bj = (aj+1 − aj ) − (2cj + cj+1 ).
hj 3
Reduce the index by 1, to get
1 hj−1
[*’] bj−1 = (aj − aj−1 ) − (2cj−1 + cj ).
hj−1 3
Plug [*] (lhs) and [*’] (rhs) into the index-reduced-by-1 version of
[d’], i.e.
[d”] bj = bj−1 + hj−1 (cj−1 + cj ).
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (24/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines, III. — A Linear System of Equations

After some “massaging” we end up with the linear system of


equations for j ∈ {1, 2, . . . , n − 1} (the interior nodes).
3 3
hj−1 cj−1 +2(hj−1 +hj )cj +hj cj+1 = (aj+1 −aj )− (aj −aj−1 ).
hj hj−1

Notice: The only unknowns are {cj }nj=0 , since the values of
n−1
{aj }nj=0 and {hj }j=0 are given.
n−1
Once we compute {cj }j=0 , we get

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


bj = − , and dj = .
hj 3 3hj

n−1
We are almost ready to solve for the coefficients {cj }j=0 , but
we only have (n − 1) equations for (n + 1) unknowns...
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (25/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines, IV. — Completing the System 1 of 3

We can complete the system in many ways, some common ones


are...

Natural boundary conditions:

[n1] 0 = S0′′ (x0 ) = 2c0 ⇒ c0 = 0


[n2] 0 = Sn′′ (xn ) = 2cn ⇒ cn = 0

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (26/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines, IV. — Completing the System 2 of 3

We can complete the system in many ways, some common ones


are...

Clamped boundary conditions: (Derivative known at


endpoints).

[c1] S0′ (x0 ) = b0 = f ′ (x0 )



[c2] Sn−1 (xn ) = bn = bn−1 + hn−1 (cn−1 + cn ) = f ′ (xn )

[c1] and [c2] give the additional equations


3
[c1′ ] 2h0 c0 + h0 c1 = ′
h0 (a1 − a0 ) − 3f (x0 )
3
[c2′ ] hn−1 cn−1 + 2hn−1 cn = 3f ′ (xn ) − hn−1 (an − an−1 ).

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (27/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Splines, IV. — Completing the System 3 of 3

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


a = x0 < x1 < · · · < xn = b, a cubic spline interpolant S for f is a
function that satisfies the following conditions:
a. S(x) is a cubic polynomial, denoted Sj (x), on the sub-interval
[xj , xj+1 ] ∀j = 0, 1, . . . , n − 1.
b. Sj (xj ) = f (xj ), ∀j = 0, 1, . . . , (n − 1). “Left” Interpolation

c. Sj (xj+1 ) = f (xj+1 ), ∀j = 0, 1, . . . , (n − 1). “Right” Interpolation

d. Sj′ (xj+1 ) = Sj+1



(xj+1 ), ∀j = 0, 1, . . . , (n − 2). Slope-match

e. Sj′′ (xj+1 ) = Sj+1


′′
(xj+1 ), ∀j = 0, 1, . . . , (n − 2). Curvature-match

f. One of the following sets of boundary conditions is satisfied:


1. S ′′ (x0 ) = S ′′ (xn ) = 0, – free / natural boundary
2. S ′ (x0 ) = f ′ (x0 ) and S ′ (xn ) = f ′ (xn ), – clamped boundary

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (28/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Natural Boundary Conditions: Linear System, Ax̃ = ỹ

We end up with a linear system of equations, Ax̃ = ỹ, where

 
1 0 0 ··· ··· 0
 .. .. 

 h0 2(h0 + h1 ) h1 . . 

 .. .. 

 0 h1 2(h1 + h2 ) h2 . . 


A= .. .. .. .. .. .. 
. . . . . . ,
 
 .. .. .. .. 
 . . . . 0 
 
 .. .. 
 . . hn−2 2(hn−2 + hn−1 ) hn−1 
0 ··· ··· 0 0 1

Boundary Terms: marked in red-bold.


Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (29/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Natural Boundary Conditions: Linear System, Ax̃ = ỹ

We end up with a linear system of equations, Ax̃ = ỹ, where


   
0 c0
3(a2 −a1 )

 h1 − 3(a1h−a
0
0) 
  c1 
 
 ..   .. 
ỹ =  . , x̃ =
 . 
   
 3(an −an−1 ) 3(an−1 −an−2 ) 
 hn−1 − hn−2
  cn−1 
0 cn

x̃ are the unknowns (the quantity we are solving for!)


Boundary Terms: marked in red-bold.

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (30/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Clamped Boundary Conditions: Linear System

We end up with a linear system of equations, Ax̃ = ỹ, where

 
2h0 h0 0 ··· ··· 0
 .. .. 
 h0
 2(h0 + h1 ) h1 . . 

 .. .. 
 0
 h1 2(h1 + h2 ) h2 . . 

A =  ... .. .. .. .. ..
 
 . . . . . 

 .. .. .. .. 
 . . . . 0 
 
 .. .. 
 . . hn−2 2(hn−2 + hn−1 ) hn−1 
0 ··· ··· 0 hn−1 2hn−1

Boundary Terms: marked in red-bold.


Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (31/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.


MatLab code for a cubic spline with Natural Boundary conditions.
1 % Cubic Spline Interpolation - Natural Spline
2 % INPUT: xi is the grid (points on x-axis) and a ...
are points on y-axis. inter
3 % is the point on the x-axis you want to know the ...
value of on the y-axis.
4
5 function [P] = cubic splinenat(xi,a)
6
7 if length(xi) 6= length(a)
8 erro('vectors xi and a must be of same length');
9 end
10
11 % Plotting points we want to interpolate between:
12 grid on; hold on;
13 title('Cubic Spline Interpolation');
14 plot(xi,a,'or');

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (32/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.

16 n = length(xi);
17
18 % Vector h with subintervals:
19 h = zeros(n-1,1);
20 for j = 1:n-1
21 h(j) = xi(j+1) - xi(j);
22 end
23
24 % Coefficient matrix A:
25 A = zeros(n);
26
27 % Natural Spline boundary conditions:
28 A(1,1)= 1;
29 A(n,n) = 1;

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (33/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.

31 for i = 2:n-1
32 A(i,i-1) = h(i-1);
33 A(i,i) = 2*(h(i-1)+h(i));
34 A(i,i+1) = h(i);
35 end
36
37 % Vector b:
38 b = zeros(n,1);
39
40 for i = 2:n-1
41 b(i) = (3/h(i))*(a(i+1)-a(i)) - ...
(3/h(i-1))*(a(i)-a(i-1));
42 end
43
44 % Coefficient vector cj:
45 cj = A\b;

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (34/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.

47 % Coefficient vector bj:


48 bj = zeros(n-1,1);
49 for i = 1:n-1
50 bj(i) = (1/h(i))*(a(i+1)-a(i)) - ...
(1/3*h(i))*(2*cj(i)+cj(i+1));
51 end
52
53 % Coefficient vector dj:
54 dj = zeros(n-1,1);
55 for i = 1:n-1
56 dj(i) = (1/(3*h(i))) * (cj(i+1)-cj(i));
57 end
58
59 % Making a matrix P with all polynomials (and ...
intervals)
60 P = zeros(n-1,4);
61 X = zeros(n-1,2);
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (35/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.

62 for i = 1:n-1
63 P(i,1) = dj(i);
64 P(i,2) = cj(i);
65 P(i,3) = bj(i);
66 P(i,4) = a(i);
67 X(i,1) = xi(i);
68 X(i,2) = xi(i+1);
69 end
70 P = [P,X];

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (36/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.

72 % Plotting results:
73 resolution = 100;
74 for i = 1:n-1
75 f = @(x) a(i) + bj(i).*(x-xi(i)) + ...
cj(i).*(x-xi(i)).ˆ2 + dj(i).*(x-xi(i)).ˆ3;
76 xf = linspace(xi(i),xi(i+1),resolution);
77 plot(xf,f(xf),'b-');
78 end
79 %print -depsc spline nat.eps
80 end

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (37/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline Natural B.C.


Cubic Spline with Natural boundary conditions

Cubic Spline Interpolation


12

10

0
0 2 4 6 8 10 12 14

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (38/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Clamped Boundary Conditions: Linear System

We end up with a linear system of equations, Ax̃ = ỹ, where


 3(a1 −a0 )

h0 − 3f ′ (x0 ) 
c0

3(a2 −a1 )
− 3(a1h−a 0)
 

 h1 0



 c1 

 ..   .. 
ỹ =  . , x̃ =  . 
 3(an −an−1 )
  

 hn−1 − 3(an−1 −an−2 )
hn−2


 cn−1 
3f ′ (xn ) − 3(anh−a n−1 ) cn
n−1

Boundary Terms: marked in red-bold.

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (39/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline clamped B.C.

MatLab code changes for a cubic spline with Clamped Boundary


conditions.
1 % Cubic Spline Interpolation - Clamped
2 % INPUT: xi is the grid (points on x-axis) and a ...
are points on y-axis. inter
3 % is the point on the x-axis you want to know the ...
value of on the y-axis.
4
5 function [P] = cubic splineclp(xi,a,fp)

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (40/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline clamped B.C.

More MatLab code changes for a cubic spline with Clamped


Boundary conditions.
27 % Clamped boundary conditions:
28 A(1,1) = 2*h(1);
29 A(1,2) = h(1);
30 A(n,n) = 2*h(n-1);
31 A(n,n-1) = h(n-1);

39 % Vector b:
40 b = zeros(n,1);
41 b(1) = (3/h(1))*(a(2)-a(1)) - 3*fp(1);
42 b(n) = 3*fp(2) - (3/h(n-1))*(a(n)-a(n-1));

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (41/48)
Polynomial Interpolation Introduction
Cubic Splines Building the Spline Segments
Cubic Splines... Associated Linear Systems

Cubic Spline clamped B.C.


Cubic Spline with clamped boundary conditions
Cubic Spline Interpolation
10

−5
0 2 4 6 8 10
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (42/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

Cubic Splines, The Error Bound

No numerical story is complete without an error bound...


If f ∈ C 4 [a, b], let
M = max |f 4 (x)|.
a≤x≤b

If S is the unique clamped cubic spline interpolant to f


with respect to the nodes a = x0 < x1 < · · · < xn = b, then with

h= max (xj+1 − xj ) = max hj


0≤j≤n−1 0≤j≤n−1

5M h4
max |f (x) − S(x)| ≤
a≤x≤b 384

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (43/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

Banded Matrices [Reference]

We notice that the linear systems for both natural and clamped
boundary conditions give rise to tri-diagonal linear systems.
Further, these systems are strictly diagonally dominant —
the entries on the diagonal outweigh the sum of the off-diagonal
elements (in absolute terms) —, so pivoting (re-arrangement to
avoid division by a small number) is not needed when solving
for x̃ using Gaussian Elimination...
This means that these systems can be solved very quickly (we
will revisit this topic later on, but for now the algorithm is on
the next couple of slides), see also “Computational Linear
Algebra / Numerical Matrix Analysis.” Math 543

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (44/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

Algorithm: Solving T x = b in O(n) Time, I. [Reference]

The Thomas Algorithm


Given the N × N tridiagonal matrix T and the N × 1 vector y:
Step 1: The first row:
l1,1 = T1,1
u1,2 = T1,2 /l1,1
z1 = y1 /l1,1
Step 2: FOR i = 2 : (n − 1)
li,i−1 = Ti,i−1
li,i = Ti,i − li,i−1 ui−1,i
ui,i+1 = Ti,i+1 /li,i
zi = (yi − li,i−1 zi−1 )/li,i
END
Step 3: The last row:
ln,n−1 = Tn,n−1
ln,n = Tn,n − ln,n−1 un−1,n
zn = (yn − ln,n−1 zn−1 )/ln,n
Step 4: x n = zn
Step 5: FOR i = (n − 1) : −1 : 1
xi = zi − ui,i+1 xi+1
END
Piecewise Poly. Approx.; Cubic Splines —
Joseph M. Mahaffy, [email protected] (45/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

The Thomas Algorithm: Solving T x = b in O(n) Time, II. [Reference]

The algorithm computes both the LU -factorization of T , as well


as the solution x̃ = T −1 ỹ. Steps 1–3 computes z̃ = L−1 ỹ, and
steps 4–5 computes x̃ = U −1 z̃.

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (46/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

MatLab Tridiagonal Solver

It is more efficient to store our matrix A as only 3 vectors for large A


Below is a more efficient way to store and solve a Tridiagonal
matrix, assuming it is tridiagonal

1 function y = tridiag( a, b, c, f )
2
3 % Solve the n x n tridiagonal system Ay = f ...
for y
4 % with diagonal a, subdiagonal b, and ...
superdiagonal c
5 % f must be a vector (row or column) of length n
6 % a, b, c must be vectors of length n
7 % (note that b(1) and c(n) are not used)

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (47/48)
Polynomial Interpolation
Error Bound
Cubic Splines
Solving the Linear Systems
Cubic Splines...

MatLab Tridiagonal Solver


Below is the main code for solving a Tridiagonal matrix, assuming
it is tridiagonal

20 n = length(f);
21 v = zeros(n,1);
22 y = v;
23 w = a(1);
24 y(1) = f(1)/w;
25 for i=2:n
26 v(i-1) = c(i-1)/w;
27 w = a(i) - b(i)*v(i-1);
28 y(i) = ( f(i) - b(i)*y(i-1) )/w;
29 end
30 for j=n-1:-1:1
31 y(j) = y(j) - v(j)*y(j+1);
32 end

Piecewise Poly. Approx.; Cubic Splines —


Joseph M. Mahaffy, [email protected] (48/48)

You might also like