Finding all existing minimums of a function

I have this function:
I need to find all existing minimums of this function using fminsearch and also draw a 3D plot with minimum points highlighted on it.
What I've tried so far:
fun2 = @(x,y)x^4+y^4-2*x^2+4*x*y-2*y^2+1
x = fminsearch(@(v) fun2(v(1),v(2)),[-5,-5])
figure
[X, Y] = meshgrid(-2:0.1:2);
surf(X,Y,fun2(X,Y));
Result doesn't seem right:

 Accepted Answer

If you're going to pass in matrices for x and y, like X and Y from the output of meshgrid, you're going to have to use dots in the operators in your function:
fun2 = @(x,y) x .^ 4 + y .^ 4 - 2 * x .^ 2 + 4 * x .* y - 2 * y .^2 + 1;

3 Comments

Thank you, now plot looks good but how do I get all the minimums of my function? Right now fminsearch gives me only one point (-1.4142,1.4142) but according to Wolfram point (1.4142,-1.4142) is also a minimum.
I don't know. If it were me, I'd do it numerically. I'd evaluate the function everywhere, like between -2 and 2 or -5 and 5 or whatever you want, and then use imregionalmin() in the Image Processing Toolbox to find the local min locations.
fminsearch only ever returns one location per call. If you call it with different initial values it may return a different location.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!