LaTex - realiza operações algébricas em variáveis

LaTex - realiza operações algébricas em variáveis

Suponha que eu tenha o seguinte 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}

Ele cria três 'variáveis': mass, acce force, que é o produto das duas primeiras.

Este exemplo específico ( mass = 30, acc = 9.8) imprime F = 270.8N, conforme pretendido.

A multiplicação é realizada pelo \numexprcomando. Isso funciona sempre masse accambos são números regulares. Se massou accfor uma variável (ou seja, \newcommand\mass{m}), o documento falha na construção, pois \numexprsó pode realizar operações em números.

Existe uma maneira de realizar operações algébricas em variáveis, de modo que quando mass = 30ge acc = g, seja impresso F = 30g^2? Sei que isso não faz sentido fisicamente, mas acho que a questão está clara.

Alguns outros exemplos:

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

EDIT: Como @PhelypeOleinik gentilmente apontou, \numexprsó funciona eminteiros. Portanto, embora 9,8 * 30 = 294, dá 270,8 como resultado, porque 30 * 9 = 270 e anexa 0,8.

Responder1

Aqui está o código usando o sagetexpacote que você solicitou:

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

A saída, rodando no Cocalc (mencionada no meu comentário acima), é: insira a descrição da imagem aqui

No Sage, x é uma variável por padrão. Quaisquer outras variáveis ​​devem ser definidas conforme feito no código, por exemplo var('g'). O sagesilentambiente é como um papel de rascunho. É composto pelos comandos Python e Sage que farão os cálculos. Use o formato \sage{}para obter o resultado. Por ser numérico, é feito no modo matemático (entre cifrões). Sage tenderá a fornecer muitos dígitos. Isso .n(digits=5)forçará a resposta a 5 algarismos significativos.

Responder2

Você pode usar o pythontexpacote para incorporar python em seu documento LaTeX e então usar o sympypacote python para computação simbólica 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}

Isso requer que você tenha instalado o LaTeX, python3, o pythontexpacote para LaTeX e o sympypacote para python. Além disso, algum conhecimento de python não faz mal.

Breve explicação do código:

\usepackage{pythontex}importa o pacote necessário.

\begin{pycode}inicia um bloco de código python.

Vejamos o seguinte bloco de código python:

from sympy import *

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

Isso importa a sympybiblioteca, define migual à raiz quadrada de 3 e aa uma variável g. Em seguida, ele multiplica me aarmazena o resultado em f. Observe que a sqrt()função usada para obter a raiz quadrada de 3 é uma função da sympybiblioteca e não da biblioteca matemática. Isto significa que méexatamenteigual a sqrt(3)e não é uma aproximação.

$\pyc{latex(f)}$em seguida, imprime o que latex(f)retornar. O valor de f agora é igual a sqrt(3) * g. Ao passá-lo pela latex()função, ele é impresso usando a notação LaTeX, portanto, os cifrões são necessários para entrar no modo matemático.

Isso pode ser criado chamando primeiro e depois latexnovamente .pythontexlatex

No final o documento ficará assim:

Resultado

Alguns recursos em sympye pythontex:

informação relacionada