0% found this document useful (0 votes)
100 views19 pages

Nonlinear Equations: + 3x (X) 0 Sin (X) 4 + Sin (2x) + 6x + 9 0

The document discusses various numerical methods for solving nonlinear equations, including: - Bisection method - Newton's method - Secant method - Fixed point and functional iteration - Error analysis and methods for accelerating convergence like Aitken's Δ2 method - Müller's method, which uses a quadratic polynomial through three points to overcome issues with Newton's method. MATLAB code examples are provided for some of the methods.

Uploaded by

fahadkhanffc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
100 views19 pages

Nonlinear Equations: + 3x (X) 0 Sin (X) 4 + Sin (2x) + 6x + 9 0

The document discusses various numerical methods for solving nonlinear equations, including: - Bisection method - Newton's method - Secant method - Fixed point and functional iteration - Error analysis and methods for accelerating convergence like Aitken's Δ2 method - Müller's method, which uses a quadratic polynomial through three points to overcome issues with Newton's method. MATLAB code examples are provided for some of the methods.

Uploaded by

fahadkhanffc
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Nonlinear Equations

Bisection Method
Newton Method
Secant Method
Fixed Point and Functional Iteration
A System of Nonlinear Equations
Other Topics with Applications
1. x3 + 3x 1 = 0
2. ex sin(x) = 0,

ex 1.5 tan1 (x) = 0

3. 3 + 12 sin(x) x = 0,

4 + 13 sin(2x) x = 0

4. x3 sinh(x) + 4x2 + 6x + 9 = 0

MATLAB Codes for Plot Nonlinear Functions


%
% Plot of four nonlinear funciotns
% Function funcA
subplot(2,2,1)
X=-2:0.2:2;
Y=X.^3+3*X-1;
V=[-2 2,-12 12];
plot(X,Y,b-,[0.3222],[0],ro); axis(V); grid
% set(gca,Xtick,[]), set(gca,YTick,[0]); grid on
legend(y=x^3+3x-1,x=0.3222,0);
title(y=x^3+3x-1)
% Function funcB
subplot(2,2,2)
X=-4:0.2:-2;
Y=exp(X)-sin(X);
V=[-4 -2, -1 1];
plot(X,Y,b-,[-3.1831],[0],ro); axis(V); grid
% set(gca,Xtick,[]), set(gca,YTick,[0]); grid on
legend(y=e^x-sin(x),x=-3.1831,0);
title(y=e^x-sin(x))
% Function funcC
subplot(2,2,3)
X=-2:0.2:2;
Y=exp(X)-1.5-atan(X);
V=[-2 2,-4 4];
plot(X,Y,b-,[0.7677],[0],ro); axis(V); grid
% set(gca,Xtick,[]), set(gca,YTick,[0]); grid on
legend(y=e^x-1.5-tan^{-1}x,x=0.7677,0);
title(y=e^x-1.5-tan^{-1}x)
% Function funcD
subplot(2,2,4)
X=1:0.2:4;
Y=3+0.5*sin(X)-X;
V=[1 4,-2 2];
plot(X,Y,b-,[3.0472],[0],ro); axis(V); grid
% set(gca,Xtick,[]), set(gca,YTick,[0]); grid on
legend(y=3+0.5sin(x)-x,x=3.0472,0);
title(y=3+0.5*sin(x)-x)
2

y=x3+3x1

y=exsin(x)
1

10
0.5

5
0

0
x

y=e sin(x)
x=3.1831

0.5
3

y=x +3x1
x=0.3222

10
2

1
4

y=ex1.5tan1x

3.5

y=3+0.5*sin(x)x

1
x

y=e 1.5tan x
x=0.7677
4
2

2.5

y=3+0.5sin(x)x
x=3.0472
2

Bisection Algorithm
Let f be a continuous function on [a, b] and f (a)f (b) < 0. This algorithm is to nd a
c [r, s] [a, b] such that|f (c)| < and |s r| < , where are user-specied small
numbers.

input a, b, M, ,
u f (a)
v f (b)
e ba
k0
print k, a, b, u , v
if sgn(u )=sgn(v) return
for k=1, 2 . . .,M
e e/2
e a+e
w f (c)
print k, a, b, c, f (c)
if |e| < or |w| < return
if sgn(w )=sgn(u) then
bc
vw
else
ac
uw
endif
endfor

y=e sin(x)
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
y=exsin(x)
x=3.1831

0.8
1
4

3.5

2.5

Figure 1: The function of ex sin(x)

/* Brute-force method for finding Zero of f(x) */


