Nächste: Funktionen und Variablen für Arrays, Vorige: Arrays, Nach oben: Arrays [Inhalt][Index]
Am flexibelsten sind Arrays, die nicht deklariert werden, diese werden auch
Hashed-Arrays genannt und entstehen dadurch, dass einer indizierten Variablen
ein Wert zugewiesen wird. Die Indizes brauchen keine ganze Zahlen zu sein,
es sind auch Symbole und Ausdrücke als Index möglich. Nicht-deklarierte
Arrays wachsen dynamisch mit der Zuweisung von Werten an die Elemente. Im
Folgenden wird ein nicht-deklariertes Array a
durch Zuweisung von Werten
erzeugt. Die Elemente des Arrays werden mit der Funktion listarray
angezeigt.
(%i1) a[1,2]: 99; (%o1) 99 (%i2) a[x,y]: x^y; y (%o2) x (%i3) listarray(a); y (%o3) [99, x ]
Von den nicht-deklarierten Arrays sind deklarierte Arrays zu unterscheiden.
Diese haben bis zu 5 Dimensionen und können einen Typ wie fixnum
oder
flonum
erhalten. Maxima unterscheidet zunächst zwei verschiedene Arten
von deklarierten Arrays. Zum einen kann ein Symbol mit der Funktion
array
als ein deklariertes Array definiert werden. Eine andere
Möglichkeit ist, mit der Funktion make_array
ein Lisp-Array zu
deklarieren, dass einem Symbol zugewiesen wird.
Das erste Beispiel zeigt die Deklaration eines Symbols a
als ein Array.
Im zweiten Beispiel wird ein Lisp-Array erzeugt, das dem Symbol b
zugewiesen wird.
(%i1) array(a, fixnum, 2, 2); (%o1) a (%i2) b: make_array(fixnum, 2, 2); (%o2) {Array: #2A((0 0) (0 0))}
Erhält die Optionsvariable use_fast_arrays
den Wert true
, werden
ausschließlich Lisp-Arrays erzeugt. Im Folgenden wird auch von der Funktion
array
ein Lisp-Array erzeugt, dass dem Symbol c
zugewiesen wird.
Die Implementation der Funktionalität der Funktion array
ist jedoch
nicht vollständig, wenn Lisp-Arrays genutzt werden. So kann in diesem
Beispiel nicht wie oben ein Array mit dem Typ fixnum
definiert werden.
Das ist ein Programmfehler.
(%i3) use_fast_arrays: true; (%o3) true (%i4) array(c, 2, 2); (%o4) #2A((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL)) (%i5) c; (%o5) #2A((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL)) (%i6) array(c, fixnum, 2, 2); make_array: dimensions must be integers; found [fixnum + 1, 3, 3] -- an error. To debug this try: debugmode(true);
Maxima kennt weiterhin Array-Funktionen, die Funktionswerte speichern können, und indizierte Funktionen. Die hier beschriebenen Funktionen können auch auf diese Arrays angewendet werden. Siehe Array-Funktionen für eine Beschreibung.
Weitere Ausführungen sind bei der Beschreibung der einzelnen Funktionen zu finden. Maxima kennt folgende Funktionen und Symbole für das Arbeiten mit Arrays:
array arrayapply arrayinfo arraymake arrays fillarray listarray make_array rearray remarray subvar subvarp use_fast_arrays
Nächste: Funktionen und Variablen für Arrays, Vorige: Arrays, Nach oben: Arrays [Inhalt][Index]