\pgfmathsetmacro 和 cos 的问题

\pgfmathsetmacro 和 cos 的问题

我正在用 tikz 绘制 cos(2x),想要在 x 轴和 x=pi-1.2 和 x=pi+1.2 的图之间绘制线段,但 pgfmathsetmacro 计算出的值似乎不正确(这些值应该相等,但事实并非如此)

这是我使用的代码:

\documentclass[crop,tikz]{standalone}
\usepackage{pgf,tikz,tkz-tab}

\begin{document}

\begin{tikzpicture}[line cap=round,line join=round,>=latex,x=1cm, y=1cm]
    \draw[->] (0,-1.2) -- (0,1.5);
    \draw[->] (-0.5,0) -- (5,0);

    \draw [variable=\x, domain=pi/2:3*pi/2,samples=200] plot(\x,{cos(2*\x r)});

    \foreach \x in {pi+1.2,pi-1.2}{
        \pgfmathsetmacro{\y}{cos(2*\x r)};
        \draw [shift={(\x,0)}] (0,0) -- (0,\y) node[above] {\y};
    }
\end{tikzpicture}
\end{document}

以下是我得到的截图:

上述代码的结果

我这里犯了什么错误?

答案1

您只需应用括号即可。否则 pgf 将看到类似以下内容的内容2*pi+1.2 r

\documentclass[crop,tikz]{standalone}
\usepackage{pgf,tikz,tkz-tab}

\begin{document}

\begin{tikzpicture}[line cap=round,line join=round,>=latex,x=1cm, y=1cm]
    \draw[->] (0,-1.2) -- (0,1.5);
    \draw[->] (-0.5,0) -- (5,0);

    \draw [variable=\x, domain=pi/2:3*pi/2,samples=200] plot(\x,{cos(2*\x r)});

    \foreach \x in {pi+1.2,pi-1.2}{
        \pgfmathsetmacro{\y}{cos(2*(\x) r)};
        \draw [shift={(\x,0)}] (0,0) -- (0,\y) node[above] {\y};
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容