beispiele_lists.mws

Wiederholung und Beispiele zu Folgen (engl. "sequences") und Listen (engl. "lists")

Beispiele für Folgen

>    s1 := 1,2,3,4,5;

s1 := 1, 2, 3, 4, 5

>    s2 := seq(j^2,j=1..5);

s2 := 1, 4, 9, 16, 25

Verkettung von Folgen

>    s3 := s1,s2;

s3 := 1, 2, 3, 4, 5, 1, 4, 9, 16, 25

Listen

>    l1 := [s1];

l1 := [1, 2, 3, 4, 5]

Anzahl der Elemente in einer Liste

>    nops(l1);

5

>    l2 := [s2];

l2 := [1, 4, 9, 16, 25]

>    l3 := [s1,s2];

l3 := [1, 2, 3, 4, 5, 1, 4, 9, 16, 25]

Aus den beiden Listen wird nun eine Folge mit 2 Elementen, die wiederum Listen sind, erzeugt

>    s4 := [s1],[s2];

s4 := [1, 2, 3, 4, 5], [1, 4, 9, 16, 25]

Das erste Element der Folge s4 ist die Liste [s1]

>    s4[1];

[1, 2, 3, 4, 5]

l3  (zur Konstruktion siehe oben) ist eine Liste, die die verketteten Folgen s1 und s2 enthält.

Das erste Element in dieser Liste erhält man über

>    l3[1];

1

und das 6. Element aus der Liste l3 mit

>    l3[6];

1

Eine Liste lässt sich in aufsteigender Reihenfolge sortieren mit

>    l3 := sort(l3);

l3 := [1, 1, 2, 3, 4, 4, 5, 9, 16, 25]

Weitere Funktionen im Umgang mit Listen stellt Maple in dem Package ListTools zur Verfügung

>    with(ListTools);

[BinaryPlace, BinarySearch, Categorize, DotProduct, Enumerate, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, ...
[BinaryPlace, BinarySearch, Categorize, DotProduct, Enumerate, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, ...
[BinaryPlace, BinarySearch, Categorize, DotProduct, Enumerate, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, ...
[BinaryPlace, BinarySearch, Categorize, DotProduct, Enumerate, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, ...

Will man z.B. aus der Liste l3

>    l3;

[1, 1, 2, 3, 4, 4, 5, 9, 16, 25]

 die doppelt vorhandenen Elemente entfernen, so kann man dazu

>    l3 := MakeUnique(l3);

l3 := [1, 2, 3, 4, 5, 9, 16, 25]

einsetzen.

>    l3;

[1, 2, 3, 4, 5, 9, 16, 25]

Alternativ kann man doppelt vorhandene Elemente durch Umwandlung in eine Menge (die keine doppelten Elemente enthalten kann) und Rückumwandlung der Menge in eine Liste bewerkstelligen.

Zunächst wird die ursprüngliche Liste l3 nochmals erzeugt:

>    l3 := [s1,s2];

l3 := [1, 2, 3, 4, 5, 1, 4, 9, 16, 25]

dann erfolgt die Umwandlung der Liste in eine Menge und die Rückumwandlung der Menge in eine Liste

>    l3 := [op({op(l3)})];

l3 := [1, 2, 3, 4, 5, 9, 16, 25]

Dass in einer Menge doppelt vorhandene Elemente automatisch entfernt werden, sieht man schon an dem einfachen Beispiel

>    {1,3,4,4};

{1, 3, 4}

Paarweise Verkettung zweier gleichlanger Folgen in eine Folge aus 2er Listenelementen

Aus den Folgen

>    s1;

1, 2, 3, 4, 5

>    s2;

1, 4, 9, 16, 25

Es soll nun die Folge [1,1],[2,4],[3,9],[4,16],[5,25] konstruiert werden

Zwischenschritt

>    [op(1,[s1]),op(1,[s2])];

[1, 1]

oder alternativ kann man bei einer Folge ein einzelnes Element auch durch direkte Indizierung herausgreifen:

>    [s1[1],s2[1]];

[1, 1]

damit kann man sich gewünschte Folge aus den paarweise verschränkten Listenelementen konstruieren mit

>    s5 := seq([op(i,[s1]),op(i,[s2])],i=1..nops([s1]));

s5 := [1, 1], [2, 4], [3, 9], [4, 16], [5, 25]

oder alternativ als

>    s5 := seq([s1[i],s2[i]], i=1..nops([s1]));

s5 := [1, 1], [2, 4], [3, 9], [4, 16], [5, 25]

Weitere Alternative:

>    s5 := op(zip( (x,y) -> [x,y],[s1],[s2] ));

s5 := [1, 1], [2, 4], [3, 9], [4, 16], [5, 25]

Darstellung der Wertepaare mittels listplot( )

>    with(plots):

Warning, the name changecoords has been redefined

>    listplot([s5],style=point);

[Maple Plot]

>    p1 := listplot([s5],style=point,symbol=circle, symbolsize=20, color=red, view=[0..5,0..30]): display(p1);

[Maple Plot]

>    p2 := listplot([s5],style=line,symbol=circle, symbolsize=20, color=red, view=[0..5,0..30],labels=["x","y"]): display(p1,p2);

[Maple Plot]

In logarithmischer Darstellung :

>    logplot([s5],style=point,symbol=circle, symbolsize=20, color=red,view=[0..5,0.1..150],labels=["x","log(y)"]);

[Maple Plot]

>