如何在 Tikz 中绘制正弦波?

如何在 Tikz 中绘制正弦波?

我对 LaTeX 和 Tikz 都是新手,正在探索生态系统的各个方面。在查找 Tikz 相关信息的过程中,我看到了以下回复:Tikz 中的正弦波

这有效,但我不明白它是如何工作的。有人能指点我或解释一下这些命令如何组合起来生成正弦波吗?

答案1

最后一个错误给出了手册中的片段,不应该有任何错误不再。但是还是有一些插图会更好。这个答案就是为了这个目的。

让我们考虑一下这个构造:

\draw[ultra thick, red] (3,0) sin (4,1)

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
    \begin{tikzpicture}
    \draw (0,0) -- (12,0);
    \draw (0.2,1)node[left,font=\tiny] {$y=1$} -- (11.8,1);
    \draw (0.2,-1)node[left,font=\tiny] {$y=-1$} -- (11.8,-1); 
    \foreach \x in {0,0.5,...,12}{
    \draw (\x,-0.2)node [below,font=\tiny,] {\x} -- (\x,0.2) ;
    }
    \draw[ultra thick, red] (3,0) sin (4,1);    %% the real business in this line
    \end{tikzpicture}
\end{document}

它表示从点开始(3,0)绘制一条sine 曲线,并在点处结束曲线(4,1)

在此处输入图片描述

请注意,sincos命令仅绘制四分之一正弦/余弦曲线,并且y两个点的坐标应该不同。例如,如果您绘制

(3,0) sin (11,0)     %%% same y-coordinate

你会得到一条直线,如:

在此处输入图片描述

现在添加行

\draw[ultra thick, blue] (4,1) cos (5,0);    %% the real business in this line

这表示一条cos直线曲线在 处开始(4,1)并在 处结束(5,0)

在此处输入图片描述

蓝色曲线是余弦曲线。您可以像这样连续交替地添加sincos曲线,以得到连续的正弦波:

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
    \begin{tikzpicture}
    \draw (0,0) -- (12,0);
    \draw (0.2,1)node[left,font=\tiny] {$y=1$} -- (11.8,1);
    \draw (0.2,-1)node[left,font=\tiny] {$y=-1$} -- (11.8,-1); 
    \foreach \x in {0,0.5,...,12}{
    \draw (\x,-0.2)node [below,font=\tiny,] {\x} -- (\x,0.2) ;
    }
    \draw[ultra thick, red] (3,0) sin (4,1);    %% the real business in this line
    \draw[ultra thick, blue] (4,1) cos (5,0);    %% the real business in this line
    \draw[ultra thick, red] (5,0) sin (6,-1);    %% the real business in this line
    \draw[ultra thick, blue] (6,-1) cos (7,0);    %% the real business in this line
    \draw[ultra thick, red] (7,0)  sin (8,1);    %% the real business in this line
    \draw[ultra thick, blue] (8,1) cos (9,0);    %% the real business in this line
    \draw[ultra thick, red] (9,0) sin (10,-1);    %% the real business in this line
    \draw[ultra thick, blue] (10,-1) cos (11,0);    %% the real business in this line
    \end{tikzpicture}

\end{document}

在此处输入图片描述

所有red曲线都是正弦曲线,blue1 是余弦曲线。您无需像这样放置许多单独的\draw命令,而是可以将它们全部塞入一个\draw命令中:

\draw[ultra thick, red]
    (3,0) sin (4,1) cos (5,0) sin (6,-1) cos (7,0)
          sin (8,1) cos (9,0) sin (10,-1) cos (11,0);

正如 Peter Grill 在他的链接答案中所做的那样

答案2

根据 Karl 的学生(他们几乎不关心 TikZ 中的所有内容)在 TikZ 文档第 30 页(通过texdoc tikz在终端、shell、DOS 提示符中调用)中的说法,他们说

在此处输入图片描述

正弦

记住3个重要行为:

  • sin (x,y)仅绘制完整正弦曲线的前 1/4。换句话说,绘制第一象限的曲线。

  • 前一个点作为起点。

  • 如果前一个点低于(x,y)则绘制正弦波,振幅为正。否则绘制负振幅。

如果您仍然对这 3 条规则感到困惑,下面的渐进示例应该可以帮助您理解它的行为。

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2);
\end{tikzpicture}

在此处输入图片描述

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2) sin (3,5);
\end{tikzpicture}

在此处输入图片描述

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2) sin (3,5) sin (5,0);
\end{tikzpicture}

在此处输入图片描述

余弦

余弦是正弦的“补”。下面的例子应该能让你更清楚地理解。

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2);
    \draw[blue] (0,0) cos (1,2);
\end{tikzpicture}

在此处输入图片描述

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2) sin (3,5);
    \draw[blue] (0,0) cos (1,2) cos (3,5);
\end{tikzpicture}

在此处输入图片描述

\begin{tikzpicture}
    \draw[gray] (0,0) grid (5,5);
    \draw[red] (0,0) sin (1,2) sin (3,5) sin (5,0);
    \draw[blue] (0,0) cos (1,2) cos (3,5) cos (5,0);
\end{tikzpicture}

在此处输入图片描述

概括

如果你想创建一个完整的正弦波,那么你需要交替使用sincos,如下所示,

\begin{tikzpicture}
    \draw[gray] (0,-3) grid (5,3);
    \draw[green] (0,0) sin (1,2) cos (2,0) sin (3,-2) cos (4,0);
\end{tikzpicture}

在此处输入图片描述

因为sin单独使用不会产生您想要的结果,如下所示。

\begin{tikzpicture}
    \draw[gray] (0,-3) grid (5,3);
    \draw[red] (0,0) sin (1,2) sin (2,0) sin (3,-2) sin (4,0);
\end{tikzpicture}

在此处输入图片描述

相关内容