PGFplot 维度过大/域和范围减少后 TeX 容量超出范围

PGFplot 维度过大/域和范围减少后 TeX 容量超出范围

在尝试绘制 3^x 和 x^3 的交点时,我缩小了域以正确显示其中一个交点。但是,一旦我缩小了域,我就会得到尺寸太大, 或者TeX 容量超出

此外,似乎至少有 6 个交叉点(但实际上应该只有一个),与手动确定交叉点相比,交叉点似乎位于错误的位置。这只是一个四舍五入问题吗?图形

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{intersections}

\begin{document}

%% Uncommenting these two results in TeX Capacity exceeded
%\newcommand*{\XAxisMin}{2.47805}%
%\newcommand*{\XAxisMax}{2.47810}%

% These two settings produce a graph
\providecommand*{\XAxisMin}{2.47500}%
\providecommand*{\XAxisMax}{2.48000}%

\pgfmathdeclarefunction{GivenF}{1}{\pgfmathparse{(#1)^(3)}}
\pgfmathdeclarefunction{GivenG}{1}{\pgfmathparse{(3)^(#1)}}

\newcommand*{\ShowIntersection}[3]{
\fill 
    [name intersections={of=#1 and #2, name=i, total=\t}] 
    [brown, opacity=1, every node/.style={black, opacity=1}] 
    \foreach \s in {1,...,\t}{(i-\s) circle (3pt)
        node [above left, blue] {#3}};
}

\begin{tikzpicture}
  \begin{axis}[xmin=\XAxisMin, xmax=\XAxisMax, ymin=15.16, ymax=15.26]

    \addplot[domain=\XAxisMin:\XAxisMax, samples=400,
        smooth,ultra thick,blue,name path global=GraphF]
        {GivenF(x)} node [below left, xshift=-1.0em] {$y=x^3$};

    \addplot[domain=\XAxisMax:\XAxisMin, samples=400,
        smooth,ultra thick,red,name path global=GraphG]
        {GivenG(x)} node [above right, yshift=5.0ex] {$y=3^x$};

    % Manually mark where I think the intersection should be
    \addplot [mark=*] coordinates{(2.478053,15.2171)}%
        node [left] {$(2.478053,15.2171)$};%

    % Results in at least 6 intersection points
    \ShowIntersection{GraphF}{GraphG}{$(2.478053,15.2171)$}
\end{axis}
\end{tikzpicture}
\end{document}

来自\ShowIntersectionsPGFplot 中的交叉点

答案1

回答你一半的问题:数学错误似乎是由于函数pgf实现中的近似值造成的ln

\pgfmathparse{3^2.478053}\pgfmathresult

给出的是 15.2156,而不是 15.2171。因此,最好使用plot gnuplot,或 在您最喜欢的数学软件中生成数值表,然后plot fileplot table

如果我使用,“超出容量”错误就会消失,并且我会得到正确的交集,plot gnuplot但我不知道是什么原因导致了它......

相关内容