← Lesson
Gradients
Joeven
Run
Reset
Python loads on first run
def f(x, y): return x * x + y * y def analytic_grad(x, y): return [2 * x, 2 * y] def numeric_grad(x, y, h=1e-5): dfdx = (f(x + h, y) - f(x - h, y)) / (2 * h) dfdy = (f(x, y + h) - f(x, y - h)) / (2 * h) return [dfdx, dfdy] def add(u, v): return [a + b for a, b in zip(u, v)] def scale(k, v): return [k * a for a in v] x, y = 1.0, 2.0 g = analytic_grad(x, y) g_num = numeric_grad(x, y) print("point", (x, y), "f", f(x, y)) print("formula grad", g) print("nudge grad", [round(t, 6) for t in g_num]) step = 0.1 x2, y2 = add([x, y], scale(-step, g)) print("after downhill", (x2, y2), "f", f(x2, y2)) x3, y3 = add([x, y], scale(step, g)) print("after uphill ", (x3, y3), "f", f(x3, y3))
Run to execute this in your browser. Nothing is sent to a server.