Plot multivariable function, find critical points

24 ビュー (過去 30 日間)
PJ
PJ 2018 年 1 月 18 日
コメント済み: Star Strider 2018 年 1 月 19 日
i need to plot a multivariable (x1,x2) function f_a in matlab, and find its critical points. I plotted it, but in order to find the critical points, i need to set the partial derivatives to zero then solve. when i try setting the partial derivatives to zero using diff(f_a,x1),it gives me an error.
[x1,x2] = meshgrid(-5:.2:5);
f_a = x1.^2 + x2.^2 +2.*x1.*x2;
figure(1)
surf(x1,x2,f_a)
fa1=diff(f_a,x1)

採用された回答

Star Strider
Star Strider 2018 年 1 月 18 日
Use the gradient function to calculate the derivative.
Try this:
[x1,x2] = meshgrid(-5:.2:5);
f_a = x1.^2 + x2.^2 +2.*x1.*x2;
fa1 = gradient(f_a, 0.2, 0.2); % Derivative
zv = contour(x1,x2,fa1, [0; 0]); % Critical Points
figure(1)
surf(x1,x2,f_a)
hold on
plot3(zv(1,2:end), zv(2,2:end), zeros(1,size(zv,2)-1), 'r', 'LineWidth',2)
hold off
  4 件のコメント
PJ
PJ 2018 年 1 月 19 日
I tried it for another function and i'm not sure if it is giving me correct figures because there seems to be 3 red lines as contour lines, and I added another contour plot and found the critical points after, but the contour plot of figure 2 did not match the red lines of figure 1. I'm sure this is repetitive, but could you please take a look:
[x1,x2] = meshgrid(-5:.2:5);
f_c = x1.^4 + x2.^4 +1 -x1.^2+x2.^2;
figure(1)
surf(x1,x2,f_c)
[fc1,fc2] = gradient(f_c,0.2,0.2); %what do the 0.2s represent?
zv = contour(x1,x2,fc1, [0; 0]); %what do the 0s represent?
figure(1)
surf(x1,x2,f_c)
hold on
plot3(zv(1,2:end), zv(2,2:end), zeros(1,size(zv,2)-1), 'r', 'LineWidth',2 )
hold off
figure (2)
contour(x1,x2,f_c)
hold on
quiver(x1,x2,fc1,fc2)
hold off
syms x1 x2
fc1=diff(x1.^4 + x2.^4 +1 -x1.^2+x2.^2,x1);
fc2=diff(x1.^4 + x2.^4 +1 -x1.^2+x2.^2,x2);
[x1cr,x2cr]=solve(fc1,fc2);
critical_points=[x1cr,x2cr]
Star Strider
Star Strider 2018 年 1 月 19 日
‘what do the 0.2s represent?’
They are the differences between the consecutive values of the meshgrid values in each direction.
‘what do the 0s represent?’
They specify that I want the contour function to trace out and return only the contours at 0.
I cannot follow what you are doing in the code you posted.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSurface and Mesh Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by