我正在尝试根据以下答案绘制高斯函数/正态分布这个问题但是我的域是 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}
用相同的视觉输出来书写。
话虽如此,我看到了以下可能的解决方法:
使用
\addplot {0}
代替指数函数或修复域,使其显示图形的相关(非零)部分或
在 pgfplots 中修复此问题后再回来
如果您确实需要按原样绘制图,并且可以使用
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 backend
,declare function
语法允许完全在 lua 算法中完成计算,并且restrict y to domain
当前禁用lua backend
,因此我取消了它的注释。)