奇怪的Mathematica剧情行为

时间:2012-06-12 14:38:51

标签: wolfram-mathematica

运行命令时:

Plot[1/x, {x, 0, 10}]

我得到非常奇怪的输出:
enter image description here
不仅如此,而且在运行时

Plot[1/x, {x, 0, 1000}, Mesh -> All]


哪个标记它产生的点之间的线,给我这个:
enter image description here
请注意1000在这里 - 而不是10
在阅读了Mathematica关于Plot的解释之后 - 它说如果函数快速变化它会产生更多的点数。函数1/x变化非常慢 - 我认为Mathematica不是足够的代数 - 但是使用Mesh -> All我表明它是不正确的。

有没有人遇到这种奇怪的行为?任何人都可以向我解释是什么导致这种情况,以及如何解决?

P.S:这不是唯一能产生不良输出的功能 - 实际上很常见。
P.P.S:我尝试过玩MaxRecursionWorkingPresicion - 但没有用。

编辑:我只是注意到X轴不是0 - 如果你看第一张图,你会看到0.4作为最后一个数字,{{1} } 它上面。 X轴实际上是0.6!所以问题可能是:为什么X轴在0.2而不是0.2

3 个答案:

答案 0 :(得分:3)

我在你的第一个情节中没有看到任何奇怪的东西,我看到了双曲线图。 Mathematica甚至非常友好地忽略了您评估1/0的尝试。

在你的第二个情节中,我认为你期望Mathematica沿着它绘制的线绘制1000点?你给它多少像素在x方向上绘制那1000个点?我认为你所看到的是大多数基于计算机的绘图常见的人工制品:要求1000个点(可能)250像素,并且必须给出一些东西。或许我不明白为什么你担心输出。

最后,你问:为什么X轴为0.2而不是0

答案是Mathematica决定图表看起来很好。如果要强制x轴在0处穿过y轴,请使用AxesOrigin命令中的Plot选项。

答案 1 :(得分:3)

嗯,妈妈只是想要善待。如果输入Plot[1/x, {x, 0, 10}, PlotRange -> All, PlotStyle -> Thick],您将获得正确的绘图范围,但由于它是无穷大(对于y轴),因此该函数的其余部分基本上为零。所以你会看到一个“空”的情节,这更加不直观......

答案 2 :(得分:1)

您可以在DiscretePlot中找到价值:

DiscretePlot[1/x, {x, 0.5, 10, 0.2},
  PlotRange -> All, 
  AxesOrigin -> {0, 0}
]

Mathematica graphics

或添加选项Joined -> True并获取:

Mathematica graphics