x = sym('x', [2,1]);
f = x(1)^2+2*x(2)^2
g = gradient(f)
 
% g = [diff(f, x(1)); diff(f,x(2))]
 
x = [1;1]
 
f_X = subs(f, {x(1), x(2)}, X)
 
g_X = subs(g, {x(1), x(2)}, X)
 
d = -g_X %najprostsza wersja spadku
 
a = sym('a') %alfa
 
g_fun = subs(f, {x(1), x(2)}, X+a*d)
g_fun_a = subs(g_fun, a, 1) % liczymy jaka bedzie wartosc funkcji g dla przesuniecia 1 
 
H = hessian(f)  % hesian
 
inv(H) % odwrotnosc hesianu