![pgfplots 中的反双曲函数](https://linux22.com/image/278920/pgfplots%20%E4%B8%AD%E7%9A%84%E5%8F%8D%E5%8F%8C%E6%9B%B2%E5%87%BD%E6%95%B0.png)
我想要绘制一个包含反双曲正弦的函数。这是我的代码/
\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
\usepackage{amsmath}
\DeclareMathOperator{\arcsinh}{arcsinh}
\begin{document}
\begin{tikzpicture}
\begin{axis} [restrict z to domain=0:100,zmax=200]
\addplot3 [surf, samples=30,domain=-155:205,y domain=0:10, z buffer=sort]
({sin(x)*y},{cos(x)*y},{60.13+1.9*tan(\arcsinh y)-15.69*cos(1.794+y-tanh(0.9074*y))});
\end{axis}
\end{tikzpicture}
\end{document}
不幸的是,这会出现一个错误,提示:
Argument of \pgfplotsforeachungrouped@ has an extra }.
意思是}
在 之前的\end{axis}
。但删除它也没有用(我知道那里需要它。)
答案1
pgf
默认情况下不知道arcsinh
,但正如评论中提到的,你可以很容易地教它,通过使用
\pgfkeys{/pgf/declare function={arcsinh(\x) = ln(\x + sqrt(\x^2+1));}}
sinh
如果使用函数定义,这个公式很容易推导
sinh(x) = (e^x - e^(-x))/2
我注意到你用了
\DeclareMathOperator{\arcsinh}{arcsinh}
如果你想排版反sinh
函数,例如\arcsinh(x)
,但它与 声明为 不同pgf
。
这是一个完整的 MWE,可供使用。
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfkeys{/pgf/declare function={arcsinh(\x) = ln(\x + sqrt(\x^2+1));}}
\begin{document}
\begin{tikzpicture}
\begin{axis} [restrict z to domain=0:100,zmax=200]
\addplot3 [surf,
samples=30,
domain=-155:205,
y domain=0:10,
z buffer=sort
]
({sin(x)*y},{cos(x)*y},{60.13+1.9*tan(arcsinh(y))-15.69*cos(1.794+y-tanh(0.9074*y))});
\end{axis}
\end{tikzpicture}
\end{document}