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

Plot 如何在scilab中绘制心脏曲线?,plot,scilab,maple,Plot,Scilab,Maple,我一直在论坛和程序帮助的图形功能中查找如何绘制以下功能: 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曲面后,可以使用轮廓和轮廓2D:如所述,可以将函数直接作为参数传递 x1=[-1:0.01:1] x2=[-2:0.02:2] fu

我一直在论坛和程序帮助的图形功能中查找如何绘制以下功能:

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曲面后,可以使用
轮廓
轮廓2D
:如所述,可以将函数直接作为参数传递

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))


您是否确实需要
xx1
xx2
?只做
x1=-1:0.01:1;x2=-2:0.02:2;轮廓2D(x1,x2,心脏[0])似乎工作正常。确实如此!我不明白为什么,因为帮助从未指定我们可以将函数作为参数传递,但这段代码要好得多!你应该提出一个答案。它确实允许它成为一个函数,你可能只是错过了“z:[…]一个定义曲面z=f(x,y)的Scilab函数”上的信息。此外,由于它是相同的解决方案,因此不需要新的答案。只要更新一下,你已经做了,就足够了。继续努力!
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);