Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plot 具有奇点的等位线/等高线图_Plot_Gnuplot_Singular - Fatal编程技术网

Plot 具有奇点的等位线/等高线图

Plot 具有奇点的等位线/等高线图,plot,gnuplot,singular,Plot,Gnuplot,Singular,我很难在gnuplot中创建具有等势线的绘图。以下是我到目前为止得到的信息: f(x,y) = atan(y/(x+d)) d = 1.0 set view map set isosamples 127, 127 unset surface set contour base set cntrparam levels discrete pi/4.0 set xrange [ -2.0 : 2.0 ] noreverse nowriteback set yrange [ -2.0 : 2.0

我很难在gnuplot中创建具有等势线的绘图。以下是我到目前为止得到的信息:

f(x,y) = atan(y/(x+d))
d = 1.0

set view map
set isosamples 127, 127
unset surface 
set contour base
set cntrparam levels discrete pi/4.0

set xrange [ -2.0 : 2.0 ] noreverse nowriteback
set yrange [ -2.0 : 2.0 ] noreverse nowriteback

splot f(x,y) w l
它似乎工作得很好,您可以看到坡度为45°的线条,除了
x=-1处的线条:

我认为这是因为
atan
的论点中的奇异性。在我的最后一个情节中,甚至有更多类似的奇点,但类似的线条并不适合它

另一件事:这些线应该穿过
[-1,0]
,但是你可以清楚地看到线上有一个洞。我怎样才能得到一个没有洞和错误线的干净的图呢

  • 我如何处理这个问题
  • 如果没有,也许还有另一种绘制等电位线的方法
  • 作为最后一个解决方案,如果gnuplot不能做到这一点,您有什么建议

  • 谢谢:)

    您可以尝试:
    设置样本125
    设置isosamples 125,125
    以包括奇点。这条线将分成两部分。这对我不起作用。但是看起来,作为第一种解决方法,我可以将
    set samples
    set isosamples
    与一个分段定义的函数相结合,比如
    f(x)=abs(x+d)>1e-2?atan(y/(x+d)):NaN
    。然后我仍然得到一些奇怪的洞,但至少这些人造线条消失了。。。仍然在寻找解决方案,而不是解决方法:)我承认这很有趣,您可以尝试使用
    atan2()
    而不是
    atan()
    arg(x+d+y*{0,1})
    ,但我似乎错过了一些东西。也许这会对你有帮助。我期待看到解决方案。您可以尝试:
    set samples 125
    set isosamples 125,125
    以包括奇点。这条线将分成两部分。这对我不起作用。但是看起来,作为第一种解决方法,我可以将
    set samples
    set isosamples
    与一个分段定义的函数相结合,比如
    f(x)=abs(x+d)>1e-2?atan(y/(x+d)):NaN
    。然后我仍然得到一些奇怪的洞,但至少这些人造线条消失了。。。仍然在寻找解决方案,而不是解决方法:)我承认这很有趣,您可以尝试使用
    atan2()
    而不是
    atan()
    arg(x+d+y*{0,1})
    ,但我似乎错过了一些东西。也许这会对你有帮助。我期待着看到解决办法。