Newton’s Method, Root Finding with MATLAB and Excel Chapter 6 Finding the Roots of Equations Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Review: Classification of Equations • Linear: independent variable appears to the first power only, either alone or multiplied by a constant • Nonlinear: – Polynomial: independent variable appears raised to powers of positive integers only – General non-linear: all other equations Engineering Computation: An Introduction Using MATLAB and Excel Review: Solution Methods • Linear: Easily solved analytically • Polynomials: Some can be solved analytically (such as by quadratic formula), but most will require numerical solution • General non-linear: unless very simple, will require numerical solution Engineering Computation: An Introduction Using MATLAB and Excel Review: The Bisection Method • In the bisection method, we start with an interval (initial low and high guesses) and halve its width until the interval is sufficiently small • As long as the initial guesses are such that the function has opposite signs at the two ends of the interval, this method will converge to a solution Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method • Newton’s Method (also know as the NewtonRapshon Method) is another widely-used algorithm for finding roots of equations • In this method, the slope (derivative) of the function is calculated at the initial guess value and projected to the x-axis • The corresponding x-value becomes the new guess value • The steps are repeated until the answer is obtained to a specified tolerance Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method y(xi) Tangent Line: Slope = y’(xi) Initial guess xi Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method New guess for x: xn = xi - y(xi)/y’(xi) y(xi) xi y(xi)/y’(xi) Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • Find a root of this equation: • The first derivative is: • Initial guess value: x = 10 Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • For x = 10: • This is the new value of x Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example y = 1350 y’ = 580 New x-value = 7.6724 Initial guess = 10 Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • For x = 7.6724: Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example y = 368.494 y’ = 279.621 New x-value = 6.3546 Initial value = 7.6724 Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • Continue iterations: Method quickly converges to this root Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • To find the other roots, use different initial guess values Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method Example • Three roots found: x = -2.0764 x = 1.4187 x = 5.6577 Engineering Computation: An Introduction Using MATLAB and Excel Newton’s Method - Comments • Usually converges to a root much faster than the bisection method • In some cases, the method will not converge (discontinuous derivative, initial slope = 0, etc.) • In most cases, however, if the initial guess is relatively close to the actual root, the method will converge • Don’t necessarily need to calculate the derivative: can approximate the slope from two points close to the x-value. This is called the Secant Method Engineering Computation: An Introduction Using MATLAB and Excel In-Class Exercise • Draw a flow chart of Newton’s Method • Write the MATLAB code to apply Newton’s Method to the previous example: Engineering Computation: An Introduction Using MATLAB and Excel Define converge tolerance tol Input initial guess x Calculate f(x) while abs(f(x)) > tol Calculate slope fpr(x) x = x – f(x)/fpr(x) Calculate f(x) Output root x Engineering Computation: An Introduction Using MATLAB and Excel MATLAB Code • MATLAB functions defining the function and its derivative: Engineering Computation: An Introduction Using MATLAB and Excel MATLAB Code Engineering Computation: An Introduction Using MATLAB and Excel MATLAB Results >> Newton Enter initial guess 10 Root found: 5.6577 >> Newton Enter initial guess 0 Root found: 1.4187 >> Newton Enter initial guess -10 Root found: -2.0764 Engineering Computation: An Introduction Using MATLAB and Excel Excel and MATLAB Tools • Bisection method or Newton’s method can be easily programmed • However, Excel and MATLAB have built-in tools for finding roots of equations Engineering Computation: An Introduction Using MATLAB and Excel Excel and MATLAB Tools • General non-linear equations: – Excel: Goal Seek, Solver – MATLAB: fzero • Polynomials: – MATLAB: roots • Graphing tools are also important to locate roots approximately Engineering Computation: An Introduction Using MATLAB and Excel Excel Tools • We have seen how to use Solver for a system of equations; we can easily apply it to find roots of a single equation • There is a tool in Excel even easier to use for a single equation: Goal Seek • With Goal Seek, we instruct Excel to change the value of a cell containing the independent variable to cause the value of the cell containing the function to equal a given value Engineering Computation: An Introduction Using MATLAB and Excel Goal Seek Example Engineering Computation: An Introduction Using MATLAB and Excel Goal Seek Example Engineering Computation: An Introduction Using MATLAB and Excel fzero Example • The MATLAB function fzero finds the root of a function, starting with a guess value • Example: function fun1 defines this equation: Engineering Computation: An Introduction Using MATLAB and Excel fzero Example • The function fzero has arguments of the name of the function to be evaluated and a guess value: >> fzero('fun1',10) ans = 5.6577 • Or the name of function to be evaluated and a range of values to be considered: >> fzero('fun1',[4 10]) ans = 5.6577 Engineering Computation: An Introduction Using MATLAB and Excel fzero Example • If a range is specified, then the function must have opposite signs at the endpoints > fzero('fun1',[0 10]) ??? Error using ==> fzero at 292 The function values at the interval endpoints must differ in sign. Engineering Computation: An Introduction Using MATLAB and Excel Graphing to Help Find Roots • Making a graph of the function is helpful to determine how many real roots exist, and the approximate locations of the roots • Example: Consider these two equations: • How many roots does each have? Engineering Computation: An Introduction Using MATLAB and Excel Graphing to Help Find Roots • Equation 1: 3 real roots Equation 2: 1 real root Engineering Computation: An Introduction Using MATLAB and Excel roots Example • For polynomials, the MATLAB function roots finds all of the roots, including complex roots • The argument of roots is an array containing the coefficients of the equation • For example, for the equation the coefficient array is [3, -15, -20, 50] Engineering Computation: An Introduction Using MATLAB and Excel roots Example >> A = [3, -15, -20, 50]; >> roots(A) ans = 5.6577 -2.0764 1.4187 Engineering Computation: An Introduction Using MATLAB and Excel roots Example • Now find roots of >> B = [3, -5, -20, 50]; >> roots(B) ans = -2.8120 2.2393 + 0.9553i Two complex roots 2.2393 - 0.9553i Engineering Computation: An Introduction Using MATLAB and Excel Summary • The bisection method and Newton’s method (or secant method) are widely-used algorithms for finding the roots of equations • When using any tool to find the roots of non-linear equations, remember that multiple roots may exist • The initial guess value will affect which root is found Engineering Computation: An Introduction Using MATLAB and Excel