c语言牛顿法求整数平方根,牛顿法求平方根-编程练习

平方根函数的数学定义:

√x= 那样的 y ,使得 y≥0 ,而且 y²=x

计算机计算平方根,最常用的就是牛顿的逐步逼近方法。这一 方法,如果对 x 的平方根的值有了一个猜测 y ,那么就可以通过执行一个简单操作去得到一个更好的猜测:只需要求出 y 和 y/x 的平均值(它更接近实际的平方根值)。例如,可以使用这种方式去计算2的平方根,假定初始值是1:

猜测     商     平均值

1     2/1=2     (2+1)/2=1.5

1.5     2/1.5=1.3333     (1.3333+1.5)/2=1.4167

1.4167     2/1.4167=1.4118     (1.4167+1.4118)/2=1.4142

1.4142     …     …

继续这一计算过程,我们就能得到对2的平方根的越来越好的近似值。

书上给的例子:

(define (mysqrt x) (sqrt-iter 1 x))

(define (goodenough? guess x) (< (abs (- (* guess guess) x)) (* 0.000000000001)))

(define (imporve guess x)  (/ (+ guess (/ x guess)) 2))

(define (sqrt-iter guess x) (if (goodenough? guess x) guess (sqrt-iter (imporve guess x) x)))

我改:

先来个PY的。

def imporve(guess, x):

return (x/guess + guess) /2

def goodenough(guess, x):

return abs(guess * guess - x) < 0.000000000001

def sqrt_iter(guess, x):

if goodenough(guess, x):

return guess

else:

return sqrt_iter(imporve(guess, x), x)

def mysqrt(x):

return sqrt_iter(1, x)

再来一个:

-module(mysqrt).

-export([sqrt/1]).

imporve(Guess, X) -> (X / Guess + Guess) / 2.

goodenough(Guess, X) -> abs(Guess * Guess - X) < 0.000000000001.

sqrt_iter(Guess, X)  ->

case  goodenough(Guess, X) of

true  -> Guess;

false -> sqrt_iter(imporve(Guess, X), X)

end.

sqrt(X) -> sqrt_iter(1, X).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值