|
Eine der einfachsten "Schleifenähnlichen" Funktionen, der in MAXIMA häufige Verwendung erfährt, ist der MAKELIST-Befehl. Für die Verwendung von Element-Ketten (Listen, Vektoren - in den meisten Programmiersprachen als Arrays bezeichnet) bietet MAXIMA darüber hinaus aber noch eine ganze Palette von Befehlen an.
Funktionen und Operatoren für Listen / Arrays:
| makelist(u,k,m,n) |
ergibt die Liste [u(m), u(m+1), ..., u(n)] in Abhängigkeit von k. |
| makelist(u,k,z) |
ergibt die Liste [u(z1), u(z2), ..., u(zn)], wobei z selbst eine Liste z = [z1, z2, ..., zn] ist. |
| create_list(u,k,z) |
Alternative zu makelist - erzeugt eine Liste aus dem Ausdruck u, wobei k alle Werte der Liste z durchläuft. |
| read_list(file) |
erzeugt eine Liste aus dem Datenfile file. |
| read_nested_list(file) |
erzeugt eine verschachtelte Liste aus dem Datenfile file, jede Zeile im Datenfile wird zu einer Unterliste. |
| copylist(v) |
kopiert die Liste v. |
| v[n] |
ergibt das n-te Element des Vektors v. |
| v[i][j] |
ergibt das ij-te Element der zweifach geschachtelten Liste v. |
| :, +, -, *, / |
elementweise Zuordnung, Addition, ... - Achtung: bei elementweisen Operationen mit zwei Listen müssen beide Listen die gleiche Anzahl von Elementen haben. |
| |
| first(v) |
ergibt das erste Element eines Vektors v. Ähnlich gibt es die Möglichkeit, über second(v), third, ..., bis tenth Elemente anzusprechen. Weitere Möglichkeit ist last. |
| length(v) |
gibt die Anzahl der Teile zurück. |
| member(a,w) |
überprüft, ob der Ausdruck a Bestandteil der Liste w ist - liefert true oder false. |
| lmin(w), lmax(w) |
liefert das Minimum / Maximum aller Listenelemente. |
| delete(v,w) |
löscht alle Vorkommen des Ausdrucks v in w - nicht nur auf Listen anwendbar. |
| append(list1,list2) |
an die Liste list1 werden die Elemente von list2 hinzugefügt. |
| cons(a,v) |
fügt den Ausdruck a am Anfang der Liste v ein, a ist damit neues erstes Element von v (analog: endcons(a,v) am Ende der Liste). |
| rest(v,n) |
gibt v ohne die ersten n Elemente (negatives n: ohne die letzten n Elemente). |
| reverse(v) |
liefert eine Kopie von v, bei der die Komponenten genau in umgedrehter Reihenfolge auftreten. |
| sort(v) |
ergibt die (aufsteigend) sortierte Liste - SORT kann durch Angabe von Parametern / Prädikaten auch noch variiert werden (siehen MAXIMA-Hilfe!) |
| sublist(w,f) |
ergibt die Liste mit jenen Elementen aus w (einer Liste), für die die Funktion f den Wert true ergibt. |
| flatten(v) |
"Verflachen" der Liste - Unterlisten werden aufgelöst und deren Elemente "flach" in die Liste w eingebettet. |
Hinweis - einige der besprochenen Funktionen gelten auch für Matrizen - die wieder als mehrdimensionale Vektoren oder Listen aufgefasst werden können.
Hinweis - Listen (wie auch Matrizen) lassen sich nicht durch eine einfache Variablenzuordnung kopieren, man benötigt dafür den eigenen Befehl! (copylist). Die Zuordnung a:l1 erzeugt nur eine Referenz auf die Liste l1, aber keine neue Liste a!
|
Beispiele - makelist-Befehl
Folgen
Berechne die ersten 20 Elemente der Zahlenfolge an mit an = n/(2n+1).

Wertetabellen von Funktionen
Erzeuge die Funktionswerte von f(x):=x^2-x-1 im Intervall [-2,3] mit Schrittweite 0.5.
Tip - da der Befehl MAKELIST keinen Parameter STEP kennt, weichen wir aus, indem wir innerhalb von MAKELIST eine Liste mit den gewünschten x-Werten erzeugen (natürlich wieder mit MAKELIST) und berechnen anschließend die Funktionswerte dieser erzeugten Ausdrücke.

|
Übungen:
- Erzeugen Sie die ersten 20 Elemente der Folge an mit an=1/2^n. Erzeugen Sie zur selben Folge ergänzend mit Hilfe eines MAKELIST-Befehls die Elemente 21, 22, 23, 25, 28, 32.
- Geben Sie die folgende Liste mittels MAKELIST-Befehl ein: [0,-2,4,-6,8,-10,12,-14,16,-18,20,-22,24,-26]
- Erzeugen Sie eine Funktion, die die Eckpunkte eines regelmäßigen n-Ecks mit Hilfe des MAKELIST-Befehls erzeugt (Radius des Umkreises = 5). Plotten Sie mit Hilfe der erzeugten Punkte ein regelmäßiges 12-Eck.
|
MAXIMA-Datei
 |