所以我一直在学习GNUplot,一直困扰我的是样本和等样本率(尤其是在计算Ackermann函数时)。我知道isosample rate应该控制等值线的数量,而另一个则对每个等值线的采样做同样的事情。
此代码绘制了ackermann函数(来源:gnuplot sourceforge)。为什么只有一些特定的样本值和等值样本会生成图?唯一有效的其他值是(4,2)和(2,4)。对于剩余的值,我得到了堆栈溢出或超出递归深度限制。
/** Send email with the specified @paramref body to the addesses given in @paramref to.
@param body Just a plain text or teamplate-aware text.*/
def SendEmail(body: EmailBody, to: EmailAddress*) = ???
有人可以解释为什么只有(4,4),(4,2),(2,4)有效吗?
答案 0 :(得分:0)
这里有两个问题:
如上面的评论所述,您无法评估非整数值的Ackermann函数。如果您的samples
/ isosamples
值与xrange
/ yrange
的长度不完全匹配,那么gnuplot将尝试以非整数值评估函数。您可以通过显式转换为整数来避免这种情况:
ack(m,n) = (m == 0) ? n + 1 : (n == 0) ? ack(m-1,1) : ack(m-1,ack(m,n-1))
ack_protected(x,y) = ack(int(x),int(y))
set xrange [0:3]
set yrange [0:3]
set isosamples 50
set samples 50
set title "Plot of the ackermann function"
splot ack_protected(x, y)
给出