Lecture 8. Root finding II

Similar documents
Lecture 7. Root finding I. 1 Introduction. 2 Graphical solution

THE SECANT METHOD. q(x) = a 0 + a 1 x. with

Numerical Analysis Fall. Roots: Open Methods

Lecture Notes to Accompany. Scientific Computing An Introductory Survey. by Michael T. Heath. Chapter 5. Nonlinear Equations

Scientific Computing: An Introductory Survey

CS 450 Numerical Analysis. Chapter 5: Nonlinear Equations

3.1 Introduction. Solve non-linear real equation f(x) = 0 for real root or zero x. E.g. x x 1.5 =0, tan x x =0.

Queens College, CUNY, Department of Computer Science Numerical Methods CSCI 361 / 761 Spring 2018 Instructor: Dr. Sateesh Mane.

Outline. Scientific Computing: An Introductory Survey. Nonlinear Equations. Nonlinear Equations. Examples: Nonlinear Equations

MATH 3795 Lecture 12. Numerical Solution of Nonlinear Equations.

Outline. Math Numerical Analysis. Intermediate Value Theorem. Lecture Notes Zeros and Roots. Joseph M. Mahaffy,

Math Numerical Analysis

Numerical Solution of f(x) = 0

PART I Lecture Notes on Numerical Solution of Root Finding Problems MATH 435

Numerical Methods in Informatics

ROOT FINDING REVIEW MICHELLE FENG

Computational Methods. Solving Equations

Chapter 1. Root Finding Methods. 1.1 Bisection method

Finding the Roots of f(x) = 0. Gerald W. Recktenwald Department of Mechanical Engineering Portland State University

Finding the Roots of f(x) = 0

Numerical Methods I Solving Nonlinear Equations

Goals for This Lecture:

NUMERICAL AND STATISTICAL COMPUTING (MCA-202-CR)

Solution of Nonlinear Equations

Variable. Peter W. White Fall 2018 / Numerical Analysis. Department of Mathematics Tarleton State University

Midterm Review. Igor Yanovsky (Math 151A TA)

GENG2140, S2, 2012 Week 7: Curve fitting

Numerical Methods Lecture 3

Lecture 7: Numerical Tools

Root Finding Convergence Analysis

Computational Methods CMSC/AMSC/MAPL 460. Solving nonlinear equations and zero finding. Finding zeroes of functions

Numerical Methods. Root Finding

MATH 3795 Lecture 13. Numerical Solution of Nonlinear Equations in R N.

Lecture 9. Polynomials. x+c 3. c 1. x 2 +c 4. +c 2. x 2 =0. c 3. 4 c 1. , c 2

Solving Non-Linear Equations (Root Finding)

1 The best of all possible worlds

Bisection and False Position Dr. Marco A. Arocha Aug, 2014

Root Finding: Close Methods. Bisection and False Position Dr. Marco A. Arocha Aug, 2014

Roots of equations, minimization, numerical integration

Solution of Algebric & Transcendental Equations

Root Finding Methods

converges to a root, it may not always be the root you have in mind.

Lecture 5. September 4, 2018 Math/CS 471: Introduction to Scientific Computing University of New Mexico

Scientific Computing. Roots of Equations

Root Finding (and Optimisation)

Comments on An Improvement to the Brent s Method

CS 323: Numerical Analysis and Computing

SOLUTION OF ALGEBRAIC AND TRANSCENDENTAL EQUATIONS BISECTION METHOD

Homework and Computer Problems for Math*2130 (W17).

Lecture 44. Better and successive approximations x2, x3,, xn to the root are obtained from

Nonlinearity Root-finding Bisection Fixed Point Iteration Newton s Method Secant Method Conclusion. Nonlinear Systems

Chapter 3: Root Finding. September 26, 2005

Numerical Methods Dr. Sanjeev Kumar Department of Mathematics Indian Institute of Technology Roorkee Lecture No 7 Regula Falsi and Secant Methods

