pgfplots 和计算;没有 fpu‘尺寸太大’,有 fpu‘非法测量单位(插入 pt)’

pgfplots 和计算;没有 fpu‘尺寸太大’,有 fpu‘非法测量单位(插入 pt)’

我正在尝试将一些数字相乘,这些数字最终会出现在图表的图例中。我无法让它工作:

  1. 如果我天真地尝试\pgfmathmultiply,我会得到一个dimension too large错误,代码如下微波能量吸收 1(见下文)。我理解这是因为 TeX 不计算 18 英寸(左右)以外的尺寸。好的,我需要加载,如(版本 2.10)fpu第 36 节中所述。pgfmanual

  2. 如果我传递/pgf/fpu给轴环境,编译会失败Illegal unit of measure (pt inserted)微波辐射计 2)。即使轴环境完全是空的。根据“如何使用 pgfmathdeclarefunction 来定义新的 pgf 函数?“,在内部pgfplots使用fpu,所以我不太明白为什么我无法加载它。

  3. 我想,也许我使用了错误的函数。在 PGF 手册的第 362 页上,我读到安装会将标准数学解析器的所有例程与 FPU 的例程进行交换:\pgfmathadd将被替换为\pgfmathfloatadd等等。此外,任何数字都将被解析为\pgfmathfloatparsenumber。那么,如果我已经有了 FPU,也许我需要改用\pgfmathfloatmultiply?我尝试过微波辐射计 3,但这次编译失败:!软件包 PGF 数学错误:抱歉,浮点单元的内部例程收到格式错误的浮点数“1000”。无法读取的部分接近“1000”。。可能\pgfmathmultiply不是为了让用户使用的,或者如此。

如何将大数字相乘并在其中显示结果pgfplot

相关但不同的问题:

最大能量损失 1:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    title={\pgfmathmultiply{1000}{1000}}
          ]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}

微波辐射计 2

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[/pgf/fpu,
    title={\pgfmathmultiply{1000}{1000}}
          ]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}

微波辐射计 3

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    title={\pgfmathfloatmultiply{1000}{1000}}
          ]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}

答案1

PGFplots 在内部使用该fpu库,但并非用于所有用途。在用户级别,该fpu库未激活。您可以\pgfkeys{/pgf/fpu=true}在使用常规命令进行数学运算之前手动设置\pgfmathparse{...}。完成后,您需要fpu再次关闭该库,否则 PGFplots 会感到困惑,因为该fpu库使用浮点表示数字,而不是定点表示。您可以通过以下方式查看它的样子

\pgfkeys{/pgf/fpu=true}
\pgfmathparse{1000*1000}
\pgfmathresult
\pgfkeys{/pgf/fpu=false}

这将打印1Y1.0e6]。您可能不希望在标题中使用该表示形式,因此您应该设置\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed},这将使数学运算的输出为定点数,或者使用\pgfmathprintnumber{\pgfmathresult}来打印结果,这将使用定点表示形式,即使对于浮点输入也是如此。

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    title={\pgfkeys{/pgf/fpu=true}
        \pgfmathparse{1000*1000}
        \pgfmathprintnumber{\pgfmathresult}
        \pgfkeys{/pgf/fpu=false}}
          ]
\addplot coordinates {(0, 0) (1, 1) (2, 2)};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容