梯度下降求立方根。
求解立方根
http://www.nowcoder.com/questionTerminal/caf35ae421194a1090c22fe223357dca
写一个梯度下降的解法。
给定n,求x^3=n的根x。
使用平方误差作为损失函数,损失函数l=(x^3-n)^2
l对x求导数:
因为x小于0时,损失函数不是凸函数,所以特殊处理一下n<0的情况,统一计算n>0的情况。
根据梯度下降很容易写出AC代码。
n=float(input()) op=-1 if n<0 else 1 n=op*n lr=0.0001 x=0.1 for i in range(1000000): delta=6*(x**2)*(x**3-n) x=x-lr*delta print(op*round(x,1))