CLASS NOTES Models, Algorithms and Data: Introduction to computing 2018

ECE 595, Section 10 Numerical Simulations Lecture 7: Optimization and Eigenvalues. Prof. Peter Bermel January 23, 2013

Figure 1: Graph of y = x cos(x)

CS 323: Numerical Analysis and Computing

Numerical Methods. King Saud University

Order of convergence

15 Nonlinear Equations and Zero-Finders

Exact and Approximate Numbers:

Motivation: We have already seen an example of a system of nonlinear equations when we studied Gaussian integration (p.8 of integration notes)

TWO METHODS FOR OF EQUATIONS

Solutions of Equations in One Variable. Newton s Method

Unit 2: Solving Scalar Equations. Notes prepared by: Amos Ron, Yunpeng Li, Mark Cowlishaw, Steve Wright Instructor: Steve Wright

INTRODUCTION TO NUMERICAL ANALYSIS

1. Method 1: bisection. The bisection methods starts from two points a 0 and b 0 such that

Optimization and Calculus

MATH 350: Introduction to Computational Mathematics

Math Introduction to Numerical Methods - Winter 2011 Homework 2 Assigned: Friday, January 14, Due: Thursday, January 27,

CHAPTER-II ROOTS OF EQUATIONS

Optimization. Totally not complete this is...don't use it yet...

Zeros of functions with Matlab: Bisection method and fixed point iteration

Line Search Algorithms

Nonlinear Equations and Continuous Optimization

Lecture 5: Random numbers and Monte Carlo (Numerical Recipes, Chapter 7) Motivations for generating random numbers

Nonlinearity Root-finding Bisection Fixed Point Iteration Newton s Method Secant Method Conclusion. Nonlinear Systems

Lecture 7: Minimization or maximization of functions (Recipes Chapter 10)

INTERPOLATION. and y i = cos x i, i = 0, 1, 2 This gives us the three points. Now find a quadratic polynomial. p(x) = a 0 + a 1 x + a 2 x 2.

Nonlinear Equations. Chapter The Bisection Method

CHAPTER 4 ROOTS OF EQUATIONS

