29
Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Embed Size (px)

DESCRIPTION

Alternatives for computing derivatives: Slope for numerical approximation. Rules for symbolic expression. Rules for numerical values!

Citation preview

Page 1: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Richard D. NeidingerDavidson College

MOSAIC Kick-Off Workshop, IMA, MNSummer 2010

Automatic Differentiation using MATLAB OOP

Page 2: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Reconsider basic questions in Calculus and in Programming:How are derivatives calculated?What is object vs. procedure

oriented programming?What is a function to a computer?

Page 3: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Alternatives for computing derivatives:Slope for numerical approximation.Rules for symbolic expression.Rules for numerical values!

If ( ) ( )* ( ), thensymbols ( ) ( )* ( ) ( )* ( ) values ( ) ( )* ( ) ( )* ( )

h x u x v xh x u x v x u x v xh a u a v a u a v a

Page 4: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Programming the product rule:

Procedural approach: make up procedure adtimes on native data type (array of two doubles).

OOP approach: make up an object class and overload native operations as methods on such objects.

Combine [ ( ), ( )] and [ ( ), ( )]and a "times operation" to make

[ ( ), ( )] [ ( )* ( ), ( )* ( ) ( )* ( )].

u a u a v a v a

h a h a u a v a u a v a u a v a

Page 5: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Suggest AD in any course withcomputing environment:Designed for numerical computation.Allows operator overloading, preferably in OOP.Computing derivatives is desirable.

MATLAB* is ideal!AD topic in my Numerical Analysis.

*Release 2008a or later

Page 6: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

How compute “exact” derivatives?Symbolic?

Not in basic MATLAB.Character string programming?

Project too massive!Automatic Differentiation?

Use derivative rules on numerical values, best implemented with OOP.

Page 7: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 8: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 9: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 10: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 11: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Application toOne-variable Functionsand Newton’s Method

Just returns the derivative value at one point?But that is exactly what a function does!

Page 12: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

2( ) sin( ln(1 ))xf x e x x

Page 13: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 14: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 15: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Application toMultivariable Gradients All derivative rules generalize with gradient

in place of derivative!If h(x,y,z) = sin(u(x,y,z))

then [hx , hy , hz] = cos(u(x,y,z))*[ux , uy , uz]If h(x,y) = u(x,y)*v(x,y)

then [hx , hy] = [ux , uy]*v + u* [vx , vy] Thus, the valder class works with gradients

as the der property!

Page 16: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 17: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 18: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 19: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 20: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Higher-Order ADand Taylor SeriesInstead of carrying just the first derivative,

carry a vector of Taylor series coefficients.Algorithms for operations on series are the

methods for “derivative rules.”For

series object u will have properties:val: coef:

20 1 2( ) ( ) ( )u x u u x a u x a

1 2, , , nu u u0u

Page 21: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 22: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 23: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 24: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 25: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Materials available:“Introduction to Automatic Differentiation

and MATLAB Object-Oriented Programming” to appear in SIAM Review, 52(3), Sept. 2010.

MATLAB M-files and preprint available at:www.davidson.edu/math/neidinger/publicat.html

Page 26: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP

Overloading Other Operations

Page 27: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 28: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP
Page 29: Richard D. Neidinger Davidson College MOSAIC Kick-Off Workshop, IMA, MN Summer 2010 Automatic Differentiation using MATLAB OOP