地块尺寸过大

地块尺寸过大

我正在尝试根据以下答案绘制高斯函数/正态分布这个问题但是我的域是 0:10000 并且样本大小是 95.这导致以下错误:

Dimension too large.

\pgfmathfloatexp@@ ...}\pgf@xa =\pgfmathresult pt 
                                                  \pgf@xa =0.434294481\pgf@x...
l.27   \addplot {gauss(4,0.5)};

I can't work with sizes bigger than about 19 feet.
Continue and I'll use the largest value I can.

我尝试回答这个问题,但是并没有解决问题。

以下是 MWE:

\documentclass[a4paper]{abntex2}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{siunitx}

\begin{document}

\pgfmathdeclarefunction{gauss}{2}{%
  \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}

\begin{figure}
\centering
\begin{tikzpicture}


\begin{axis}[every axis plot post/.append style={
  mark=none,domain=0:1000,samples=95,smooth}, % All plots: from -2:2, 50 samples, smooth, no marks
  axis x line*=bottom, % no box around the plot, only x and y axis
  axis y line*=left, % the * suppresses the arrow tips
  enlargelimits=upper,
  restrict y to domain=0:10
  ] % extend the axes a bit to the right and top
  \addplot {gauss(9043.1578947369,1)};
\end{axis}


\end{tikzpicture}
\caption{Tempos de deliberação por partida} \label{montecarlodist1}
\end{figure}



\end{document}

答案1

这是由于 中的一个错误造成的pgfplots。我会注意并最终解决这个问题。

问题在于这些数字太接近 0,以至于基于 TeX 的算法会遇到一些数字范围问题(在计算的中间结果时exp(-4.08893e7))。

也就是说,domain=0:1000你所讨论函数的参数除了“0”之外不包含任何其他内容。你也可以\addplot {0}用相同的视觉输出来书写。

话虽如此,我看到了以下可能的解决方法:

  1. 使用\addplot {0}代替指数函数或

  2. 修复域,使其显示图形的相关(非零)部分或

  3. 在 pgfplots 中修复此问题后再回来

  4. 如果您确实需要按原样绘制图,并且可以使用luatex,请使用以下等效公式并使用进行编译lualatex

\documentclass{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\tikzset{
    declare function={
      gauss(\m,\s)=1/(\s*sqrt(2*pi))*exp(-((x-\m)^2)/(2*\s^2));%
    }
}

\begin{tikzpicture}


\begin{axis}[every axis plot post/.append style={
  mark=none,domain=0:1000,samples=95,smooth}, % All plots: from -2:2, 50 samples, smooth, no marks
  axis x line*=bottom, % no box around the plot, only x and y axis
  axis y line*=left, % the * suppresses the arrow tips
  enlargelimits=upper,
  %restrict y to domain=0:10
  ] % extend the axes a bit to the right and top
  \addplot {gauss(9043.1578947369,1)};
\end{axis}


\end{tikzpicture}
\end{document}

(与您的图片的区别:compat=1.13激活lua backenddeclare function语法允许完全在 lua 算法中完成计算,并且restrict y to domain当前禁用lua backend,因此我取消了它的注释。)

在此处输入图片描述

相关内容