2017-04-12 1 views
1

ich eine Formel wie folgt erstellt haben:Steuerung der Formel Darstellung in SymPy

>>> a, b = symbols('a, B') 
>>> i = Idx('i') 
>>> bi = IndexedBase('b')[i] 
>>> Sum(a*(bi/b), (i, 1, 5)) 
    5   
____  
╲ a⋅b[i] 
    ╲ ────── 
    ╱  B 
╱   
‾‾‾‾  
i = 1 

Während es richtig ist, sieht es nicht wie ich will. Ich möchte die Tatsache betonen, dass b[i]/B ein Koeffizient für a ist, um es einfach zu machen, meine Gedanken zu verstehen, wenn ich diese Formel lese. Dies wird zu Dokumentationszwecken in meinem Jupyter Notebook-Dokument benötigt. Deshalb möchte ich sympy sagen, irgendwie die Formel auf diese Weise zu repräsentieren:

5   
____  
╲  b[i] 
    ╲ a⋅──── 
    ╱  B 
╱   
‾‾‾‾  
i = 1 

Danach möchte ich sympy sagen, um die Formel zu vereinfachen, so wenig Operationen wie möglich zu machen. Zum Beispiel kann diese Formel auf diese Weise vereinfacht werden:

 5   
    ____  
a ╲  
─ ⋅ ╲ b[i] 
B ╱  
    ╱   
    ‾‾‾‾  
    i = 1 

Wie erreiche ich dies mit SymPy?

+0

Welche Python/sympy Version verwenden Sie? –

+0

Python 2.7.10, SymPy 1.0 – raacer

Antwort

1

Ich konnte nicht Ihren genauen Code auf meinem alten System (Python 2.7.6, Sympy 0.7.4.1) arbeiten, also musste ich es ein wenig ändern, während ich immer noch versuchte, eine sehr ähnliche Struktur zu behalten.

Es sieht aus wie factor() könnte Ihnen helfen:

from sympy import * 
a, b = symbols('a, B') 
i, n = symbols('i n', integer=True) 
bi = Function('b')(i) 
f = summation(a/b*bi, (i,1,n)) 
init_printing() 

f:

n   
____  
╲   
    ╲ a⋅b(i) 
    ╲ ────── 
    ╱ B 
    ╱   
╱   
‾‾‾‾  
i = 1  

factor(f):

n  
    ___  
    ╲   
    ╲ b(i) 
a⋅ ╱  
    ╱   
    ‾‾‾  
    i = 1  
──────────── 
    B 
+0

'factor()' funktioniert für mich, wenn ich 'i' als' i = Symbole ('i', integer = True) 'definiere. Aber wenn es als 'i = Idx (' i ')' definiert ist, verschiebt factor() sowohl Indiziert als auch Funktion außerhalb der Summe o_O. Sieht nach einem Fehler aus. Ist SymPy 0.7.4.1 robuster? – raacer

+0

Und der erste Teil der Frage ist immer noch aktuell. – raacer

+0

Ich weiß nicht, ob 0.7.4 robuster ist, ich konnte Ihr Beispiel nicht zum Funktionieren bringen. Was die erste Frage angeht, es ist wirklich nur ein hübscher Druckunterschied, ich weiß nicht, ob Sie etwas dagegen tun können: Die beiden Ausdrücke sind aus mathematischer Sicht genau gleich. Soll ich meine Antwort löschen? –

Verwandte Themen