X的平方根

来源:互联网 发布:中美消费水平2017数据 编辑:程序博客网 时间:2024/04/27 17:15

方法一:二分查找

x = 24epsilon = 0.01numGuesses = 0low = 0.0high = max(1.0,x)ans = (high + low)/2.0while abs(ans*ans - x)>=epsilon:    print 'low:',low,'high:',high,'ans =',ans    numGuesses += 1    if ans**2 <x:        low = ans    else:        high = ans    ans = (high + low)/2.0print 'numGuesses =',numGuessesprint ans, 'is close to square root of',x


low: 0.0 high: 24 ans = 12.0low: 0.0 high: 12.0 ans = 6.0low: 0.0 high: 6.0 ans = 3.0low: 3.0 high: 6.0 ans = 4.5low: 4.5 high: 6.0 ans = 5.25low: 4.5 high: 5.25 ans = 4.875low: 4.875 high: 5.25 ans = 5.0625low: 4.875 high: 5.0625 ans = 4.96875low: 4.875 high: 4.96875 ans = 4.921875numGuesses = 94.8984375 is close to square root of 24


方法二:艾萨克牛顿法

epsilon = 0.01k = 24.0guess = k/2.0numGuesses = 0while abs(guess*guess - k)>=epsilon:    guess = guess - ((guess**2 -k)/(2*guess))    numGuesses += 1print 'numGuess =', numGuessesprint 'Square root of', k, 'is about', guess

numGuess = 4Square root of 24.0 is about 4.89898874321


0 0
原创粉丝点击