36 lines
1.0 KiB
Matlab

% Given environment
clear;
% Setup the function under test
syms x [2 1] real;
fexpr = (1/3)*x(1)^2 +3*x(2)^2;
title_fun = "$f(x) = \frac{1}{3}{x_1}^2 + 3{x_2}^2$";
XSetLimmits = [-10, 5 ; -8, 12];
% Calculate the gradient and Hessian
grad_fexpr = gradient(fexpr, x); % Gradient of f
hessian_fexpr = hessian(fexpr, x); % Hessian of f
% Convert symbolic expressions to MATLAB functions
fun = matlabFunction(fexpr, 'Vars', {x}); % Function
grad_fun = matlabFunction(grad_fexpr, 'Vars', {x}); % Gradient
hessian_fun = matlabFunction(hessian_fexpr, 'Vars', {x}); % Hessian
% Minimum reference
[Xmin, Fmin] = fminsearch(fun, [-1, -1]');
Xmin = round(Xmin, 3);
Fmin = round(Fmin, 3);
% Amijo globals
global amijo_beta; % Step reduction factor in [0.1, 0.5] (typical range: [0.1, 0.8])
global amijo_sigma; % Sufficient decrease constant in [1e-5, 0.1] (typical range: [0.01, 0.3])
%fixed step size globals
global gamma_fixed_step
global image_width,
global image_height;
image_width = 960;
image_height = 640;