Jump to content

Square root algorithms

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Eric119 (talk | contribs) at 01:22, 18 September 2005 (material moved from square root). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

There are many methods to compute square roots.

Exponential identity

Pocket calculators typically implement good routines to compute the exponential function and the natural logarithm, and then compute the square root of using the identity

The same identity is exploited when computing square roots with logarithm tables or slide rules.

Babylonian method

A commonly used algorithm for approximating is known as the "Babylonian method" and is based on Newton's method. It proceeds as follows:

  1. start with an arbitrary positive start value (the closer to the root the better)
  2. replace by the average of and r/x
  3. go to 2

This is a quadratically convergent algorithm, which means that the number of correct digits of roughly doubles with each step.

This could be represented as

where

This algorithm works equally well in the p-adic numbers, but cannot be used to identify real square roots with p-adic square roots; it is easy, for example, to construct a sequence of rational numbers by this method which converges to in the reals, but to in the 2-adics.

Simple approximation

The simple approximation is rather simple and can be highly inaccurate. The amount of inaccuracy for this approximation is dependent on the value of the expression d/2N , the larger the value of this expression, the more inaccurate the value of the approximated result.

Construction

If N > 0 and d > 0 then

So the solution for must be between and

Thus

Bakhshali approximation

The Bakhshali square root approximation is a mathematical method for finding an approximation to a square root which was described in an ancient manuscript by the name of "The Bakhshali Manuscript" because it was discovered in 1881 near the village of Bakhshali (or Bakhshalai) in the Yusufzai subdivision of the Peshawar district (now part of Pakistan). The manuscript was made out of the leaves of birch bark tree and was written in Sarada script.

The Bakhshali square root approximation is just the simple approximation applied twice.

Let

Let

When expanded, the equation becomes

Bakhshali approximation example

Find

Using and

An exact long-division-like algorithm

This method, while much slower than the Babylonian method, has the advantage that it is exact: if the given number has a square root whose decimal representation terminates, then the algorithm terminates and produces the correct square root after finitely many steps. It can thus be used to check whether a given integer is a square number.

Write the number in decimal and divide it into pairs of digits starting from the decimal point. The numbers are laid out similar to the long division algorithm and the final square root will appear above the original number.

For each iteration:

  1. Bring down the most significant pair of digits not yet used and append them to any remainder. This is the current value referred to in steps 2 and 3.
  2. If denotes the part of the result found so far, determine the greatest digit that does not make exceed the current value. Place the new digit on the quotient line.
  3. Subtract from the current value to form a new remainder.
  4. If the remainder is zero and there are no more digits to bring down the algorithm has terminated. Otherwise continue with step 1.

Example: What is the square root of 152.2756?

           1  2. 3  4 
       |  01 52.27 56                              1    The digit 1 is a solution digit
x         01                   1(20*0+1)=1        +1 
          00 52                                    22   The digit 2 is a solution digit
2x        00 44                2(20*1+2)=44       + 2 
             08 27                                 243  The digit 3 is a solution digit
24x          07 29             3(20*12+3)=729     +  3 
                98 56                              2464 The digit 4 is a solution digit
246x            98 56          4(20*123+4)=9856       4
                00 00          Algorithm terminates: answer is 12.34

Although demonstrated here for base 10 numbers, the procedure works for any base, including base 2. In the description above, 20 means double the number base used, in the case of binary this would really be 100. The algorithm is in fact much easier to perform in base 2, as in every step only the two digits 0 and 1 have to be tested. Napier's bones use this algorithm. See also Shifting nth-root algorithm.

Rough estimation

Many of the methods used for finding the square root of a number requires an initial seed value which should ideally be close to the actual value of the square root. One way of obtaining a very rough estimate of the value of the square root is as follows.

Provided that r » 1

Steps

  1. Take the integer part of the number r. Z = int(r)
  2. Count the number of digits in Z. Let D be the number of digits.
  3. Calculate the value of 3D.
  4. The rough estimate is half the value obtained in step 3. E = (3D) / 2

Example

