pgf math 没有返回正确的结果

pgf math 没有返回正确的结果

我在\pgfmathsetmacros 中存储了一些变量。当绘制的点返回错误时,我在 Mathematica 上检查了该数学。 \pm\infp约为\pm 1.51022并且\pm\infn约为\pm 0.46823。然后我需要确定它们的对应y值。方程式是x^2exp(-x^2)。看起来一切都设置正确,但绘图仅显示 左右的一个点,(-3, 0)该点不在球场范围内。由于一切看起来都是正确的,我不确定发生了什么或出了什么问题。

\documentclass[tikz, convert = false]{standalone}%

\usepackage{pgfplots}
\pgfplotsset{compat = 1.10}

\begin{document}
\begin{tikzpicture}
  \pgfmathsetmacro{\infp}{sqrt(5 + sqrt(17))/2}
  \pgfmathsetmacro{\infn}{sqrt(5 - sqrt(17))/2}
  \pgfmathsetmacro{\yp}{(\infp)^2*exp(-(\infp)^2)}
  \pgfmathsetmacro{\yn}{(\infn)^2*exp(-(\infn)^2)}
  \begin{axis}[
    axis lines = middle,
    xmin = -3,
    xmax = 3,
    ymin = 0,
    ymax = .5,
    xlabel = {x},
    ylabel = {y},
    ytick = {0.4},
    unit vector ratio = 1 1 1
    ]
    \addplot[blue, smooth] gnuplot[domain = -3:3, samples = 500]
    {x^2*exp(-x^2)};

    \foreach \x/\y in {\infp/\yp, -\infp/\yp, \infn/\yn, -\infn/\yn}{
      \begingroup\edef\temp{%
        \endgroup\noexpand\filldraw[red] (\x, \y) circle[radius = 0.025];}
      \temp
    }
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

pgfplots目前仅支持axis cs将一些内容写入轴。

因此,你需要写

\filldraw (axis cs:\x,\y) ... ;

一切都很好。

相关内容