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

Similar documents
Lecture 8. Root finding II

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

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

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

Solution of Algebric & Transcendental Equations

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

Optimization and Calculus

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

Math 473: Practice Problems for Test 1, Fall 2011, SOLUTIONS

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

Math Numerical Analysis

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

Numerical Methods. Root Finding

Numerical Methods in Informatics

Chapter 3: Root Finding. September 26, 2005

Nonlinear Equations. Chapter The Bisection Method

Numerical Solution of f(x) = 0

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.

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

Numerical Methods Lecture 3

Finding the Roots of f(x) = 0

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

Chapter 1. Root Finding Methods. 1.1 Bisection method

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

Math Numerical Analysis Mid-Term Test Solutions

Root Finding Convergence Analysis

Homework 2 - Solutions MA/CS 375, Fall 2005

Jim Lambers MAT 460 Fall Semester Lecture 2 Notes

Scientific Computing: An Introductory Survey

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

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

Midterm Review. Igor Yanovsky (Math 151A TA)

COSMOS: Making Robots and Making Robots Intelligent Lecture 3: Introduction to discrete-time dynamics

LIMITS AND DERIVATIVES

The function graphed below is continuous everywhere. The function graphed below is NOT continuous everywhere, it is discontinuous at x 2 and

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

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

Everything Old Is New Again: Connecting Calculus To Algebra Andrew Freda

Solutions of Equations in One Variable. Newton s Method

x x2 2 + x3 3 x4 3. Use the divided-difference method to find a polynomial of least degree that fits the values shown: (b)

PLC Papers. Created For:

Halley s Method: A Cubically Converging. Method of Root Approximation

Math 128A: Homework 2 Solutions

CS 450 Numerical Analysis. Chapter 5: Nonlinear Equations

Intro to Scientific Computing: How long does it take to find a needle in a haystack?

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

An Invitation to Mathematics Prof. Sankaran Vishwanath Institute of Mathematical Sciences, Chennai. Unit I Polynomials Lecture 1A Introduction

1 + lim. n n+1. f(x) = x + 1, x 1. and we check that f is increasing, instead. Using the quotient rule, we easily find that. 1 (x + 1) 1 x (x + 1) 2 =

5 Finding roots of equations

If you need the source code from the sample solutions, copy and paste from the PDF should work. If you re having trouble, send me an .

MATH 3795 Lecture 12. Numerical Solution of Nonlinear Equations.

Integration, differentiation, and root finding. Phys 420/580 Lecture 7

FIXED POINT ITERATION

Root finding. Eugeniy E. Mikhailov. Lecture 06. The College of William & Mary. Eugeniy Mikhailov (W&M) Practical Computing Lecture 06 1 / 10

Scientific Computing. Roots of Equations

Secondary Math 3 Honors Unit 10: Functions Name:

MATH 115, SUMMER 2012 LECTURE 12

2 = = 0 Thus, the number which is largest in magnitude is equal to the number which is smallest in magnitude.

Infinite series, improper integrals, and Taylor series

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

CS 221 Lecture 9. Tuesday, 1 November 2011

Solution of Nonlinear Equations

Homework 2. Matthew Jin. April 10, 2014

