Maxima

MAKELIST-Befehl / Listen

Inhalt:

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!


zurueck

Beispiele - makelist-Befehl

Folgen

Berechne die ersten 20 Elemente der Zahlenfolge an mit an = n/(2n+1).

makelist1

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.


makelist2

Ü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

Button

Pascalsches Dreieck:
Konstruiere die ersten 8 Zeilen des Pascalschen Dreiecks! Verwende dazu die Kombinatorikfunktion binomial(n,k) = n!/(k!·(n-k)!)

Tip - für eine zeilenweise Auflistung empfiehlt sich die Verwendung einer "echten" Schleife!
for .. thru .. do
Hier: von n=1 bis 8 führe folgenden Anweisungsblock aus [berechne die Werte, zeige sie an].


table

zurueck

© PH-NOe, letzte Änderung am 9. Mai 2008, erstellt von Walter Wegscheider