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
, acc
und force
, das Produkt der ersten beiden.
Dieses spezielle Beispiel ( mass = 30
, acc = 9.8
) druckt F = 270.8N
wie beabsichtigt.
Die Multiplikation wird mit dem \numexpr
Befehl durchgeführt. Dies funktioniert immer, wenn mass
und acc
beides reguläre Zahlen sind. Wenn mass
oder acc
eine Variable ist (also \newcommand\mass{m}
), kann das Dokument nicht erstellt werden, da \numexpr
Operationen nur mit Zahlen durchgeführt werden können.
Gibt es eine Möglichkeit, algebraische Operationen mit Variablen durchzuführen, sodass bei mass = 30g
und acc = g
ausgegeben 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.8
oderF = 9.8*m
mass = m
,acc = g
->F = m*g
oderF = g*m
mass = x
,acc = x
->F = x^2
EDIT: Wie @PhelypeOleinik freundlicherweise anmerkte, \numexpr
funktioniert 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, sagetex
der 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:
In Sage ist x standardmäßig eine Variable. Alle anderen Variablen müssen wie im Code definiert werden, zum Beispiel var('g'). Die sagesilent
Umgebung 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 pythontex
Paket verwenden, um Python in Ihr LaTeX-Dokument einzubetten und dann das Python- sympy
Paket 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}
pythontex
Dies 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 sympy
Bibliothek, setzt m
gleich der Quadratwurzel von 3 und a
in eine Variable g
. Anschließend multipliziert es m
und a
und speichert das Ergebnis in f
. Beachten Sie, dass die sqrt()
Funktion, die zum Ziehen der Quadratwurzel von 3 verwendet wird, eine Funktion aus der sympy
Bibliothek 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 pythontex
und dann latex
erneut aufgerufen wird.
Am Ende sieht das Dokument folgendermaßen aus:
Einige Ressourcen zu sympy
und pythontex
: