skip to main | skip to sidebar

Wednesday, 29 June 2011

Numerical Methods Using MATLAB - Newton-Raphson Method

06:04 RPS Deepan No comments


In this post, we learn about solving Algebraic Equation using Newton's Method (or) Newton-Raphson Method.

Newton's Method:
Given an approximate root of an equation, a closer approximation to the root can be found using Newton's Method.

Let a0 be the approximate root of the equation f(x)=0.
Let a be the exact root nearer to a0.

Then, a = a0 + h
where h is an integer with very small value.

Since a is the exact root of f(x)=0,

f(a) = f(a0+h) = 0

By Taylor's expression,
f(a) = f(a0+h) = f(a0) + hf'(a0) + (h^2/2!)f"(a0)+0000=0

Since, h is small, neglecting higher powers h^2, h^3,....etc, we get

f(a0) + hf'(a0) = 0

h = -(f(a0)/f'(a0))

a1 = a0 + h = a0 - (f(a0)/f'(a0))

a2 = a1 + h = a1 - (f(a1)/f'(a1))

Thus, we again get a sequence of approximate roots which converges to form the exact root on a few iterations depending on the required precision.

Source Code:

% this function that calculates solution of algebraic equation
% using Newton-Raphson method

function NewtonFunc(co,range)

% the variable prev stores the first approximate root of the eqn.
% here, we assume it to be the mean of the two points p1 and p2 (say)
% such that, f(p1)<0 and f(p2)>0

prev = (range(1) + range(2))/2;

% x is symbol var represented by 'x'
x=sym('x');

% the function 'f' is initialized
f=0;

% n gives the size of the coeff/: vector
[m,n]=size(co);

% in the loop below, we create the function 'f' using symbol 'x'
% from the coeff/: vector
for i = 1 : n
% the last element of co vector is the constant
if i == n
f = f + co(i);
end
% end of if i==n

% adding the terms of the function step by step
if co(i) ~= 0 && i ~= n
f = f + co(i)*(x^(n-i));
end
% end of if
end
%end of for

% infinite while loop
% where we find the sequence of approximate roots
while ( 1 )

% finding the approximate root
% using Taylor's expansion (neglecting higher powers)
x0=prev-(subs(f,prev)/subs(diff(f),prev));

% when the required precision is obtained, break the loop
if abs( abs(prev) - abs(x0) ) < 0.000001
break;
end
% end of if

% assigning previous value
prev=x0;
end
% end of while
disp(x0);
end
% end of function

0 comments:

Post a Comment

தங்களது கருத்துக்களை இங்கே வெளியிடவும்...

[フレーム]

Share

Popular Posts

  • BASICS    Wireless infrared communications refers to the use of free-space propagation of light waves in the near infrared band as a trans...
  •         Here we are going to discuss about data transfer instructions which move data between register or memory locations. ...
  • In this post, We examine sample codes for encoding and decoding using Arduino. Encoding:      The frequency of the carrier signal...
  •            Serial communications is the most popular and cheaper way of communicating between two devices. The obvious advantage is lesser n...
  •          In this post, we are going to learn a very old grand father of modern processors, named 8085 and his colleague 8255. Pins, Sign...
  • 8085-MICRO PROCESSOR INSTRUCTION SETS      8085 Micro Processor is 8 bit micro processor which has some instruction sets ...

Categories

 

AltStyle によって変換されたページ (->オリジナル) /