我正在尝试使用 pgfplots 绘制函数sin(pi*x)*sinh(pi-pi*y)/sinh(pi)
。这是我目前拥有的代码
\documentclass[border=5pt]{standalone}
\usepackage[dvipsnames,svgnames,table]{xcolor} % use color
\usepackage{tikz} % Required for drawing custom shapes
\usepackage{pgfplots}
\usepgflibrary{shapes.geometric}
\usepgfplotslibrary{colorbrewer}
\usetikzlibrary{pgfplots.groupplots, plotmarks, calc, spy, pgfplots.polar}
\usetikzlibrary{plotmarks, calc, spy, pgfplots.polar}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=8cm,
xlabel=$x$,
ylabel=$y$,
xmin=0,xmax=1,
ymin=0,ymax=1,
]
% use TeX as calculator:
\addplot3[surf,domain=0:1, samples=20] { sin(pi*x)*sinh(pi-pi*y)/sinh(pi)};
\end{axis}
\end{tikzpicture}
\end{document}
但我期待这个函数(在 Mathematica 中绘制):
所以我很好奇想知道我在这里做错了什么?
答案1
我猜问题在于 pgfplot 假设的参数sin
是度数,但Mathematica
事实并非如此。事实上
\documentclass[border=5pt]{standalone}
\usepackage[dvipsnames,svgnames,table]{xcolor} % use color
\usepackage{tikz} % Required for drawing custom shapes
\usepackage{pgfplots}
\usepgflibrary{shapes.geometric}
\usepgfplotslibrary{colorbrewer}
\usetikzlibrary{pgfplots.groupplots, plotmarks, calc, spy, pgfplots.polar}
\usetikzlibrary{plotmarks, calc, spy, pgfplots.polar}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=8cm,
xlabel=$x$,
ylabel=$y$,
xmin=0,xmax=1,
ymin=0,ymax=1,
]
% use TeX as calculator:
\addplot3[surf,domain=0:1, samples=20] { sin(180*x)*sinh(pi-pi*y)/sinh(pi)};
\end{axis}
\end{tikzpicture}
\end{document}
产生了一些非常让人联想到你的Mathematica
情节的东西:
编辑:在以前的版本中,我还替换了分母中 sinh 参数的 pi,这改变了图的规范化。(是的,pgfplots 假设参数为sin
但不sinh
为度数,这确实很奇怪。)