Uebungen  Exercices

6. Manipulation von Listen
 Manipulation de listes

Die Gliederung dieses Kurses folgt in groben Zügen dem Buch von Nancy Blachman: A Practical Approach.... 
Hinweis: Kapitel 6 lesen!
Run mit WIN+Mathematica Version 5.2

 L'articulation de ce cours correspond à peu près à celle du livre de Nancy Blachman: A Practical Approach.... 
Indication: Lire le chapitre 6.
Testé avec Mathematica version 5.2+WIN

WIR94/98/99/2000/2007 // Copyright Rolf Wirz

Aufgabe 1    Problème 1

Erzeugung einer Liste der ersten 29 ungeraden natürlichen Zahlen
 Générer une liste des premiers 29 nombres naturels impairs

Mit Range    Avec Range

Range[1,20,2]

Mit Table    Avec Table

oddList = Table[2i-1,{i,10}]

Aufgabe 2    Problème 2

Herausnehmen und weglassen von 4 Elementen
 Enlever 4 éléments

Die ersten 4 Elemente nehmen:
  Prendre les 4 premiers éléments:

Take[oddList,4]

Die letzten 4 Elemente weglassen:
  Supprimer les 4 derniers éléments:

Drop[oddList, -4]

Aufgabe 3    Problème 3

Funktionen "Dimension" und "Length",  
Interpretation des Resultats
 Fonctions "Dimension" et "Length", 
interprétation des résultats

Eingabe der Matrizen
  Entrer les matrices

m = {{2, 4, 6}, {5, 7, 9}}; n = {{1, 2, 3}, {4, 
                                      5}};
Print[MatrixForm[m]]; Print["***"]; Print[MatrixForm[n]];

Dimension    Dimension

Dimensions[m]

Dimensions[n]

Länge    Longueur

Length[m]

Length[n]

Aufgabe 4    Problème 4

Einige Listenmanipulationen
  Quelques manipulations de listes

(a) Listen generieren
    Générer des listes

Zwei Listen kreieren:
  Créer deux listes

li1 = Table[Random[Integer,{0,10}],{i,10}]

li2 = Table[Random[Integer,{0,10}],{i,10}]

Als Mengen:
  Comme ensembles:

Union[li1]

Union[li2]

(b) Sortieren
    Trier

Sortieren von li1:
  Trier li1:

Sort[li1]

(c) Anfügen
   Ajouter

An  li1:    A li1:

Append[li1, 5]

(d) Schnittmenge
    Intersection

von li1 und li2:
  de li1 et li2:

Intersection[li1, li2]

Vereinigung
 Réunir

von li1 und li2:
  li1 et li2:

Union[li1, li2]

(e)  Zusammenhängen 
    Relier

von li1 und li2:
  li1 et li2:

Join[li1, li2]

(f)  Verschiedene Elemente
    Différents éléments

in li1 und li2:
  dans li1 et li2:

Complement[Union[li1, li2],Intersection[li1, li2]]

(f)  Differenz
    Différence

li1 ohne li2:
  li1 sans li2:

Complement[li1, li2]

(f)  Komplement
    Complément

von li1 und li2 bezüglich Range[10]:
  de li1 et li2 par rapport à Range[10]:

Complement[Range[10],Union[li1, li2]]

Aufgabe 5    Problème 5

Test, ob alle Elemente einer Liste dieselben sind
 Test, si tous les éléments d'une liste sont les mêmes

Liste von Listen von Zahlen:
  Liste de listes de nombres:

myList = {{-1,-1,2},{-1,-1,2},{-1,-1,2},{-1,-1,2}}

Length[Union[myList]]

Liste von Polynomen:
 Liste de polynômes:

myList = {x^2-1,x^2-1,x^2-1,x^2-1,(x-1)(x+1)}

Length[Union[myList]]

Aufgabe 6    Problème 6

Listenmanipulationen
 Manipulations de listes

(a)  Liste generieren
    Générer une liste

Liste generieren mit 16 Zahlen zwischen 0 und 100:
  Générer une liste de 16 nombres entre 0 et 100:

li3 = Table[Random[Integer,{0,100}],{i,16}]

(b)  Partitionen 
     Partitions

mit 4 Teilmengen
  avec 4 sous-ensembles

li4 = Partition[li3,4]

Matrizenform:
  Forme de matrice:

MatrixForm[li4]

(c)  3. Zeile der Matrix
    3. ligne de la matrice

