LaTex - 对变量执行代数运算

LaTex - 对变量执行代数运算

假设我有以下文档:

\documentclass{article}

\newcommand\mass{30}
\newcommand\acc{9.8}

\newcommand\force{\the\numexpr \mass * \acc \relax} % F=m*a

\begin{document}
  \section{Exerted force}
    F = \force N
\end{document}

它创建了三个“变量”:和mass,它是前两个的乘积。accforce

此特定示例(mass = 30, )按预期acc = 9.8打印。F = 270.8N

乘法由命令执行。只要和都是常规数字,\numexpr此方法就有效。如果或为变量(即),则文档无法构建,因为只能对数字执行运算。massaccmassacc\newcommand\mass{m}\numexpr

有没有办法对变量执行代数运算,这样当mass = 30g和时acc = g,它会打印F = 30g^2?我知道这在物理上没有意义,但我认为要点很清楚。

其他一些例子:

  • mass = macc = 9.8->F = m*9.8F = 9.8*m
  • mass = macc = g->F = m*gF = g*m
  • mass = xacc = x->F = x^2

编辑:正如@PhelypeOleinik 指出的那样,\numexpr只适用于整数。因此,虽然 9.8 * 30 = 294,但结果却是 270.8,因为 30 * 9 = 270 并且它附加了 .8。

答案1

这是使用sagetex您请求的包的代码:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
m = 30.0
a = 9.8
Force = m*a
var('g')
mass = 30*g
\end{sagesilent}
\section{Exerted force}
    F = $\sage{Force.n(digits=5)}$ N \\\\
If the mass is $\sage{mass}$ then it's square is $\sage{mass^2}$.
\begin{sagesilent}
var('m')
acc = 9.8
\end{sagesilent}

$F = \sage{m*acc.n(digits=2)}$\\
\begin{sagesilent}
var('a')
m=a
\end{sagesilent}
If the mass, $m$, is equal to the acceleration, $a$ then 
$F = \sage{m*a}$.

Sage even works with square roots:
\begin{sagesilent}
var('g')
m=sqrt(3)
\end{sagesilent}
$F = \sage{m*g}$ which, if you want decimals, is about     $F=\sage{m.n(digits=4)*g}$
\end{document}

在 Cocalc 中运行的输出(我在上面的评论中提到)是: enter image description here

在 Sage 中,x 默认为变量。任何其他变量都必须在代码中定义,例如 var('g')。环境sagesilent就像草稿纸。它由执行计算的 Python 和 Sage 命令组成。使用格式\sage{}获取结果。由于它是数字,因此它是在数学模式下完成的(在美元符号之间)。Sage 倾向于给出很多数字。这.n(digits=5)将强制答案为 5 个有效数字。

答案2

您可以使用该pythontex包将 python 嵌入到您的 LaTeX 文档中,然后使用 pythonsympy包进行符号计算,如下所示:

\documentclass{article}

\usepackage{pythontex}

\begin{pycode}
from sympy import *

m = sqrt(3)
a = symbols('g')
f = m * a
\end{pycode}

\begin{document}
  \section{Exerted force}
    F = $\pyc{print(latex(f))}$
\end{document}

这要求您已安装 LaTeX、python3、pythontexLaTeX 软件包和sympypython 软件包。此外,掌握一些 python 知识也无妨。

代码简要解释:

\usepackage{pythontex}导入所需的包。

\begin{pycode}开始一段 Python 代码。

我们来看看下面的python代码块:

from sympy import *

m = sqrt(3)
a = symbols('g')
f = m * a

这将导入sympy库,将 设置m为 等于 3 的平方根 并a赋值给变量g。然后它将m和相乘a并将结果存储在 中f。请注意,sqrt()用于求 3 的平方根的函数是sympy库中的函数,而不是数学库中的函数。这意味着m确切地等于sqrt(3)并且不是近似值。

$\pyc{latex(f)}$然后打印latex(f)返回的内容。 f 的值现在等于sqrt(3) * g。通过将其传递给latex()函数,它会使用 LaTeX 符号进行打印,因此美元符号是进入数学模式所必需的。

latex这可以通过首先调用,然后pythontex再次调用来构建latex

最终文档将如下所示:

Result

sympy和的一些资源pythontex

相关内容