费米-狄拉克在 pgfplots 中,维度太大

费米-狄拉克在 pgfplots 中,维度太大

我正在尝试绘制费米-狄拉克分布图,

在此处输入图片描述

我想显示几行不同的温度 (T)。我的代码可以解决这个问题,除了零温度,它会导致Dimension too largepgfplots 出错。有没有办法解决这个问题,同时保持玻尔兹曼的实际值恒定,k_B以电子伏特为单位?

梅威瑟:

\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    xlabel=$\frac{mv^2}{2k_BT}$ (eV),
    ylabel=$f(n)$,
    legend entries={0 K,100 K,1000 K,10000 K},
    x tick style={color=black},
    y tick style={color=black},
    xtick pos=left,
    ytick pos=left,
    xmin=-3,
    xmax=3,
    ymin=-0.1,
    ymax=1.1
    ]
\addplot[samples=50,black] {(1/((exp((x)/(80.617e-5))+1))};
\addplot[samples=50,blue,dashed] {(1/((exp((x)/(8.617e-3))+1))};
\addplot[samples=50,red,dashed] {(1/((exp((x)/(8.617e-2))+1))};
\addplot[samples=50,green,dashed] {(1/((exp((x)/(8.617e-1))+1))};
\end{axis}
\end{tikzpicture}

\end{document}

此代码可以编译,但80.617e-5应该是,8.617e-5这会破坏代码。我尝试过改变/删除xminxmax但没有成功。我也读过一些与此相关的答案fpu,但这似乎对我不起作用或不再需要? restrict x to domain似乎没有帮助,尽管我可能用错了。

在此处输入图片描述

答案1

根本原因是 使用的基于 TeX 的浮点单元存在缺陷pgfplots。中间结果需要计算

\begingroup
%\tracingmacros=2 \tracingcommands=2
\pgfkeys{/pgf/fpu}
\pgfmathparse{exp(-3.4814e4)}\pgfmathresult
\endgroup

这达到了一些内部限制。我接受它作为错误报告,并看看我是否可以修复它。

目前,您可以考虑使用以下方法编译您的示例

  • pgfplots在 1.12 或更新版本中
  • lualatex

这将立即生效(只要您修复第一个\addplot表达式中的语法错误,其中的圆括号就太多了)。

相关内容