说实话,下面的例子并不完全像我预期的那样。
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
% taken from http://tex.stackexchange.com/questions/15475/using-ifthenelse-in-pgfmath
\pgfmathdeclarefunction{ifthenelsefpu}{3}{%
\pgfmathparse{#1*#2 + !#1*#3}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
scale only axis,
]
\addplot3[
surf,
samples = 20,
domain = -1:1,
y domain = -1:1,
] ({x}, {y}, {ifthenelsefpu({(x==0) && (y==0)},1,0)});
\end{axis}
\end{tikzpicture}
\end{document}
结果应该是 (0,0) 处的单峰,但是......
[这里应该有一张图片,但目前我无法上传 - 抱歉]
答案1
在每个方向上采样,20
样本点在从到的区间内,从而-1
错过1
值0
。更改为21
样本可得出
最简单的例子可能是样本的情况2
,这些是-1
和 ,1
而 3
样本是-1
,0
和1
。在20
样本情况下,第一个样本是-1
,另一个样本是2/19
,因此值列表是
-1, -17/19, -15/19, -13/19, -11/19, -9/19, -7/19, -5/19, -3/19, -1/19
以及相应的正值。
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
% taken from http://tex.stackexchange.com/questions/15475/using-ifthenelse-in-pgfmath
\pgfmathdeclarefunction{ifthenelsefpu}{3}{%
\pgfmathparse{#1*#2 + !#1*#3}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
scale only axis,
]
\addplot3[
surf,
samples = 21,
domain = -1:1,
y domain = -1:1,
] ({x}, {y}, {ifthenelsefpu({(x==0) && (y==0)},1,0)});
\end{axis}
\end{tikzpicture}
\end{document}