尝试在 Scilab 中绘制函数时出现日志奇异性问题

Troubles with singularity of log when trying to plot a function in Scilab

我正在尝试绘制函数: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))

但是没用。

我也搜索过如何定义集合,但没有找到真正的结果。

如果你知道我做错了什么或者我如何定义一个带有函数的集合,那将对我有很大帮助。

谢谢。

如果我没看错你的意图,你想绘制一个"surface"。为此(以一种方式),您需要定义一个均匀分布的网格。最简单的方法是使用 ndgrid。然后计算此网格上方的 "surface" 个点。 试试下面的代码:

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;

这样你的表面就不会"holes"了。