MATLAB Answers

Plot multivariable function,can't get the plot right ?

조회 수: 1(최근 30일)
I need to plot a multivariable (x,y) function in matlab and find its critical points. I plotted it but can't seem to get the correct plot as shown in the picture.
[x,y] = meshgrid(-5:.2:5);
fa1 = gradient(f, 0.2, 0.2); % Derivative
zv = contour(x,y,fa1, [0; 0]); % Critical Points
hold on
plot3(zv(1,2:end), zv(2,2:end), zeros(1,size(zv,2)-1), 'r', 'LineWidth',2)
hold off

  댓글 수: 0

로그인 to comment.

채택된 답변

Are Mjaavatten
Are Mjaavatten 23 May 2019
The main problem with your plot is simply that the large values of f for y > 0.5 dwarf the variations at lower values. Changing the plotting range solves this problem, I also rotate the axes to make the graph more similar to the original.
[x,y] = meshgrid(-1.5:.1:1.5,-2:0.1:0.5);
xlabel x
ylabel y
The critical points are where both partial derivatives are zero. You can visually find one solution by plotting the zero contours for bot in the same graph:
[fa1,fa2] = gradient(f, 0.2, 0.2); % Derivative
contour(x,y,fa1, [0; 0]);
hold on;
contour(x,y,fa2, [0; 0]); % maximum where df/dx = df/dy = 0
grid on % we find one such point at (1,0]
hold off
You can also find analytical expressions for the partial derivatives and solve using fsolve from the optimization toolbox. Here I use an anonymous function J. z(1) is x and z(2) is y.
J = @(z) [3*exp(z(2))-3*z(1)^2;3*z(1)*exp(z(2))-3*exp(3*z(2))]
zc = fsolve(J,[2;0])

  댓글 수: 1

Huy Nguyen
Huy Nguyen 23 May 2019
Thank you so much kind sir

로그인 to comment.

More Answers (0)

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by