r Z D 3 ^ D Estimate (E) Actual Value of √r
723.47 723 3 27 13.5 26.89
5396.37 5396 4 81 40.5 73.45
24956.41 24956 5 243 121.5 157.96
789345.464 789345 6 729 364.5 888.45

More accurate rough estimation

Similar to the rough estimation procedure above. This version is slightly more accurate because it also uses the additional information provided by the first digit of the number r. The steps are almost the same as the one for previous rough estimate. This estimate can be taken one extra step further by applying the Bakhshali square root approximation.

Provided that r » 1

Steps

  1. Take the integer part of the number r. Z = int(r)
  2. Count the number of digits in Z. Let D be the number of digits.
  3. Calculate the value of 3.16D. Note: 3.16 ≈ √10
  4. The estimate is the value obtain in step 3 multiple by an adjustment factor based on the first (left most) digit of the number n. E = ADJ * 3.16D
  5. Applying the Bakhshali square root approximation to the estimate E.

Table of ADJ

First Digit 1 2 3 4 5 6 7 8 9
ADJ 0.32 0.45 0.55 0.63 0.71 0.78 0.84 0.90 0.95

Example

r Z D 3.16 ^ D ADJ Estimate (E) Bakhshali (B) Actual Value of √r
723.47 723 3 31.55 0.84 26.50 26.89 26.89
5396.37 5396 4 99.71 0.71 70.79 73.46 73.45
24956.41 24956 5 315.09 0.45 141.79 157.98 157.96
789345.464 789345 6 995.7 0.84 836.37 888.45 888.45

Inverse square root approximation

There is an algorithm for finding the inverse square root very quickly.

Because , if we know the value of the inverse square root, we can easily get the value for the square root.

Steps for inverse square root approximation

Step 1 Start the initial value an approximate value of the inverse square root which is accurate to 2 significant digits.

Step 2 Calculate the next iteration with the following algorithm.

where

Step 3 Finally obtain the value of with

Because is the inverse square root of r.

Properties

The greatest weakness of this algorithm is that it is not stable. The initial value must be near the actual value for the algorithm to converge correctly. If the initial value is not close enough, the algorithm will diverge away from the actual value.

However when the algorithm converges, it converges quickly. 20 digits of accuracy can be obtained in 6 iterations.

Square roots using Newton iteration

Basic Newton iteration finds a single root of a function given a sufficiently precise approximation to the root. The nature of which root will be given based on an approximation is dependent on the Newton fractal. The basic iteration is given by:

.

There are two widely used functions and used to find the square root of a number denoted by "z".

First method

The first method finds the square root of "z"

Note that both and are roots of the function . ie .

The first derivative of is

Thus iteration for is derived where:

       and

.

Second method

The second method finds the reciprocal of the square root of "z".

.

The two roots to are and .

The derivative of is .

Thus iteration for is derived where:

       and

.

Example

Find the using both methods.

Because we are looking for the square root of 7

Comparison

The iteration for involves a division which is more time consuming than a multiplication in computer integer arithmetic. The iteration for involves no division and is thus recommended for large integers z.

This iteration using "g" involves only a squaring and two multiplications, as opposed to a division in the case of f. In practical implementations of large integer square roots, the iteration involving g is faster for large integers z since division is at best , a constant times the time function of multiplication. The constant term is almost always 3 or more, meaning that a single division can almost never be faster than 3 multiplications.

Pell's equation

Pell's equation yields a method for finding rational approximations of square roots of integers.

Finding square roots using mental arithmetic

Based on Pell's equation there is a method to calculate square roots simply by subtracting odd numbers.

Example: For we start with the following sequence:

27 - 1 = 26
26 - 3 = 23
23 - 5 = 18
18 - 7 = 11
11 - 9 = 2

Five steps have been taken and thus the integer part of the square root of 27 is 5. We do not proceed any further because the sixth subtraction would give a negative answer.

Now take the rest (2) and multiply it by 100 to get the starting number for the next step. Take the answer we have already got (5) and multiply it by 20, then add 1 to get the first odd number we subtract by. This gives us 2 × 100 = 200 as the starting number and 5 × 20 + 1 = 101 as the first odd number. Subtract the successive odd numbers, 103, 105, etc. until we get to a step where the next subtraction would result in a negative number. So,

