LaTex - algebraische Operationen mit Variablen durchführen

LaTex - algebraische Operationen mit Variablen durchführen

Angenommen, ich habe das folgende Dokument:

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

Es erstellt drei „Variablen“: mass, accund force, das Produkt der ersten beiden.

Dieses spezielle Beispiel ( mass = 30, acc = 9.8) druckt F = 270.8Nwie beabsichtigt.

Die Multiplikation wird mit dem \numexprBefehl durchgeführt. Dies funktioniert immer, wenn massund accbeides reguläre Zahlen sind. Wenn massoder acceine Variable ist (also \newcommand\mass{m}), kann das Dokument nicht erstellt werden, da \numexprOperationen nur mit Zahlen durchgeführt werden können.

Gibt es eine Möglichkeit, algebraische Operationen mit Variablen durchzuführen, sodass bei mass = 30gund acc = gausgegeben wird F = 30g^2? Ich weiß, dass das physikalisch keinen Sinn ergibt, aber ich denke, der Punkt ist klar.

Einige weitere Beispiele:

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

EDIT: Wie @PhelypeOleinik freundlicherweise anmerkte, \numexprfunktioniert nur aufGanzzahlen. Während also 9,8 * 30 = 294 ist, ergibt das Ergebnis 270,8, weil 30 * 9 = 270 ist und die 0,8 angehängt werden.

Antwort1

Hier ist Code, sagetexder das von Ihnen angeforderte Paket verwendet:

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

Die Ausgabe in Cocalc (siehe meinen Kommentar oben) lautet: Bildbeschreibung hier eingeben

In Sage ist x standardmäßig eine Variable. Alle anderen Variablen müssen wie im Code definiert werden, zum Beispiel var('g'). Die sagesilentUmgebung ist wie Schmierpapier. Sie besteht aus den Python- und Sage-Befehlen, die die Berechnungen durchführen. Verwenden Sie das Format, \sage{}um das Ergebnis zu erhalten. Da es numerisch ist, erfolgt es im Mathematikmodus (zwischen Dollarzeichen). Sage neigt dazu, viele Ziffern auszugeben. Dadurch wird .n(digits=5)die Antwort auf 5 signifikante Ziffern erzwungen.

Antwort2

Sie können das pythontexPaket verwenden, um Python in Ihr LaTeX-Dokument einzubetten und dann das Python- sympyPaket für symbolische Berechnungen wie folgt zu verwenden:

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

pythontexDies setzt voraus, dass Sie LaTeX, python3, das Paket für LaTeX und das Paket für Python installiert haben sympy. Auch einige Kenntnisse in Python können nicht schaden.

Kurze Erklärung des Codes:

\usepackage{pythontex}importiert das erforderliche Paket.

\begin{pycode}beginnt einen Python-Codeblock.

Schauen wir uns den folgenden Python-Codeblock an:

from sympy import *

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

Dies importiert die sympyBibliothek, setzt mgleich der Quadratwurzel von 3 und ain eine Variable g. Anschließend multipliziert es mund aund speichert das Ergebnis in f. Beachten Sie, dass die sqrt()Funktion, die zum Ziehen der Quadratwurzel von 3 verwendet wird, eine Funktion aus der sympyBibliothek und nicht aus der Mathematikbibliothek ist. Dies bedeutet, dassm . Dies bedeutet, dass istgenaugleich sqrt(3)und ist keine Annäherung.

$\pyc{latex(f)}$druckt dann, was auch immer latex(f)zurückgegeben wird. Der Wert von f ist jetzt gleich sqrt(3) * g. Durch die Übergabe durch die latex()Funktion wird er in LaTeX-Notation gedruckt, daher sind die Dollarzeichen erforderlich, um in den Mathematikmodus zu wechseln.

Dies kann erstellt werden, indem zuerst latex, dann pythontexund dann latexerneut aufgerufen wird.

Am Ende sieht das Dokument folgendermaßen aus:

Ergebnis

Einige Ressourcen zu sympyund pythontex:

verwandte Informationen