finding max and min of function graph
1 次查看(过去 30 天)
显示 更早的评论
Having trouble with last part of code: finding max and min. here is my code:
x = -10:1:10;
y = x;
[xGrid,yGrid] = meshgrid(x,y);
z = (1./((xGrid+3).^2 + (yGrid-1).^2 + 2)) + ((xGrid-yGrid) ./ ((xGrid-1) .^2 + (yGrid-2) .^2 + 4));
subplot(2,2,1)
surf(x,y,z)
title('Isometric View')
xlabel('X')
ylabel('Y')
zlabel('Z')
subplot(2,2,2)
surf(x,y,z)
az=0;
el=90;
view(az,el)
title('View Normal to X-Y Plane')
xlabel('X')
ylabel('Y')
zlabel('Z')
subplot(2,2,3)
surf(x,y,z)
view(0,0)
title('View Normal to X-Z Plane')
xlabel('X')
ylabel('Y')
zlabel('Z')
subplot(2,2,4)
surf(x,y,z)
az=90;
el=0;
view(az,el)
title('View Normal to Y-Z Plane')
xlabel('X')
ylabel('Y')
zlabel('Z')
NegFunction = @(x)(1./((x+3).^2 + (y-1).^2 + 2)) + ((x-y) ./ ((x-1) .^2 + (y-2) .^2 + 4));
[xyMaxVector,zMax] = fminsearch(NegFunction,[0,3]);
xMax = xyMaxVector(1);
yMax = xyMaxVector(2);
fprintf('The Max Value was: z(%6.3f,%6.3f) = %2.0f\n',xMax,yMax,-zMax)
回答(1 个)
Naga
2025-4-7
Hello Joseph,
It seems you're trying to find the maximum and minimum values of a function on a grid. While you've set up the plots and attempted to find the maximum using 'fminsearch' on the negative of the function, there are a couple of issues:
- The 'NegFunction' uses x and y, which are vectors, instead of defining a function that takes a single vector input [x, y]. This needs to be corrected.
- You only attempted to find the maximum using the negative of the function. You should also find the minimum directly using 'fminsearch'.
I made the suggested changes in the code below:
x = -10:1:10;
y = x;
[xGrid, yGrid] = meshgrid(x, y);
z = (1 ./ ((xGrid + 3).^2 + (yGrid - 1).^2 + 2)) + ((xGrid - yGrid) ./ ((xGrid - 1).^2 + (yGrid - 2).^2 + 4));
% Function for optimization
Function = @(v) -(1 ./ ((v(1) + 3).^2 + (v(2) - 1).^2 + 2)) - ((v(1) - v(2)) ./ ((v(1) - 1).^2 + (v(2) - 2).^2 + 4));
% Finding maximum
[xyMaxVector, negZMax] = fminsearch(Function, [0, 3]);
xMax = xyMaxVector(1);
yMax = xyMaxVector(2);
zMax = -negZMax; % Since we minimized the negative
% Finding minimum
FunctionMin = @(v) (1 ./ ((v(1) + 3).^2 + (v(2) - 1).^2 + 2)) + ((v(1) - v(2)) ./ ((v(1) - 1).^2 + (v(2) - 2).^2 + 4));
[xyMinVector, zMin] = fminsearch(FunctionMin, [0, 3]);
xMin = xyMinVector(1);
yMin = xyMinVector(2);
fprintf('The Max Value was: z(%6.3f,%6.3f) = %6.3f\n', xMax, yMax, zMax)
fprintf('The Min Value was: z(%6.3f,%6.3f) = %6.3f\n', xMin, yMin, zMin)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!