Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and...

31
Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada ece.uwaterloo.ca [email protected] © 2012 by Douglas Wilhelm Harder. Some rights

Transcript of Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and...

Page 1: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

Interpolating Solutions to IVPs

Douglas Wilhelm Harder, M.Math. LELDepartment of Electrical and Computer Engineering

University of Waterloo

Waterloo, Ontario, Canada

ece.uwaterloo.ca

[email protected]

© 2012 by Douglas Wilhelm Harder. Some rights reserved.

Page 2: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

2

Outline

Given a solution to an IVP in the form of two vectors tout and yout, how do we approximate the solution at a point t where

tout,k < t < tout,k + 1

We will look at:– Interpolation, and– Dormand Prince

Interpolating Solutions to IVPs

Page 3: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

3

Outcomes Based Learning Objectives

By the end of this laboratory, you will:– Understand how to use piecewise polynomials to approximate

solutions of an IVP from discrete approximations– Understand how the mkpp and ppval functions in Matlab work

Interpolating Solutions to IVPs

Page 4: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

4

Introduction

Suppose that we found an approximation to an initial-value problem:

[t_out, y_out] = dp45( @f, [a, b], y_init, ... );

The output vector gives us the information that tout,k ≈ yout,k

What happens if we want to approximate the solution u(t) at an arbitrary point that may fall between two of these t-values?

tout,k < t < tout,k + 1

Interpolating Solutions to IVPs

Page 5: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

5

Introduction

We will deal with one 1st-order and one 2nd-order ODE:function [dy] = f8a( t, y ) dy = (y - 1).^2 .* (t - 1).^2;end

function [y] = y8a_soln( t ) y = (t.^3 - 3*t.^2 + 3*t)./(t.^3 - 3*t.^2 + 3*t + 3);end

function [dw] = f8b( x, w ) dw = [w(2); sin(x) - 4*w(2)*w(1) + 2*x*w(1)^2];end

function y = y8b_soln( t ) c = 5^(1/3); d = c/80; y = 1/c*exp( t/4 ).*(

... airy( 2, d )*airy( d*(1 - 80*t) )

... - airy( d )*airy( 2, d*(1 - 80*t)))/(airy( 3, d )*airy( d )

... - airy( 2, d )*airy( 1, d )

... );end

Interpolating Solutions to IVPs

Page 6: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

6

Approximating Solutions

We now know that

tk < t < tk + 1

and we know that

y(tk) ≈ uk and y(tk + 1) ≈ uk + 1

How do we approximate y(t)?

Interpolating Solutions to IVPs

Page 7: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

7

Linear Interpolation

As an initial idea, we could interpolate the two points

(tk, yk) and (tk + 1, yk + 1)

with a straight line...

Interpolating Solutions to IVPs

Page 8: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

8

Linear Interpolation

We can define a separate linear polynomial between each consecutive pair of points from (t1, y1) to (tn, yn)

Interpolating Solutions to IVPs

Page 9: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

9

Linear Interpolation

This is no different than connecting the dots with straight lines...

