使用 tikz 绘制 rad(sqrt(3*sin(deg(abs(2*\x)))) 到达 x 轴的位置

使用 tikz 绘制 rad(sqrt(3*sin(deg(abs(2*\x)))) 到达 x 轴的位置

我正在尝试策划平方根(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 即可,但必须是奇数。为什么?不知道。

相关内容