python平方根计算_Python计算平方根

时间:2024-11-19 21:30:24

Python计算平方根

用Match包

import math

( x )

自己实现

二分法

步骤:

①low = 0;high = x;

②guess = (low + high) / 2

③如果guess² == x,则输出guess,程序结束;

④如果guess² > x,则high = guess,继续执行步骤②

⑤如果guess² < x,则low = guess,继续执行步骤②

def dichotomy_sqrt(x):

if x > 1: #在0到1之间的数,我们知道0到1之间的任何一个数平方后的结果都小于原值(0,1除外),因此如果要沿用上面的程序达不到“逼近”的作用,反而扩大了

a = 1.0

b = x

else:

a = x

b = 1.0

y = (a + x)/2

while abs(y * y - x) > 1e-6:

if y * y > x:

b = y

y = (y + a) /2

else:

a = y

y = (y + b) /2

return y

牛顿迭代法 百度百科

#牛顿迭代法

def Newton_sqrt(x,y=1):

z = x/y

if abs(z - y) < 0.000001:

return z

else:

y = (y + z)/2

return Newton_sqrt(x,y)

def sqrt1(x, y=1):

return x / y if abs(x/y - y) < 0.000001 else sqrt(x, (x/y + y)/2)

sqrt2 = lambda x, y=1:x / y if abs(x/y - y) < 0.000001 else sqrt2(x, (x/y + y)/2)

思路

牛顿迭代

仔细思考一下就能发现,我们需要解决的问题可以简单化理解。

从函数意义上理解:我们是要求函数f(x)=x²,使f(x)=num的近似解,即x²-num=0的近似解。

从几何意义上理解:我们是要求抛物线g(x)=x²-num与x轴交点(g(x)=0)最接近的点。

我们假设g(x0)=0,即x0是正解,那么我们要做的就是让近似解x不断逼近x0,这是函数导数的定义:

image.png

可以由此得到

从几何图形上看,因为导数是切线,通过不断迭代,导数与x轴的交点会不断逼近x0。

对于一般情况:

将m=2代入:

利用“将长方形变得更像正方形”的思路也可以得到求 A

的算数平方根的迭代公式