pgf 数学错误,除以零

pgf 数学错误,除以零

我有一个有效的gnuplot函数(在中绘制得很好gnuplot),但pgfplots使用失败:

\documentclass{article}

\usepackage{graphicx}
\usepackage{pgfplots}

\begin{document}
\begin{figure}[H]
\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\pgfplotsset{samples=200}
\centering
\begin{tikzpicture}
\begin{axis}[mark=none, style=solid,
             enlargelimits=false, 
             xmin=0,xmax = 2.5,
             ymin=0,ymax = 2.5]
%
\addplot gnuplot{3*(x**(3-1))*exp(-x**3)};
%
\end{axis} 
\end{tikzpicture}
\end{figure}
\end{document}

错误是

PGFPlots: reading {testplots.pgf-plot.table}
! Package pgfplots Warning: Axis range for axis y is approximately empty; enlarging it (it is [0.0:0.0])
! Package PGF Math Error: You've asked me to divide `231.00105000000000' by `0.0', but I cannot divide any number by `0.0'.

答案1

快速解决方法是远离导致数据爆炸的部分。因此,如果您提供密钥,domain=0:2.5它就会正常工作而不会出现任何错误。

我最初的想法是:问题在于绘制函数的默认域是(如 egreg 所述)[-5,5]。由于负数会使指数项爆炸,(第一个实例给出 e^125 )。

然而,事情变得越来越奇怪,这让我认为这不仅仅是一个溢出问题。例如,从 -5 开始,使用domain=-5:2它会出现上述错误,但当这个键被赋予domain=-2.4:2up to时domain=-2.369:2,它会出现这个

\pgfplotsset{width=0.8\textwidth, height=0.6\textwidth}
\pgfplotsset{samples=200}

\begin{tikzpicture}
\begin{axis}[no marks, style=solid,
             enlargelimits=false, 
             xmin=-5,xmax = 2.5,
             ymin=0,ymax = 5,domain=-2.369:2]
%
\addplot gnuplot{3*(x**(3-1))*exp(-x**3)};
%
\end{axis} 
\end{tikzpicture}

在此处输入图片描述

注意违反了ymax。此外,如果我尝试增加值ymax,它会给我一个。更奇怪的是,当我们超过 -2.369 走向更高的值时,Dimension too large error它开始出错。但如果我完全删除该选项,我会得到Dimension too largeymax

在此处输入图片描述

所以在看到我已经删除了 ymax 并让原始代码运行后,我得到了令人惊讶的结果。

在此处输入图片描述

我猜在轴限值计算过程中出现了问题。所以这可能是一个错误或内部限制。

相关内容