开平方(Python)

1.开平方算法之一 

输入:一个任意实数c

输出:c的算术平方根g

1)从0c的区域里选取一个整数g',满足g'*g'(g'+1)*(g+1)>c的条件;

2)如果g'2-c足够接近于0g'即为所求算术平方根的解g=c1/2

3)否则,以步长h增加g':g'=g'+h,其中,h为设定精度(可设为0.0001)下的步长(可设为0.00001),即每次对g’作调整的值;

4)重复步骤(2)直到满足条件,此时输出g',并终止计算。

def square_root_1():
    c=10        #所求平方根的输入
    i=0         #记录执行循环次数
    g=0

    for j in range(0,c):
        if(j*j>c and g==0):       #判断,使得g*gc
            g=j-1
    
    while(abs(g*g-c)>0.00001):    #判断g2-c是否在精度范围内,其中abs()函数返回绝对值
        g+=0.00001

        i=i+1
        print("%d:g = %.5f" % (i,g))

2.开平方算法之二:二分法

输入:一个任意实数c;

输出:c的算术平方根g

1)令min=0max=c;

2)令g’=(min+max)/2;

3)如果g’2-c足够接近于0g'即为所求解g,否则:

4)如果g*gmin=g',否则max=g';

5重复步骤(2),直到满足条件,输出g',终止程序

def square_root_1():
    
    i = 0
    c = 10
    m_max = c
    m_min = 0

    g = (m_min+m_max)/2
    
    while (abs(g*g -c) > 0.00000000001): 
        if (g*g 

3.开平方算法之三:牛顿法

牛顿迭代算法求任意正数c的平方根的具体算法描述如下:

1)先g=c/2;

2)如果g2-c足够接近于0g即为所求,否则:

3g = (g + c/g)/2;

4)重复2

开平方(Python)_第1张图片

def square_root_3():
    c = 10
    g = c/2
    i = 0

    while abs(g*g - c) > 0.000000001:
        g = (g + c/g)/2
        i = i+1
        print("%d:%.13f" % (i,g))
    

 

 

 

你可能感兴趣的:(基本算法实现)