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:

 Respuesta aceptada

Image Analyst
Image Analyst el 25 de Abr. de 2021
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 comentarios

Saba Asanidze
Saba Asanidze el 25 de Abr. de 2021
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.
Image Analyst
Image Analyst el 25 de Abr. de 2021
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.
Walter Roberson
Walter Roberson el 25 de Abr. de 2021
fminsearch only ever returns one location per call. If you call it with different initial values it may return a different location.

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 25 de Abr. de 2021

Comentada:

el 25 de Abr. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by