문제 15 · 실습 — 최대 증가 방향 (그래디언트)
python
import numpy as np
u = lambda x, y: x / (x**2 + y**2)
p = np.array([1., 1.])
eps = 1e-6
grad = []
for i in range(2):
e = np.zeros(2); e[i] = eps
grad.append((u(*(p + e)) - u(*(p - e))) / (2*eps))
grad = np.array(grad)
print("∇u(1,1) =", np.round(grad, 6)) # (0, -0.5)
print("단위 증가방향 =", np.round(grad / np.linalg.norm(grad), 6)) # (0, -1)