Plot 3D of coinstraned optimization

Good evening, for my thesis I should make a 3d plot in which I want something similar to this:
I have a function f(x,y)=x^2-2*x+1+y^2 subject to constraints g(x,y)=x^4+y^4-1.
I'm interested only in the plot.

 Accepted Answer

Use this,
[X,Y]=ndgrid(linspace(-2,2,500));
G=X.^4+Y.^4;
cm = contourf(X,Y,G,1); close
[~, cA] = getContourLineCoordinates(cm);
f=@(x,y)x.^2-2*x+1+y.^2;
fsurf(f,[-4,4],'FaceColor','b','FaceAlpha',0.3,'EdgeColor','none'); hold on
for i=1:numel(cA)
x=cA{i}(:,1);
y=cA{i}(:,2);
z=f(x,y);
line(x,y,z,'COlor','r','LineWidth',2)
end
hold off
xlabel X; ylabel Y; view(150,-2)

3 Comments

it was exactly what I wanted. But I get this error:
Unrecognized function or variable 'getContourLineCoordinates'.
Matt J
Matt J on 12 Apr 2022
Edited: Matt J on 12 Apr 2022
Because you didn't download it from the link I gave you.
Ah ok, I'm new in Matlab, thanks a lot.

Sign in to comment.

More Answers (1)

x=-2:0.01:2;
y=-2:0.01:2;
[X,Y] = meshgrid(x,y);
Z = X.^2-2*X+1+Y.^2;
xx=-1:0.01:1;
yy=-1:0.01:1;
y1 = (1-xx.^4).^(0.25);
y2 = -(1-xx.^4).^(0.25);
z1 = xx.^2-2*xx+1+y1.^2;
z2 = xx.^2-2*xx+1+y2.^2;
surf(X,Y,Z)
hold on
plot3(xx,y1,z1,'Linewidth',4,'Color','red')
hold on
plot3(xx,y2,z2,'Linewidth',4,'Color','red')
view([2,2,4])

Categories

Find more on Labels and Styling in Help Center and File Exchange

Products

Release

R2021a

Tags

Community Treasure Hunt

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

Start Hunting!