roll66 发表于 2006-3-13 18:58

[求助]关于三维绘图问题

大家好,画三维图时遇到一个问题:<br>figure<br>x=3*pi*(-1:0.2:1);<br>y=x;<br>=meshgrid(x,y);<br>R=sqrt(X.^2+Y.^2);<br>Z=sin(R)./R;<br>meshz(X,Y,Z)<br>xlabel('x');<br>ylabel('y')<br>画出的图形:(图形粘不过来,)<br>matlab给出警告,说Divide by zero,<br><br>将程序改了后即加个eps,<br>figure<br>x=3*pi*(-1:0.2:1);<br>y=x;<br>=meshgrid(x,y);<br>R=sqrt(X.^2+Y.^2)+eps;<br>Z=sin(R)./R;<br>meshz(X,Y,Z)<br>xlabel('x');<br>ylabel('y')<br><br>但是,画出的图形跟上面的不一样了,为什么会这样呢?<br>遇到复杂的表达式,画图时怎样较好的避免分母为0的问题呢?<br><br><br><br><br><br>
[此贴子已经被aspen于2006-3-14 8:42:43编辑过]

happy 发表于 2006-3-14 08:47

回复:(roll66)[求助]关于三维绘图问题

出现被零除不是画图的问题,是计算的问题,因为你计算的R中存在0<BR><BR>第二个图是正确的

yqchenlolo 发表于 2006-3-14 09:42

回复:(roll66)[求助]关于三维绘图问题

<DIV class=quote><B>以下是引用<I>roll66</I>在2006-3-13 18:58:39的发言:</B><BR>大家好,画三维图时遇到一个问题:<BR>figure<BR>x=3*pi*(-1:0.2:1);<BR>y=x;<BR>=meshgrid(x,y);<BR>R=sqrt(X.^2+Y.^2);<BR>Z=sin(R)./R;<BR>meshz(X,Y,Z)<BR>xlabel('x');<BR>ylabel('y')<BR>画出的图形:(图形粘不过来,)<BR>matlab给出警告,说Divide by zero,<BR><BR>将程序改了后即加个eps,<BR>figure<BR>x=3*pi*(-1:0.2:1);<BR>y=x;<BR>=meshgrid(x,y);<BR>R=sqrt(X.^2+Y.^2)+eps;<BR>Z=sin(R)./R;<BR>meshz(X,Y,Z)<BR>xlabel('x');<BR>ylabel('y')<BR><BR>但是,画出的图形跟上面的不一样了,为什么会这样呢?<BR>遇到复杂的表达式,画图时怎样较好的避免分母为0的问题呢?<BR><BR><BR><BR><BR><BR><BR></DIV>
<P>实际上两个图不一样是第一个有一个被零除的点没画,而由于你把网格画的比较稀疏,<BR>所以影响就比较大,<BR>x=3*pi*(-1:0.2:1);你把这里的0.2改成0.02结果就一样了<BR>y=x;<BR>=meshgrid(x,y);<BR>R=sqrt(X.^2+Y.^2);<BR>Z=sin(R)./R;<BR>meshz(X,Y,Z)<BR>xlabel('x');<BR>ylabel('y')</P>

roll66 发表于 2006-3-14 23:15

<P>非常感谢,呵呵^_^ </P>

寻找鱼的水 发表于 2007-11-24 12:18

回复 #1 roll66 的帖子

其实不是图形问题
2楼正解
加了eps只是相应了移位了eps,避免被0除的情况
当点取得够密时就可以看到图形很相像,3楼正解
页: [1]
查看完整版本: [求助]关于三维绘图问题