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:

 채택된 답변

Image Analyst
Image Analyst 2021년 4월 25일

0 개 추천

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

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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Line Plots에 대해 자세히 알아보기

질문:

2021년 4월 25일

댓글:

2021년 4월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by