Math Trick: Calculating the Square Root by Hand
itl.nist.gov
itl.nist.gov
1. Move the decimal point 2N digits to the left, so that your value X is of the form a.bcdef... or ab.cdef... Remember the value N.
2. If X now has one digit before the decimal place, set Y = 5. Otherwise, set Y = 2.
3. Compute Y = Y * (300 - X * Y * Y) / 200 to as many decimal places as you want. Feel free to start by computing only a few decimal places.
4. Repeat step 2 until you're computing Y to the number of decimal places you want in your answer and it's not changing.
5. Compute Y = X * Y.
6. Move the decimal point in Y to the right by N-1 places.
For example what are you computing (in part 3) if you know what X and Y are?
What is N?
What is "the number of decimal places you want"?
Can you explain in another way? Do you have an example? Why does this work?
N is (((the number of digits of X), divided by 2), rounded down.)
Edit: hmm, maybe I've got it wrong, the convergence is very slow. Anyways, here's how it works out for me:
X = 105362
X = 10.5362 so N = 2 (half the number of digits to the right of the decimal point...)
Y = 2
Y = 2*(300-10.5362*2*2) = 2.578552
Y = 2.578552*(300-10.5362*2.578552*2.578552) = 2.9646326
Y = 2.9646326*(300-10.5362*2.9646326*2.9646326) = 3.0742773
It should converge to around 3.24, at which point you would shift the decimal point back 2 digits to get 324.Clear on N thanks.
An example would make this easier...
f(Y) = Y*(300-XYY)/200
If f(Y) = Y, then: Y = Y*(300-XYY)/200
1 = (300-XYY)/200
200 = 300 - XYY
100 = XYY
So it looks like the algorithm calculates an inverse square root instead, and then multiplies it by the original number (step 5.)Oops, quite right.
So it looks like the algorithm calculates an inverse square root instead, and then multiplies it by the original number (step 5.)
Exactly. The nice thing about this method is that it converges nicely even if you make errors (arithmetical or rounding) along the way -- so you can start by working with only a few digits and only use full precision right at the end.
You could compute square roots using a direct NR iteration (Y := (Y + X/Y) / 2), but that requires that you perform a division at each step -- most people find multiplications to be easier and faster.
Since many Canadian high schools only teach "pre-Calculus" now, it makes me wonder if anyone is learning the "long hand" method for square roots these days.
Dead Reckoning: Calculating Without Instruments, by Ronald W. Doerfler (http://www.myreckonings.com/Dead_Reckoning/Dead_Reckoning.ht... )
More good stuff at http://myreckonings.com/wordpress/ . The nomography posts had caught my eye a while ago, and there may be more of those coming soon.
(Disclosure: I recently exchanged a couple of emails with the author, after leaving a comment on the Heaviside post which was briefly featured here.)
For example, the number of the explication is near to 2^16, so the square root is 2^8 = 256 approximately (with relative error of 0.7% and in less of a second :)
Of course, it won't work when numbers are farther of powers of two.
Oh my goodness.
It feels more elegant sometimes to solve a problem simply (in paper, in your head) without bringing out the computers.
See Dijkstra on sum/product puzzle: http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...