# C Program: Newton-Raphson Method

The Newton-Raphson Method, or simply Newton's Method, is a technique of finding a solution to an equation in one variable $f(x) = 0$ with the means of numerical approximation.

It finds the solution by carrying out the iteration

$x_{1} = x_{0} - \frac{f(x_{0})}{f{\prime}(x_{0})}$

where $x_{0}$ is the first approximate value, then,

$x_{2} = x_{1} - \frac{f(x_{1})}{f{\prime}(x_{1})}$

and so on.

So if $x_{n}$ is the current estimated value, the next approximation $x_{n+1}$ is given by

$x_{n+1} = x_{n} - \frac{f(x_{n})}{f{\prime}(x_{n})}$

Using the Newton-Raphson method, we will next write a C program to find an approximate value of $\sqrt{5}$. Remember, $\sqrt{5}$ is an irrational, and its decimal expansion do not end. So its exact value we can never get.

The get the approximate value of $\sqrt{5}$, the function we need is

$f(x) = x^{2} - 5$

so that, solving for

$f(x) = 0$

is the same as solving for

$x^{2} - 5 = 0$

or

$x = \sqrt{5}$

The derivative of the function is

$f{\prime}(x) = 2x$

In our program below, we define two funtions, `f()`

and `derivative()`

, which returns the function and its derivative respectively. The iteration is performed inside the `while`

loop.

` ````
#include <stdio.h>
#include <math.h>
float f(float);
float derivative(float);
int main() {
float x; // x: approximation
unsigned short i = 1, n; // n: number of iterations
printf("FIRST APPROXIMATION: ");
scanf("%f", &x);
printf("ITERATIONS: ");
scanf("%hu", &n);
while(i <= n) {
x = x - f(x)/derivative(x);
i++;
}
printf("APPROXIMATE ROOT: %f \n", x);
return 0;
}
float f(float x) { // f(x)
return pow(x,2) - 5;
}
float derivative(float x) { // f'(x)
return 2*x;
}
```

We run the program with $x_{0} = 2$ as the first approximation, upto $5$ iterations

` ````
$ ./a.out
FIRST APPROXIMATION: 2
ITERATIONS: 5
```

The output is