梯度下降求x*x+y*y最小值

# 梯度下降方式
# 求f(x)=x*x+y*y的最小值


# x方向梯度
def f(x, y):
    return x * x + y * y;


# 初始化点
x = 10;
y = 10;

# 学习速率
speed = 0.01;
temp = f(x, y);

while 1:
    # x方向梯度
    gX = speed * 2 * x;
    # y方向梯度
    gY = speed * 2 * y;
    # 0.0001的误差
    if abs(f(x - gX, y - gY) - temp) > 0.00001:
        # 更新梯度
        x = x - gX;
        y = y - gY;
        temp = f(x, y);
        continue;
    break;

print(x, y)
梯度下降求x*x+y*y最小值_第1张图片
不如

你可能感兴趣的:(梯度下降求x*x+y*y最小值)