li4[[3]]

(d)  3. Spalte der Matrix
    3. colonne de la matrice

Transpose[li4][[3]]

Transpose[li4][[3]] // MatrixForm

(e)  Mittelwert und Median
    Valeur moyenne et médiane

Mittelwet:    Valeur moyenne:

mean = Sum[li3[[i]],{i,1,Length[li3]}]/Length[li3]

Oder:    Ou:

Apply[Plus,li3]/Length[li3]

Median:    Médiane:

Erst Liste sortieren:
  D'abord trier la liste:

sLi3 = Sort[li3]

Mittleres Element resp. Durchschnitt der beiden mittleren Elemente rechnen, erst Funktion definieren:
  Calculer l'élément du milieu, resp. la moyenne des deux éléments, d'abord définir la fonction:

median[x_List] := (x[[Ceiling[ Length[x]   /2]]] +
                   x[[  Floor[(Length[x]+2)/2]]]
          ) / 2

Versuche, dieses Programm zu begreifen!
  Essaie de comprendre ce programme!

Rechnen:    Calculer la médiane:

median[sLi3]

Liste mit ungerader Anzahl Elemente definieren, sortieren:
  Définir une liste avec nombre impair d'éléments, trier:

sLi4 = Sort[Append[li3,99]]

Median rechnen:
  Calculer la médiane:

median[sLi4]

Aufgabe 7    Problème 7

Mit "Select" Elemente herauspicken:
  Choisir avec "Select" des éléments:

Liste:    Liste:

li3

Programm:    Programme:

greater50[x_]:= x > 50

Anwenden:    Appliquer:

Select[li3, greater50]

Aufgabe 8    Problème 8

Spiel mit "Apply" und "Map":
 Jeu avec "Apply" et "Map":

Liste eingeben:
  Entrer une liste:

Clear[myList]; myList = {{a,b},{c,d}}

(a) ausprobieren:
   essayer:

Apply[f, myList]

(b) ausprobieren:
   essayer:

Map[f, myList]

(c) On-line help:
  On-line help:

??MapAt

??MapAll

(d) ausprobieren:
   essayer:

MapAt[f, myList, {2}]

(e) ausprobieren:
   essayer:

MapAll[f, myList]

Aufgabe 9    Problème 9

Schreibe ein Mathematica-Programm, das aus zwei Zahlenreihen positionsweise immer die kleinere heraussucht:
 Ecris un programme de Mathematica qui, de deux ensembles de nombres, choisit pour chaque position le plus petit nombre:

Zahlenreihen:    Ensembles de nombres:

r1 = {15, 17, 18, 32, 29}

r2 = {14, 18, 22, 29, 26}

Programm:    Programme:

Map[Min, Transpose[{r1, r2}]]

Dazu Details:
  Quelques détails:

Transpose[{r1, r2}] // MatrixForm

Aufgabe 10    Problème 10

Eine Aufgabe mit 3D-Graphik
 Un problème avec des graphiques 3D

Generiere eine Liste von 80 Punkten im 3-dimensionalen Raum:
  Générer une Liste de 80 points dans l'espace à trois dimensions

li5 = Table[Table[Random[Integer,{0,100}],{i,3}],
		{j,80}]

MatrixForm[%]

Graphik-Objekte herstellen:
  Faire des objets graphiques

punkte = Map[Point, li5]

Ploten:    "Ploter":

Show[Graphics3D[{PointSize[0.025], punkte}],
          				Axes -> Automatic];

Show[Graphics3D[{RGBColor[0.5,0.5,0.5],
			PointSize[0.025], punkte}],
          				Axes -> Automatic];

Aufgabe 11    Problème 11

Probiere in Aufgabe 10 die Graustufe vom Punkt abhängig zu machen, so dass jeder Punkt eine andere Graustufe bekommt!
 Prends le problème 10 et essaie de rendre l'intensité du gris dépendante du point, ainsi que chaque point aie une autre intensité de gris!

Eine mögliche Lösung:
 Une solution possible:

Show[Graphics3D[
				Table[{
					RGBColor[i/100,(i/100)^2,(i/100)^3],
					PointSize[0.025+i/1000], 
					punkte[[i]]
					  },{i,Length[punkte]}]
			   ],
          				Axes -> Automatic
    ];

"Putzmaschine" einsetzen
 Employer la "machine de nettoyage"

(* Old Form: Remove["Global`@*"] *)

Remove["Global`*"]