在Matlab上绘制问题如何绘制?

在Matlab上绘制问题如何绘制?,matlab,Matlab,我试图绘制f(x,y)=y^4-2xy^2+x^3-x在[-5,4]x[-3,3]上的水平曲线,但我被卡住了。这是我的代码,我应该如何继续 我的代码: x = linspace(-5, 4, 25); y = linspace(-3, 3, 25); [X,Y] = meshgrid(x,y); z = @(x,y) y.^4-2*x*y.^2+x^3-x; Z = z(X,Y); surf(X,Y,Z) 你可以这样做: clear x = linspace(-5, 4, 25); y =

我试图绘制f(x,y)=y^4-2xy^2+x^3-x在[-5,4]x[-3,3]上的水平曲线,但我被卡住了。这是我的代码,我应该如何继续

我的代码:

x = linspace(-5, 4, 25);
y = linspace(-3, 3, 25);
[X,Y] = meshgrid(x,y);
z = @(x,y) y.^4-2*x*y.^2+x^3-x;
Z = z(X,Y);
surf(X,Y,Z)

你可以这样做:

clear

x = linspace(-5, 4, 25);
y = linspace(-3, 3, 25);
[X,Y] = meshgrid(x,y);
z = @(x,y) y.^4-2.*x.*y.^2+x.^3-x;
Z = z(X,Y);

% Probing some line parallel to the x axis:
y_probe = 0;

% Probing a point to calculate the gradient in:
x_probe = -3;

% Getting all points for which x = x_probe:
z_probe = z(x, y_probe);
% Compute the gradient:
dx = gradient(x);
dz = gradient(z_probe);
dzdx = dz./dx;

clf
subplot(121)
surf(X,Y,Z)
hold on
plot3(x, ones(1,length(y)) .* y_probe, z_probe ,'r','linewidth',2)

subplot(122)
plot(x, z_probe,'r','linewidth',1)
hold on
xi = find(x > x_probe, 1);

plot(x, dzdx(xi) .* (x - x(xi)) + z_probe(xi),'k--','linewidth',1);
h = quiver(x(xi), z_probe(xi), -dx(xi), dz(xi),'k','LineWidth',2);

xlim([min(x) max(x)])
ylim([min(z_probe) max(z_probe)])
要获得:

我想你应该先解释一下什么是等额曲线。维基告诉我这是经济学中的一个概念。附着的代码将打印三维网格(surf)。你还想画什么?@liorr:没错,这是经济学中的一个概念,但它就像一条普通的水平曲线,我应该显示曲线上的梯度,但我不能,尽管我试过了。你能附加/链接到一个例子来显示你想做什么吗?应该是这样的(这是不同的函数,不一样)还有一个问题:你是指
z=@(x,y)y.^4-2*x*y.^2+x^3-x
还是
z=@(x,y)y.^4-2.*x*y.^2+x.^3-x
?(注意乘积和指数运算符之间的点)。先生。。非常抱歉,我不明白发生了什么:是的,我又编辑了一次。非常感谢你的努力。愿上帝保佑你