Automatisches Auffüllen von Matrixelementen in SymPy

7

Gibt es eine Möglichkeit, implizit die Elemente einer symbolischen Matrix in SymPy nach einer Regel zu definieren: Symbol gefolgt von Subindizes in der Matrix (oder Zahlenpaaren) )

Ich möchte zum Beispiel eine 3 x 2-Matrix mit dem Namen M definieren und möchte, dass SymPy sie automatisch erstellt und wie folgt auffüllt:

%Vor%

Wenn dies nicht implizit möglich ist, was wäre der einfachste Weg, dies explizit zu tun (z. B. Schleifen)?

    
Amelio Vazquez-Reina 29.07.2011, 17:56
quelle

2 Antworten

11

Wie wäre es mit so etwas:

%Vor%

Edit: Ich nehme an, ich sollte eine kleine Erklärung hinzufügen. Die ersten beiden Argumente für sympy.Matrix () definieren die Matrix als 3x2 (wie Sie angegeben haben). Das dritte Argument ist eine Lambda -Funktion, die im Wesentlichen eine Kurzform ist, um eine Funktion in einer Zeile zu definieren, anstatt sie mit def zu definieren. Diese Funktion verwendet die Variablen i und j als Eingabe, die bequemerweise die Indizes der Matrix sind. Für jedes Paar (i, j) , das an Lambda übergeben wird (dh für jedes Element der Matrix), erstellen wir eine neue symbolische Variable M_ij sympy.var () verwendet eine Zeichenfolge als Eingabe, die den Namen der neuen symbolischen Variablen definiert. Wir generieren diese Zeichenfolge während der Übertragung mit der Formatzeichenkette 'M_% d% d' und füllen sie mit (i + 1, j + 1) aus. Wir fügen 1 zu i und j hinzu, weil Sie möchten, dass die Matrix 1-indexiert anstatt 0-indiziert wird, wie es in Python der Standard ist.

    
Brendan Wood 29.07.2011, 20:06
quelle
15

Erwägen Sie, das Objekt MatrixSymbol und nicht Matrix zu verwenden. MatrixSymbol stellt Matrizen ohne explizite Elemente dar.

%Vor%     
MRocklin 17.12.2013 02:23
quelle

Tags und Links