topics in applied mathematics douglas wilhelm harder department of electrical and computer...

24
Topics in Applied Mathematics Douglas Wilhelm Harder Department of Electrical and Computer Engineering University of Waterloo Waterloo, Ontario, Canada Copyright © 2009 by Douglas Wilhelm Harder. All rights reserved. Best-Fitting Bezier Curves for Graphs of Functions

Upload: leon-woods

Post on 18-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Topics in Applied Mathematics

Douglas Wilhelm Harder

Department of Electrical and Computer Engineering

University of Waterloo

Waterloo, Ontario, Canada

Copyright © 2009 by Douglas Wilhelm Harder. All rights reserved.

Best-Fitting Bezier Curvesfor Graphs of Functions

Best Fitting Bezier Curves

2

Outline

• This presentation looks at finding optimal Bezier curves– Background and definitions– Eight unknowns:

• Six constraints based on the functions and derivatives

• Two constraints based on minimizing the mean squared error

– Ten examples of various functions

Best Fitting Bezier Curves

3

Background

• Bezier curves are used to model smooth space curves• Often necessary to plot specific functions, including:

– Circles– Exponential– Trigonometric

functions• We will define a technique for finding such curves and

look at some examples

Best Fitting Bezier Curves

4

Mathematical Notation

• We will use standard mathematical notation to represent various values:– Variables are italicized lower-case characters t, x, y, a, b

– Vectors are bold lower-case characters vk

– Functions are roman lower-case characters f(t), x(t), y(t)

– Derivatives are represented as superscripts f(1)(t)

Best Fitting Bezier Curves

5

Theory

• Given a vector space, a cubic Bezier curve is defined by four vectors

v1, v2, v3, v4

and uses these to define a space curve parametrically

v1(1 – t)3 + v2t (1 – t)2 + v3t 2(1 – t) + v4t3

with t varying from 0 to 1

• We will use vk = (xk, yk)

Best Fitting Bezier Curves

6

Theory

• To find the best fitting Bezier curve for the graph of a function (x, f(x)) for x on an interval [a, b], introduce three constraints:

v1 = (a, f(a))

v4 = (b, f(b))

• We will also require that the derivatives match:

f(1)(a) = (y2 – y1)/(x2 – x1)

f(1)(b) = (y4 – y3)/(x4 – x3)

where vk = (xk, yk)T

Best Fitting Bezier Curves

7

Theory

• To deal with functions which have asymptotes in the derivative, to constrain the size, we will make one of two substitutions: – If |f(1)(a)| < 1, substitute y2 = f(a) + f(1)(a) (x2 – a),

else substitute x2 = (y2 – f(a))/f(1)(a) + a

– Similarly, if |f(1)(b)| < 1, substitute y3 = f(b) + f(1)(b) (x3 – b),

else substitute x3 = (y3 – f(b))/f(1)(b) + b

Best Fitting Bezier Curves

8

Theory

• With these substitutions, we now have two Bezier curves with two unknown variables– These define the Bezier curve parametrically

• There are four cases for the substitutions:– If both derivatives are small, the two curves are

x(t) = a(1 – t)3 + x2t (1 – t)2 + x3t 2(1 – t) + bt3

y(t) = f(a)(1 – t)3 + [f(a) + f(1)(a) (x2 – a) ]t (1 – t)2 +

[f(b) + f(1)(b) (x3 – b)]t 2(1 – t) + f(b)t3

– If the derivative is large (or infinity) at the left point, use:

x(t) = a(1 – t)3 + [(y2 – f(a))/f(1)(a) + a]t (1 – t)2 + x3t 2(1 – t) + bt3

y(t) = f(a)(1 – t)3 + y2t (1 – t)2 + [f(b) + f(1)(b) (x3 – b)]t 2(1 – t) +

f(b)t3

Best Fitting Bezier Curves

9

Theory

• We must now define a function which must be minimized• We will minimize the root mean-squared error:

• This is a real-valued bivariate function in the two unknown parameters

• Use techniques such as gradient descent to find the minimum

• Reasonable initial approximations are the midpoints:xk = (a + b)/2 yk = (f(a) + f(b))/2

tttt dxxfy 11

0

2

Best Fitting Bezier Curves

10

Theory

• Why minimize the root mean squared error?– The error is a continuous and differentiable function in the

parameters– Squaring emphasizes larger errors relative to smaller errors

