0

运行命令时:

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

我得到非常奇怪的输出:
在此处输入图像描述
不仅如此,而且在运行时

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


哪个应该标记它产生之间的线的点,给我这个:
在此处输入图像描述
请注意它1000在这里 - 不是10
在阅读了 Mathematica 的解释后Plot,它说如果函数快速变化,它会产生更多的点。该函数1/x的变化非常缓慢 - 我虽然 Mathematica 没有生成足够的点 - 但使用Mesh -> All我表明它是不正确的。

有没有人遇到过这种奇怪的行为?谁能向我解释一下是什么原因造成的,如何解决?



PS:这不是唯一会产生不良输出的功能 - 它实际上很常见。 PPS:我试着和-
一起玩,但没有帮助。 编辑:我刚刚注意到 X 轴不是 0 - 如果您查看第一张图,您将看到最后一个数字,并且在它上方。X轴实际上是!所以也许问题是:为什么X轴在而不是?MaxRecursionWorkingPresicion

0.40.60.20.20

4

3 回答 3

3

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

于 2012-06-12T15:08:44.197 回答
3

我在你的第一个情节中没有看到任何奇怪之处,我看到了双曲线图。Mathematica 甚至对您很好,忽略了您评估的尝试1/0

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

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

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

于 2012-06-12T14:51:30.933 回答
1

您可能会在以下方面找到价值DiscretePlot

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

数学图形

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

数学图形

于 2012-06-13T17:00:03.290 回答