具有约束的 Matlab 3D 绘图



我想绘制这样的东西:

3*x*y

带约束

x^2

+y^2=8

在 Matlab 中,所以它应该看起来像这样:

http://www.wolframalpha.com/input/?i=maximize+3xy+on+x%C2%B2%2By%C2%B2%3D8

有什么想法吗?

我试过了

ezsurf(@(x,y)3*x.*y)
hold
fimplicit(@(x,y)x.^2+y.^2-8)

但结果很糟糕,线图不遵循表面

我做到了!

a=@(x,y)3*x.*y
b=@(x,y)x.^2+y.^2-8
constpl(a,b)

constpl 是我自己定义的函数

function constpl(fun,constraint)
a=fimplicit(constraint);
x=a.XData;
y=a.YData;
z=fun(x,y);
ind=z>=max(z)-0.000001;
x1=x(ind);
y1=y(ind);
z1=z(ind);
ezmesh(fun);
hold on
plot3(x,y,z,'r','LineWidth',2)
scatter3(x1,y1,z1,'rd','LineWidth',3)
hold off
end

最新更新