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}

它創建三個「變數」:massaccforce,它是前兩個變數的乘積。

此特定範例 ( mass = 30, )按預期acc = 9.8列印。F = 270.8N

乘法由\numexpr指令執行。這無論何時都有效mass,並且acc都是常規數字。如果massoracc是變數(即\newcommand\mass{m}),則文件無法構建,因為\numexpr只能對數字執行操作。

有沒有辦法對變數執行代數運算,這樣當mass = 30g和時acc = g,它會列印F = 30g^2?我知道這在物理上沒有意義,但我認為這一點很清楚。

其他一些例子:

  • mass = m, acc = 9.8->F = m*9.8F = 9.8*m
  • mass = m, acc = g->F = m*gF = g*m
  • mass = x, acc = x->F = x^2

編輯:正如@PhelypeOleinik 善意指出的那樣,\numexpr僅適用於整數。因此,雖然 9.8 * 30 = 294,但它給出的結果是 270.8,因為 30 * 9 = 270 並且它附加了 0.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 中運行的輸出(在我上面的評論中提到)是: 在此輸入影像描述

在 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

最終文檔將如下所示:

結果

sympy和的一些資源pythontex

相關內容