gpt4 book ai didi

wolfram-mathematica - Mathematica 中的奇怪 Sin[x] 图

转载 作者:行者123 更新时间:2023-12-03 07:48:52 25 4
gpt4 key购买 nike

我在 Mathematica 7 中随机绘制了一个 Sin[x] 函数,它显示如下:

/image/hizGw.png

注意大约 x = -100 处的可见缺陷。

这是缺陷部分的放大图,清楚地表明 Mathematica 由于某种原因在这些点之间使用了低得多的分辨率:

mesh

有人知道为什么会发生这种情况以及为什么只在 x = -100 时发生?

注意:同样的情况发生在 Wolfram Alpha 中顺便说一下。

最佳答案

简短回答:默认绘图精度不足以满足该函数的需要,因此请按如下方式增加它

Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100]

长答案:Plot 的工作原理是在一组有限的点上评估函数,并用直线连接这些点。您可以使用以下命令查看 Plot 使用的点

Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, PlotStyle -> None, 
MeshStyle -> Black]

plot

您可以看到,对于您的函数,计算函数的点“错过了峰值”并引入了较大的近似误差。用于选取点位置的算法非常简单,当两个峰值的间距比 PlotRange/PlotPoints 更近时,可能会发生这种情况。

Plot 从 50 个等距点开始,然后在最多 MaxRecursion 阶段中插入额外的点。如果您针对 MaxRecursion 的各种设置绘制区域,您可以看到这个“洞”是如何出现的。

plot1 = Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100, 
PlotStyle -> LightGray];
Table[plot2 =
Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, MeshStyle -> Thick,
PlotStyle -> Red, MaxRecursion -> k];
Show[plot1, plot2, PlotRange -> {{-110, -90}, {-1, 1}},
PlotLabel -> ("MaxRecursion " <> ToString[k])], {k, 0,
5}] // GraphicsColumn

plot

根据 Stan Wagon 的 Mathematica 书籍,如果两条新线段之间的角度超过 5 度,Plot 会决定是否在两个连续点之间添加一个额外的点。在这种情况下,绘图的初始点定位很不幸,并且分割不符合该标准。您可以看到,在孔的中心插入单个评估点将产生几乎相同的绘图。

通过使用Refinement选项来增加用于决定何时分割的角度的方法(我从书中得到它,但它似乎没有记录在产品中)

plot1 = Plot[Sin[x], {x, -42 Pi, 42 Pi}, PlotPoints -> 100, 
PlotStyle -> LightGray];
Show[plot1,
Plot[Sin[x], {x, -42 Pi, 42 Pi}, Mesh -> All, MeshStyle -> Thick,
PlotStyle -> Red, MaxRecursion -> 3,
Method -> {Refinement -> {ControlValue -> 4 \[Degree]}}],
PlotRange -> {{-110, -90}, {-1, 1}}]

在这里您可以看到,将默认值 5 度增加 1 度即可修复该漏洞。

plot

关于wolfram-mathematica - Mathematica 中的奇怪 Sin[x] 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com