如何在 scilab 中绘制心脏曲线?

How plot heart curve in scilab?

我一直在论坛和程序帮助的图形函数中寻找如何绘制以下函数的图形:

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 

而且我还没有找到任何可以指导我的东西。 我尝试重现这个枫树情节: 心形曲线

既然你定义了一个3D表面,你可以使用contourcontour2d:正如所说,你可以直接将函数作为参数传递。

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

另一个解决方案是求解方程 (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);