[t6c, y6c] = dp45( @f6c, [0, 3], [0, 1]', 1, 1e-1 );

plot( t6c, y6c(1,:), '-b.' );

Interpolating Solutions to IVPs

Page 10: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

10

Linear Interpolation

Such a structure is said to be a piecewise-defined polynomial– A different polynomial is defined on each line segment [tk, tk + 1]

– In this case, it would be a piecewise linear polynomial

Interpolating Solutions to IVPs

Page 11: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

11

Linear Interpolation

This, however, would be very unsatisfying—we know the solution is both continuous and differentiable

Interpolating Solutions to IVPs

Page 12: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

12

Linear Interpolation

Straight lines are not good approximations to differentiable functions– We learned how to draw lines in kindergarten—let’s come up

with something better....

Interpolating Solutions to IVPs

Page 13: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

13

Cubic Interpolation

Recall that we have more information—we always have exact values or approximations of

y(1)(tk) and y(1)(tk + 1)

If it is a 1st-order ODE, we can calculatey(1)(tk) = f(tk, yk) and y(1)(tk + 1) = f(tk + 1, yk + 1)

If it is a 2nd- or higher-order ODE, the approximation of the derivatives is in the second row of the output

Interpolating Solutions to IVPs

Page 14: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

14

Cubic Interpolation

We can find an interpolating cubic polynomial p(t) that:– Matches the values p(tk) = yk and p(tk + 1) = yk + 1

– Matches the derivatives p(1)(tk) = f(tk, yk) and p(1)(tk + 1) = f(tk + 1, yk + 1)

The general form of a cubic polynomial is

at3 + bt2 + ct + d

and its derivative is

3at2 + 2bt + c + d

Interpolating Solutions to IVPs

Page 15: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

15

Solutions to 1st-order IVPs

This creates a system of equations: p(tk) = yk atk

3 + btk2 + ctk + d = yk

p(1)(tk) = f(tk, yk) 3atk2 + btk + c = f(tk,

yk)

p(tk + 1) = yk + 1 atk + 13 + btk + 1

2 + ctk + 1 + d = yk + 1

p(1)(tk + 1) = f(tk + 1, yk + 1) 3atk + 12 + btk + 1 + c = f(tk + 1, yk + 1)

3 2

2

3 211 1 1

21 11 1

1

,3 2 1 0

1

,3 2 1 0

kk k k

k kk k

kk k k

k kk k

yat t t

f t ybt t

yct t t

f t ydt t

Interpolating Solutions to IVPs

Page 16: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

16

Solutions to 1st-order IVPs

Thus, if the two points that bracket t are at k and k + 1, the code would be

M = [ t(k)^3 t(k)^2 t(k) 1; 3*t(k)^2 2*t(k) 1 0; t(k + 1)^3 t(k + 1)^2 t(k + 1) 1; 3*t(k + 1)^2 2*t(k + 1) 1 0];

p = M \ [y(k); f(t(k), y(k)); y(k+1); f(t(k+1), y(k+1))];

Interpolating Solutions to IVPs

Page 17: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

17

The Matlab mkpp Function

The mkpp function returns a piecewise polynomial data structure in Matlab

The arguments are:– A vector t of n break points—the points defining the sub-intervals– An (n – 1) × 4 matrix where each row is the interpolating cubic

polynomial defined on [0, tk + 1 – tk] interpolating the points

(0, yk) and (tk + 1 – tk, yk)

Interpolating Solutions to IVPs

Page 18: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

18

The dpinterp Function

Thus, we could define the function dpinterp:function [pp] = dpinterp( t, y, f ) n = length(t) - 1; P = zeros( n, 4 );

for k=1:n dt = t(k + 1) - t(k);

M = [ 0 0 0 1; 0 0 1 0; dt^3 dt^2 dt 1; 3*dt^2 2*dt 1 0];

p = M \ [y(k); f(t(k), y(k)); y(k+1); f(t(k+1), y(k+1))]; P(k, :) = p'; end

pp = mkpp( t, P );end

Interpolating Solutions to IVPs

Page 19: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

19

Matching Derivatives or Splines?

An alternate means of interpolating points are cubic splines:– Rather than matching the derivatives at the end points, we

simply state that at each of the interior points:• The adjacent piecewise cubic polynomials must equal yk,

• The adjacent polynomials must have the same derivative at tk, and

• Adjoining polynomials must have the same second derivative at tk.

The result is an interpolating polynomial that has a twice-differentiable value but may not match the derivatives at the points

Interpolating Solutions to IVPs

Page 20: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

20

Matching Derivatives or Splines?

For our example, we have:[t, y] = dp45( @f8a, [0, 2], 0', 0.1, 1e-5 )pp = dpinterp( t, y, @f8a ); pps = spline( t, [f8a(t(1), y(1)) y

f8a(t(end),y(end))] );hold onts = 0:0.001:2;plot( t, y, 'bo' ); plot( ts, ppval( pp, ts ), 'b' )plot( ts, ppval( pps, ts ), 'r' ); plot( ts, y8a_soln( ts ), 'k' )

Interpolating Solutions to IVPs

Page 21: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

21

Matching Derivatives or Splines?

However, if you plot the errors, we see that our interpolating polynomial has less overall error and matches the derivativeshold onplot( t, y - y8a_soln(t), 'bo' ); plot( ts, ppval( pp, ts ) - y8a_soln(ts), 'b' )plot( t, t*0, 'ko' ); plot( ts, ppval( pp2, ts ) - y8a_soln(ts),

'r' )

Interpolating Solutions to IVPs

Page 22: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

22

Solutions to 2nd-order IVPs

What if you have both derivative and second-derivativeinformation that is easily accessible:– Find an interpolating a quintic polynomial

1,1

2,2

35 4 3 2

1, 144 3 2

2, 153 2

1 16

0 0 0 0 0 1

0 0 0 0 1 0

,0 0 0 1 0 0

1

5 4 3 2 1 0

,20 12 6 2 0 0

k

k

k k

kk k k k k

kk k k k

k kk k k

ya

ya

f ta

yt t t t t a

yt t t t a

f tt t t a

y

y

Interpolating Solutions to IVPs

Page 23: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

23

Solutions to 2nd-order IVPs

You can also find interpolating heptic polynomial andwe begin to see a pattern:

1

2

3

47 6 5 4 3 2

56 5 4 3 2

65 4 3 2

74 3 2

8

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0

0 0 0 0 0 1 0 0

0 0 0 0 1 0 0 0

1

7 6 5 4 3 2 1 0

42 30 20 12 6 2 0 0

210 120 60 24 6 0 0 0

k k k k k k k

k k k k k k

k k k k k

k k k k

a

a

a

a

t t t t t t t a

t t t t t t a

t t t t t a

t t t t a

1,

2,

3,

1, 1

2, 1

3, 1

1 1

,

,

k

k

k

k k

k

k

k

k k

y

y

y

f t

y

y

y

f t

y

y

Interpolating Solutions to IVPs

