![如何在轴环境中使用 pgfplots 绘制 arcsin(sin(x))?](https://linux22.com/image/476062/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%BD%B4%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8%20pgfplots%20%E7%BB%98%E5%88%B6%20arcsin(sin(x))%EF%BC%9F.png)
我想使用 PGFplots 在轴环境中绘制函数 arcsin(sin(x))。我得到的行为让我相信函数 arcsin 和 sin 先相互抵消,然后产生函数 x -> x,这并不是正确的行为。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,x=1cm,y=1cm]
\begin{axis}[
x=1cm,y=1cm,
axis lines=middle,
ymajorgrids=true,
xmajorgrids=true,
xmin=-8.5,
xmax=8.5,
ymin=-6.5,
ymax=7.5,
xtick={-10,-9,...,10},
ytick={-7,-6,...,7},
]
\addplot[smooth,samples=100,domain=-8.5:8.5] (\x,{asin(sin(\x))});
\end{axis}
\end{tikzpicture}
\end{document}
如何解决这个问题?我特别想找到一种方法来避免在这么多子间隔上中断该功能,因为这会变得非常繁琐。
答案1
正如@mickeo 所说,您需要先将 x 转换为度数sin
,然后再将asin
函数转换回弧度。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
x=1cm,y=1cm,
axis lines=middle,
ymajorgrids=true,
xmajorgrids=true,
xmin=-8.5,
xmax=8.5,
ymin=-6.5,
ymax=7.5,
]
\addplot[green!50!black,very thick,smooth,samples=100,domain=-8.5:8.5] {asin(sin(deg(x)))*(pi/180)};
\end{axis}
\end{tikzpicture}
\end{document}