* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download No Slide Title
Survey
Document related concepts
Transcript
Root Finding
UC Berkeley
Fall 2004, E77
http://jagger.me.berkeley.edu/~pack/e77
Copyright 2005, Andy Packard. This work is licensed under the Creative Commons Attribution-ShareAlike
License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Solving Algebraic Equations
From linearity, it is easy to solve the equation
3x 7 12
or even the system of equations
2 x 5 y 12
x 6y 3
But what about an equation like
x
tan( x)e 1 0
Solving Algebraic Equations
In general, given a continuous function f, how do you find
the (any, all) solutions to
f ( x) 0
f(x)
Graph of f(x) versus x
x
“roots” of f
Iterative Methods
Iterative methods start with a “guess”, labeled x0 and
through “easy” calculations, generate a sequence
x1, x2, x3, …
Goal is that sequence satisfies
lim xn x
n
convergence to
a limit, x*
and
f x 0
x* is a solution
Rate of Convergence
Suppose {xn} is a sequence, converging to a limit x*. Let
en denote the difference x*-xn
If there is a constant C, and positive exponent such
that for large n
en 1 C en
then the sequence {xn} converges with order to x*.
– “linear” convergence is =1
• The sequence 3, 2.5, 2.25, 2.125, 2.0625, … converges linearly
to 2 (here C = ½)
• The sequence 3, 2.1, 2.01, 2.001, 2.0001,… converges linearly to
2 (here C=0.1)
– “quadratic” convergence is =2
• The sequence 3,2 1 2 ,2 1 4 ,2 116 ,2 1 256 ,2 1 65536,... converges
quadratically to 2 (here C=1)
Stopping Criteria
Suppose {xn} is a sequence, converging to a limit x*. The
limit x* has the property f(x*)=0. Let tol be a positive
number
But we don’t know x*
Absolute (in x)
|xn – x*| < tol
“Absolute”
|xn – xn-1| < tol
Relative (in x)
|xn – x*| < tol × |x*|
“Relative”
|xn – xn-1| < tol × |xn|
Absolute in f
|f(xn)| < tol
Sometimes (in bisection, for example)
we can bound this, even without
knowing x*.
Bisection Method, basic idea
Suppose f is continuous,
xM
xL
f xL
f xL 0
f xR 0
Intermediate value theorem
f xR
xR
There must be a root x* between xL and xR.
•Let xM be the midpoint. |xM-x*|≤0.5|xR-xL|
•Based on sign of f xM replace either xL or xR with
xM, and repeat.
Simple pseudo-code: Bisection
% Start with xL, xR,
fL = f(xL); fR = f(xR);
while StoppingCriteriaNotMet
xM = 0.5*(xL+xR);
yM = f(xM);
if fL*fM<0
% replace R with M
xR = xM;
else
xL = xM;
end
end
Examples: Bisection
Newton’s Method: motivation
Graph of h(x), the straight-line
approximation to f at x0
graph of f(x)
x
x0
hx0 f x0
functions are equal at x0
h x f x0 for all x
'
'
slope of h (everywhere)
equals the slope of f at x0
hx ax b for some a, b
graph of h is straight line
hx f x0 f x0 x x0
'
Newton’s Method: motivation
Graph of h(x), the straight-line
approximation to f at x0
graph of f(x)
x
x0
hx f x0 f x0 x x0
'
Approximation to f, near x0
Approximate solving f(x)=0 by solving (easier) h(x)=0
f x0
hx 0 x x0 '
f x0
Newton’s Method: iteration
Graph of h(x), the straight-line
approximation to f at x0
graph of f(x)
*
xapp
x
*
app
x0
f x0
x0 '
f x0
f xk
xk 1 xk '
f xk
x
Algorithm: Repeat, using
x*app as the “initial” point.
General form of the iteration
Newton’s Method: iteration
f xk
xk 1 xk '
f xk
General form of the iteration
Facts about Newton’s method to solve f(x) = 0
•At each step, need to evaluate the function and its
derivative at a single point
•Not guaranteed to converge. It might “cycle”, and it
might diverge.
•If it does converge, the convergence is quadratic.
•More complicated than bisection, can work better.
•Generalizes to N equations in N unknowns
Function handles and feval
Several Matlab functions solve your problem by repeatedly
calling functions that you supply
New data type: add to
– finding zeros of a function (fzero)
list with double, cell,
– Integrating a function (trapz, quad)
char, struct.
– Integrating a differential equation (ode45)
– minimizing a function (fminbnd, fminsearch)
For example, in calling fzero, you must pass a referenceto-the-function (called a function handle) that you want
fzero to find the zeros of. Use the @ operator to get the
Any function (built-in,
reference.
mfile, etc)
>> shan = @sin;
>> class(shan)
>> feval(shan,linspace(0,pi,5))
Function handles and feval
General syntax for feval is
function handle
[out1,out2,…] = feval(FuncH,arg1,arg2,…)
Output argument list
Input argument list