Page 24: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

24

The dpinterp Function

This allows us to define a general dpinterp function:function [pp] = dpinterp( t, y, f ) [m, n] = size( y ); P = zeros( n - 1, 2*m + 2 ); M = zeros( 2*m + 2, 2*m + 2 ); for i = 1:(m + 1) M(i, 2*m + 3 - i) = factorial( i - 1 ); end for k=1:(n - 1) dt = (t(k + 1) - t(k)).^((2*m + 1):-1:0); for i = 1:(m + 1) M(i, 2*m + 3 - i) = factorial( i - 1 ); M(m + 1 + i, 1:(end + 1 - i)) = dt; dt = dt(2:end).*((2*m + 1):-1:i); end dyk = f( t(k), y(:, k)); dyk1 = f(t(k + 1), y(:, k + 1)); P(k, :) = (M \ [y(:, k); dyk(end); y(:, k + 1); dyk1(end)])'; end pp = mkpp( t, P );end

Interpolating Solutions to IVPs

Page 25: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

25

The dpinterp Function

This piecewise quintic is more accurate than a cubic spline:[t, y] = dp45( @f8b, [0, 2], [0 1]', 0.1, 1e-2 );pp = dpinterp( t, y, @f8b );dy = f8b(2, y(:, end)); pps = spline( t, [1 y(1,:) dy(1)] );hold on; plot( ts, ppval( pp, ts ) - y8b_soln( ts ), 'r' );plot( ts, ppval( pps, ts ) - y8b_soln( ts ), 'b' );plot( t, y(1,:) - y8b_soln( t ), 'ro' );

Interpolating Solutions to IVPs

Page 26: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

26

The dpinterp Function

What happens if we do not want a 7th degree polynomial?– Can we use less information to make a interpolating polynomial?– We can provide a 4th argument—if the user provides this

argument m, it will uses a polynomial of 2m – 1

Interpolating Solutions to IVPs

Page 27: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

27

The dpinterp Function

We now have a dpinterp function that gives maximum choice to the user:

Interpolating Solutions to IVPs

function [pp] = dpinterp( t, y, f, m ) [mp, n] = size( y ); if nargin == 3 m = mp + 1; else m = max( min( mp + 1, m ), 1 ); end P = zeros( n - 1, 2*m ); M = zeros( 2*m, 2*m ); for i = 1:m M(i, 2*m + 1 - i) = factorial( i - 1 ); end

for k=1:(n - 1) dt = t(k + 1) - t(k); dt = dt.^((2*m - 1):-1:0); for i = 1:m M(i, 2*m + 1 - i) = factorial( i - 1 ); M(m + i, 1:(end + 1 - i)) = dt; dt = dt(2:end).*((2*m - 1):-1:i); end if m == mp + 1 dyk = f( t(k), y(:, k)); dyk1 = f(t(k + 1), y(:, k + 1)); P(k, :) = (M \ [y(:, k); dyk(end); y(:, k + 1); dyk1(end)])'; else P(k, :) = (M \ [y(1:m, k); y(1:m, k + 1)])'; end end pp = mkpp( t, P );end

Page 28: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

28

The dpinterp Function

Even now, a cubic polynomial is better than a spline:[t, y] = dp45( @f8b, [0, 2], [0 1]', 0.1, 1e-2 );pp = dpinterp( t, y, @f8b, 2 );dy = f8b(2, y(:, end)); pps = spline( t, [1 y(1,:) dy(1)] );hold on; plot( ts, ppval( pp, ts ) - y8b_soln( ts ), 'r' );plot( ts, ppval( pps, ts ) - y8b_soln( ts ), 'b' );plot( t, y(1,:) - y8b_soln( t ), 'ro' );

Interpolating Solutions to IVPs

Page 29: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

29

The dpinterp Function

As may be noted, quintics are very good approximations but in this case, clamped cubics are also better than cubic splines

pp = dpinterp( t, y, @f8b, 3 ); pp = dpinterp( t, y, @f8b, 2 );

Interpolating Solutions to IVPs

Page 30: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

30

Summary

We have looked approximating solutions to IVPs between the points returned by functions such as dp45:– We discussed piecewise-defined polynomials– We found piecewise cubic polynomials for 1st-order IVPs– We determined that we could get even more accurate

approximations for an Nth-order IVP– The clamped polynomials produce a better result than splines

Interpolating Solutions to IVPs

Page 31: Interpolating Solutions to IVPs Douglas Wilhelm Harder, M.Math. LEL Department of Electrical and Computer Engineering University of Waterloo Waterloo,

31

References

[1] Glyn James, Modern Engineering Mathematics, 4th Ed., Prentice Hall, 2007, p.778.

[2] Glyn James, Advanced Modern Engineering Mathematics, 4th Ed., Prentice Hall, 2011, p.164.

[3] J.R. Dormand and P. J. Prince, "A family of embedded Runge-Kutta formulae," J. Comp. Appl. Math., Vol. 6, 1980, pp. 19-26.

Interpolating Solutions to IVPs