NUMERICAL METHODS. x n+1 = 2x n x 2 n. In particular: which of them gives faster convergence, and why? [Work to four decimal places.

Lecture 34 Minimization and maximization of functions

Today s class. Numerical differentiation Roots of equation Bracketing methods. Numerical Methods, Fall 2011 Lecture 4. Prof. Jinbo Bi CSE, UConn

MATH 350: Introduction to Computational Mathematics

Applied Computational Economics Workshop. Part 3: Nonlinear Equations

Bisection Method. and compute f (p 1 ). repeat with p 2 = a 2+b 2

A Review of Bracketing Methods for Finding Zeros of Nonlinear Functions

Notes for Numerical Analysis Math 5465 by S. Adjerid Virginia Polytechnic Institute and State University. (A Rough Draft)

Numerical Methods 5633

1. Nonlinear Equations. This lecture note excerpted parts from Michael Heath and Max Gunzburger. f(x) = 0

4 damped (modified) Newton methods

1-D Optimization. Lab 16. Overview of Line Search Algorithms. Derivative versus Derivative-Free Methods

CLASS NOTES Computational Methods for Engineering Applications I Spring 2015

Key Concepts: Economic Computation, Part III

Lecture 39: Root Finding via Newton s Method

Introductory Numerical Analysis

NON-LINEAR ALGEBRAIC EQUATIONS Lec. 5.1: Nonlinear Equation in Single Variable

A Few Concepts from Numerical Analysis

Introduction to Numerical Analysis

Transcription:

1 Introduction Lecture 8 Root finding II In the previous lecture we considered the bisection root-bracketing algorithm. It requires only that the function be continuous and that we have a root bracketed to start. Under those conditions it is guaranteed to converge with error ϵ k =( 1 k ϵ 2 0 at the k th iteration. Thus bisection provides linear convergence with a rate of convergence of 1/2. Because of its general applicability and guaranteed convergence, bisection has much to recommend it. We also studied fixed-point iteration x k +1 =g(x k = x k +a f ( x k where a is a constant. We found that provided we start out close enough to a root r the method converges linearly with error ϵ k =[g (r] k ϵ 0 (1 As this is a root-polishing algorithm, it does not require an initial root bracketing, which might be considered a plus. Still, for one-dimensional functions f (x, fixed-point iteration is not an attractive algorithm. It provides the same linear convergence as bisection without any guarantee of finding a root, even if one exists. However, it can be useful for multidimensional problems. What we want to investigate here is the tantalizing prospect suggested by g (r=0 which in light of (1 suggests superlinear convergence of some sort. 2 Newton's method To achieve g (r=1+a f (r=0 we take to arrive at the root polishing iteration formula a= 1 f (r x k +1 =x k f (x k f (r The only problem is that to compute f (r we'd need to know r, and that's what we are searching for in the first place. But if we are close to the root, so that f (x k f (r, then it makes sense to use

Lecture 8: Root finding II 2/10 x k +1 =x k f (x k f ( x k Let's derive this formula another way. If f (x is continuous and differentiable, then for small changes in x, f (x is well approximated by a first-order Taylor series. If we expand the Taylor series about the point x= x k and take x k +1 =x k +h then, assuming h is small, we can write and solve for This gives us the formula Fig. 1: Newton's method. f (x k +h= f ( x k+1 f (x k + f (x k h=0 h= f (x k f ( x k x k +1 =x k f (x k f (x k which is called Newton's method. In Newton's method we model the function by the tangent line at the current point (x k, f (x k. The root of the tangent line is our next estimate of the root of f (x (Fig. 1. Taking x k =r+ϵ k and assuming the error ϵ k is small enough that the 2 nd order Taylor series f (x f (r+ f (rϵ+ 1 2 f (rϵ 2 = f (rϵ+ 1 2 f (rϵ 2 is accurate, it's straight-forward (but a bit messy to show that Newton's method converges quadratically with (2

Lecture 8: Root finding II 3/10 ϵ k+1 = 1 2 f (r f (r ϵ 2 k Example: Let's take f (x =x 2 2=0 Since f ( x=2 x, Newton's method gives the iteration formula x k +1 =x k x 2 k 2 2 x k Let's start at x 0 =1. Four iterations produce the sequence of numbers 1.5, 1.4166667,1.4142157,1.4142136 This is very rapid convergence toward the root 2=1.4142136. In fact the final value (as stored in the computer turns out to be accurate to about 11 decimal places. A Scilab implementation of Newton's is given in the Appendix. We require two functions as arguments: f (x and f ( x. Newton's method fails if f ( x k =0 and more generally performs poorly if f ( x k is very small. It can also fail if we start far away from a root. With root-bracketing methods, such as bisection, we know that the error in our root estimate is less than or equal to half the last bracketing interval. This gives us a clear termination condition ; we stop when the maximum possible error is less than some defined tolerance. With rootpolishing methods, such as Newton's method, we don't have any rigorous bound on the error in our root. Deciding when to stop iterating involves some guess work. A simple criterion is x k x k 1 tol (3 that is, we terminate when the change in root estimates is less than some specified tolerance. This is a reasonable way to estimate the actual uncertainty in our root estimate, but keep in mind that it is not a rigorous bound on the actual error, as is the case with bisection. Since Newton's method is not guaranteed to converge it may just bounce around for ever it is a good idea to also terminate if the number of iterations exceeds some maximum value. It's natural to look for methods that converge with order q=3, 4,. Householder's method generalizes Newton's method to higher orders. The q=3 version is called Halley's method. It requires calculation of f (x k, f (x k, f (x k at every step. The higher-order methods likewise require ever higher-order derivatives to be calculated. For practical purposes, the increased order of convergence is more than offset by the added calculations and complexity. One application where this is not necessarily the case is polynomials. It is very easy to calculate a polynomial's derivatives of all orders, and higher-order methods do find application in polynomial root finding. If started close enough to a simple root Newton's method generally performs very well and is the method of choice in many applications. It does, however, require that we compute both

Lecture 8: Root finding II 4/10 Fig. 2: Secant method f (x and f ( x at each iteration. In some cases it may not be possible or practical to compute f ( x explicitly. We would like a method that gives us the rapid convergence of Newton's method without the need of calculating derivatives. 3 Secant method In the secant method we replace the derivative appearing in Newton's method by the approximation Substituting this into (2 results in f ( x k f (x k f ( x k 1 x k x k 1 x k +1 =x k f (x k x k x k 1 f (x k f (x k 1 (4 Another way to view the secant method is as follows. Suppose we have evaluated the function at two points (x k, f k = f (x k and (x k 1, f k 1 = f ( x k 1. Through these two points we can draw a line, the formula for which is y= f k + f k f k 1 x k x k 1 ( x x k Setting this formula equal to zero and solving for x we obtain (4. In the secant method we model the function f (x by a line through our last two root estimates (Fig. 2. Solving for the root of that line provides our next estimate. When the secant method works it converges with order q 1.6, superlinear but not quadratic. Comparison of Figs. 1 and 2 suggest why this is. The secant method will tend to underestimate or

Lecture 8: Root finding II 5/10 overestimate (depending on the 2 nd derivative of the function at r the actual slope at the point. We are effectively using an average of the slopes at (x k, f (x k and (x k 1, f ( x k 1 whereas we use the true slope at (x k, f (x k in Newton's method. It can be shown [2] that the secant method converges as or Fig. 3: Failure of the secant method ϵ k+1 = 1 2 ϵ k +1 1 2 f (r ϵ f k ϵ k 1 (r f ϵ f (r 0.618 1.618 k so the secant method is of order q 1.6, which is superlinear but less than quadratic. A Scilab implementation of the secant method is given in the appendix. As is so often the case with numerical methods we are presented a trade off. The secant method does not require explicit calculation of derivatives while Newton's method does. But, the secant method does not converge as fast as Newton's method. As with all root-polishing methods, deciding when to stop iterating involves some guess work. Criterion (3 is an obvious choice. As illustrated in Fig. 3, the secant method can fail, even when starting out with a bracketed root. There we start with points 1 and 2 on the curve. The line through those points crosses the x axis at s. The corresponding point on the curve is point 3. Now we draw a line through points 2 and 3. This gives the root estimate t. The corresponding point on the curve is point 4. We are actually moving away from the root. In the case illustrated points 1 and 2 bracket a root while points 2 and 3 do not. Clearly if we have a root bracketed we should never accept a new root estimate that falls outside that bracket. The false position method is a variation of the secant method in which we use the last two points

Lecture 8: Root finding II 6/10 Fig. 4: Inverse quadratic interpolation. Solid line is the function. Dotted line is x represented as a quadratic function of y passing through three given points on the curve. which bracket a root to represent our linear approximation. In that case we would have drawn a line between point 3 and point 1. Of course, as in the bisection method, this would require us to start with a bracketed root. Moreover in cases where both methods would converge the false position method does not converge as fast as the secant method. 4 Inverse quadratic interpolation Given two points on a curve (x k, f k and (x k 1, f k 1 the secant method approximates the function by a line y= f (x c 1 +c 2 x (Fig. 2. This suggests that if we have a third point (x k 2, f k 2 we might draw a parabola through the three points to obtain a quadratic approximation to the function. Setting that approximation equal to zero y= f (x c 1 +c 2 x+c 3 x 2 =0 might provide a better root approximation than the secant method. Unfortunately we would have to solve a quadratic equation in this case. An alternative approach is inverse quadratic interpolation where we represent x as a quadratic function of y x= f 1 ( y=c 1 +c 2 y+c 3 y 2 Setting y= f (x=0 we simply have x=c 1 (Fig. 4. It turns out there is an explicit formula for this value x x= 1 f 2 f 3 ( f 1 f 2 ( f 1 f 3 + x 2 f 3 f 1 ( f 2 f 3 ( f 2 f 1 + x 3 f 1 f 2 ( f 3 f 1 ( f 3 f 2 (We will understand this formula when we study Lagrange interpolation. Inverse quadratic

Lecture 8: Root finding II 7/10 interpolation allows us to exploit information about both the first derivative (slope and second derivative (curvature of the function. Like the secant method, inverse quadratic interpolation can also fail. But when it works it converges with order q 1.8. Still not as rapid as Newton's method, but it does not require evaluation of derivatives. It converges faster than the secant method ( q 1.6 but at the cost of more bookkeeping and a more complicated recursion formula. 5 Hybrid methods In general, numerical root finding is a difficult problem. We are presented with various trade offs, such as that between the guaranteed converge of the bisection method and the faster convergence of the Newton, secant or inverse quadratic methods. Consequently people have developed hybrid methods that seek to combine the best of two or more simpler methods. One of the most widely used is Brent's method [1] (used in the Matlab fzero function. This method combines the bisection, secant and inverse quadratic methods. Brent's method starts off with a bracketed root. If we don't have a bracket then we have to search for one. With those two initial points, Brent's method applies the secant method to get a third point. From there it tries to use inverse quadratic interpolation for rapid convergence, but applies tests at each iteration to see if it is actually converging superlinearly. If not, Brent's method falls back to the slow-but-sure bisection method. At the next iteration it again tries inverse quadratic interpolation. Another example is Powell's hybrid method. (used in the Scilab fsolve function. There is no single agreed-upon one size fits all algorithm for root finding. Hybrid methods seek to use the fastest algorithm that seems to be working with the option to fall back to slower, but surer methods as a backup. These methods are recommended for most root-finding applications. However there may be specific applications where a particular method will be superior. Newton's method is hard to beat if it is possible to directly calculate both f (x and f ( x and a reasonably accurate initial guess to a root is available. It can be coded very compactly, so it's easy to incorporate directly into a program. 6 The fsolve command (Scilab As with nearly all non-trivial numerical algorithms, Scilab employs state-of-the-art methods developed by numerical computation researchers in it's library of functions. For solving f (x=0 Scilab provides the fsolve function. The simplest use of this is r = fsolve(x0,f; Here x0 is an initial guess at a root of the function f(x. The returned value r is the estimated root. For example -->deff('y=f(x','y=cos(x'; -->r = fsolve(1,f r = 1.5707963 The Matlab equivalent is called fzero, although it has a slightly different syntax. Note, however, that fsolve may fail to find a root but may still return a value r. For example

Lecture 8: Root finding II 8/10 -->deff('y=f(x','y=2+cos(x'; -->r = fsolve(1,f r = 3.1418148 The function 2+cos(x is never 0 yet Scilab returned a value for r. This value is actually where the function gets closest to the x axis; it's where f ( x is a minimum. Therefore, you should always check the value of the function at the reported root. Running the command using the syntax [r,fr] = fsolve(x0,f; returns the value of the function at r, fr=f(r. For example -->[r,fr] = fsolve(1,f fr = 1. r = 3.1418148 shows us that r is not actually a root since f (r=1. On the other hand -->deff('y=f(x','y=0.5+cos(x'; -->[r,fr] = fsolve(1,f fr = 2.220D-16 r = 2.0943951 makes it clear that r is a root in this case. By default, fsolve tries to find the root to within an estimated tolerance of 10 10. You can specify the tolerance explicitly as in [r,fr] = fsolve(x0,f,tol; Because of limitations due to round-off error it is not recommended to use a smaller tolerance than the default. There may be situations where you don't need much accuracy and using a larger tolerance might save a few function calls. 7 References 1. Brent, Richard P. Algorithms for Minimization Without Derivatives. Dover Publications. Kindle edition. ASIN: B00CRW5ZTK. 2013 (Originally published 1973 2. http://www.math.drexel.edu/~tolya/300_secant.pdf

Lecture 8: Root finding II 9/10 8 Appendix Scilab code 8.1 Newton's method 0001 ////////////////////////////////////////////////////////////////////// 0002 // rootnewton.sci 0003 // 2014-06-04, Scott Hudson 0004 // Implements Newton's method for finding a root f(x = 0. 0005 // Requires two functions: y=f(x and y=fp(x where fp(x is 0006 // the derivative of f(x. Search starts at x0. Root is returned as r. 0007 ////////////////////////////////////////////////////////////////////// 0008 function r=rootnewton(x0, f, fp, tol 0009 MAX_ITERS = 40; //give up after this many iterations 0010 niters = 1; //1st iteration 0011 r = x0-f(x0/fp(x0; //Newton's formula for next root estimate 0012 while (abs(r-x0>tol & (niters<=max_iters 0013 niters = niters+1; //keep track of # of iterations 0014 x0 = r; //current root estimate is last output of formula 0015 r = x0-f(x0/fp(x0; //Newton's formula for next root estimate 0016 end 0017 endfunction 8.2 Secant method 0001 ////////////////////////////////////////////////////////////////////// 0002 // rootsecant.sci 0003 // 2014-06-04, Scott Hudson 0004 // Implements secant method for finding a root f(x = 0. 0005 // Requires two initial x values: x1 and x2. Root is returned as r 0006 // accurate to (hopefully about tol. 0007 ////////////////////////////////////////////////////////////////////// 0008 function r=rootsecant(x1, x2, f, tol 0009 MAX_ITERS = 40; //maximum number of iterations allowed 0010 niters = 1; //1st iteration 0011 fx2 = f(x2; 0012 r = x2-fx2*(x2-x1/(fx2-f(x1; 0013 while (abs(r-x2>tol & (niters<=max_iters 0014 niters = niters+1; 0015 x1 = x2; 0016 fx1 = fx2; 0017 x2 = r; 0018 fx2 = f(x2; 0019 r = x2-fx2*(x2-x1/(fx2-fx1; 0020 end 0021 endfunction

Lecture 8: Root finding II 10/10 9 Appendix Matlab code 9.1 Newton's method %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% rootnewton.m %% 2014-06-04, Scott Hudson %% Implements Newton's method for finding a root f(x = 0. %% Requires two functions: y=f(x and y=fp(x where fp(x is %% the derivative of f(x. Search starts at x0. Root is returned as r. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function r = rootnewton(x0,f,fp,tol MAX_ITERS = 40; %%give up after this many iterations niters = 1; %%1st iteration r = x0-f(x0/fp(x0; %%Newton's formula for next root estimate while (abs(r-x0>tol & (niters<=max_iters niters = niters+1; %%keep track of # of iterations x0 = r; %%current root estimate is last output of formula r = x0-f(x0/fp(x0; %%Newton's formula for next root estimate end end 9.2 Secant method %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% rootsecant.m %% 2014-06-04, Scott Hudson %% Implements secant method for finding a root f(x = 0. %% Requires two initial x values: x1 and x2. Root is returned as r %% accurate to (hopefully about tol. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function r = rootsecant(x1,x2,f,tol MAX_ITERS = 40; %%maximum number of iterations allowed niters = 1; %%1st iteration fx2 = f(x2; r = x2-fx2*(x2-x1/(fx2-f(x1; while (abs(r-x2>tol & (niters<=max_iters niters = niters+1; x1 = x2; fx1 = fx2; x2 = r; fx2 = f(x2; r = x2-fx2*(x2-x1/(fx2-fx1; end end