1
+ // calculating the square root of a number using Newton Raphson method.
2
+
3
+ // what is Newton Raphson method?
4
+
5
+ /*
6
+ It is a gradient based technique used to find root of a given number.
7
+ according to this method,
8
+
9
+ Xn+1 = Xn - f(Xn)/f'(Xn) - (1) {where n is the nth term i.e 0,1,2,....}
10
+
11
+
12
+ we know,
13
+ X = (N)^1/r
14
+
15
+ where N is a number of which we want to find rth root (X).
16
+
17
+ above equation can be written as,
18
+ X^r - N = 0
19
+ => f(X) = X^r - N = 0 - (a)
20
+ => f'(X) = r*X^(r-1) - (b)
21
+
22
+ now, putting nth term of equation (a) and (b) in equation (1)
23
+ Xn+1 = Xn - (Xn^r - N) / r*Xn^(r-1)
24
+
25
+ taking L.C.M,
26
+ Xn+1 = [ r*Xn^r - (Xn^r - N) ] / r*Xn^(r-1)
27
+
28
+ sovling further,
29
+
30
+ Xn+1 = [(r-1)Xn^r + N] / r*Xn^r-1 - (2)
31
+
32
+ This is the formula to get the rth root of a positive integer N, where X is our approximation number.
33
+
34
+ now, our aim is to get square root right, so, in equation (2) put r = 2.
35
+
36
+ Xn+1 = ( Xn^2 + N ) / 2 * Xn^2 [This is our equation which we are going to use to calculate square root of a number programatically]
37
+ */
38
+
39
+ #include < math.h>
40
+ #include < stdlib.h>
41
+ #include < iostream>
42
+ using namespace std ;
43
+
44
+ void squareRoot (int number){
45
+
46
+ double x, root;
47
+
48
+ x = number; // x is our approximation number(or Xn in equation (2))
49
+ // i.e the number which we assume can be the square root of number
50
+ // which we assume to be the number itself
51
+ while (1 ){
52
+
53
+ root = (x + number/x)/2 ; // root is our Xn+1 th term (as in equation (2))
54
+ if (abs (root - x) < 0.0001 ) // 0.0001 is our precision value an the loop is run until we get precision upto desired decimal places
55
+ break ;
56
+
57
+ x = root;
58
+ }
59
+
60
+ cout<<root;
61
+ }
62
+
63
+ int main (){
64
+ system (" cls" );
65
+ int n;
66
+
67
+ cout<<" enter a number: " ;
68
+ cin>>n;
69
+ fflush (stdin);
70
+ squareRoot (n);
71
+ getchar ();
72
+ return 0 ;
73
+ }
0 commit comments