我想绘制函数
$$f(x,y) = e^{-\frac{1}{1 - |x^2 + y^2|}}$$
但仅限于 $|x^2 + y^2| < 1$ 的值,我该怎么做?
到目前为止,这是我的代码,没有施加任何条件,因此它显示了我想要的区域之外的所有内容,函数的行为非常奇怪。(我知道在代码中,$x$ 和 $y$ 值取值在 -0.5 和 0.5 之间,因此不会显示完整的图)。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{amsmath,mathtools,amssymb,amsthm}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-2,
xmax=2,
ymin=-2,
ymax=2,
zmax=1.5,
axis lines=middle,
]
\addplot3[
domain=-0.5:0.5,
domain y = -0.5:0.5,
surf,
samples=10
]
{e^(-1 / (1 - abs(x^2 + y^2)) ) };
\end{axis}
\end{tikzpicture}
\end{document}
这就是现在的图表的样子。
答案1
以下是该图的极坐标重新参数化:
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}[line join=bevel]
\begin{axis}[
xmin=-2, xmax=2,
ymin=-2, ymax=2,
zmin=0, zmax=1,
xtick={-2,-1,1,2},
xticklabels={-2,,,2},
axis lines=middle,
z buffer=sort,
]
\addplot3[
surf,
variable=a, domain=0:360,
variable y=r, domain y=0:1,
samples=21,
] ( {r*cos(a)} , {r*sin(a)} , {e^(-1/(1-r^2)} );
\draw (0,0,{e^(-1)}) -- (0,0,0.5);
\end{axis}
\end{tikzpicture}
\end{document}