1

我似乎无法理解 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,但是为什么它只会发生在对数比例绘图功能上,我该如何处理这个问题?

4

1 回答 1

1

PlotLog不存在。如果您使用LogPlot它将正常工作。

无论如何,您可能对该定义有疑问。我建议定义f类似f2[a_Real] := Length[Range[0, a]]f3[a_?NumericQ] := Length[Range[0, a]]所以只有数字将传递给范围。

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

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.

问候。

于 2013-04-07T14:11:00.447 回答