• One could also minimize the infinity norm:

• Continuous, but not differentiable

tt xfy

Best Fitting Bezier Curves

11

Examples

• The following ten slides gives the best fitting Bezier curves for a number of functions on specific intervals– The function is plotted in red– The best fitting Bezier curve is plotted in blue behind the graph

of the function

• The code was written in the Maple programming language

• The source code is available athttp://ece.uwaterloo.ca/~dwharder/Maplesque/Bezier/

Best Fitting Bezier Curves

12

Examples

• The best fitting Bezier curve for the quarter circle is defined by the points

(0, 1), (0.5520, 1), (1, 0.5520), (1, 0)

with a root mean squared error of 0.000175

21 xy

Best Fitting Bezier Curves

13

Examples

• The best fitting Bezier curve for the sin function on[0, /2] is defined by the points

(0, 0), (0.5251, 0.5251), (1.005, 1), (1.571, 1)

with a root mean squared error of 0.000474

Best Fitting Bezier Curves

14

Examples

• The best fitting Bezier curve for the exponential function on [0, 1] is defined by the points

(0, 1), (0.3765, 1.3765), (0.7057, 1.9184), (1, 2.7183)

with a root mean squared error of 0.00000102

Best Fitting Bezier Curves

15

Examples

• The best fitting Bezier curve for the natural logarithm function on [1, 2] is defined by the points

(0.5, -0.6931), (0.8043, -0.08448), (1.3010, 0.3437), (2, 0.6931)

with a root mean squared error of 0.000238

Best Fitting Bezier Curves

16

Examples

• The best fitting Bezier curve for the quadratic function on[0, 1] is defined by the points

(0, 0), (0.4174, 0), (0.7629, 0.5257), (1, 1)

with a root mean squared error of 0.000118

Best Fitting Bezier Curves

17

Examples

• The best fitting Bezier curve for the square root function (quadratic inverse) on [0, 1] is defined by the points

(0, 0), (0, 0.4182), (0.5274, 0.7637), (1, 1)

with a root mean squared error of 0.000124

Best Fitting Bezier Curves

18

Examples

• The best fitting Bezier curve for the function f(x) = x3/2 on[0, 1] is defined by the points

(0, 0), (0.1804, 0), (0.5792, 0.3689), (1,1)

with a root mean squared error of 0.00251

Best Fitting Bezier Curves

19

Examples

• The best fitting Bezier curve for the function f(x) = x ln(x) on [1, 10] is defined by the points

(1, 0), (3.0993, 2.0993), (6.5721, 11.7052), (10., 23.0259)

with a root mean squared error of 0.0202

Best Fitting Bezier Curves

20

Examples

• The best fitting Bezier curve for the standard normal curve on [0, 3] is defined by the points

(0,1), (0.9235, 1), (0.1722, 0.002217), (3, 0.0001234)

with a root mean squared error of 0.0490

Best Fitting Bezier Curves

21

Examples

• It is better to use two Bezier curves on [0, 1] and [1, 3]:(0, 0.5642), (0.3452, 0.5642), (0.6314, 0.3605), (1, 0.2076)

(1, 0.2076), (1.5128, -0.005325), (1.8960, 0.0005308), (3, 0.00006963)

with a root mean squared errors of 0.0000147 and 0.000227

Best Fitting Bezier Curves

22

Examples

• The best fitting Bezier curve for the sinc function (sin(x)/x or the cardinal sine) on [0, ] is defined by the points

(0,1), (1.1339, 1), (2.0493, 0.3477), (3.1416, 0)

with a root mean squared error of 0.000154

Best Fitting Bezier Curves

23

Summary

• This presentation looked at finding optimal Bezier curves for function graphs:– Six constraints are defined by the properties of the graph– Two are found by minimizing the root mean squared error

• The results are usually very good– The function x1.5 resulted in the worst case– The smooth exponential function was best fit

Best Fitting Bezier Curves

24

Usage Notes

• These slides are made publicly available on the web for anyone to use

• If you choose to use them, or a part thereof, for a course at another institution, I ask only three things:

– that you inform me that you are using the slides,– that you acknowledge my work, and– that you alert me of any mistakes which I made or changes which you make, and

allow me the option of incorporating such changes (with an acknowledgment) in my set of slides

Sincerely,

Douglas Wilhelm Harder, MMath

[email protected]