#include
#include
main()
{
int i,
double

<stdio.h>
<math.h>

max_num=51;
x, y,dx=0.02;

x=-4.0; y=exp(x)-sin(x);
for(i=0; i<max_num; i++)
{
printf("%11.6f, %11.6f ",x,y);
x+=dx; y=exp(x)-sin(x);
}
}

Newtons Method
0 = f (x + h) = f (x) + hf  (x) + O(h2)
xn+1 = xn

f (xn )
for n 0
f  (xn )

Algorithm
input x, M
k0
y f (x)
print k, x, y
for k =1, 2,. . .,M
x x

y
f  (x)

y f (x)
print k, x, y
endfor

Example
f (x) = ex 1.5 tan1 x = f  (x) = ex
0
1

-7.0000000, -0.070189
-10.677096, -0.022567

-13.279167, -0.004366

-14.053656, -0.000239

-14.101110, -0.000001

-14.101270, -0.000000

-14.101270, -0.000000

1
1 + x2

/* Newtons method for finding the zero of f(x)=exp(x)-1.5-atan(x) */


#include <stdio.h>
#include <sys/time.h>
#include <math.h>
main( )
{
int k, max_num=10;
double x, y, z;
x=-7.0; y=exp(x)-1.5-atan(x);
for(k=0; k<max_num; k++)
{
printf("t%2d %11.6f %11.6f\n,k,x,y);
z=exp(x)-1.0/(1.0+x*x);
x-=(y/z);
y=exp(x)-1.5-atan(x);
}
}

Secant Method
f  (x) = lim

h0

f (x + h) f (x)
h

xn+1

xn xn1
= xn f (xn )
f (xn ) f (xn1 )

Algorithm
input x, y, M,
k0
zx f (x)
zy f (y)
print k, x, zx
for k=1, 2 . . .,M
print k, y, zy,
ty-zy*(y-x) / (zy-zx)
xy
zx zy
yt
zy f (y)
endfor

f or n 1

Example

f (x) = x3 sinh(x) + 4x2 + 6x + 9

where
sinh(x) =

ex ex
2

7.000000, 41.683877

8.000000, -665.478826

7.058945, 20.798251

7.087465, 10.037673

7.114068, -0.401497

7.113045, 0.007307

7.113063, -0.000005

7.113063, 0.000000

7.113063, -0.000000

/* Secant method for finding the zero of */


/* f(x)=x sup 3 -sinh(x)+ 4x sup 2 + 6x + 9 */
#include <stdio.h>
#include <sys/time.h>
#include <math.h>
main()
{
int k, max_num=10;
/*double t, x, y, zx, zy */
float t, x, y , zx, zy;
x=7.0; y=8.0;
zx=x*x*x-0.5*(exp(x)-exp(-x))+4.0*x*x+6.0*x+9.0;
zy=y*y*y-0.5*(exp(y)-exp(-y))+4.0*y*y+6.0*y+9.0;
printf("\t %2d %11.6f, %11.6f\n",k,x,zx);
for (k=1; k<max_num; k++)
{
printf("\t %2d %11.6f, %11.6f\n",k,y,zy);
t=y-zy*(y-x)/(zy-zx);
x=y;
zx=zy;
y=t;
zy=y*y*y-0.5*(exp(y)-exp(-y))+4.0*y*y+6.0*y+9.0;
}
}

10

Fixed Point and Functional Iteration


xn+1 = F (xn ) = xn

f (xn )
f  (xn )

F (x) = x

n0

(Newton)

f (x)
f  (x)

Definition: A mapping F : X Y is said to be contractive if a number < 1 such


that
|F (x) F (y)| < |x y| x, y X
Theorem:Let F be a contractive mapping of a compact set S of Rn into S. Then F has
a unique xed point. Moreover, this xed point is the limit of every sequence obatined
from xn+1 = F (xn ) with any starting point x0 S.
Hint of Proof
show every sequence in the contractive mapping theorem satises Cauchy criterion for
convergence . For any > 0, an N such that if n m N, we have
||xn xm || ||xn xn1 || + ||xn1 xn2 || + . . . + ||xm+1 xm ||

n1 ||x1 x0 || + n2 ||x1 x0 || + . . . + m ||x1 x0 ||

N
||x1 x0 ||

1
Example 1. F (x) = 3 + 12 sinx
Example 2. F (x) = 4 + 13 sin(2x)

11

Error Analysis and Accelerating Convergence


A sequence {pn } of approximations to a number p converges
linearly if |pn+1 p| M|pn p| f or large n and 0 < M < 1
quadratically if |pn+1 p| M|pn p|2 f or large n and 0 < M < 1
Aitken s 2 method and Convergence
If {pn }
0 is a sequence that converges linearly to p and (pn+1 p)(pn p) > 0, dene
qn = pn

(pn+1 pn )2
(pn )2
or qn = pn
,
pn+2 2pn+1 + pn
2 pn

then limitn pqnnp


= 0 that is, {qn }
0 converges to p more rapidly.
p
Example 1. {pn = cos(1/n)}
n=1 .

n
1
2
3
4
5
6
7

pn = cos( n1 )
0.54030
0.87758
0.94496
0.96891
0.98007
0.98614
0.98981

qn
0.96178
0.98213
0.98979
0.99342
0.99541

Table 1: The Speed of Convergence for cos( n1 )

12

Proof from P.260, Kincaid


Let hn = pn p, then
qn = pn

(pn+1 pn )2
pn+2 2pn+1 +pn

(pn pn+1 2pn pn+1 +p2n )(p2n+1 2pn pn+1 +p2n )


pn+2 2pn+1 +pn

(p+hn )(p+hn+1 )(p+hn+1 )2


(p+hn+2 )2(p+hn+1 )+(p+hn )

p(hn +hn+2 2hn+1 )+hn hn+1 h2n+1


hn+2 2hn+1 +hn

= p+

hn hn+1 h2n+1
hn+2 2hn+1 +hn

Since |pn+1 p| M|pn p| with 0 < M < 1 for large n, then n 0 with
limitn n = 0 such that
hn+1 = (M + n )hn , hn+2 = (M + n+1 )(M + n )hn .
Then

qn p =

h2n [(M +n+1 )(M +n )(M +n )2 ]


[(M +n+1 )(M +n )2(M +n )+1]hn

= hn

(M +n+1 )(M +n )(M +n )2


(M +n+1 )(M +n )2(M +n )+1

= (pn p)

(M +n+1 )(M +n )(M +n )2


(M +n+1 )(M +n )2(M +n )+1

Thus
M(n+1 n ) + n+1 n n2
qn p
=
0 as n 0
pn p
(M 1)2 + M(n+1 + n ) + n+1 n 2n

13

M uller sM ethod
It attempts to overcome two problems, in particular, occurred in Newtons method,
(a) f (xn ) 0 and f  (xn ) 0 for some steps.
(b) unable to nd a complex root if starting with a real initial number.
Given 3 initial approximations p0 , p1 , p2 for a solution of f (x) = 0. Consider a
quadratic polynomial passing through [p0 , f (p0 )], [p1 , f (p1)], [p2 , f (p2)]
f (x) = a(x p2 )2 + b(x p2 ) + c
where a, b, c are to be determined, the next approximation p3 is dened to be one of the
roots of f (x) = 0 computed by
p3 = p2

2c

b + sgn(b) b2 4ac

(the p3 closest to p2 )

where c = f (p2 )
b=

(p0 p2 )2 [f (p1 ) f (p2 )] (p1 p2 )2 [f (p0 ) f (p2 )]


(p0 p1 )(p0 p2 )(p1 p2 )

a=

(p1 p2 )[f (p0 ) f (p2 )] (p0 p2 )[f (p1 ) f (p2 )]


(p0 p1 )(p0 p2 )(p1 p2 )

Notice that a, b, c are obtained by solving


(p0 p2 )2 a + (p0 p2 )b + c = f (p0 )
(p1 p2 )2 a + (p1 p2 )b + c = f (p1 )
(p2 p2 )2 a + (p2 p2 )b + c = f (p2 )
f (x) = 16x4 40x3 + 5x2 + 20x + 6 = 0 has roots 1.241677, 1.970446, 0.356062
0.162758j.
(p0 , p1 , p2 ) = (0.5, 1.0, 1.5) leads to 1.24168 in 7 iterations
(p0 , p1 , p2 ) = (2.5, 2.0, 2.25) leads to 1.97044 in 6 iterations
(p0 , p1 , p2 ) = (0.5, 0.5, 0) leads to -0.356062+0.162758j in 8 iterations

14

A System of Nonlinear Equations


A typical problem of n nonlinear equations with n variables is

f1 (x1 , x2 , . . . , xn ) = f1 (x) = 0

f2 (x1 , x2 , . . . , xn ) = f2 (x) = 0

(1)

fn (x1 , x2 , . . . , xn ) = fn (x) = 0
or
f(x)=0

By Taylors expansion, we have

fi (x + x) = fi (x) +

n


fi (x)
xj + O(||x||2)
x
j
j=1

(2)

or
fi (x + x) fi (x) +

n


fi (x)
xj
j=1 xj

15

(3)

Assume x + x is the zero of f, then


n


ij (j ) = i

f or 1 i n

(4)

j=1

where
ij

fi (x)
and i fi (x)
xj

(5)

Once the x is solved by using(4), the next approximated solution can be updated
by
(new)

x(new) = x(old) + x or xi

(old)

= xi

+ xi , 1 i n

(6)

The process is iterated to convergence if an initial guess x is close to a zero of f

16

Algorithm

Given an initial guess x for a zero of f, take ntrial Newton-Raphson iterations to improve
the root. Stops if ||x||1 tolx or ||f(x)||1 tolf

Subroutine Mnewton(ntrial, x, n, tolx, tolf, alpha, beta, indx )


real x(n), alpha(n, n), beta(n)
integer indx(n)
for k=1, . . ., ntrial
call userfun( x, alpha, beta)
errf=0.
for k=1, . . ., n
errf=errf + abs(beta(i))
endfor
if (errf. le. tolf) return
call LUdecomp(alpha, n, indx,det )
call LUbacksb(alpha, n, indx, beta)
errx=0.
for k=1, . . ., n
errx = errx + abs(beta(i))
x(i) = x(i)+ beta(i)
endfor
if ( errx .le. tolx )return
endfor
Return
End

17

Example 1. Find a solution of the following equations by Newton-Raphson method using


x(0) = [2, 1, 1]t as an initial guess.
xy z 2 = 1
xyz x2 + y 2 = 2
ex

ey

z = 3

%
% The solution is [1.1659, 1.4493, 1.4625]
%
xy - z^2 = 1
% xyz - x^2 + y^2 = 2
% e^x - e^y - z
= 3
% Newton-Raphsons method for Nrun iterations
% X=[x y z]
n=3; Nrun=50;
X=[2.0 1.0 1.0];
% initial guess
for k=1:Nrun,
F=[X(1)*X(2)-X(3)*X(3)-1;
X(1)*X(2)*X(3)-X(1)*X(1)+X(2)*X(2)-2.0;
exp(X(1))-exp(X(2))-X(3)-3.0];
A=[X(2), X(1), -2.0*X(3);
X(2)*X(3)-2.0*X(1), X(1)*X(3)+2.0*X(2), X(1)*X(2);
exp(X(1)), -exp(X(2)), -1.0];
dX=(A+0.005*eye(n))\F;
X=X-dX;
end
format short
X,F

18

Example 2. Find a solution of the following equations by Newton-Raphson method using


x(0) = [4.8, 3.3, 1.5, 1.3, 0.8, 1.2]t as an initial guess, where f(x) = C = [2, 2, 2, 2, 2, 2]t.
x1

x2 = C1

x1 x3

x2 x5 = C2

x1 x23

x2 x25 = C3

x1 x4

x2 x6 = C4

x1 x24

x2 x26 = C5

x1 x3 x4 x2 x5 x6 = C6
% Newton-Raphsons method with Nrun iterations to solve
% A Nonlinear System of Equations from Professor Cheng-Yan Kao at NTU
% [C1,C2,C3,C4,C5,C6]=[2 2 2 2 2 2]
% [X1,X2,X3,X4,X5,X6]=[144.6946, 142.6946, 1.0000, 1.0001, 1.0000, 1.0001];
% n=6;
% fin=fopen(dataC.txt);
% header=fgetL(fin);
% read off the header line
% C=fscanf(fin,%d,n);
% read in coefficients C1 ~ C6
% X=[5.3; 3.8; 2.2; 1.2; 1.2; 1.3];
% initial guess
%
X=[4.8; 3.3; 1.5; 1.3; 0.8; 1.2];
% initial guess
C=[2 2 2 2 2 2];
Nrun=50; format long
for k=1:Nrun,
F=[X(1)-X(2)-C(1); X(1)*X(3)-X(2)*X(5)-C(2); ...
X(1)*X(3)*X(3)-X(2)*X(5)*X(5)-C(3); X(1)*X(4)-X(2)*X(6)-C(4); ...
X(1)*X(4)*X(4)-X(2)*X(6)*X(6)-C(5); X(1)*X(3)*X(4)-X(2)*X(5)*X(6)-C(6)];
A=[1, -1, eps, eps, eps, eps; ...
X(3), -X(5), X(1), 0, -X(2), 0; ...
X(3)*X(3), -X(5)*X(5), 2*X(1)*X(3), 0, -2*X(2)*X(5), 0; ...
X(4), -X(6), 0, X(1)+eps, 0, -X(2); ...
X(4)*X(4), -X(6)*X(6), 0, 2*X(1)*X(4), 0, -2*X(2)*X(6); ...
X(3)*X(4), -X(5)*X(6), X(1)*X(4), X(1)*X(3), -X(2)*X(6), -X(2)*X(5)];
dX=(A+0.005*eye(n))\F;
X=X-dX;
end
format short
X,F

19

You might also like