Ich habe einen sehr langen Ausdruck, von dem ich denke, dass er vereinfacht werden kann, und ich dachte, dass sympy
der perfekte Weg wäre, dies zu tun. Leider beruht die Formel auf einigen ganzzahligen Teilungen, und ich kann keine Möglichkeit finden, diese in sympy
darzustellen.
Offensichtlich nicht was ich will, 1/2
ist keine Ganzzahl.
Offensichtlich behandelt sympy
nicht //
.
Es scheint, dass Integer
nur dazu gedacht ist, mit konstanten Zahlen zu arbeiten, nicht mit Formeln.
Es gibt eine Funktion trunc
, aber es scheint nichts zu tun, was ich möchte.
Gibt es eine Möglichkeit, eine ganzzahlige Division in sympy
darzustellen?
Ich nehme an, dass Sie eine Funktion div
wollen, die die folgenden Tests besteht:
Sie können eine ganzzahlige Division mit dem Modulo-Operator wie folgt realisieren:
%Vor%Da SymPy Modulo-Arithmetik unterstützt und es vereinfachen kann, besteht diese Funktion die obigen Tests. Wenn jedoch keine vollständige Vereinfachung möglich ist, werden Sie mit Modulo-Ausdrücken enden, die unerwünscht sein können.
Wie bereits in den Kommentaren erwähnt, stellt SymPy eine Funktion floor
zur Verfügung, mit der eine Ganzzahldivision als erhalten werden kann (was auch der //
Operator für Ausdrücke ist):
floor
unterstützt jedoch keine Vereinfachungen und schlägt daher den zweiten Test fehl.
Das Erstellen einer stückweisen Funktion könnte der richtige Weg sein. Es wird auf die Simplifikationsanforderung reagieren und die Varianten der Lösungen abhängig vom Modul des Arguments relativ zu der Ganzzahl halten, mit der Sie teilen. Die Verwendung von piecewise_flatten
in einem Ausdruck, in dem es mehrere Ganzzahl-Divisionen gibt, wird wahrscheinlich notwendig sein, um alles zusammenzufallen.
Zum Beispiel
%Vor%Tags und Links python sympy integer-division