import numpy as np, matplotlib.pyplot as plt
f = lambda w: w**2; g = lambda w: 2*w; xs = np.linspace(-3, 3, 100)
fig, ax = plt.subplots(1, 3, figsize=(8, 2.2))
for a, (lr, ttl) in zip(ax, [(0.05, "η small → slow"), (0.6, "η good → fast"),
(1.02, "η too big → diverges")]):
w = 2.6; ws = [w]
for _ in range(14): w = w - lr*g(w); ws.append(w)
a.plot(xs, f(xs), "k", lw=1); a.plot(ws, [f(v) for v in ws], "o-", color="r", ms=3, lw=1)
a.set_title(ttl, fontsize=8); a.set_xticks([]); a.set_yticks([])
plt.tight_layout(); plt.show()