200 - 101 = 99

and 99 is less than 103 so this is the place to stop and since we only took one step we get that the next digit is 1.

For the next step the starting number will be 99 × 100 = 9900 and the answer we have already got is 51 so the first odd number will be 51 × 20 + 1 = 1021

9900 - 1021 = 8879
8879 - 1023 = 7856
7856 - 1025 = 6831
6831 - 1027 = 5804
5804 - 1029 = 4775
4775 - 1031 = 3744
3744 - 1033 = 2711
2711 - 1035 = 1676
1676 - 1037 = 639

We took nine steps so the next digit is 9.

Continuing with this procedure, the next starting number will be 639 × 100 = 63900 and the first odd number will be 519 × 20 + 1 = 10381

63900 - 10381 = 53519
53519 - 10383 = 43136
43136 - 10385 = 32751
32751 - 10387 = 22364
22364 - 10389 = 11975
11975 - 10391 = 1584

We took six steps so the next digit is 6.

The result gives us 5.196 as an approximation of the square root of 27.

Finding square roots using basic arithmetic

If you have access to a calculator capable of addition, subtraction, multiplication and division then the following method can be used to find the square root of a number. Note that this algorithm does not always terminate when attempting to determine the next digit. For example: 2, 3 and 7 do not terminate on the first digit.

Find

The starting values are

Now find new values for each variable

We found a digit when the value of       is equal to the value of   

After a new digit has been found.

New
New


The step are shown in the table below

Find
and
Remarks SOLN
n=0
n=1 STOP
and
n=0
n=1
n=2 STOP
and
n=0 STOP
and
n=0
n=1 STOP
and
n=0
n=1 STOP

Continued fraction methods

Quadratic irrationals, that is numbers involving square roots in the form (a + √b)/c, have periodic continued fractions. This makes them easy to calculate recursively given the period. For example, to calculate √2, we make use of the fact that √2 − 1 = [0; 2, 2, 2, 2, 2, ...], and use the recurrence relation

an + 1 = 1/(2 + an) with a0 = 0

to obtain √2 − 1 to some specific precision specified through n levels of recurrence, and add 1 to the result to obtain √2.

Steps for finding continued fractions

Find using continued fractions

Let

thus

Step 0. We shall assume that r is not a perfect square. In other words:

Step 1. Find using some other method. The best method is using some other algorithm to determine the integer square root.

Step 2. Find the highest lower bound (L) and lowest upper bound (U) for where both (L) and (U) are integers.

Hence

Step 3. Write in terms of .

and

and

Step 4. Substitute with

after substitution

Since is less than one, we can determine from the numeric values of and because (ie. is an integer). Determine the numeric value of .

Step 5. Once we know the value of , we can rework the equation for

and

Step 6. Write in terms of .

and

Step 7. Substitute with

after substitution

Since is less than one, we can determine from the numeric values of and because (ie. is an integer). Determine the numeric value of .

Step 8. Once we know the value of , we can rework the equation for

and


Step 9. Repeat step 6 , 7 and 8 .

Quadratic equation method

The solution to a properly setup quadratic equation can be used to find where 1 < r < 100

For square root of values greater than 100, use the following identity:

For square root of values less than 1, use the following identity:

Using the equation      where and

Solve for using quadratic equation formula, choose the solution that satisfy the restriction .

The final solution is:

The obvious problem is that we cannot evaluate the solutions to the quadratic equation without the usage of the square root function. However we can make the snake bite its own tail.

Let
Thus
And

So the quadratic equation becomes:

Solving for X as far as possible brings

Reciprocal

So the final solution becomes

Lets go deeper by substituting √r on the right hand side with its own definition.

Renormalise

Deeper still

And so on and so forth

Example using the quadratic equation method

Find

Using identity
First find .

Hence because

Using the quadratic equation formula, we get the two solutions. soln1 = - 0.165 or soln2 = 25.7519

Choose soln2 as it satisfy the restriction .

Hence

Alternatively

And the final solution is

See also