Mathematica中参数评估的差异:Plot vs. PlotLog

时间:2013-04-07 10:19:37

标签: wolfram-mathematica

我似乎无法理解Mathematica中PlotPlotLog(以及其他对数比例绘图函数)的行为之间的区别。假设我有这个简单的功能:

f [a_] := Length[Range[0, a]]

现在正在运行Plot[f[x], {x, 1, 10}]会产生正确的图表,但是当我尝试

PlotLog[f[x], {x, 1, 10}]

我没有输出保存以下错误:

Range :: range:“Range [1,x]中的范围指定没有适当的边界。”

看起来x的评估被推迟,这使得无法从Range创建列表,但为什么在地球上只会记录缩放绘图函数,我该如何处理问题

1 个答案:

答案 0 :(得分:1)

PlotLog不存在。如果您使用LogPlot,它将正常运行。

无论如何,您可能会遇到该定义的问题。我建议将f定义为f2[a_Real] := Length[Range[0, a]]f3[a_?NumericQ] := Length[Range[0, a]],这样只会将数字传递给Range。

例如,根据您的定义,这将失败:

NIntegrate[f[x], {x, 1, 10}]
During evaluation of In[43]:= Range::range: Range specification in Range[0,x] does not have appropriate bounds. >>
18.

但是将a定义为NumericQ或Real,它将起作用。

NIntegrate[f2[x],{x,1,10}]
54.

问候。