2017-02-06 3 views
1

Ich habe eine Gleichung, die von der Form (in LaTeX Syntax) ist:Kann SymPy Variablen verstehen, die von einem Summationsindex indiziert werden?

\sum_{k=0}^{K-1} a_k = 0 

a_k „ein Index k“, ein von einer Liste von Variablen, dass ich ein System linearer Gleichungen in der Einrichtung Ich möchte diese Gleichung auf SymPy so kompakt wie möglich ausdrücken können. Es scheint, als ob ich seine Funktion verwenden möchte, um die Summe auszudrücken, aber ich bin mir nicht sicher, wie ich es sagen soll, on term k in the sum, a_k refers to the k-th symbol.

Ist das möglich, zum Beispiel, wenn ich eine Liste von Symbolen wie dieser aufstelle?

a = [sympy.symbols('a' + str(i)) for i in xrange(K)] 

Antwort

5

Meinst du sowas?

In [1]: a = IndexedBase("a") 

In [2]: Sum(a[k], (k, 0, K-1)) 
Out[2]: 
K - 1  
___  
╲   
    ╲ a[k] 
    ╱  
╱   
‾‾‾  
k = 0 

IndexedBase sollen eine Variable erstellen, dass sie einen Index jedes Mal verwendet wird, angeben muss. Wenn die Indizes unterschiedlich sind, sollten die Variablen als unterschiedlich angesehen werden (z. B. a[k] vs a[j]).

Falls Ihre Summe ist bekannt Grenzen (das heißt nicht wörtliche), können Sie diese erweitern:

In [3]: Sum(a[k], (k, 0, 10)) 
Out[3]: 
    10  
___  
╲   
    ╲ a[k] 
    ╱  
╱   
‾‾‾  
k = 0  

In [4]: Sum(a[k], (k, 0, 10)).doit() 
Out[4]: a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10] 

Leider sind nicht alle Algorithmen von SymPy die Unterstützung vollständig IndexedBase Objekte. In solchen Fällen wird ein Austausch mit Symbol empfohlen.

Verwandte Themen