Lecture 4 - United International College

Download Report

Transcript Lecture 4 - United International College

Numerical Computation
Lecture 4: Root Finding Methods - II
United International College
Review
• During our Last Class we covered:
– Algorithm Convergence
– Root Finding: Bisection Method, Newton’s
Method
Today
• We will cover:
– Root Finding: More on Newton’s Method, Secant
Method
– Section 4.3 in Pav
– Sections 4.4 and 4.6 in Moler
Uses of Newton’s Method
• Newton's Method can be used to program more
complex functions using only simple functions.
• Problem: A computer only has addition, subtraction,
multiplication, division, and we need to compute
some complex function g(x).
• Solution: Use Newton's Method to solve some
equation equivalent to g(z) - x = 0, where z is the
input to the subroutine. Then, x is the numerical
value for g(z).
Uses of Newton’s Method
• Example: Find
• Solution: Use Newton's Method for f(x) = z - x2 .
– Iterations:
– Simplify:
• Practice: Write a Matlab M-function program
to find the sqrt(z) to a specified accuracy eps.
Secant Method
• Newton’s Method is fast (quadratic
convergence).
• However, Newton’s Method requires
knowledge of the derivative of f(x). This is
hard to do programmatically.
• Needed: An algorithm that is (hopefully) as
fast as Newton’s Method, but does not require
f’(x).
• Solution: Secant Method
Secant Method
• Recall: Newton’s method
• Problem is f’(xk ). We know that the derivative
is a limit of the difference quotient
f ' ( xk )  lim
x   xk
f ( xk )  f ( x )
xk  x
• We can approximate this by using x=xk-1 , as
we assume that the iterates {xk} are close to
one another.
Secant Method
• In other words, instead of following the
tangent line to get the next iterate (Newton’s
Method), we
follow the
secant line.
Secant Method
• The secant line has equation:
• We want to find where it crosses the x-axis,
i.e. where y = 0. So,
Secant Method
• Secant Iterates:
• Note: We will have to supply two initial
guesses: x0 and x1 .
Secant Method
• Matlab Implementation:
function v = secant( f, x1, x0 , eps)
%Secant method
% Assumes f is differentiable
k = 0;
xprev = x0; xnext = x1;
while abs(xnext - xprev) > eps*abs(xnext)
xtmp = xnext;
xnext = xnext - ((xnext-xprev)/(f(xnext)-f(xprev)))*f(xnext);
xprev = xtmp;
k = k + 1;
v = [xnext k];
end
Secant Method
• Practice: Run this program to find the sqrt(2)
to an accuracy of 0.01 .
• How does the speed of the Secant Method
compare to Newton’s Method?
Secant Method
• Convergence: Pav (Section 4.3) shows that the
error in the Secant method has the following
order of growth:
• where
• This called super-linear convergence. It is
slower than quadratic, but faster than linear.
So, somewhere between the speed of
bisection and Newton.
Inverse Quadratic Interpolation
Method (IQI)
• Secant Method uses a line to approximate f(x)
and then finds where that line crosses the xaxis.
• Idea: Use a parabola (quadratic) to
approximate f(x) and find where parabola
crosses x-axis.
• Problem: Parabola might have complex roots!
It might not cross the x-axis.
Inverse Quadratic Interpolation
Method (IQI)
• Solution: Inverse approximation
(interpolation) – we think of xk as a function of
yk =f(xk) We get a quadratic p(y) and the next
approximation xk+1 is just p(0).
Inverse Quadratic Interpolation
Method (IQI)
f(x)
Inverse Quadratic Interpolation
Method (IQI)
• Convergence: It can be shown (Michael T
Heath’s book Scientific Computing) that
where α ≈ 1.893. So this method is almost as
fast as Newton’s method, and does not
require derivatives.
Matlab Root-finding
• fzero algorithm: Matlab has a function called
fzero that will find the root of a function,
starting from an initial guess. It uses a
combination of the bisection, secant, and
inverse quadratic methods.
• Idea: We use bisection and secant to get a
good approximation, then use IQI to rapidly
close in on the root. Algorithm is listed as
zeroin in section 4.6 of Moler text.
Practice
• (If time) Try Exercise 4.9. in Moler
• Find the first ten positive values of x for which x = tan
x.
• How can we do this in one Matlab M-function file?