我正在尝试策划平方根(3*sin|2x|)它应该看起来像下图,还有其他几个类似的图要绘制,但我的图没有达到 x 轴。在我将 sqrt 添加到函数之前,绘图效果很好。
这是我的代码和结果:
\begin{tikzpicture}
\begin{axis}[
domain=-10:10,
xmin=-5, xmax=5,
samples=1000,
axis lines=center,
xtick distance=1.5,
ytick=\empty,
xlabel=$x$,
ylabel=$y$,
xtick={-4.5,-3,-1.5,1.5,3,4.5},xticklabels={$-\frac{3\pi}{2}$,$-\pi$,$-\frac{\pi}{2}$,$\frac{\pi}
{2}$,$\pi$,$\frac{\pi}{2}$}
]
\addplot[mark=none, black] {rad(sqrt(3*sin(deg(abs(2*\x)))))};
\addplot[mark=none, black] {rad(-sqrt(3*sin(deg(abs(2*\x)))))};
\end{axis}
\end{tikzpicture}
我尝试通过增加样本来解决这个问题,但增加到 10000 也没用。它离 x 轴更近了,但并没有与它连接,运行时会因为更高的样本而导致超时。
答案1
我不明白您的比例,所以我在那里做了一些更改。我认为问题在于样本数量,正如您所期望的那样。以下代码对我来说运行良好,但如果我输入的样本少于 4000 个,但如果我输入偶数个样本,当函数取值为零时,我可以看到间隙。但是,编译需要一些时间。
另外几件事。我将图分成几个部分以避免正弦负值,我认为你rad
不需要addplot
。
\documentclass{standalone}
\usepackage {pgfplots}
\pgfplotsset {compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
domain=-2:2,
xmin=-2, xmax=2,
ymin=-2.5, ymax=2.5,
samples=101,
axis lines=center,
ytick=\empty,
xlabel=$x$,
ylabel=$y$,
xtick={-1.5,-1,...,1.5},
xticklabels={$-\frac{3\pi}{2}$,$-\pi$,$-\frac{\pi}{2}$,$\frac{\pi}{2}$,$\pi$,$\frac{\pi}{2}$,$\frac{3\pi}{2}$}
]
\foreach\i in{-1.5,-0.5,0,1}
{
\addplot[mark=none, red, domain=\i:\i+0.5] {sqrt(3*sin(deg(abs(2*pi*x))))};
\addplot[mark=none, red, domain=\i:\i+0.5] {-sqrt(3*sin(deg(abs(2*pi*x))))};
}
\addplot[mark=none, red] coordinates {(1.25,2)} node {$y^2=3\sin|2x|$};
\end{axis}
\end{tikzpicture}
\end{document}
编辑1ifthen
:我删除了不需要的包(复制粘贴错误)。
编辑2:我更改了样本数量。仅 101 即可,但必须是奇数。为什么?不知道。