LaTex: realiza operaciones algebraicas en variables

LaTex: realiza operaciones algebraicas en variables

Supongamos que tengo el siguiente documento:

\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}

Crea tres 'variables': massy acc, forceque es el producto de las dos primeras.

Este ejemplo específico ( mass = 30, acc = 9.8) imprime F = 270.8N, como se pretende.

La multiplicación se realiza mediante el \numexprcomando. Esto funciona en cualquier momento massy accambos son números regulares. Si masso acces una variable (es decir \newcommand\mass{m}), el documento no se puede compilar, ya que \numexprsolo puede realizar operaciones con números.

¿Hay alguna manera de realizar operaciones algebraicas en variables, de modo que cuando mass = 30gy acc = gse imprima F = 30g^2? Sé que esto no tiene sentido físicamente, pero creo que el punto está claro.

Algunos otros ejemplos:

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

EDITAR: Como @PhelypeOleinik amablemente señaló, \numexprsolo funciona ennúmeros enteros. Entonces, mientras 9.8 * 30 = 294, da 270.8 como resultado, porque 30 * 9 = 270 y agrega .8.

Respuesta1

Aquí está el código usando el sagetexpaquete que solicitó:

\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}

El resultado, ejecutándose en Cocalc (mencionado en mi comentario anterior), es: ingrese la descripción de la imagen aquí

En Sage, x es una variable por defecto. Cualquier otra variable debe definirse como se hace en el código, por ejemplo var('g'). El sagesilentmedio ambiente es como papel borrador. Está compuesto por los comandos de Python y Sage que harán los cálculos. Utilice el formato \sage{}para obtener el resultado. Como es numérico, se hace en modo matemático (entre signos de dólar). Sage tenderá a dar muchos dígitos. Obligará .n(digits=5)a que la respuesta tenga 5 cifras significativas.

Respuesta2

Puede usar el pythontexpaquete para incrustar Python en su documento LaTeX y luego usar el sympypaquete Python para cálculos simbólicos como este:

\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}

Esto requiere que haya instalado LaTeX, python3, el pythontexpaquete para LaTeX y el sympypaquete para python. Además, algunos conocimientos de Python no hacen daño.

Breve explicación del código:

\usepackage{pythontex}importa el paquete requerido.

\begin{pycode}comienza un bloque de código Python.

Veamos el siguiente bloque de código Python:

from sympy import *

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

Esto importa la sympybiblioteca, la establece migual a la raíz cuadrada de 3 y aa una variable g. Luego multiplica my aalmacena el resultado en f. Tenga en cuenta que la sqrt()función utilizada para sacar la raíz cuadrada de 3 es una función de la sympybiblioteca y no de la biblioteca matemática. Esto significa que mesexactamenteigual a sqrt(3)y no es una aproximación.

$\pyc{latex(f)}$luego imprime lo que latex(f)regrese. El valor de f ahora es igual a sqrt(3) * g. Al pasarlo por la latex()función, se imprime usando notación LaTeX, por lo que los signos de dólar son necesarios para ingresar al modo matemático.

Esto se puede construir llamando primero latex, luego pythontexy luego latexotra vez.

Al final el documento quedará así:

Resultado

Algunos recursos sobre sympyy pythontex:

información relacionada