表达式和域中的 Pgfplots 和大指数

表达式和域中的 Pgfplots 和大指数

在我之后发现为了提高精度fpu,我尝试绘制一个包含大指数的图。我选择了月球对测试质量的引力图(以 SI 单位表示)作为示例。

我如何使以下代码处理大指数并自动获得合理的图表。

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\newcommand{\td}[2]{\pgfmathsetmacro{#1}{#2}}
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=sci}
\begin{document}

  \begin{tikzpicture}
    \begin{axis}
      %% Plot Gravitational force of the moon
      \td{\mM}{7.36e22} % mass of the moon in kg
      \td{\rM}{1.74e6} % radius of the moon in m
      \td{\mK}{1}% test mass in kg
      \td{\gG}{6.67e-11} % gravitational constant
      \addplot[domain=0:10e6] gnuplot {\gG*\mK*\mM/(\rM + x)^2};
    \end{axis}
  \end{tikzpicture}
\end{document}

显然,人们可以为上面的例子选择更合理的单位,但我的观点是如何pgfplots(有或没有gnuplot)直接处理具有如此高指数的图。

答案1

pgfplots无法处理 FPU 格式的值。您必须在环境内移动 FPU 指令axis并对其进行范围限定。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\newcommand{\td}[2]{\pgfmathsetmacro{#1}{#2}}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    %% Plot Gravitational force of the moon
    {
      \pgfkeys{/pgf/fpu,/pgf/fpu/output format=sci}
      \td{\mM}{7.36e22} % mass of the moon in kg
      \td{\rM}{1.74e6} % radius of the moon in m
      \td{\mK}{1}% test mass in kg
      \td{\gG}{6.67e-11} % gravitational constant
      \addplot[domain=0:10e6] gnuplot {\gG*\mK*\mM/(\rM + x)^2};
    }
  \end{axis}
\end{tikzpicture}
\end{document}

要简单地将值设置为宏,您无需调用数学解析器(这也会稍微加快排版速度)。Gnuplot 可以处理大指数,因此无需先通过 PGF 消化它们。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    %% Plot Gravitational force of the moon
    \def\mM{7.36e22} % mass of the moon in kg
    \def\rM{1.74e6} % radius of the moon in m
    \def\mK{1}% test mass in kg
    \def\gG{6.67e-11} % gravitational constant
    \addplot[domain=0:10e6] gnuplot {\gG*\mK*\mM/(\rM + x)^2};
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容