STOP, a i+ 1 is the desired root. )f(a i) > 0. Else If f(a i+ 1. Set a i+1 = a i+ 1 and b i+1 = b Else Set a i+1 = a i and b i+1 = a i+ 1

Root finding. Eugeniy E. Mikhailov. Lecture 05. The College of William & Mary. Eugeniy Mikhailov (W&M) Practical Computing Lecture 05 1 / 10

MATH 1130 Exam 1 Review Sheet

Numerical Integration

Chapter Five Notes N P U2C5

LECTURE NOTES ELEMENTARY NUMERICAL METHODS. Eusebius Doedel

Sequences and Series

ROOT FINDING REVIEW MICHELLE FENG

Root finding. Root finding problem. Root finding problem. Root finding problem. Notes. Eugeniy E. Mikhailov. Lecture 05. Notes

Math 12: Discrete Dynamical Systems Homework

Stephen F Austin. Exponents and Logarithms. chapter 3

Sequences and infinite series

Introduction to Limits

Outline. Additional Nonlinear Systems. Abstract. Finding Equilibrium Points Numerically. Newton s Method

e x = 1 + x + x2 2! + x3 If the function f(x) can be written as a power series on an interval I, then the power series is of the form

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

1.1: The bisection method. September 2017

Math 117: Calculus & Functions II

The Theory of Second Order Linear Differential Equations 1 Michael C. Sullivan Math Department Southern Illinois University

8.5 Taylor Polynomials and Taylor Series

Nonlinear Equations. Not guaranteed to have any real solutions, but generally do for astrophysical problems.

Lecture for Week 2 (Secs. 1.3 and ) Functions and Limits

1.10 Continuity Brian E. Veitch

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

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

Chapter 11 - Sequences and Series

SOLUTION OF ALGEBRAIC AND TRANSCENDENTAL EQUATIONS BISECTION METHOD

MATH 415, WEEKS 14 & 15: 1 Recurrence Relations / Difference Equations

Subtract 16 from both sides. Divide both sides by 9. b. Will the swing touch the ground? Explain how you know.

V. Graph Sketching and Max-Min Problems

Introduction to Numerical Analysis

a factors The exponential 0 is a special case. If b is any nonzero real number, then

Zeros of Functions. Chapter 10

EDEXCEL NATIONAL CERTIFICATE UNIT 4 MATHEMATICS FOR TECHNICIANS OUTCOME 1

Numerical Optimization

1.4 Techniques of Integration

f(x) = lim x 0 + x = lim f(x) =

Transcription:

1 Introduction Lecture 7 Root finding I For our present purposes, root finding is the process of finding a real value of x which solves the equation f (x)=0. Since the equation g x =h x can be rewritten as f x =g x h x =0, this encompasses the solution of any single equation in a single unknown. Ideally we would want to know how many roots exist and what their values are. In some cases, such as for polynomials, there are theoretical results for the number of roots (some of which might be complex) and we have clues about what we are looking for. However, for an arbitrary function f (x) there is not much we can say. Our equation may have no real roots, for example 1+e x =0, or, as in the case of sin( x)=0 with roots x=n π, n=0,±1,±2,, there may be an infinite number of roots. We will limit our scope to finding one root any root. If we fail to find a root it will not mean that the function has no roots, just that our algorithm was unable to find one. To have any hope of solving the problem we need to make basic assumptions about f (x) that allow us to know if an interval contains a root, if we are close to a root, or in what direction (left or right) along the x axis a root might lie. At a minimum we will have to assume that our function is continuous. Intuitively, a continuous function is one that can be plotted without lifting pen from paper, while the plot of a discontinuous function has breaks. Formally a function f (x) is continuous at x=c if for any ϵ>0 there exists a δ>0 such that x c <δ f (x) f (c) <ϵ If f (x) is continuous at all points in some interval a x b then it is continuous over that interval. Continuity allows us to assume that a small change in x results in a small change in f (x). It also allows us to know that if f (a )>0, f (b)<0 then there is some x in the interval (a,b) such that f (x)=0, because a continuous curve cannot go from above the x axis to below without crossing the x axis. In some cases we will also assume that f (x) is differentiable, meaning the limit f (x)=lim δ 0 f (x+δ) f ( x) δ exists for all x of interest. This allows us to approximate the function by the line f (x+δ) f (x)+f (x)δ over at least a small range of x values. 2 Graphical solution The easiest and most intuitive way to solve f (x)=0 is to simply plot the function and zoom in on the region where the graph crosses the x axis. For example, say we want to find the first root of cos(x)=0 for x 0. We could run the command x = 0:0.01:3; y = cos(x); plot(x,y);

Lecture 7: Root finding I 2/12 xgrid; //short-hand way to add a grid in Scilab (grid in Matlab) to get the plot shown in Fig. 1. We can see that there is a root in the interval 1.5 x 1.6. We then use the magnifying lens tool (Fig. 2) to zoom in on the root and get the plot shown in Fig. 3. From this we can read off the root to three decimal places as Fig. 1: Plot of cos(x) x=1.571 This approach is easy and intuitive. We can readily search for multiple roots by plotting different ranges of x. However, in many situations we need an automated way to find roots. Scilab (and Matlab) have built in functions to do this, and we will learn how to use those tools. But, in order to understand what those functions are doing, and what limitations they may have, we need to study root-finding algorithms. We start with one of the most basic algorithms called bisection. Fig. 2: Zoom tool

Lecture 7: Root finding I 3/12 3 Bisection Fig. 3: Zooming in on the root If the product of two numbers is negative then one of the numbers must be positive and the other must be negative. Therefore, if f (x) is continuous over an interval a x b, and if f (a ) f (b)<0 then f (x) is positive at one of the interval and negative at the other. Since f (x) is continuous we can conclude that f (r)=0 for some r in the interior of the interval, because you cannot draw a continuous curve from a positive value of f (x) to a negative value of f (x), or vice versa, without passing through f (x)=0. This is the basis of the bisection method, illustrated in Fig. 4. Fig. 4: Bisection

Lecture 7: Root finding I 4/12 If f (a) f (b)<0 then we can estimate the root by the interval's midpoint with an uncertainty of half the length of the interval, that is, r =(b+a)/2±(b a )/2. To reduce the uncertainty by half we evaluate the function at the midpoint x=(b+a)/2. If f (x), f (a) have the same sign (as in the case illustrated in Fig. 4) we set a= x. If f (x), f (b) have the same sign we set b=x. In the (very unlikely) event that f ( x)=0 then r=x is the root. In either of the first two cases we have bisected the interval a x b into an interval half the original size. We then simply repeat this process until the uncertainty b a /2 is smaller than desired. This method is simple and guaranteed to work for any continuous function. The algorithm can be represented as follows Bisection algorithm repeat until b a /2 is smaller than tol set x = midpoint of interval (a,b) if f (x) has the same sign as f (a) then set a= x else if f (x) has the same sign as f (b) then set b=x else f (x) is zero and we've found the root! Function rootbisection in the Appix implements the bisection algorithm. 3.1 Bracketing a root To start the bisection algorithm we need two values x=a, b such that f (a) f (b)<0. We say that a and b bracket a root, meaning a root is guaranteed to lie in the interval (a,b). How do we bracket a root in the first place? In an interactive session a plot of f (x) allows you to quickly spot values which bracket a root. In Fig. 1 we immediately see that a=1.4,b=1.6 bracket a root. In some cases a bracketing interval might be obvious from the form of the function. As an example, a problem that comes up in fiber optics is the solution of an equation of the form f (x)= 1 x 2 tan(ax)=0 for x 0. Since f (0)=1>0 and f (x π /(2 a)) we know that the interval (0, π /(2a)) must bracket a root. In general there is no sure-fire method for bracketing a root, even if a root exists. Fig. 5 is an example of a function with roots that would be difficult to find unless we happened to start searching near x=0. One approach to getting started is a grid search. Let x min <x< x max be an interval in which we believe one or more roots f (x)=0 might exist. Let Δ x be the smallest scale at which we think the function is likely to change significantly (in Fig. 5 this might be Δx 0.1. Our search grid is then (x min, x min +Δx, x min +2 Δx,, x max ). We search the grid by calculating f (x) at each grid point. Any time we observe a sign change we have found a new root. Grid searching is a non-interactive version of the plot and see method and it has the same pros and cons. On the pro side, it will work even with hidden roots (as in Fig. 5), and it (ideally) allows us to identify all roots in a prescribed interval. On the con side, it requires many function evaluations. If the function is costly to evaluate, or if the root finding operation is in a

Lecture 7: Root finding I 5/12 loop that will be repeated many times, then a grid search is not likely to be practical. Another way to approach root bracketing is to start at an arbitrary value x=a with some step size h. We then move along the x axis such that f ( x) is decreasing (that is, we are moving towards y=0 ) until we find a bracket interval (a,b). If f ( x) starts to increase before we find a bracket then we give up. Increasing the step size at each iteration protects us from getting into a situation where we are inching along a function that has a far-away zero. Function rootbracket in the Appix implements this idea. 3.2 Convergence Fig. 5: A difficult root-finding problem The uncertainty in the root, the maximum error in our bisection estimate, is ϵ= b a /2. This decreases by a factor of ½ with each bisection. Therefore the relationship between the error at step k and step k+1 is More generally we might have an error ϵ= x r that decreases as ϵ k+1 = 1 2 ϵ k (1) ϵ k+1 αϵ k q The exponent q is called the order of convergence. If q=1, as it is for bisection, we say the convergence is linear, and we call α the rate of convergence. For q>1 the convergence is said to be superlinear, and specifically, if q=2 the convergence is quadratic. For superlinear convergence α is called the asymptotic error constant. From (1) and (2) we see that bisection converges linearly with a rate of convergence of ½. If the initial error is ϵ 0 then after k iterations we have (2)

Lecture 7: Root finding I 6/12 ϵ k =ϵ 0( 1 k 2) In order to add one decimal digit of accuracy we need to decrease the error by a factor of 1/10. To increase accuracy by n digits we require Solving for k we find ( 1 k = 2) 1 10 n k= n log 2 =3.32n It takes k 10 iterations to add n=3 digits of accuracy. All linearly converging root finding algorithms have the characteristic that each additional digit of accuracy requires a given number of algorithm iterations. Now consider a quadratically convergent method with ϵ k+1 =ϵ k 2 Suppose ϵ 0 =0.1, so we start with one decimal place of accuracy. Then ϵ 1 =0.01, ϵ 2 =0.0001, ϵ 3 =0.00000001, ϵ 4 =0.0000000000000001 The first iteration adds one decimal place of accuracy. The second adds two decimal places. The third adds four and the fourth adds eight. This runaway increase in accuracy is what motivates us to explore other root-finding algorithms. 4 Fixed-point iteration The goal of root finding is to arrive at x=r where f (r)=0. Now consider the following three equations 0= f (x) 0=a f (x) x=x+a f ( x) Multiplying the first equation through by a produces the second equation. Adding x to both sides of the second equation produces the third. All three will have the same roots, provided a 0. Now let's define a new function Then our root-finding problem can be written the solution of which is g( x)=x+a f ( x) x=g( x) r=g (r) What's attractive about this is that it has the form x equals something, which is almost an explicit formula for x. The problem is that the something itself deps on x. So let's imagine starting with a guess for the root x=x 0. We might expect that x 1 =g( x 0 ) would be an improved

Lecture 7: Root finding I 7/12 guess. We could continue iterating as many times as desired x 1 =g( x 0 ), x 2 =g(x 1 ),, x k+1 =g (x k ) Our hope is that this converges with x k r as k. Writing x k =r+ϵ k ϵ k is the error in the k th root estimate. Suppose that the error is small enough that the 1 st order Taylor series is accurate. Then and It follows that g(r+ϵ) g (r)+g (r)ϵ=r+g (r)ϵ r+ϵ k+1 =r+ g (r)ϵ k ϵ k+1 =g (r)ϵ k Comparing (3) to (2) we see that provided ϵ k =[g (r)] k ϵ 0 (3) α= g (r) <1 (4) fixed-point iteration converges linearly with rate of convergence α. The value r is said to be a fixed point of the iteration since the iteration stays fixed at r=g(r). Condition (4) requires 1+a f (r) <1 Provided f (r) 0 we can always find a value a satisfying this condition. Fixed-point iteration Set g( x)= x+a f ( x) for some choice of a From initial root estimate x 0 iterate until x n+1 x n <tol x n+1 =g (x n ) if iteration diverges, select another value of a

Lecture 7: Root finding I 8/12 Example: Suppose we wish to solve By inspection the roots are ± 2. Let Since f (x)=x 2 2=0 g( x)=x+ f ( x)= x+x 2 2 g ( 2)=1+2 2>1 we expect that fixed point iteration will fail. Starting very close to a root with x=1.4. iteration gives the sequence of values 1.36,1.2096, 0.6727322, 0.8746993, 2.1096004 which is clearly moving away from the root. On the other hand taking for which we get the sequence of values g( x)=x 0.25 f ( x)= x 0.25(x 2 2) g ( 2)=0.293 1.412975, 1.4138504,1.4141072, 1.4141824,1.4142044, 1.4142109 which is converging to 2=1.4142136. Interestingly, if f (r) 0 we have Solving for a α= g (r) = 1+a f (r) =0 a= 1 f (r) It seems we might achieve superlinear convergence for this choice of a. This is one way to motivate Newton's method which we cover in the next lecture. 4.1 Root bracketing vs. root polishing In the vocabulary of numerical analysis, a method like bisection which starts with and always maintains a root bracket (a,b) is called a root bracketing method. A technique such as fixedpoint iteration which starts at some value x 0 and generates a sequence x 1, x 2, x 3,, x k is called a root polishing method. Root bracketing has the advantages that the existence of a bracket guarantees (for a continuous function) the existence of a root within that bracket, and the error in taking the midpoint of the bracketing interval as the root is guaranteed to be no more than half the width of the interval. The price we pay for these guarantees is that we have to have a root bracketed from the start. Root polishing has the advantage that we don't need a root bracket to start, just a single value of x. On the down side root polishing techniques are not guaranteed to converge to a root, even if we start off near one, and they don't give us a rigorous bound on the error in the value of a root if we do. (5)

Lecture 7: Root finding I 9/12 5 Appix Scilab code 0001 ////////////////////////////////////////////////////////////////////// 0002 // rootbisection.sci 0003 // 2014-06-04, Scott Hudson, for pedagogic purposes 0004 // Implements bisection method for finding a root f(x) = 0. 0005 // Requires a and b to bracket a root, f(a)*f(b)<0. 0006 // Returns root as r with maximum error tol. 0007 ////////////////////////////////////////////////////////////////////// 0008 function r=rootbisection(a, b, f, tol) 0009 fa = f(a); 0010 fb = f(b); 0011 if (fa*fb>=0) //make sure a,b bracket a root 0012 error('rootbisection: fa*fb>=0'); 0013 0014 while (abs(b-a)/2>tol) //stop when error in root < tol 0015 x = (a+b)/2; //midpoint of interval 0016 fx = f(x); 0017 if (sign(fx)==sign(fa)) //r is in (x,b) 0018 a = x; //move a to x 0019 fa = fx; 0020 elseif (sign(fx)==sign(fb)) //r is in (a,x) 0021 b = x; //move b to x 0022 fb = fx; 0023 else //unlikely case that fx==0, sign(fx)==0, we found the root 0024 a = x; //shrink interval to zero width a=b=x 0025 b = x; 0026 0027 0028 r = (a+b)/2; //midpoint of last bracket interval is root estimate 0029 function

Lecture 7: Root finding I 10/12 0001 ////////////////////////////////////////////////////////////////////// 0002 // rootbracket.sci 0003 // 2014-06-04, Scott Hudson, for pedagogic purposes 0004 // Given a function f(x), starting point x=x0 and a stepsize h 0005 // search for a and b such that f(x) changes sign over [a,b] hence 0006 // bracketing a root. 0007 ////////////////////////////////////////////////////////////////////// 0008 function [a, b]=rootbracket(f, x0, h) 0009 a = x0; 0010 fa = f(a); 0011 b = a+h; 0012 fb = f(b); 0013 done = (sign(fa)~=sign(fb)); //if the signs differ we're done 0014 if (~done) //if we don't have a bracket 0015 if (abs(fb)>abs(fa)) //see if a->b is moving away from x axis 0016 h = -h; //if so step in the other direction 0017 b = a; //and we will start from a instead of b 0018 fb = fa; 0019 0020 0021 while (~done) 0022 a = b; //take another step 0023 fa = fb; 0024 h = 2*h; //take bigger steps each time 0025 b = a+h; 0026 fb = f(b); 0027 done = (sign(fa)~=sign(fb)); 0028 if ((abs(fb)>abs(fa))&(~done)) //we're now going uphill, give up 0029 error("rootbracket: cannot find a bracket\n"); 0030 0031 0032 function

Lecture 7: Root finding I 11/12 6 Appix Matlab code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% rootbisection.m %% 2014-06-04, Scott Hudson, for pedagogic purposes %% Implements bisection method for finding a root f(x) = 0. %% Requires a and b to bracket a root, f(a)*f(b)<0. %% Returns root as r with maximum error tol. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function r = rootbisection(a,b,f,tol) fa = f(a); fb = f(b); if (fa*fb>=0) %%make sure a,b bracket a root error('rootbisection: fa*fb>=0'); while (abs(b-a)/2>tol) %%stop when error in root < tol x = (a+b)/2; %%midpoint of interval fx = f(x); if (sign(fx)==sign(fa)) %%r is in (x,b) a = x; %%move a to x fa = fx; elseif (sign(fx)==sign(fb)) %%r is in (a,x) b = x; %%move b to x fb = fx; else %%unlikely case that fx==0, sign(fx)==0, we found the root a = x; %%shrink interval to zero width a=b=x b = x; r = (a+b)/2; %%midpoint of last bracket interval is root estimate

Lecture 7: Root finding I 12/12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% rootbracket.m %% 2014-06-04, Scott Hudson, for pedagogic purposes %% Given a function f(x), starting point x=x0 and a stepsize h %% search for a and b such that f(x) changes sign over [a,b] hence %% bracketing a root. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [a,b] = rootbracket(f,x0,h) a = x0; fa = f(a); b = a+h; fb = f(b); done = (sign(fa)~=sign(fb)); %%if the signs differ we're done if (~done) %%if we don't have a bracket if (abs(fb)>abs(fa)) %%see if a->b is moving away from x axis h = -h; %%if so step in the other direction b = a; %%and we will start from a instead of b fb = fa; while (~done) a = b; %%take another step fa = fb; h = 2*h; %%take bigger steps each time b = a+h; fb = f(b); done = (sign(fa)~=sign(fb)); if ((abs(fb)>abs(fa))&(~done)) %%we're now going uphill, give up error('rootbracket: cannot find a bracket');