MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Algorithms to calculate square root (correction)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16515] Re: [mg16454] Algorithms to calculate square root (correction)
  • From: BobHanlon at aol.com
  • Date: Tue, 16 Mar 1999 03:59:58 -0500
  • Sender: owner-wri-mathgroup at wolfram.com

I've added to my earlier response below a FixedPoint implementation that
automatically uses the required number of iterations.

Bob Hanlon

In a message dated 3/13/99 12:13:34 PM, ajith.pn at pcm.bosch.de writes:

>This question is about the calculation of square root using numerical
>analytical algorithms. I found the formula  (from  the book  "Numerical
>Recipes in C - The Art of Scientific Computing" )  
>	
>	if 
>	U[i+1]	=  0.5 *  U[i]  * (   3 - V * U[i] * U[i]  )	
>then U[infinity] converges quadratically to 1/sqrt(V). A final
>multiplication by V gives sqrt(V).
>
>Are there any other similar algorithm to calculate square root?
>

Ajith,

I don't have Knuth's book handy, but I believe this algorithm is in it:

For y = Sqrt[x], y[n] = (y[n-1] + x/y[n-1])/2

y[n_Integer?Positive, x_?Positive] := NestList[((# + x/#)/2.)&,x, n];
(* If you only want the final result, 
		use Nest vice NestList *)

y[x_?Positive] := FixedPointList[(# + x/#)/2.&, x];
(* If you only want the final result, 
		use FixedPoint vice FixedPointList *)

y[16]

{16, 8.5, 5.191176470588235, 4.136664722546242, 
  4.002257524798522, 4.000000636692939, 4.00000000000005, 
  4., 4.}

y[8, 16]

{16, 8.5, 5.191176470588235, 4.136664722546242, 
  4.002257524798522, 4.000000636692939, 4.00000000000005, 
  4., 4.}

Bob Hanlon


  • Prev by Date: Re: "Solve[x==Erf[x], x]"
  • Next by Date: help
  • Previous by thread: Re: Re:Doloop
  • Next by thread: Eliminating a "Unit"