P.S. 遇到报错最好附上报错信息(给你补上了),更容易被其他人检索到关键词。
\tikzset不需要;
\tikzset{
declare function={
f(\x)=cos(\x r);
g(\x)=\fpeval{1/3};
h(\x)=-0.5;
}
};- 参照文档好像是更快的办法...

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,intersections}
\begin{document}
\begin{tikzpicture}
\tikzset{
declare function={
f(\x)=cos(\x r);
g(\x)=\fpeval{1/3};
h(\x)=-0.5;
}
}
\draw[-Stealth] ({-2.1*pi},0)--({2.2*pi},0)node[below]{$x$};
\draw[-Stealth] (0,-1.5)--(0,1.5)node[left]{$y$};
\draw[name path=s,domain=-2*pi:2*pi,samples=600] plot (\x,{f(\x)});
\draw[name path=l,color=cyan,domain=-2*pi:2*pi,samples=600] plot (\x,{g(\x)});
\draw[name path=ll,color=cyan,domain=-2*pi:2*pi,samples=600] plot (\x,{h(\x)});
\fill[name intersections={of=s and l,name=P,total=\t}]
[color=red] \foreach \i in {1,...,\t}{(P-\i) circle (1pt) node[above] {$\i$}};
\end{tikzpicture}
\end{document}


























问 请问\foreach 这个循环为什么不能运行