关于代码实现一个数求平方根

记该数为a,a的平方根记为x,则√a=x,写为x^2=a,

f(x)=x^2-a,那么求方根的问题就转化为求f(x)在x轴交点的问题;

F(x)为f(x)的原函数,F'(x)=f(x)=x^2-a=0,就是求F(x)极值点的问题了(这样就转化到梯度下降上去了)

 因此代码可以这样写:

import math

if __name__ == "__main__":
    learning_rate = 0.01
    for a in range(1,100):
        cur = 0
        for i in range(1000):
            cur -= learning_rate*(cur**2 - a)
        print(' %d的平方根(近似)为:%.8f,真实值是:%.8f' % (a, cur, math.sqrt(a)))


关于python里 % 的用法,参照 https://www.cnblogs.com/vamei/archive/2013/03/12/2954938.html


部分结果为:

1的平方根(近似)为:1.00000000,真实值是:1.00000000

 2的平方根(近似)为:1.41421356,真实值是:1.41421356
 3的平方根(近似)为:1.73205081,真实值是:1.73205081
 4的平方根(近似)为:2.00000000,真实值是:2.00000000
 5的平方根(近似)为:2.23606798,真实值是:2.23606798
 6的平方根(近似)为:2.44948974,真实值是:2.44948974
 7的平方根(近似)为:2.64575131,真实值是:2.64575131
 8的平方根(近似)为:2.82842712,真实值是:2.82842712
 9的平方根(近似)为:3.00000000,真实值是:3.00000000
 10的平方根(近似)为:3.16227766,真实值是:3.16227766

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值