Roots of Equations Bracketing Methods 1

Download Report

Transcript Roots of Equations Bracketing Methods 1

Roots of Equations
Bracketing Methods
1
Root
We are given f(x), a function of x, and we
want to find α such that
f(α) = 0
α is called the root of the equation f(x) = 0, or
the zero of the function f(x)
2
Example: Interest Rate
Suppose you want to buy an electronic appliance from
a shop and you can either pay an amount of 12,000 or
have a monthly payment of 1,065 for 12 months. What
is the corresponding interest rate?
We know the payment formulae is:
x(1  x)
A P
(1  x) n  1
n
A is the monthly payment
P is the loan amount
x is the interest rate per period of time
n is the loan period
To find the yearly interest rate, x, you have to find the zero of
(1  12x )12
1,065  12,000
(1  12x )12  1
x
12
3
Finding Roots Graphically
• Not accurate
• However, graphical view
can provide useful info
about a function.
– Multiple roots?
– Continuous?
– etc.
4
The following root finding methods will be
introduced:
A. Bracketing Methods
A.1. Bisection Method
A.2. Regula Falsi (False-position Method)
B. Open Methods
B.1. Fixed Point Iteration
B.2. Newton Raphson's Method
B.3. Secant Method
5
Bracketing Methods
Theorem: If a function f(x) is
continuous in the interval
[a, b] and f(a)f(b) < 0, then
the equation f(x) = 0 has at
least one real root in the
interval (a, b).
6
Usually
• f(a)f(b) > 0 implies zero or even
number of roots
– [figure (a) and (c)]
• f(a)f(b) < 0 implies odd number
of roots
– [figure (b) and (d)]
7
Exceptional Cases
• Multiple roots
– Roots that overlap at one
point.
– e.g.: f(x) = (x-1)(x-1)(x-2) has
a multiple root at x=1.
• Functions that discontinue
within the interval
8
Algorithm for bracketing methods
Step 1: Choose two points xl and xu such that f(xl)f(xu) < 0
Step 2: Estimate the root xr
(note: xl < xr < xu)
Step 3: Determine which subinterval the root lies:
if f(xl)f(xr) < 0
// the root lies in the lower subinterval
set xu to xr and goto step 2
if f(xl)f(xr) > 0
// the root lies in the upper subinterval
set xl to xr and goto step 2
if f(xl)f(xr) = 0
xr is the root
9
How to select xr in step 2?
1. Bisection Method
Guess without considering the characteristics of
f(x) in (xl, xu)
2. False Position Method (Regula Falsi)
Use "average slope" to predict the location of
the root
10
A.1. Bisection Method
xu  xl
xr 
2
• Each guess reduce the search interval by
half
11
Bisection Method – Example
667.38
f ( x) 
(1  e 0.146843x )  40
x
Find the root of f(x) = 0 with an
approximated error below
0.5%. (True root: α=14.7802)
12
Example (continue)
n
xl
0
12
1
12
2
xr
f(xr)
a 
f(xu)
xr
new
 xr
xr
old
new
f(xl)f(xu)
100%
εa
xu
f(xl)
16
6.067
14
16
6.067
1.569
-2.269
>0
14
15
16
1.569
-0.425
-2.269
<0
6.667%
3
14
14.5
15
1.569
0.552
-0.425
>0
3.448%
4
14.5
14.75
15
0.552
0.0590
-0.425
>0
1.695%
5
14.75
14.875
15
0.0590
-0.184
-0.425
<0
0.840%
6
14.75
14.8125 14.875
0.0590
-0.0629
-0.184
<0
0.422%
-2.269
14.7802  14.8125
t 
100%  0.219%
14.7802
13
Error Bounds
The true root, α, must lie between xl and xu.
xl
xr
xu
Let xr(n) denotes xr in the nth iteration
After the 1st iteration, the solution, xr(1), should be
within an accuracy of 1
xu(1)  xl(1)
2
xl(1)
xr(1)
xu(1)
14
Error Bounds
Suppose the root lies in the lower subinterval.
xl(2)
xr(2)
xu(2)
xu(1)
After the 2nd iteration, the solution, xr(2), should be
within an accuracy of
1 ( 2)
1 (1)
( 2)
xu  xl  2 xu  xl(1)
2
2
15
Error Bounds
In general, after the nth iteration, the solution, xr(n),
should be within an accuracy of
1 (n)
1 ( n 1)
1 (1)
(n)
( n 1)
(1)
xu  xl  2 xu  xl
 ...  n xu  xl
2
2
2
If we want to achieve an absolute error of no more
than Eα
1 (1)
(1)
x

x
 E
