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