根据条件绘制 3D 曲面

根据条件绘制 3D 曲面

我想绘制函数

$$f(x,y) = e^{-\frac{1}{1 - |x^2 + y^2|}}$$

但仅限于 $|x^2 + y^2| < 1$ 的值,我该怎么做?

根据 GeoGebra,该图看起来应该是这样的: 在此处输入图片描述

到目前为止,这是我的代码,没有施加任何条件,因此它显示了我想要的区域之外的所有内容,函数的行为非常奇怪。(我知道在代码中,$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}

圆顶形表面图

相关内容