我一直在寻找论坛和程序帮助中的图形功能,如何绘制以下功能:
x2=[-2:0.02:2]';x1=[-1:0.01:1]';
function val = Heart(x1, x2)
val=(1.2*x2-sqrt(abs(x1)))^2+x1^2-1;
endfunction
我没有找到任何指导我的东西。 我尝试重现这个枫图: 心脏曲线
答案 0 :(得分:1)
另一个解决方案是求解方程(1.2 * x2-sqrt(abs(x1)))^ 2 + x1 ^ 2-1 = c 对于x2 解决方案非常简单 一个人可以找到2个分支 X2 =(5/6)(SQRT(ABS(X1))+ SQRT(C + 1-X1 ^ 2)); 和 X2 =(5/6)(SQRT(ABS(X1)) - SQRT(C + 1-X1 ^ 2));
c=0;
x1=linspace(-1,1,200);
x1r=x1($:-1:1);
x2=(5/6)*[ (sqrt(abs(x1))+sqrt(c+1-x1^2)) (sqrt(abs(x1r))-sqrt(c+1- x1r^2))];
clf;plot([x1 x1r],x2);
答案 1 :(得分:0)
由于您定义了3D表面,因此可以使用contour
和contour2d
:如luispauloml所述,您可以直接将该函数作为参数传递。
x1=[-1:0.01:1]
x2=[-2:0.02:2]
function val = Heart(x1, x2)
val=(1.2*x2-sqrt(abs(x1))).^2+x1.^2-1; // switched ^ to .^ to handle vectors
endfunction;
figure()
xlabel('x1')
ylabel('x2')
contour2d(x1,x2,Heart,[0 0]);
a=gca()
hline=a.children.children(1)
hline.foreground=color('red')
hline.thickness=2