u
l
n
2
xu(1)  xl(1)
 n  log 2 (
)
E
16
Implementation Issues
• The condition f(xl)f(xr) = 0 (in step 3) is difficult to
achieve due to errors.
• We should repeat until xr is close enough to the
root, but we don't know what the root is!
• One possible solution is to estimate the error as
ea 
xr
new
 xr
xr
new
old
100%
and repeat until ea < es (acceptable error)
17
Bisection Method (as C function)
// xl, xu: Lower and upper bound of the interval
// es: Acceptable relative percentage error
// iter_max: Maximum # of iterations
double Bisect(double xl, double xu, double es,
int iter_max)
{
double xr;
// Est. root
double xr_old; // Est. root in the previous step
double ea;
// Est. error
int iter = 0; // Keep track of # of iterations
xr = xl;
// Initialize xr in order to
// calculating "ea". Can also be "xu".
do {
iter++;
xr_old = xr;
18
xr = (xl + xu) / 2;
// Estimate root
if (xr != 0)
ea = fabs((xr – xr_old) / xr) * 100;
test = f(xl) * f(xr);
if (test < 0)
xu = xr;
else
if (test > 0)
xl = xr;
else
ea = 0;
} while (ea > es && iter < iter_max);
return xr;
}
19
Additional Implementation Issues
• Function call is a relatively slow operation.
• In the previous example, function f() is called
twice in each iteration. Is it necessary?
– We only need to update one of the bounds (see step 3
in the algorithm for the bracketing method).
20
Revised Bisection Method (as C function)
double Bisect(double xl, double xu, double es,
int iter_max)
{
double xr;
// Est. Root
double xr_old; // Est. root in the previous step
double ea;
// Est. error
int iter = 0; // Keep track of # of iterations
double fl, fr; // Save values of f(xl) and f(xr)
xr = xl;
// Initialize xr in order to
// calculating "ea". Can also be "xu".
fl = f(xl);
do {
iter++;
xr_old = xr;
xr = (xl + xu) / 2;
fr = f(xr);
// Estimate root
21
if (xr != 0)
ea = fabs((xr – xr_old) / xr) * 100;
test = fl * fr;
if (test < 0)
xu = xr;
else
if (test > 0) {
xl = xr;
fl = fr;
}
else
ea = 0;
} while (ea > es && iter < iter_max);
return xr;
}
22
Additional Implementation Issues
• Testing if f(xl)f(xr) is positive or negative directly
could result in underflow or overflow.
• How can we address this problem?
– We can test if both the values have the same sign
23
Comments on Bisection Method
• The method is guaranteed to converge.
• However, the convergence is slow as we
gain only one binary digit in accuracy in
each iteration.
24
A.2. Regula Falsi Method
• Also known as the false-position method, or linear
interpolation method.
• Unlike the bisection method which divides the
search interval by half, regula falsi interpolates
f(xu) and f(xl) by a straight line and the intersection
of this line with the x-axis is used as the new
search position.
• The slope of the line connecting f(xu) and f(xl)
represents the "average slope" (i.e., the value of
f'(x)) of the points in [xl, xu ].
25
f ( xu )
f ( xl )
f ( xu )( xl  xu )

 xr  xu 
xu  xr xl  xr
f ( xl )  f ( x26u )
False-position vs Bisection
• False position in general performs better
than bisection method.
• Exceptional Cases:
– (Usually) When the deviation of f'(x) is high
and the end points of the interval are selected
poorly.
– For example,
f ( x)  x10  1
with xl  0, xu  1.3
27
Bisection Method (Converge quicker)
εa (%)
εt (%)
Iteration
xl
xu
xr
1
0
1.3
0.65
2
0.65
1.3
0.975
33.3
25
3
0.975
1.3
1.1375
14.3
13.8
4
0.975
1.1375
1.05625
7.7
5.6
5
0.975
1.05625
1.015625
4.0
1.6
εa (%)
εt (%)
35
False-position Method
Iteration
xl
xu
xr
1
0
1.3
0.09430
2
0.09430
1.3
0.18176
48.1
81.8
3
0.18176
1.3
0.26287
30.9
73.7
4
0.26287
1.3
0.33811
22.3
66.2
5
0.33811
1.3
0.40788
17.1
59.2
90.6
28
f ( x)  x  1
with xl  0, xu  1.3
10
29
Summary
• Bracketing Methods
– f(x) has the be continuous in the interval [xl, xu] and
f(xl)f(xu) < 0
– Always converge
– Usually slower than open methods
• Bisection Method
– Slow but guarantee the best worst-case convergent
rate.
• False-position method
– In general performs better than bisection method
(with some exceptions).
30