I am trying to run fmincon and i get this error:
'Input arguments to function include colon operator.
To input the colon character, use ':' instead.'
I cannot understand why I get this error.
My code is below.
Anyone any ideas? Thank you.
% code
low_b = zeros(size(param));options = optimoptions('fmincon', ... 'Algorithm','interior-point', ... 'DerivativeCheck', 'on',... 'GradObj', 'on',... 'HessFcn', @hessfh, ... 'Hessian', 'user-supplied',... 'Display','final');[xfinal,fval,exitflag,output] = fmincon(@fh,[0.1;0.1],[],[],[],[],low_b,[],[],options); % code
function [f,gradfh]=fh(param)syms param1 param2 realparam=[param1;param2];f3 =((191352748222723/(7128637342969177/1125899906842624)^((param1 - 1)/param1)/(7128637342969177/1125899906842624)^(1/param1))/9511602413006487552 + ((2733703199318633/70368744177664 - param2)^(1 - param1)*(2733703199318633/70368744177664 - param2)^param1)/(561*(param2 - 2733703199318633/70368744177664)))^2 + (log(2733703199318633/70368744177664 - param2)/561 + 2074186557694359/(1125899906842624*param1) - log(-(param2 - 2733703199318633/70368744177664)*(2733703199318633/70368744177664 - param2)^param1)/(2733703199318633/70368744177664 - param2)^param1)^2 f = matlabFunction(f3,'vars',{param});gradf3 = jacobian(f3,param).';gradfh = matlabFunction(gradf3,'vars',{param});end % codefunction hessf=hessfh(param)syms param1 param2 realparam=[param1;param2]f3 =((191352748222723/(7128637342969177/1125899906842624)^((param1 - 1)/param1)/(7128637342969177/1125899906842624)^(1/param1))/9511602413006487552 + ((2733703199318633/70368744177664 - param2)^(1 - param1)*(2733703199318633/70368744177664 - param2)^param1)/(561*(param2 - 2733703199318633/70368744177664)))^2 + (log(2733703199318633/70368744177664 - param2)/561 + 2074186557694359/(1125899906842624*param1) - log(-(param2 - 2733703199318633/70368744177664)*(2733703199318633/70368744177664 - param2)^param1)/(2733703199318633/70368744177664 - param2)^param1)^2 gradf3 = jacobian(f3,param).';hessf3 = jacobian(gradf3,param);hessf = matlabFunction(hessf3,'vars',{param});end
Best Answer