当试图在Scilab中绘制函数时,会遇到奇怪的日志问题

时间:2015-04-03 07:57:03

标签: 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))

但它没有用。

我还搜索了如何定义一个集合,但没有找到真正的结果。

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

感谢。

1 个答案:

答案 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;在你的表面。