NEWTON's Method in Comparison with the Fixed Point Iteration
Univ.-Prof. Dr.-Ing. habil. Josef BETTEN
RWTH Aachen University
Mathematical Models in Materials Science and Continuum Mechanics
Augustinerbach 4-20
D-52056 A a c h e n , Germany
<betten@mmw.rwth-aachen.de>
Abstract
This worksheet is concerned with finding numerical solutions of non-linear equations
in a single unknown. Using MAPLE 12 NEWTON's method has been compared with
the fixed-point iteration. Some examples have been discussed in more detail.
Keywords: NEWTON's method; zero form and fixed point form; BANACH's fixed-point
theorem; convergence order
Convergence Order
A sequence with a high order of convergence converges more rapidly than a sequence with a lower
order. In this worksheet we will see that NEWTON's method is quadratically convergent, while
the fixed point iteration converges linearly to a fixed point. Some examples illustrade the
convergence of both iterations in the following. Before several examples are discussed in more
detail, let us list some definitions in the following.
A value x = p is called a fixed point for a given function g(x) if g(p) = p. In finding the
solution x = p for f(x) = 0 one can define functions g(x) with a fixed point at x = p in several
ways, for example, as g(x) = x - f(x) or as g(x) = x - h(x)*f(x) , where h(x) is a continuous
function not equal to zero within an interval [a, b] considered. The iteration process is expressed
by
> restart:
> x[n+1]:=g(x[n]);
#
n = 0,1,2,...
xn + 1 := g( xn )
with a selected starting value for n = 0 in the neighbourhood of the expected fixed point x = p.
An unique solution f(x) = 0 exists, if BANACH's fixed-point theorem is fulfilled:
Let g(x) be a continuous function in [a, b]. Assume, in addition, that g'(x) exists on (a, b)
and that a constant L = [0, 1) exists with
> restart:
1
> abs(diff(g(x),x))<=L;
d
g( x ) ≤ L
dx
for all x in [a,b]. Then, for any selected initial value in [a, b] the sequence defined by
> x[n+1]:=g(x[n]);
# n = 0,1,2,...
xn + 1 := g( xn )
converges to the unique fixed-point x = p in [a, b]. The constant L is known as LIPPSCHITZ
constant. Based upon the mean value theorem we arrive from the above assumption at
> abs(g(x)-g(xi))<=L*abs(x-xi);
g( x ) − g( ξ ) ≤ L x − ξ
for all x and xi in [a, b]. The BANACH fixed-point theorem is sometimes called the
contraction mapping principle.
A sequence converges to p of order alpha, if
> restart:
> Limit(abs(x[n+1]-p)/abs(x[n]-p)^alpha,n=infinity)=epsilon;
−xn + 1 + p
=ε
α
−xn + p
with an asymptotic error constant epsilon. Another definition of the convergence order
is given by:
> abs(x[n+1]-p)<=C*abs(x[n]-p)^alpha;
lim
n→∞
−xn + 1 + p ≤ C −xn + p
α
where C is a constant. The fixed-point iteration converges linearly (alpha = 1) with
a constant C = (0, 1). This can be shown, for example, as follows:
> g(x)=g(x[n])+(x-x[n])*Diff(g(x),x)[x=x[n]]+
(x-x[n])^2*Diff(g(x),x$2)[x=xi]/2;
# TAYLOR
⎛d
⎞
g( x ) = g( xn ) + ( x − xn ) ⎜⎜ g( x ) ⎟⎟
⎝ dx
⎠
x=x
n
2
⎞
1
2⎛ d
⎜
+ ( x − xn ) ⎜ 2 g( x ) ⎟⎟
2
⎝ dx
⎠
x=ξ
> g(x):=g(x[n])+(x-x[n])*`g'`(x[n])+(x-x[n])^2*`g''`(xi)/2;
1
2
( x − xn ) g''( ξ )
2
where xi in the remainder term lies between x and x[n]. For x = p we arrive at
> g(p):=g(x[n])+(p-x[n])*`g'`(x[n])+(p-x[n])^2*`g''`(xi)/2;
g( x ) := g( xn ) + ( x − xn ) g'( xn ) +
1
2
( −xn + p ) g''( ξ )
2
The 3rd term on the right hand side may be neglected, because x[n] is an approximation
near to the fixed-point, (p - x[n])^2 << (p - x[n]) , hence:
> g(p):=g(x[n])+(p-x[n])*`g'`(x[n]);
g( p ) := g( xn ) + ( −xn + p ) g'( xn ) +
g( p ) := g( xn ) + ( −xn + p ) g'( xn )
Corresponding with the fixed-point iteration g(p) = p and g(x[n]) = x[n+1] we arrive from
2
this equation at:
> abs(x[n+1]-p)=abs(`g'`(x[n]))*abs(x[n]-p);
−xn + 1 + p = g'( xn ) −xn + p
where
> abs(`g'`(x[n]))<=L;
g'( xn ) ≤ L
> abs(x[n+1]-p)<=L*abs(x[n]-p);
−x n + 1 + p ≤ L −xn + p
Thus, the fixed-point iteration converges linearly to the fixed-point p. In contrast, NEWTON's
method is quadratically convergent. This can be shown, for example, as follows.
> G(x)=G(p)+(x-p)*Diff(G(x),x)[x=p]+
(x-p)^2*Diff(G(x),x$2)[x=xi]/2;
⎛d
⎞
G( x ) = G( p ) + ( x − p ) ⎜⎜ G( x ) ⎟⎟
⎝ dx
⎠
x=p
⎛ 2
⎞
1
2⎜ d
+ ( x − p ) ⎜ 2 G( x ) ⎟⎟
2
⎝ dx
⎠
x=ξ
> G(x):=G(p)+(x-p)*`G'`(p)+(x-p)^2*`G''`(xi)/2;
G( x ) := G( p ) + ( x − p ) G'( p ) +
1
( x − p )2 G''( ξ )
2
where xi lies between x and p. For x = x[n] we have:
> G(x[n])=G(p)+(x[n]-p)*`G'`(p)+ (x[n]-p)^2*`G''`(zeta)/2;
1
2
( xn − p ) G''( ζ )
2
where zeta lies between x[n] and p. Because of G(x[n]) = x[n+1] and G(p) = p we get:
> x[n+1]-p=(x[n]-p)*`G'`(p)+(x[n]-p)^2*`G''`(zeta)/2;
G( xn ) = G( p ) + ( xn − p ) G'( p ) +
1
2
( xn − p ) G''( ζ )
2
The first term on the right hand side must be equal to zero, if the iteration x[n+1] = G(x[n])
should converge quadratically to the fixed-point p :
> `G'`(p):=0;
xn + 1 − p = ( xn − p ) G'( p ) +
G'( p ) := 0
> x[n+1]-p=`G''`(zeta)*(x[n]-p)^2;
2
xn + 1 − p = ( xn − p ) G''( ζ )
NEWTON's method has the convergence order alpha = 2 ---> G'(p) = 0. Hence:
> restart:
> G(x):=x-h(x)*f(x); # iteration function
G( x ) := x − h( x ) f( x )
> `G'`(x):=diff(G(x),x);
⎛d
⎞
⎛d
⎞
G'( x ) := 1 − ⎜⎜ h( x ) ⎟⎟ f( x ) − h( x ) ⎜⎜ f( x ) ⎟⎟
⎝ dx
⎠
⎝ dx
⎠
> `G'`(x):=1-`h'`(x)*f(x)-h(x)*`f '`(x);
G'( x ) := 1 − h'( x ) f( x ) − h( x ) f '( x )
3
> `G'`(p):=subs(x=p,%);
G'( p ) := 1 − h'( p ) f( p ) − h( p ) f '( p )
At the fixed-point p we have G'(p) = 0 and f(p) = 0. Hence:
> h(p):=1/`f '`(p);
h(x):=1/`f '`(x);
h( p ) :=
1
f '( p )
h( x ) :=
1
f '( x )
> G(x):=x-f(x)/`f '`(x);
f( x )
f '( x )
Because of x[n+1] = G(x[n] we find NEWTON's iteration method:
> x[n+1]:=x[n]-f(x[n])/`f '`(x[n]);
G( x ) := x −
xn + 1 := xn −
f( xn )
f '( xn )
>
NEWTON's iteration method has the disadvantage that it cannot be continued, if f '(x[n]) is
equal to zero for any step x[n]. However, the method is most effective, if f '(x[n]) is bounded
away from zero near the fixed-point p.
Note, in cases when there is a point of inflection or a horizontal tangent to the function f(x)
in the vicinity of the fixed-point, the sequence x[n+1] = G(x[n]) need not converge to the
fixed-point. Thus, before applying NEWTON 's method, one should investigate the behaviour
of the derivatives f '(x) and f ''(x) in the neighbourhood of the expected fixed-point.
Instead of the analytical derivation of NEWTON's method one can find the approximations
x[n] to the fixed-point p by using tangents to the graph of the given function f(x) with f(p) = 0.
Beginning with x[0] we obtain the first approximation x[1] as the x-intersept of the tangent line
to the graph of f(x) at (x[0], f(x[0])). The next approximation x[2] is the x-intercept of the
tangent line to the graph of f(x) at (x[1], f(x[1])) and so on. Following this procedure we arrive
at NEWTON's iteration characterized by the iteration function G(x) defined before. The derivative
of this function is given by:
> restart:
> Diff(G(x),x)=
simplify(1-((Diff(f(x),x))^2-f(x)*Diff(f(x),x$2))/
Diff(f(x),x)^2);
d
G( x ) =
dx
⎛ d2
⎞
f( x ) ⎜⎜ 2 f( x ) ⎟⎟
⎝ dx
⎠
⎞
⎛d
⎜⎜ f( x ) ⎟⎟
⎝ dx
⎠
> `G'`(x):=f(x)*`f ''`(x)/(`f '`(x))^2;
G'( x ) :=
2
f( x ) f ''( x )
f '( x )2
At the fixed-point the given function has a zero, f(p) = 0. Hence:
4
> `G'`(p):=Diff(G(x),x)[x=p]=0;
⎛d
⎞
G'( p ) := ⎜⎜ G( x ) ⎟⎟
⎝ dx
⎠
=0
x=p
>
Résumé: NEWTON's method converges optimal ( G'(p) = 0 ) to the fixed-point p unless
f '(x) = 0 for some x[n]. The derivative G'(p) = 0 implies quadratic convergence.
>
Examples
The first example is concerned with the root-finding problem f(x) = x - cos(x) = 0 by using
the iteration functions g(x) und G(x) characterized by linear and quadratic convergence,
respectively.
> restart:
> f(x):=x-cos(x);
> p:=fsolve(f(x)=0,x);
f( x ) := x − cos( x )
# MAPLE solution by the command "fsolve"
p := 0.7390851332
> `f '`(x):=diff(f(x),x);
f '( x ) := 1 + sin( x )
> `f ''`(x):=diff(f(x),x$2);
f ''( x ) := cos( x )
>
> alias(H=Heaviside,th=thickness,co=color):
> p[1]:=plot({f(x),1+sin(x),cos(x)},x=0..Pi/2,-1..2,
th=3,co=black):
> p[2]:=plot({2*H(x-1.571),-H(x-1.571)},x=1.57..1.572,co=black,
title="f(x), f'(x), f''(x),
Fixed Point p = 0.7391"):
> p[3]:=plot({2,-1},x=0..Pi/2,co=black):
> p[4]:=plot(1.674*H(x-0.74),x=0.739..0.741,
linestyle=4,co=black):
> p[5]:=plot([[0.74,1.674]],style=point,
symbol=circle,symbolsize=30,co=black):
> p[6]:=plots[textplot]({[1.15,1,`f(x)`],[0.2,1.4,`f'(x)`],
[0.2,0.8,`f''(x)`]},co=black):
> plots[display](seq(p[k],k=1..6));
5
>
In this Figure we see that the first derivative f '(x) is not equal to zero in the entire range
considered, which is an essential condition for the application of NEWTON's method.
The iteration functions are given by
> g(x):=x-f(x);
G(x):=x-f(x)/diff(f(x),x);
g( x ) := cos( x )
G( x ) := x −
x − cos( x )
1 + sin( x )
>
> alias(H=Heaviside,sc=scaling,th=thickness,co=color):
> p[1]:=plot({x,g(x),G(x)},x=0..1,0..1,
sc=constrained,th=3,co=black):
> p[2]:=plot(H(x-1),x=0.99..1.001,co=black):
> p[3]:=plot(1,x=0..1,co=black,
title="Iteration Functions g(x) and G(x)"):
> p[4]:=plot([[0.7391,0.7391]],style=point,
symbol=circle,symbolsize=30,co=black):
> p[5]:=plots[textplot]({[0.15,0.8,`G(x)`],
[0.6,0.92,`g(x)`]},co=black):
> p[6]:=plot(0.7391*H(x-0.7391),x=0.739..0.7392,
linestyle=4,co=black):
> plots[display](seq(p[k],k=1..6));
6
>
Both operators, G and g, mapp the interval x = [0, 1] to itself. The iteration function G(x) has
a horizontal tangent in x = p because of G'(p) = 0, id est: quadratic convergence.
Now, let's discuss the absolute derivatives of the iteration functions.
> abs(`g'`(x))=abs(diff(g(x),x));
g'( x ) = sin( x )
> abs(`G'`(x))=abs(diff(G(x),x));
G'( x ) =
>
>
>
>
>
>
>
( x − cos( x ) ) cos( x )
( 1 + sin( x ) )2
p[1]:=plot({rhs(%%),rhs(%)},x=0..1,0..1,
sc=constrained,th=3,co=black):
p[2]:=plot(0.67*H(x-0.74),x=0.735..0.745,linestyle=4,co=black,
title="Absolute Derivatives | G'(x)| and | g'(x) |"):
p[3]:=plot([[0.74,0.67]],style=point,
symbol=circle,symbolsize=30,co=black):
p[4]:=plot(H(x-1),x=0.99..1.001,co=black):
p[5]:=plot(1,x=0..1,co=black):
p[6]:=plots[textplot]({[0.16,0.9,`| G'(x) |`],
[0.85,0.9,`| g'(x) |`]},co=black):
plots[display](seq(p[k],k=1..6));
7
>
This Figure illustrades that both derivatives exist on (0, 1) with | g'(x) | < L and
| G'(x) | < K for all x = [0, 1], where K < 1 and L < 1. Considering the last two
Figures, we establish that both iteration functions are compatible with BANACH's
fixed-point theorem.
The iterations generated by g(x) and G(x) are given as follows:
> x[0]:=0.7; x[1]:=evalf(subs(x=0.7,g(x)));
x0 := 0.7
x1 := 0.7648421873
Fixed Point Iteration:
> for i from 2 to 25 do x[i]:=evalf(subs(x=%,g(x))) od;
x2 := 0.7214916396
x3 := 0.7508213288
x4 := 0.7311287726
x5 := 0.7444211836
x6 := 0.7354802004
x7 := 0.7415086517
x8 := 0.7374504531
x9 := 0.7401852854
x10 := 0.7383436103
x11 := 0.7395844287
x12 := 0.7387487097
x13 := 0.7393117103
x14 := 0.7389324892
x15 := 0.7391879474
x16 := 0.7390158724
x17 := 0.7391317864
8
x18 := 0.7390537063
x19 := 0.7391063024
x20 := 0.7390708732
x21 := 0.7390947389
x22 := 0.7390786627
x23 := 0.7390894918
x24 := 0.7390821972
x25 := 0.7390871109
>
The 25th iteration x[25] is nearly identical to the MAPLE solution p = 0.7390851332.
NEWTON's Method:
> X[0]:=0.7; X[1]:=evalf(subs(x=%,G(x)));
X0 := 0.7
X1 := 0.7394364979
> for i from 2 to 5 do X[i]:=evalf(subs(x=%,G(x))) od;
X2 := 0.7390851605
X3 := 0.7390851332
X4 := 0.7390851332
X5 := 0.7390851332
>
The 3rd iteration is already identical to the MAPLE solution. In contrast, the fixed-point
method needs about 25 iterations. The NEWTON method converges quadratically, while
the fixed point sequence is linear convergent.
>
Similar to the first example, the next one is concerned with solving the problem f(x) = 0,
where
> restart:
> f(x):=x-(sin(x)+cos(x))/2;
1
1
sin( x ) − cos( x )
2
2
# fixed point by MAPLE
f( x ) := x −
> p:=fsolve(f(x)=0,x);
> `f '`(x):=diff(f(x),x);
p := 0.7048120020
`f ''`(x):=diff(f(x),x$2);
1
1
cos( x ) + sin( x )
2
2
1
1
f ''( x ) := sin( x ) + cos( x )
2
2
f '( x ) := 1 −
>
> alias(H=Heaviside,th=thickness,co=color):
9
> p[1]:=plot({f(x),diff(f(x),x),diff(f(x),x$2)},
x=0..Pi/2,th=3,co=black,scaling=constrained):
> p[2]:=plot({1.571*H(x-1.571),-0.5*H(x-1.571)},
x=1.57..1.572,co=black):
> p[3]:=plot(0.943*H(x-0.705),x=0.704..0.706,
linestyle=4,co=black):
> p[4]:=plot({-0.5,Pi/2},x=0..Pi/2,co=black,
title="f(x), f'(x), f''(x), Fixed Point p = 0.7048"):
> p[5]:=plot([[0.705,0.943]],style=point,
symbol=circle,symbolsize=30,co=black):
> p[6]:=plots[textplot]({[0.85,0.3,`f(x)`],[0.85,1.25,`f'(x)`],
[0.85,0.6,`f''(x)`]},co=black):
> plots[display](seq(p[k],k=1..6));
>
In this Figure we see that the first derivative f '(x) is not equal to zero in the entire range
considered, which is an essential condition for the application of NEWTON 's method.
The iteration functions are given by
> g(x):=x-f(x);
G(x):=x-f(x)/diff(f(x),x);
g( x ) :=
1
1
sin( x ) + cos( x )
2
2
x−
1
1
sin( x ) − cos( x )
2
2
1−
1
1
cos( x ) + sin( x )
2
2
G( x ) := x −
>
> alias(H=Heaviside,sc=scaling,th=thickness,co=color):
> p[1]:=plot({x,g(x),G(x)},x=0..1,0..1,th=3,
sc=constrained,co=black):
> p[2]:=plot({1,H(x-1)},x=0..1.001,co=black,
title="Iteration Functions g(x) and G(x)"):
> p[3]:=plot(0.7048*H(x-0.7048),x=0.7047..0.7049,
10
linestyle=4,co=black):
> p[4]:=plot([[0.7048,0.7048]],style=point,
symbol=circle,symbolsize=30,co=black):
> p[5]:=plots[textplot]({[0.15,0.52,`g(x)`],
[0.15,0.8,`G(x)`]},co=black):
> plots[display](seq(p[k],k=1..5));
>
Both operators, g and G , mapp the interval x = [0, 1] to itself. The iteration function G(x)
has a horizontal tangent in the fixed-point p = 0.7048120020 because of G'(p) = 0, id est:
quadratic convergence. In contrast, the iteration function g(x) has a horizontal tangent in
x = Pi/4 = 0.785398163, id est: in the neighbourhood of the fixed-point.
Now let's discuss the absolute derivatives of the iteration functions.
> abs(`g'`(x))=abs(diff(g(x),x));
1
1
cos( x ) − sin( x )
2
2
> abs(`G'`(x))=abs(diff(G(x),x));
g'( x ) =
G'( x ) =
⎛
1
1
⎞ ⎛1
1
⎞
⎜⎜ x − sin( x ) − cos( x ) ⎟⎟ ⎜⎜ sin( x ) + cos( x ) ⎟⎟
⎝
2
2
⎠ ⎝2
2
⎠
⎛
1
1
⎞
⎜⎜ 1 − cos( x ) + sin( x ) ⎟⎟
⎝
2
2
⎠
2
>
> p[1]:=plot({abs(diff(g(x),x)),abs(diff(G(x),x))},x=0..1,0..1,
scaling=constrained,th=3,co=black):
> p[2]:=plot({1,H(x-1)},x=0..1.001,co=black,
title="Absolute Derivatives | g'(x) | and | G'(x) |"):
> p[3]:=plots[textplot]({[0.2,0.3,`| g'(x) |`],
[0.2,0.9,`| G'(x) |`]},co=black):
> plots[display](seq(p[k],k=1..3));
11
>
This Figure illustrades that both derivatives exist on (0, 1) with | g'(x) | < L and
| G'(x) | < K for all x = [0, 1], where K < 1 and L < 1. Considering the last two
Figures, we establish that both iteration functions are compatible with BANACH 's
fixed-point theorem.
The iterations generated by g(x) and G(x) are given as follows:
> x[0]:=0.5; x[1]:=evalf(subs(x=0.5,g(x)));
x0 := 0.5
x1 := 0.6785040503
Fixed Point Iteration:
> for i from 2 to 10 do x[i]:=evalf(subs(x=%,g(x))) od;
x2 := 0.7030708012
x3 := 0.7047118221
x4 := 0.7048062961
x5 := 0.7048116773
x6 := 0.7048119834
x7 := 0.7048120009
x8 := 0.7048120019
x9 := 0.7048120020
x10 := 0.7048120020
>
The 9th iteration x[9] is identical to the MAPLE solution p = 0.7048120020 based
upon the command fsolve.
NEWTON 's Method:
> X[0]:=0.5;
X[1]:=evalf(subs(x=0.5,G(x)));
X0 := 0.5
X1 := 0.7228733439
> for i from 2 to 6 do X[i]:=evalf(subs(x=%,G(x))) od;
12
X2 := 0.7049323822
X3 := 0.7048120074
X4 := 0.7048120021
X5 := 0.7048120020
X6 := 0.7048120020
>
The 5th iteration X[5] is already identical to the MAPLE solution. In contrast, the fixed-point
method needs 9 iterations.
>
The next example is concerned with the zero form f(x) = x - exp(x^2 -2) = 0.
> restart:
> f(x):=x-exp(x^2-2);
2
(x − 2)
> p:=fsolve(f(x)=0,x);
f( x ) := x − e
# fixed-point by MAPLE
p := 0.1379348256
> `f '`(x):=diff(f(x),x);
f '( x ) := 1 − 2 x e
> `f ''`(x):=diff(f(x),x$2);
2
(x − 2)
>
>
>
>
>
>
>
>
2
(x − 2)
2
(x − 2)
f ''( x ) := −2 e
− 4 x2 e
alias(H=Heaviside,sc=scaling,th=thickness,co=color):
p[1]:=plot({f(x),diff(f(x),x),diff(f(x),x$2)},
x=0..0.5,-1..1,th=3,co=black):
p[2]:=plot({H(x-0.5),-H(x-0.5)},x=0.499..0.501,co=black):
p[3]:=plot(0.96*H(x-0.14),x=0.139..0.141,linestyle=4,co=black):
p[4]:=plot({-1,1},x=0..0.5,co=black,
title="f(x) ,
f'(x) ,
f''(x)"):
p[5]:=plot([[0.14,0.96]],style=point,symbol=circle,
symbolsize=30,ytickmarks=4,co=black):
p[6]:=plots[textplot]({[0.3,0.3,`f(x)`],[0.3,0.8,`f'(x)`],
[0.3,-0.5,`f''(x)`]},co=black):
plots[display](seq(p[k],k=1..6));
13
>
In this Figure we see that the first derivative f'(x) is not equal to zero in the entire range
considered, which is a necessary condition for convergence of the NEWTON method.
The iteration functions are given by
> g(x):=x-f(x);
G(x):=x-f(x)/diff(f(x),x);
g( x ) := e
G( x ) := x −
2
(x − 2)
x−e
2
(x − 2)
1−2xe
2
(x − 2)
>
> p[1]:=plot({x,g(x),G(x)},x=0..0.5,
sc=constrained,th=3,co=black):
> p[2]:=plot({0.5,0.5*H(x-0.5)},x=0..0.5001,co=black,
title="Iteration Functions g(x) and G(x)"):
> p[3]:=plot(0.14*H(x-0.14),x=0.139..0.141,
linestyle=4,co=black):
> p[4]:=plot([[0.14,0.14]],style=point,symbol=circle,
symbolsize=30,co=black):
> p[5]:=plots[textplot]({[0.3,0.18,`g(x)`],
[0.3,0.11,`G(x)`]},co=black):
> plots[display](seq(p[k],k=1..5));
14
>
Both operators, g and G , mapp the interval x = [0, 0.5] to itself. The iteration function G(x) has
a horizontal tangent in the fixed-point p = 0.1379348256 because of G'(p) = 0, id est quadratic
convergence. In contrast, the iteration function g(x) has a horizontal tangent in x = 0.
Now let's discuss the absolute derivatives of the iteration functions.
> abs(`g'`(x))=abs(diff(g(x),x));
2
( −2 + ℜ( x ) )
g'( x ) = 2 e
> abs(`G'`(x))=abs(diff(G(x),x));
G'( x ) =
(x − e
2
(x − 2)
) ( −2 e
2
(x − 2)
(1 − 2 x e
x
− 4 x2 e
2
(x − 2)
2
(x − 2)
)
2
)
>
> p[1]:=plot({abs(diff(g(x),x)),abs(diff(G(x),x))},
x=0..0.5,th=3,co=black,
title="Absolute Derivatives | g'(x) | and
G'(x) |"):
> p[2]:=plot({0.25,0.25*H(x-0.5)},x=0..0.5001,co=black):
> p[3]:=plots[textplot]({[0.25,0.1,`| g'(x) |`],
[0.33,0.05,`| G'(x) |`]},co=black):
> plots[display](seq(p[k],k=1..3));
15
>
This Figure illustrades that both derivatives exist on (0, 0.5) with | g'(x) | < L and
| G'(x) | < K for all x = [0, 0.5], where K < 1 and L < 1. Considering the last two
Figures, we find that both iteration functions are compatible with BANACH's
fixed-point theorm.
The iterations generated by g(x) and G(x) are listed in the following:
> x[0]:=0.1;
x[1]:=evalf(subs(x=0.1,g(x)));
x0 := 0.1
x1 := 0.1366954254
Fixed Point Iteration:
> for i from 2 to 8 do x[i]:=evalf(subs(x=%,g(x))) od;
x2 := 0.1378878837
x3 := 0.1379330396
x4 := 0.1379347575
x5 := 0.1379348229
x6 := 0.1379348254
x7 := 0.1379348256
x8 := 0.1379348256
>
The 7th iteration x[7] is identical to the MAPLE solution p = 0.1379348256 based
upon the command fsolve.
NEWTON's Method:
> X[0]:=0.1;
X[1]:=evalf(subs(x=0.1,G(x)));
X0 := 0.1
X1 := 0.1377268428
> for i from 2 to 5 do X[i]:=evalf(subs(x=%,G(x))) od;
X2 := 0.1379348191
X3 := 0.1379348255
16
X4 := 0.1379348256
X5 := 0.1379348256
>
The 4th iteration X[4] is already identical to the MAPLE solution. In contrast, the fixed-point
method needs 7 iterations.
Another example is concerned with the root-finding problem f(x) = 0, where
> restart:
> f(x):=1+cosh(x)*cos(x);
> p:=fsolve(f(x)=0,x);
f( x ) := 1 + cosh( x ) cos( x )
# fixed-point by MAPLE
p := 1.875104069
> `f '`(x):=diff(f(x),x);
f '( x ) := sinh( x ) cos( x ) − cosh( x ) sin( x )
> `f ''`(x):=diff(f(x),x$2);
>
>
>
>
>
>
>
f ''( x ) := −2 sinh( x ) sin( x )
alias(H=Heaviside,sc=scaling,th=thickness,co=color):
p[1]:=plot({f(x),diff(f(x),x),diff(f(x),x$2)},
x=1.5..2,-7..1.5,th=3,co=black):
p[2]:=plot({-7,-7*H(x-2),1.5,1.5*H(x-2)},x=1.5..2.001,co=black,
title="f(x) , f'(x) , f''(x) , Fixed-Point p =
1.875104069"):
p[3]:=plot(-4.17*H(x-1.88),x=1.87..1.89,linestyle=4,co=black):
p[4]:=plot([[1.88,-4.17]],style=point,symbol=circle,
symbolsize=30,co=black):
p[5]:=plots[textplot]({[2.03,-0.57,`f(x)`],[2.03,-5,`f'(x)`],
[2.03,-6.6,`f''(x)`]},co=black):
plots[display](seq(p[k],k=1..5));
>
In this Figure we see that the first derivative f '(x) is not equal to zero in the vicinity of the
fixed-point, which is a necessary condition for the application of NEWTON 's method. Its
iteration function is given by
> G(xi):=xi-f(xi)/diff(f(xi),xi); G(x):=x-f(x)/diff(f(x),x);
17
G( ξ ) := ξ −
G( x ) := x −
f( ξ )
d
f( ξ )
dξ
1 + cosh( x ) cos( x )
sinh( x ) cos( x ) − cosh( x ) sin( x )
> x[n+1]:=G(x[n]);
> x[0]:=2;
xn + 1 := G( xn )
x[1]:=evalf(subs(x=2,G(x)));
x0 := 2
x1 := 1.885274675
> for i from 2 to 5 do x[i]:=evalf(subs(x=%,G(x))) od;
x2 := 1.875179254
x3 := 1.875104073
x4 := 1.875104069
x5 := 1.875104069
>
The 4th iteration x[4], beginning with a starting point x[0] = 2, is already identical to the
MAPLE
solution. Selecting the starting point x[0] = 1.2, then the 6th iteration
x[6] is identical to the fixed
point. However, the starting point x[0] = 1 does not lead to convergence.
Improving the convergence or obtaining convergence, necessary in cases of small derivatives
f '(x) << 1, one can extend the classical NEWTON method in the following way:
> restart:
> X[n+1]:=G(X[n]); G(X):=X-lambda*h(X)*f(X);
Xn + 1 := G( Xn )
G( X ) := X − λ h( X ) f( X )
> `G'(X)`:=diff(G(X),X);
⎛ d
⎞
⎛ d
⎞
G'(X) := 1 − λ ⎜⎜ h( X ) ⎟⎟ f( X ) − λ h( X ) ⎜⎜ f( X ) ⎟⎟
⎝ dX
⎠
⎝ dX
⎠
> lambda[LAGRANGE]:=solve(diff(G(X),X)=0,lambda);
λLAGRANGE :=
1
G( X ) := X −
h( X ) f( X )
⎛ d
⎞
⎛ d
⎞
⎜⎜ h( X ) ⎟⎟ f( X ) + h( X ) ⎜⎜ f( X ) ⎟⎟
⎝ dX
⎠
⎝ dX
⎠
> G(X):=subs(lambda=%,G(X));
⎛ d
⎞
⎛ d
⎞
⎜⎜ h( X ) ⎟⎟ f( X ) + h( X ) ⎜⎜ f( X ) ⎟⎟
⎝ dX
⎠
⎝ dX
⎠
>
Assuming h(X) = -exp(-X), we arrive at
> h(x):=-exp(-x);
h( x ) := −e
( −x )
18
> G(x):=subs({X=x,h(X)=h(x)},G(X));
e
G( x ) := x +
( −x )
f( x )
⎛d
⎞
( −x ) ⎞
( −x ) ⎛ d
⎜⎜ ( −e ) ⎟⎟ f( x ) − e
⎜⎜ f( x ) ⎟⎟
⎝ dx
⎠
⎝ dx
⎠
> G(xi):=xi-f(xi)/(`f '`(xi)-f(xi));
G( ξ ) := ξ −
f( ξ )
f '( ξ ) − f( ξ )
> f(x):=1+cosh(x)*cos(x);
f( x ) := 1 + cosh( x ) cos( x )
> G(x):=x-f(x)/(diff(f(x),x)-f(x));
1 + cosh( x ) cos( x )
sinh( x ) cos( x ) − cosh( x ) sin( x ) − 1 − cosh( x ) cos( x )
x[1]:=evalf(subs(x=2,G(x)));
G( x ) := x −
> x[0]:=2;
x0 := 2
x1 := 1.870407086
> for i from 2 to 5 do x[i]:=evalf(subs(x=%,G(x))) od;
x2 := 1.875098228
x3 := 1.875104069
x4 := 1.875104069
x5 := 1.875104069
>
We see, the iteration has been improved from 4 to 3 iterations. With a starting point x[0] = 1,
the 4th iteration leads to the fixed-point instead of divergence by using the classical NEWTON
method.
The fixed-point iteration
> x[n+1]:=g(x[n])=x[n]-h(x[n])*f(x[n]);
xn + 1 := g( xn ) = xn − h( xn ) f( xn )
does not fulfill BANACH 's theorem for h(x) = 1. A compatible function is given by the
function h(x) = -exp(-x) introduced before. Thus, we arrive at the following iteration function:
> g(x):=x+exp(-x)*f(x);
g( x ) := x + e
>
> x[0]:=2;
( −x )
( 1 + cosh( x ) cos( x ) )
x[1]:=evalf(subs(x=%,g(x)));
x0 := 2
x1 := 1.923450867
> for i from 2 to 22 do x[i]:=evalf(subs(x=%,g(x))) od;
x2 := 1.893171371
x3 := 1.881762275
x4 := 1.877544885
19
x5 := 1.875997102
x6 := 1.875430574
x7 := 1.875223412
x8 := 1.875147687
x9 := 1.875120010
x10 := 1.875109895
x11 := 1.875106198
x12 := 1.875104847
x13 := 1.875104353
x14 := 1.875104173
x15 := 1.875104107
x16 := 1.875104083
x17 := 1.875104074
x18 := 1.875104071
x19 := 1.875104070
x20 := 1.875104069
x21 := 1.875104069
x22 := 1.875104069
>
The 20th iteration x[20] leads to the fixed-point. In contrast to only 4 or 3 iterations based upon
NEWTON 's classical or extended method, respectively.
The following two Figures should illustrade that both iteration functions, g(x) and G(x) , are
compatible with BANACH 's fixed-point theorem.
>
> alias(H=Heaviside,sc=scaling,th=thickness,co=color):
> p[1]:=plot({x,g(x),G(x)},x=1.5..2,1.5..2,
sc=constrained,th=3,co=black):
> p[2]:=plot(2*H(x-2),x=1.99..2.001,co=black):
> p[3]:=plot(2,x=1.5..2,co=black,
title="G(x) in comparison with g(x)"):
> p[4]:=plot([[1.8751,1.8751]],style=point,
symbol=circle,symbolsize=30,co=black):
> p[5]:=plots[textplot]({[1.57,1.9,`G(x)`],
[1.57,1.74,`g(x)`]},co=black):
> p[6]:=plot(1.8751*H(x-1.8751),x=1.875..1.8752,
linestyle=4,co=black):
> plots[display](seq(p[k],k=1..6));
20
>
Both operators, G and g, mapp the interval x = [1.5, 2] to itself. The function G(x) has
a horizontal tangent in the fixed-point p = 1.875104069 within the interval considered.
This means quadratic convergence of the extended NEWTON method.
Corresponding to BANACH 's theorem the absolute derivatives | g'(x) | and | G'(x) |
should be less than one as shown in the next Figure.
> abs(`g'`(x))=abs(diff(g(x),x));
( −x )
g'( x ) = −1 + e
( 1 + cosh( x ) cos( x ) ) − e
> abs(`G'`(x))=abs(diff(G(x),x));
G'( x ) = 1 −
+
( −x )
( sinh( x ) cos( x ) − cosh( x ) sin( x ) )
sinh( x ) cos( x ) − cosh( x ) sin( x )
sinh( x ) cos( x ) − cosh( x ) sin( x ) − 1 − cosh( x ) cos( x )
( 1 + cosh( x ) cos( x ) ) ( −2 sinh( x ) sin( x ) − sinh( x ) cos( x ) + cosh( x ) sin( x ) )
( sinh( x ) cos( x ) − cosh( x ) sin( x ) − 1 − cosh( x ) cos( x ) )2
>
> p[1]:=plot({abs(diff(g(x),x)),abs(diff(G(x),x))},
x=1.5..2,0..0.5,th=3,co=black):
> p[2]:=plot(0.5*H(x-2),x=1.99..2.001,co=black):
> p[3]:=plot(0.5,x=1.5..2,co=black,
title="Absolute Derivatives | g'(x) | and | G'(x) |"):
> p[4]:=plot(0.3655*H(x-1.8751),x=1.875..1.8752,
linestyle=4,co=black):
> p[5]:=plot([[1.8751,0.3655]],style=point,symbol=circle,
symbolsize=30,co=black):
> p[6]:=plots[textplot]({[1.6,0.32,`| g'(x) |`],
[1.6,0.15,`| G'(x) |`]},co=black):
> plots[display](seq(p[k],k=1..6));
21
>
The last two Figures illustrade that both iterations, extended NEWTON and fixed-point, are
compatible with BANACH 's theorem. Both operators, g and G, mapp the interval x = [1.5, 2]
to itself. In addition, both derivatives exist on (1.5, 2) with | g'(x) | < L and | G'(x) | < K for
all x = [1.5, 2] , where K < L < 1. The number L is the LIPPSCHITZ constant.
NEWTON 's method converges quadratically because of | G'(p) | = 0.
>
Another example illustrades as before that the extended NEWTON method is most effective
in cases when the first derivative f '(x[n]) is equal to zero or very small for any step x[n] if
the classical NEWTON method does not work.
> restart:
> f(x):=x-2*sin(x);
f( x ) := x − 2 sin( x )
> p:=fsolve(f(x)=0,x,1..2);
# fixed-point immediately found by MAPLE command "fsolve"
p := 1.895494267
> `f '`(x):=diff(f(x),x);
f '( x ) := 1 − 2 cos( x )
> `f '`(P):=evalf(subs(x=p,%));
f '( P ) := 1.638045048
> `f ''`(x):=diff(f(x),x$2);
f ''( x ) := 2 sin( x )
> `f ''`(P):=evalf(subs(x=p,%));
f ''( P ) := 1.895494267
> alias(H=Heaviside,th=thickness,sc=scaling,co=color):
> p[1]:=plot({f(x),diff(f(x),x),diff(f(x),x$2)},
x=0..Pi,-1..Pi,sc=constrained,th=3,co=black):
> p[2]:=plot({-1,Pi,Pi*H(x-Pi),-H(x-Pi)},
x=0..1.001*Pi,co=black,
title="f(x), f'(x), f''(x), Fixed-Point p"):
> p[3]:=plot(1.638*H(x-1.8955),x=1.8954..1.8956,
linestyle=4,co=black):
> p[4]:=plot([[1.8955,1.638]],style=point,
symbol=circle,symbolsize=30,co=black):
22
> p[5]:=plots[textplot]({[2.8,1.5,`f(x)`],
[2.0,2.5,`f'(x)`],[0.5,1.5,`f''(x)`]},co=black):
> plots[display](seq(p[k],k=1..5));
>
In the vicinity of the fixed-point the first derivative f '(x) is not very small so that the classical
NEWTON method can work, if the starting-point x[0] is close enough to the expected
fixed-point.
However, in order to test the extended NEWTON formular, the starting-point should be selected,
for instance, at x = 1 close to the zero of f '(x):
> X[ZERO]:=fsolve(diff(f(x)=0,x));
XZERO := 1.047197551
>
Classical NEWTON Method
> G(xi):=xi-f(xi)/`f '`(xi);
G( ξ ) := ξ −
f( ξ )
f '( ξ )
> G(x):=x-f(x)/diff(f(x),x);
x − 2 sin( x )
1 − 2 cos( x )
> x[0]:=1; x[1]:=evalf(subs(x=1,G(x))); # starting-point
G( x ) := x −
x0 := 1
x1 := -7.472740617
> for i from 2 to 7 do x[i]:=evalf(subs(x=%,G(x))) od;
x2 := 14.47852462
x3 := 6.935146381
x4 := 16.63630229
23
x5 := 8.340204744
x6 := 4.943086934
x7 := -7.753209046
>
In the vicinity of the selected starting-point x[0] = 1 the first derivative f '(x) is very small.
Thus, the classical NEWTON method does not converge. With the same starting-point we will
obtain convergence by applying the extended NEWTON formular:
> restart:
> f(x):=x-2*sin(x);
f( x ) := x − 2 sin( x )
> p:=fsolve(f(x)=0,x,1..2);
p := 1.895494267
> G(xi):=xi-f(xi)/(`f '`(xi)-f(xi));
f( ξ )
f '( ξ ) − f( ξ )
> G(x):=x-f(x)/(diff(f(x),x)-f(x));
G( ξ ) := ξ −
x − 2 sin( x )
1 − 2 cos( x ) − x + 2 sin( x )
x[1]:=evalf(subs(x=1,G(x))); # starting-point
G( x ) := x −
> x[0]:=1;
x0 := 1
x1 := 2.133819712
> for i from 2 to 7 do x[i]:=evalf(subs(x=%,G(x))) od;
x2 := 1.861487604
x3 := 1.895031787
x4 := 1.895494177
x5 := 1.895494267
x6 := 1.895494267
x7 := 1.895494267
>
We see, the 5th iteration x[5] leads already to convergence although the first
derivative f '(x) is very small in the neighbourhood of the selected starting-point.
The extended NEWTON method is most effective in cases of small derivatives f '(x).
This worksheet is concerned with finding numerical solutions of non-linear equations
in a single unknown. A generalization to systems of non-linear equations has been
discussed in more detail, for instance, by BETTEN , J. in: Finite Elemente für Ingenieure 2,
zweite Auflage, 2004, Springer-Verlag, Berlin / Heidelberg / New York.
>
24
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )