Kurs  Cours

4. Graphiken  Graphiques

Die Gliederung dieses Kurses folgt in groben Zügen dem Buch von Nancy Blachman: A Practical Approach.... 
Hinweis: Kapitel 4 lesen!
 L'articulation de ce cours correspond à peu près à celle du livre de Nancy Blachman: A Practical Approach.... 
Indication: Lire le chapitre 4.

Sollte mit Version 4.0, WIN etc. laufen 
 Devrait fonctionner avec version 4.0, WIN etc.

WIR94/98/99 // Copyright Rolf Wirz

4.1. Zweidimensionale Plots
     Plots à deux dimensions

Gewöhnliche Funktion über einem Intervall.  ";" unterdrückt den letzten Output:
  Fonction commune sur un intervalle. ";" empêche le dernier output.

Plot[x^2 + 5x + 6,{x, -10, 5}];

Plot[x^2 + 5x + 6,{x, -10, 5}]

y = x^2 + 5x + 6;
Plot[y,{x, -10, 5}];

Pole bieten keine Probleme:
  Les pôles ne causent pas de problèmes:

Plot[Tan[x],{x, 0, 10}];

Vielleicht wird etwas abgeschnitten:
  Mathematica coupe peut-être quelque chose:

Plot[Sin[x]/x,{x, -20, 20}];

4.2. Options
     Options

4.2.1. Allgemeines
       En général

Ein Plot kann auf diverse Weise durch Angabe der Options verändert werden:
  Un plot peut être transformé de différentes façons en indiquant les options:

??Plot

Options[Plot]

Beispiel mit dem y-Intervall:
  Exemple avec l'intervalle y:

Plot[Sin[x]/x,{x, -20, 20}, PlotRange -> {0, 1}];

Plot[Sin[x]/x,{x, -20, 20}, PlotRange -> All];

Vielleicht wird trotzdem "etwas" abgeschnitten...:
  Peut-être Mathematica coupe quand-même "quelque chose"...:

Plot[Cot[x],{x, 1, 10}, PlotRange -> All];

Plot[Cot[x],{x, 0, 10}, PlotRange -> All];

Plot[Cot[x],{x, -10, 10}, PlotRange -> All];

4.2.2. Die Voreinstellung von Mathematica kann abgefragt werden:
       La mise au point préalable de Mathematica peut être interrogée:

Options[Plot]

AspectRatio /. Options[Plot]

??AspectRatio

PlotPoints /. Options[Plot]

Der Output kann unterdrückt werden:
  On peut réprimer l'output.

test = Plot[Sin[x],{x, 0, 2 Pi}, 
DisplayFunction -> Identity];

Hier eine Zeichnung, die zeigt, in welchen Abständen Mathematica die Funktionswerte berechnet:
  Voici un dessin qui montre à quelles distances Mathematica calcule les valeurs des fonctions:

Show[Graphics[{Thickness[0.001], Map[Line[{{#[[1]],
	0},#}]&, Nest[First, test, 4]]}],
	Axes->Automatic];

Was tun die einzelnen Befehle?
  Que fait chaque ordre?

test

??Nest

Nest[First, test, 4]

Nest[First, test, 5]

Nest[First, test, 3]

Nest[First, test, 2]

Nest[First, test, 1]

First[test]

Map[Line[{{#[[1]],0},#}]&, Nest[First, test, 4]]

Graphics[{Thickness[0.001], 
				Map[Line[{{#[[1]],0},#}]&,
				Nest[First, test, 4]]}]

Show[Graphics[{Thickness[0.001], 
	Map[Line[{{#[[1]],0},#}]&,
	Nest[First, test, 4]]}], Axes->Automatic];

4.2.3. Probleme mit den Plot-Punkten:
       Problèmes avec les points-"plot":

Kann das stimmen?
  Est-ce correct?

Plot[x + Sin[2 Pi x], {x, 0, 24}];

Andere Anzahl Punkte:  
 Autre nombre ce points:

Plot[x + Sin[2 Pi x], {x, 0, 24}, PlotPoints -> 20];

Plot[x + Sin[2 Pi x], {x, 0, 24}, PlotPoints -> 50];

Welche Punkte rechnet Mathematica?
 Quels points sont calculés par Mathematica?

Table[{x, x + Sin[2 Pi x]}, {x, 0, 24}]

4.2.4. Wechsel des Plot-Stils:
       Changement du style "plot":

Liniendicke, Graustufe, Farbe, Linienart, etc. können angepasst werden:
 Epaisseur de la ligne, nuance de gris, couleur, type de ligne etc. peuvent être adaptés:

Options[Plot]

??PlotStyle

??Graphics

PlotStyle /. Options[Plot]

Probiere aus:    Essaie:

Plot[x, {x, 0, 10}, PlotStyle -> Thickness[0.125]];

Plot[x, {x, 0, 10}, PlotStyle -> Thickness[0.03]];

Plot[x, {x, 0, 10}, PlotStyle -> RGBColor[0.8, 
									0.2, 0.2]];

Plot[x, {x, 0, 10}, PlotStyle -> GrayLevel[0.5]];

Plot[x, {x, 0, 10}, PlotStyle -> Dashing[{0.04}]];

Plot[Sin[x], {x, 0, 10}, PlotStyle -> {{Thickness[
		0.02], GrayLevel[0.7], Dashing[{0.1}]}}];

4.3. Mehrere Graphen in einem Bild
     Plusieurs graphes en une image

Man kann auch eine Menge von Funktionen auf einmal ausgeben:
  On peut aussi sortir un ensemble de fonctions à la fois:

Plot[{E^x, x^E}, {x, 0, 5}];

Da es manchmal schwierig ist, die Kurven zu unterscheiden, ist es angebracht, diese verschieden darzustellen:
  Comme il est parfois difficile de distinguer les courbes, il est préférable de les représenter de différentes façons:

Plot[{E^x, x^E}, {x, 0, 5}, PlotStyle -> {
		{Thickness[0.02], Dashing[{0.05, 0.03}]},
		{Thickness[0.01]}     }				];

Plot[Evaluate[Table[x^(1/n), {n,5}]], {x, 0, 5}];

Evaluate[Table[x^(1/n), {n,5}]]

Table[x^(1/n), {n,5}]

"Evaluate" steuert die Operationshierarchie. Bevor die Plotpunkte berechnet werden können, muss die Tabelle generiert werden! Versuche Dich nun in eigenen Plots!
  "Evaluate" dirige la hiérarchie des opérations. Avant de pouvoir calculer les points "plot", il faut générer le tableau! Essaie des plots à toi!

4.4. Parametrisierte Kurven 
    Courbes paramétrisées

In einem kartesischen Koordinatensystem in der Ebene kann eine Kurve durch einen Vektor gegeben werden, der von einer Variable (Parameter) abhängt. Beispiel:
  Dans un système de coordonnés cartésien, dans le plan, une courbe peut être donnée par un vecteur qui dépend d'une variable (paramètre). Exemple:

v[t_]:= {4 Cos[-11 t/4] + 7 Cos[t], 4 Sin[-11 t/4] 
			+ 7 Sin[t]}; v[t]

ParametricPlot[v[t], {t, 0, 8 Pi}];

ParametricPlot[{4 Cos[-11 t/4] + 7 Cos[t], 
				4 Sin[-11 t/4] + 7 Sin[t]}, 
				{t, 0, 8 Pi}];

ParametricPlot[{4 Cos[-11 t/4] + 7 Cos[t], 
				4 Sin[-11 t/4] + 7 Sin[t]}, 
				{t, 0, 8 Pi}, Axes -> None];

Das Achsenverhältnis:
  Rapport axial:

AspectRatio /. Options[Plot]

ParametricPlot[{4 Cos[-11 t/4] + 7 Cos[t], 
				4 Sin[-11 t/4] + 7 Sin[t]}, 
				{t, 0, 8 Pi}, Axes -> None,
				AspectRatio -> Automatic];

ParametricPlot[{Cos[t], Sin[t]}, {t, 0, 2 Pi},
				AspectRatio -> 1];

Man beachte den Massstab:
  Tenir compte de l'échelle:

ParametricPlot[{Cos[t], 5 Sin[t]}, {t, 0, 2 Pi},
				AspectRatio -> 1];

ParametricPlot[{Cos[t], 5 Sin[t]}, {t, 0, 2 Pi},
				AspectRatio -> 5];

ParametricPlot[{Cos[t], 5 Sin[t]}, {t, 0, 2 Pi},
				AspectRatio -> 1/5];

4.5. Weitere Optionen
     Autres options

Z.B. ein Gitter:
  P. ex. une grille:

Plot[E^-x^2 Cos[20x], {x,-2,2}, 
			GridLines -> Automatic];

Oder ein Rahmen:
  Ou un cadre:

Plot[E^-x^2 Cos[20x], {x,-2,2}, Frame -> True];

Plot[BesselJ[0, x], {x, 0, 20}, Frame -> True];

4.6. Plots von Flächen im Raum
     Plots de surfaces dans l'espace

Probiere aus! (Hier werden die Achsen beschriftet):
  Essaie! (Ici on met une inscription sur les axes:)

Plot3D[Sin[x y],{x, 0, Pi}, {y, 0, 2 Pi}, 
			AxesLabel -> {"x", "y", "z"}];

Show[%, ViewPoint->{1.050, 1.910, 2.440}];

Im Menu unter ("Action", "Prepare Input") neu: "Input", "3D ViewPoint Selector" findest Du eine Hilfe, um den Blickpunkt zu verändern. Du kannst da schieben und dann z.B.  die Insert-Taste (Copy-Paste) betätigen, nachdem allerdings der Cursor in einer neuen Zelle parkiert worden ist. Du bekommst dann ein lauffähiges Programm. Probiere die Sache aus!
  Tu trouves dans le menu sous ("Action", "Prepare Input") nouveau: "Input", "3D ViewPoint Selector" une aide pour changer le point de vue. Là tu peux déplacer et ensuite p.ex. appuyer sur la touche insert, après avoir note bien parqué le curseur dans une nouvelle cellule. Tu obtiendras un programme qui fonctionne. Essaie-le!

4.7. Options für Farben, Beleuchtung, ....
     Options pour couleurs, éclairage, ....

Probiere aus:    Essaie!

Options[Plot3D]

LightSources /. Options[Plot3D]

Lighting /. Options[Plot3D]

Probiere aus:    Essaie!

??SetOptions

SetOptions[Plot3D, Lighting -> False]

Plot3D[Sin[x y],{x, 0, Pi}, {y, 0, 2 Pi}];

Oder auf einmal:
  Ou à la fois:

Plot3D[Sin[x y],{x, 0, Pi}, {y, 0, 2 Pi}, 
Lighting -> False];
Plot3D[Sin[x y],{x, 0, Pi}, {y, 0, 2 Pi}, 
Lighting -> True];

Probiere die Options ein wenig aus!
  Essaie un peu les options!

?ClipFill

Plot3D[1/Sin[x y],{x, 0.1, Pi-0.1}, {y, 0.1, 2 Pi}, 
ClipFill -> None];

Plot3D[1/Sin[x y],{x, 0.1, Pi-0.1}, {y, 0.1, 2 Pi}, 
BoxRatios -> {1,2,4}];

4.8. Arbeiten mit Daten
     Travailler avec des données

4.8.1. Allgemeines
       Notions générales

Z.B. mit "ListPlot" und "ListPlot3D"
  P.ex. avec "ListPlot" et "ListPlot3D"

??ListPlot

??ListPlot3D

Erst Daten generieren:
  D'abort générer des données:

data = N[Table[{x, Sin[x] + x + 0.5 Random[]},
				{x, 0, 5 Pi, Pi/8}]]

Dann Daten ploten: 
  Ensuite "ploter" les données:

dataplot = ListPlot[data];

Polynom durch diese Punkte als Funktion von x:
Polynôme à travers ces points comme une fonction de x:

??InterpolatingPolynomial

InterpolatingPolynomial[data,x]

Chop[InterpolatingPolynomial[data,x]]

interplot = Plot[Evaluate[
	InterpolatingPolynomial[data,x]],{x,3,12}];

Plot[Evaluate[
	InterpolatingPolynomial[data,x]],{x,0,20}];

Show[dataplot, interplot];

4.8.2. "Regressionskurven"
        "Courbes de régression"

Arbeiten mit "Fit":
  Travailler avec "Fit":

??Fit

Gerade durch die Punktwolke:
  En ligne droite à travers le nuage de points:

trent = Fit[data, {1, x}, x]

trentplot1 = Plot[trent,{x,0,15}];

Show[trentplot1, dataplot];

Polynomkurve 6. Grades durch die Punktwolke:
  Courbe polynomiale de 6e degré à travers le nuage de points:

trent6 = Fit[data, {1, x, x^2, x^3, x^4, 
					x^5, x^6}, x]

trentplot6 = Plot[trent6,{x,0,15}];

Show[trentplot6, dataplot];

Kurve als Ueberlagerung von Gerade und Cosinus- sowie 
Sinusfunktion durch die Punktwolke:
  Courbe comme superposition d'une droite et d'une fonction cosinus ainsi que sinus à travers le nuage de points:

trentcc = Fit[data, {1, x, Cos[x], Sin[x]}, x]

trentplotcc = Plot[trentcc,{x,0,15}];

Show[trentplotcc, trentplot1, dataplot];

Optionen:    Options:

dataplot1 = ListPlot[data, PlotStyle->{PointSize[0.02],
							GrayLevel[0.2]}];

Punkte verbinden:
  Relier les points:

dataplot2 = ListPlot[data,  PlotJoined->True];

ListPlot kann auf einmal nur eine Datenmenge ploten, jedoch kann man solche Plots überlagern:
  ListPlot ne peut "ploter" qu'un ensemble de données à la fois, on peut cependant superposer de tels plots:

data1 = N[Table[{x, 1 + Cos[x] + 0.5 x + 
 	0.5 Random[]}, {x, 0, 5 Pi, Pi/8}]];
dataplot3 = ListPlot[data1, 
	PlotStyle->{PointSize[0.014]}];

Show[dataplot1,dataplot3];

4.8.3. Unterdrückung des Graphik-Outputs (Zeit sparen!)
       Supprimer la sortie des graphes (économie de temps!)

Studiere: Zuerst Daten generieren (Tabelle mit 3 Listen  zu je 5 Elementen, "DisplayFunction"):
  Etudie: D'abort générer les données (tableau à 3 listes à 5 éléments, "DisplayFunction"):

myMatrix = Table[Random[], {3}, {5}]

??DisplayFunction

Graphiken rechnen, jedoch nicht einzeln ausgeben:
  Calculer des graphes, cependant ne pas les sortir:

plot1 = ListPlot[myMatrix[[1]], 
	PlotStyle->RGBColor[1,0,0], PlotJoined->True, 
	DisplayFunction->Identity];
plot2 = ListPlot[myMatrix[[2]], 
	PlotStyle->RGBColor[0,1,0], PlotJoined->True, 
	DisplayFunction->Identity];
plot3 = ListPlot[myMatrix[[3]], 
	PlotStyle->RGBColor[0,0,1], PlotJoined->True, 
	DisplayFunction->Identity];

Graphiken ausgeben, alle zusammen in einem Bild:
  Sortir les graphes, tous ensemble en une image:

Show[plot1, plot2, plot3, 
	DisplayFunction :> $DisplayFunction];

Erklärungen:    Explications:

??$DisplayFunction

Show[plot1, plot2, plot3, 
	DisplayFunction -> $DisplayFunction];

??->

??:>

4.8.4. Plot von 3-dimensionalen Daten
       Plot de données à 3 dimensions

Erklärungen:    Explications:

??ListContourPlot

??ListDensityPlot

Erst Daten generieren:
  D'abort générer des données:

array1 = Table[x + Sin[x] + Random[], {6}, 
	{x, 1, 6}];	Print[array1];
				ListPlot3D[array1];

array2 = Table[x + Sin[x] + Random[], {10}, 
	{x, 1, 10}];	ListPlot3D[array2];

Zur besseren Sichtbarmachung zeichnet Mathematica eine Fläche und nicht eine Punktwolke im 3-dimensionalen Raum. ListContourPlot zeichnet davon eine 
Höhenlinienkarte:
  Pour une meilleure perceptibilité, Mathematica dessine une surface et non pas un nuage de points dans l'espace à trois dimensions. ListContourPlot dessine une carte indiquant les courbes à niveau:

ListContourPlot[array1];

Eine andere Möglichkeit zur Veranschaulichung bietet ListDensityPlot: 
ListDensityPlot offre une autre possibilité d'illustration:

ListDensityPlot[array1];

4.9. Eingebaute Graphikelemente oder Blðcke
     Eléments ou blocs graphiques incorporés

4.9.1. Allgemeines
       Notions générales

Mathematica bietet die Möglichkeit, Linien, Punkte, Kreise, Scheiben und Polygone direkt zu zeichnen. Beispiele: 
  Mathematica offre la possibilité de dessigner directement des lignes, points, cercles, disques, polygones. Exemples:

Show[Graphics[{Circle[{0,0},.1]}]];

Wieso ist aus dem Kreis eine Ellipse geworden?
  Pourquoi le cercle est-il devenu une ellipse?

Options[Graphics][[1]]

Man muss also das Achsenverhältnis anpassen!
  Il faut donc adapter le rapport des axes:

Show[Graphics[{Circle[{0,0},.1]}, 
	AspectRatio->1]];

Show[Graphics[{Circle[{0,0},.1]}, 
	AspectRatio->Automatic]];

Show[Graphics[{Circle[{0,0},.1]}, 
	AspectRatio->2]];

Oder:    Ou:

Show[Graphics[{
	PointSize[0.05], Point[{0, 0}], Point[{1, 0}],
	Line[{{0, 0},{1, 0}}],
	Circle[{0,0},.1], Circle[{1,0},.1]}, 
	AspectRatio->Automatic]];

Oder ein Punkt im 3-dimensionalen Raum:
  Ou un point dans l'espace à trois dimensions:

Show[Graphics3D[Point[{3,2,1}]]];

Show[Graphics3D[{PointSize[0.05], 
		Point[{3,2,1}]}]];

Oder erst Liste generieren:
  Ou générer d'abort une liste:

pts = Table[Random[], {4}, {3}]

Dann Liste manipulieren:
  Ensuite manipuler la liste:

??Map

graphicPts = Map[Point, pts]

Dann davon Plot machen:
 Ensuite faire un plot:

Show[Graphics3D[{PointSize[0.03], graphicPts}]];

Mit Skala:    Avec échelle:

Show[Graphics3D[{PointSize[0.03], graphicPts}], 
				Axes->Automatic];

4.9.2. Umwandlung von graphischen Objekten:
        Transformation d'objets graphiques:

Mit Hilfe welcher Graphic-Objekte wird ein Plot ausgeführt?
  A l'aide de quels objets graphiques exécute-t-on un plot?

??InputForm

basicPlot = Plot[x^2, {x, 0, 25}];

InputForm[basicPlot]

Trick: Ausgabe mehrerer Plots auf einmal:
  Truc: Emission de plusieurs plots à la fois:

Show[
	Plot[Sin[x], {x, 0, 3 Pi}], 
	Graphics[{PointSize[0.05], 
	Table[Point[{n Pi, 0}], {n, 0, 3}]
	}]
	];

Hier sind 2 Plots gekommen. Damit nur der letzte kommt, muss man mit "DisplayFunction" arbeiten:
  Voici 2 plots sortis. Pour faire sortir seulement le dernier plot, il faut travailler avec "DisplayFunction":

Show[
	Plot[Sin[x], {x, 0, 3 Pi}, 
		DisplayFunction->Identity], 
		Graphics[{PointSize[0.05], 
		Table[Point[{n Pi, 0}], {n, 0, 3}]
		}], DisplayFunction->$DisplayFunction
		];

4.10. Beschriftung von Graphiken (Labels)
        Doter des graphiques d'inscriptions (Labels)

Beschriftung der x-Achse. Zuerst ohne:
  Faire des inscriptions sur l'axe x. D'abord sans inscriptions:

Plot[Sin[x], {x, 0, 3 Pi}];

Dann mit:    Ensuite avec inscription:

??Ticks

Plot3D[Sin[x y], {x, 0, 3 Pi}, {y, 0, Pi}];

Labels:    Labels:

??PlotLabel

??FontForm

\n: Neue Linie  
  \n: Nouvelle ligne:

Plot3D[Sin[x y], {x, 0, 3 Pi}, {y, 0, Pi},
	PlotLabel -> FontForm["Hallo friend! 
	Plot3D[Sin[x y], \n
	{x, 0, 3 Pi}, {y, 0, Pi}]", 
	{"Courier-Bold", 15}]];

Oder:    Ou:

??Text

Show[Graphics[{Circle[{0,0},1],
	Text["Circle",{0,0.05}]}],
	AspectRatio -> Automatic];

4.11. Graphik-Pakete
        Paquets de graphiques

Zum Beispiel Rotationskörper:
  Par exemple corps de révolution:

Package laden:    Charger Package:

<< Graphics/Shapes.m

Beispiele:   Exemples:

Show[Graphics3D[Torus[]]];

Show[RotateShape[Graphics3D[Torus[]], 
		0, 5 Pi/6, 0]];

4.12. Animationen
       Animations

Auf dem Buchdeckel von Nancy Blachmans Buch:
  De la couverture du livre de Nancy Blachman:

Zuerst Graphiken rechnen (hier nur wenige Bilder zur schnellen und kurzen Demonstration, Bilderzahl bitte im Praktikum selbst erhöhen):
  D'abord calculer des graphiques (ici quelques images pour une démonstration rapide et brève, augmenter soi-même le nombre d'images lors du travail pratique):

cover = Table[Plot3D[Sin[x y], {x, 0, t/2},
		{y, 0, t}, PlotPoints -> 9,
		Ticks -> None],
		 {t, 1, 6, 3/4}]

Vorgehen zum Animieren:
 Procédé d'animation:

New: ===>Go to Cell,Animate Selectet Graphics (Ctrl+Y)
Old:  ===>
Jede der eben ausgegebenen Graphiken ist in einer eigenen Zelle untergebracht. Alle diese Graphikzellen wiederum bilden eine gemeinsame Zelle (vgl. von links aus 2. senkrechte Linie am rechten Rand). Diese Zelle ist mit der Maus anzuklicken. (Sie wird dann dunkel markiert.) Nun wählst Du mit der Maus im Menu ("Graph") neu "Cell" und dann "Animate Selected Graphics ....y". Du wirst sehen, was geschieht! Um die Sache anzuhalten, brauchst Du nur mit der Maus  irgendwohin ausserhalb der eben gewählten Menuzeile zu "klicken".
 Chacun des graphiques qui viennent de sortir est placé dans une cellule à lui. Toutes ces cellules de graphiques constituent de nouveau une cellule en commun (compare de gauche la 2e ligne verticale sur le bord de droite). Il faut toucher cette ligne avec la souris. (Elle deviendra foncée.) Maintenant tu choisis avec la souris dans le menu ("Graph") nouveau "Cell" et ensuite "Animate Selected Graphics ....y".  Regarde ce qui se passe! Pour arrêter le processus, il te suffit d'activer la souris n'importe où en dehors du menu que tu viens de choisir.

Eine verkleinerte Darstellung:
 Une représentation rapetissée:

??GraphicsArray

??GraphicsSpacing

Show[GraphicsArray[cover], 
GraphicsSpacing -> 0.2];

4. 13. PostScript
         PostScript

Erzeugen, ablegen, einlesen und betrachten von PostScript-Code
 Générer, déposer, lire et observer le code PostScript

Einige Erklärungen zu Befehlen:
  Quelques explications quant aux ordres:

??>>

??Display

??<<

Wir erzeugen eine Graphik:
  Nous générons un graphique:

expCos = Plot[Exp[-x^2] Cos[20 x], {x, -2, 2}];
exp1   = Plot[Exp[-x^2], {x, -2, 2}];

Nun schauen wir uns den Inhalt des Files "postscript_test1.ps" auf dem Schirm an. Du siehst sofort, dass hier offenbar Koordinaten von gerechneten Punkten gespeichert worden sind. Arbeite dazu die folgenden Befehle ab:
  Maintenant nous regardons le contenu des fichiers (files) "postscript_test1.ps" sur l'écran. Tu vois tout de suite qu'ici on a évidemment mémorisé les coordonnés des points calculés. Exécute les ordres suivants:

?exp1

Nun schreiben wir mit ">>" den PostScript-Code in ein File namens "postscript_test.ps" u.s.w. ins eigene Unterverzeichnis:  (Hinweis:  Der Name des Unterverzeichnisses ist hier "c:\work".)
  Maintenant nous écrivons avec ">>" le code "PostScript" dans un fichier du nom de "postscript_test.ps" etc. dans notre propre sous-dossier: (Indication: Le nom du dossier qu'on a ici est "c:\work".)

expCos >> "c:\work\postscri.ps";
exp1 >> "c:\work\postsc_1.ps";

Führe den Befehl aus und kontrolliere rasch im eigenen Verzeichnis, ob das File jetzt da steht! (Vielleicht vergeht etwas Zeit, bis es kommt.) "Display" tut dasselbe. Statt in ein PostScript-File speichern wir nachher den Code mit "Save" in ein Mathematica- File, das wir später wieder einlesen und den Mathematica-Code verwenden können. (Ausführen und kontrollieren! Probiere im einzulesenden File erst den PostScript-Code ein wenig zu verändern. Hüte Dich dabei vor Werten, die nicht verarbeitet werden können!):
  Execute l'ordre et contrôle vite dans le propre dossier, si le fichier y est! (Peut-être tu dois attendre un peu qu'il apparaisse.) "Display" fait la même chose. Au lieu de mémoriser le code dans un fichier PostScript, nous le mémorisons après avec "Save" dans un fichier de Mathematica, que nous lisons plus tard en utilisant le code de Mathematica. (Faire et contrôler! Essaie de changer d'abord un peu le code PostScript dans le fichier à lire. Evite les valeurs qui ne peuvent pas être élaborées!)

Display["c:\work\postsc_2.ps",expCos];
Display["c:\work\postsc_3.ps",exp1]

Save[
  "c:\work\postscri.ma",expCos];
Save[
  "c:\work\postsc_1.ma",exp1]

Save[
  "c:\work\postscri.nb",expCos];
Save[
  "c:\work\postsc_1.nb",exp1]

Nun löschen wir den PostScript-Code "expCos" u.s.w.:
  Maintenant nous effaçons le code PostScript "expCos" etc.:

Remove[expCos, exp1]

??exp1

??expCos

Das File kann wieder eingelesen werden (Achtung Front-End!):
  On peut relire le fichier (Attention Front-End!):

??Get

?? !!

?? <<

Get["c:\work\postsc_1.nb",exp1]

Get["c:\work\postsc_1.nb"]; exp1

Get["c:\work\postsc_1.nb"]; Show[exp1]

Get["c:\\work\\postsc_1.nb", exp1]

?exp1

Show[Graphics[expCos]];
Show[Graphics[exp1]];

Der Befehl ist jetzt wieder da! Nun schauen wir uns den Inhalt des Files "postscri.ps" auf dem Schirm an.
  Voici de nouveau l'ordre! Maintenant nous regardons le contenu du fichier "postscri.ps" sur l'écran.

!!"c:\\work\\postscri.ps"

Get["c:\work\postscri.ps"]

Get["c:\work\postscri.ps"] // FullForm

Get["c:\\work\\postscri.ps"]

Get["c:\\work\\postscri.ps"] // FullForm

Get["c:\\work\\postsc_1.nb"]

Get["c:\\work\\postsc_1.ps"]

Get["c:\\work\\postsc_1.ps"] // FullForm

Get["c:\work\postscri.ma"]

Get["c:\work\postscri.ma"] // FullForm

Get["c:\work\postscri.nb"]

exp1

4. 14. Experimentieren mit Animationen
        Expérimenter les animations

4.14.1. Nachfolgend zwei Beispiele zu Animationen (Bsp. von U.Altmann)
         Ensuite deux exemples d'animations (exemple pris  de U.Altmann)

Achtung! Die Rechnungen dauern vielleicht etwas Zeit! Vorschlag: Erst am Schluss der Arbeit ausführen!

Attention! Il faut du temps aux calculs! Proposition: Executer à la fin du travail!

Package laden:
  Charger Package:

?ImplicitPlot

Remove[ImplicitPlot]

<<  Graphics`ImplicitPlot`

(* Old: *)
(* Needs["Graphics`ImplicitPlot`"] *)

Beispiel: Zuerst n = 128 Graphiken rechnen (das dauert!!!). Um Ueberraschungen zu vermeiden, ist n auf 10 eingestellt. Das geht zwar schneller, aber die Animation wird so nicht gut. Sonst kann es schon eine Lektion dauern!
  Exemple: Calculer d'abord n = 128 graphiques (cela dure!!!). Pour éviter des surprises, il faut mettre n sur 10. Cela va plus vite, mais l'animation n'est pas si bonne. Si non cela peut durer toute une leçon.

a=3;
(* n=128; *)
n=10;
tabelle1=Table[
  ImplicitPlot[(x-y+2)(x^2+y^2-1) == 
  	N[3.(1.-Tan[b])] x, {x,-a,a}, 
  	PlotRange->{{-a,a},{-a,a}}, AspectRatio->1.],
  	{b,-Pi/2+Pi/n,Pi/2-Pi/n,Pi/n}];
Prepend[tabelle1,
  ParametricPlot[{0.,t},{t,-a,a}, 
  	PlotRange->{{-a,a},{-a,a}}, AspectRatio->1.]];

Dann animieren!
  Ensuite animer!

2. Beispiel: 
Zuerst n = 128 Graphiken rechnen. (Um Ueberraschungen zu vermeiden, ist n auf 10 eingestellt. Das geht zwar schneller, aber die Animation wird so nicht gut.)
  2e exemple:
D'abord calculer n = 128 graphiques. (Pour éviter des surprises, il faut mettre n sur 10. Cela va plus vite, mais l'animation n'est pas si bonne.)

a=3;
(* n=128; *)
n=10;
tabelle2=Table[
  ImplicitPlot[(x-y)(x^2+y^2-1)==N[Tan[b]-1] x,
    {x,-a,a}, PlotRange->{{-a,a},{-a,a}},
    AspectRatio->1.],{b,-Pi/2+Pi/n,Pi/2-Pi/n,Pi/n}];
Prepend[tabelle2,
  ParametricPlot[{0.,t},{t,-a,a}, PlotRange->{{-a,a},
  {-a,a}},AspectRatio->1.]];

Dann animieren!
  Ensuite animer!

4.14.2. Noch ein Beispiel (Simulation einer Welle)
         Encore un exemple (simulation d'une onde)

Erst rechnen, dann animieren!
 D'abord calculer, ensuite animer!)

(Um Ueberraschungen zu vermeiden, sind statt 60 nur 5 Schritte eingestellt.
 Das geht zwar schneller, aber die Animation wird so nicht gut.)
   (Pour  éviter des surprises, il faut 5 au lieu de 60 étapes. Cela va plus vite, mais l'animation réussit moins bien.)

Table[Plot3D[
	Sin[3t+(x-3)^2+(y-2)^2]/(1+(x-3)^2+(y-2)^2)+
	3/5Sin[5/3(3t+(x+3)^2+(y-2)^2)]/(1+(x+3)^2+(y-2)^2)+
	3/4Sin[4/3(3t+x^2+(y+3)^2)]/(1+x^2+(y+3)^2),
	{x,-8,8},{y,-8,8},
PlotRange->{{-8,8},{-8,8},{-1,1}},
PlotPoints->30],
(* {t,0,2Pi,2Pi/60}];  *)
{t,0,2Pi,2Pi/5}];

Wähle die Zelle an, die alle ausgegebenen Bilder umschliesst. Animiere mit "Animate Selected Graphics ...y" in Menu ("Graph") neu "Cell". Beobachte, welche Zonen sich bewegen und welche Zonen  ruhig bleiben. Gibt es Interferenzen?
  Choisir la cellule qui inclut toutes les images sorties. Anime par "Animate Selected Graphics ...y" dans le menu ("Graph") nouveau "Cell". Observe quelles zones restent tranquilles. Y a-t-il des interférences?

4.15. Probiere eigene Beispiele aus!
       Essaie de propres exemples!

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

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

Remove["Global`*"]