# Newton Raphson Method – Theory, Algorithm, and Code

## Theory

Newton Raphson Method (NR-method) is an open-end method that uses only one initial guess based on a linear approximation of a function using a tangent to a curve.

Consider a graph f(x) as shown in the figure. Let us assume that x1 is an approximate root of f(x). Now draw a tangent on the curve f(x) at x = x1. The point of intersection of this tangent with the x-axis gives the second approximation.

From figure (1),

tanθ = f(x1) / (x1 – x2)

tanθ = f'(x1)

where,

f'(x1) is the slope of f(x) at x = x1

On solving

x2 = x1 – f(x1) / f'(x2)

Then the next approximation will be

x3 = x2 – f(x2) / f'(x2)

In general,

xn+1 = xn – f(xn) / f'(xn)

## Algorithm

1. Start
2. Define function f(x), and its derivative g(x) and error E
4. Calcualte x1 = x0 – f(x0) / g(x0)
5. If |x1 – x0| <= E, print root x1
• else, goto step 4
6. Stop

## Source Code

```#include<iostream>
#include<math.h>
#define f(x) (x*x - 4*x - 10)
#define g(x) (2*x - 4) // derivative of f(x)
#define E 0.0001

using namespace std;

int main() {
float x1, x2, f1, f2, g1;
cout<<"Enter the initial values"<<endl;
cin>>x1;

do {
f1 = f(x1);
g1 = g(x1);
x2 = x1 - (f1/g1);
x1 = x2;
f2 = f(x2);
}while(f2 > E);

cout<<"Root is "<<x2;

return 0;
}```

## Output

Enter the initial values
4
Root is 5.74166