MATLAB: How to find local and global minima of a 2D non continuous function

2dminimum

Hello,
I am currently trying to compute both local and global minimum of a two dimensional function. I already tried several methods but it seems that the function's definition I am using cannot be used here. The different MATLAB functions I use like imregionalmin, fminunc, GlobalSearch etc… return me wrong results (multiple global minima) that vary depending on the mesh size I use, or the starting point of the function. You can find below the function itself. I know from references and experiment that the result should be a unique global minima and one local minima. if true
b = pi;
A11 = 6.91;
D11 = 0.081;
D12 = 0.037;
D22 = 0.081;
R = 15;
fonc = @(x,y) (0.5*b*R).*(D11.*x.^2 + 2*D12.*x.*(y - 1/R) + D22.*(y - 1/R).^2)...
+ (0.5*A11).*(0.5*b*R.*(x./y).^2 + 0.5*sin(b*R*y)*(x.^2./y.^3) -...
4*(sin(0.5*b*R*y)).^2*(1/(b*R))*(x.^2./y.^4));
end

Best Answer

Thanks for your answer !
I understand what you mean by how I should define my numbers. I guess the best thing to do right now is to stick with floating point numbers to solve fonc. Using your method, I found the global minima (0, 1/15), which is relevant with the experiment I did. However, in order to fund the zeros of eqn, I am trying to use fzero function, with a lot of differents starting points located within (-0.05; 0.25) (interval of interest here) and I don't find the same results as yours.