我试图绘制函数:log(y-x ^ 2)。
我尝试了一些类似的事情:
clf()
x=-10:0.001:10
y=x
y(find(y <= x.^2)) = %nan
plot3d(x, y, log(y-x.^2))
但它没有用。
我还搜索了如何定义一个集合,但没有找到真正的结果。
如果你知道我做错了什么,或者我如何用一个函数来定义一个集合,那对我有很大帮助。
感谢。
答案 0 :(得分:1)
如果我的意图正确,你想绘制一个表面&#34;。要做到这一点(以一种方式),您需要定义均匀间隔的网格。最简单的方法是使用ndgrid
。然后你计算&#34;表面&#34;这个网格上方的点。
请尝试以下代码:
clf()
x=-10:0.5:10;
y=x;
[xx,yy]=ndgrid(x,y); //grid coordinates
M=yy-xx.^2; //the surface points
M(find(M==0))=%nan; //kill 0s to avoid log singularity
plot3d(x,y,log(M));
避免奇点的另一种可能方法是定义x这样的方式,即M永远不会变为零,例如:
x=-10:0.51:10;
这样你就不会有'#34;漏洞&#34;在你的表面。