Je veux calculer le gradient de la fonction suivante h(x) = 0,5 x.T * A * x + b.T + x.
Pour l'instant, j'ai défini A comme étant juste une matrice (2,2).
def function(x):
return 0.5 * np.dot(np.dot(np.transpose(x), A), x) + np.dot(np.transpose(b), x)
donde
A = A = np.zeros((2, 2))
n = A.shape[0]
A[range(n), range(n)] = 1
une matrice (2,2) dont la diagonale principale est 1 et
b = np.ones(2)
Pour un point donné x = (1,1) numpy.gradient retourne une liste vide.
x = np.ones(2)
result = np.gradient(function(x))
Cependant, je ne devrais pas obtenir quelque chose comme : grad(f((1,1)) = (x1 + 1, x2 + 1) = (2, 2).
J'apprécie toute aide.