Ответ 1
Короткий ответ: точность построения по умолчанию недостаточно для этой функции, поэтому увеличьте ее следующим образом
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]
Вы можете видеть, что для вашей функции точки, где функция была оценена, "пропустили пик" и представили большую ошибку приближения. Алгоритм, используемый для определения местоположения точек, очень прост, и эта ситуация может возникнуть, когда два пика расположены более близко друг к другу, чем 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
Согласно книге Stan Wagon Mathematica, Plot
решает, добавить ли дополнительную точку на полпути между двумя последовательными точками, если угол между двумя новыми сегментами линии будет больше 5 градусов. В этом случае сюжет не повезло с начальным позиционированием точки, а подразделение не соответствует этому критерию. Вы можете видеть, что вставка одной точки оценки в центр отверстия приведет к почти идентично выглядящему сюжету.
Способ увеличения угла, используемого для определения того, когда нужно разделить, используя опцию 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}}]
Здесь вы можете увидеть, что увеличение его на 1 градус по умолчанию 5 фиксирует отверстие.