Benutzung von Mathematica

Mathematica

Was ist Mathematica?

Sehr ausführlich wird diese Frage beantwortet in: Stephen Wolfram, Mathematica - A System for Doing Mathematics by Computer, 2. Auflage, 1991, Addison-Wesley.

Dieses Buch enthält eine genaue Beschreibung der Syntax und hunderte von Beispielen und ist sowohl eine Einführung in die Handhabung und Fähigkeiten des Programms als auch ein Nachschlagewerk. An X-Terminals kann man über das Programm "mathbook" auf den lexikonartigen Anhang dieses Buches zugreifen.

Mathematica eignet sich ...

Mögliche Formen der Benutzung:


Ein erster Versuch (Kommentare eingerückt und in Klammern):

prompt>  math
(Mathematica wird meist mit 'math' aufgerufen. Es erscheinen dann folgende Zeilen:)
Mathematica 2.2 for SGI
Copyright 1988-93 Wolfram Research, Inc.
 -- Motif graphics initialized -- 
(Mathematica ist jetzt gestartet und bereit Kommandos entgegenzunehmen.)
In[1]:= 
(So sieht der 'prompt' von Mathematica aus. Alle Eingaben werden von Mathematica automatisch von 1 aufwärts durchnumeriert. Sie können später über diese Nummern auf alte Eingaben zugreifen. Tippen Sie hinter dem Gleichheitszeichen ein Kommando ein und beenden Sie die Eingabe durch drücken der Enter-Taste. Danach könnte diese Zeile etwa wie folgt aussehen:)
In[1]:= 2*2
(Mathematica wird nun folgendes ausgeben:)
Out[1]= 4
(Und wieder bereit sein für die nächste Eingabe. Auch die Ausgaben werden genau so numeriert wie die Eingaben und auch auf sie kann man später jederzeit zugreifen.)
In[2]:= Plot[Sin[x],{x,0,2 Pi}]

Out[2]= -Graphics-
(Mathematica meldet eine graphische Ausgabe und ein neues Fenster taucht auf, in dem die Sinus-Funktion von 0 bis 2 Pi dargestellt ist. 'Plot' und 'Sin' sind Funktionen, die dem Benutzer sofort nach dem Start von Mathematica zur Verfügung stehen. Funktionsnamen beginnen gewöhnlich mit einem Großbuchstaben; die Argumente werden in eckigen Klammern eingeschlossen und durch Kommata getrennt. Geschweifte Klammern dagegen umschließen Listen von Objekten. Einige Mathematische Konstanten wie Pi=3.14159... stehen dem Benutzer schon beim Start zur Verfügung; auch ihre Namen beginnen mit großen Buchstaben. Zwischen '2' und 'Pi' in der geschweiften Klammer ist der Mal-Punkt ('*') weggelassen und durch ein Leerzeichen ersetzt, was in Mathematica erlaubt ist.)
In[3]:= ?Plot
Plot[f, {x, xmin, xmax}] generates a plot of f as a function
of x from xmin to xmax. Plot[{f1, f2, ...}, {x, xmin, xmax}]
plots several functions fi.

In[3]:= 
(Man kann sich durch '?' gefolgt vom Namen der Funktion, über Funktionen informieren. Ein solches Kommando wird nicht gezählt, weshalb wiederum 'In[3]:=' als prompt erscheint.)
In[3]:= ??Plot
Plot[f, {x, xmin, xmax}] generates a plot of f as a function
of x from xmin to xmax. Plot[{f1, f2, ...}, {x, xmin, xmax}]
 plots several functions fi.

Attributes[Plot] = {HoldAll, Protected}
 
Options[Plot] = 
  {AspectRatio -> GoldenRatio^(-1), Axes -> Automatic,
   AxesLabel -> None, AxesOrigin -> Automatic, 
   AxesStyle -> Automatic, Background -> Automatic, 
   ColorOutput -> Automatic, Compiled -> True, 
   DefaultColor -> Automatic, Epilog -> {}, Frame -> False,
   FrameLabel -> None, FrameStyle -> Automatic, 
   FrameTicks -> Automatic, GridLines -> None,
   MaxBend -> 10., PlotDivision -> 20., PlotLabel -> None,
   PlotPoints -> 25, PlotRange -> Automatic,
   PlotRegion -> Automatic, PlotStyle -> Automatic,
   Prolog -> {}, RotateLabel -> True, Ticks -> Automatic,
   DefaultFont :> $DefaultFont,
   DisplayFunction :> $DisplayFunction}

In[3]:= 
(Wenn man '??' gefolgt vom Funktionsnamen eingibt, bekommt man eine noch ausführlichere Information, in der unter anderem alle Optionen mit denen die Funktion aufgerufen werden kann aufgelistet sind. Die Pfeile hinter den Optionsnamen ('->') verweisen dabei jeweils auf den aktuellen Wert dieser Option. Wenn man nach verwandten Funktionen sucht oder den Namen der Funktion nicht genau kennt, empfiehlt sich die Benutzung von wildcards ('*'); es erscheinen dann die Namen der Kommandos auf die das Muster 'Plot...' paßt.)
In[3]:= ?Plot*
Plot         PlotJoined   PlotRange    Plot3D
PlotColor    PlotLabel    PlotRegion   Plot3Matrix
PlotDivision PlotPoints   PlotStyle

In[3]:= 
(Man verlässt Mathematica mit dem Befehl Quit.)
In[3]:= Quit

Beispiele für die Anwendung von Mathematica in numerischen und symbolischen Rechnungen

In[1]:= N[Log[4 Pi]]

Out[1]= 2.53102
(Die Funktion N[] gibt den numerischen Wert des Ausdrucks in den Klammern an. Die Anzahl der ausgegebenen Stellen kann über eine Option von N[] geändert werden:)
In[2]:= N[Log[4 Pi], 12]

Out[2]= 2.53102424697
(Ein Beispiel für das symbolische Rechnen:)
In[3]:= Integrate[1/x, x]

Out[3]= Log[x]
(Es wurde das unbestimmte Integral von 1/x berechnet; das zweite Argument von Integrate gibt den Namen der Variablen an über die integiert werden soll. Mit der Funktion 'NIntegrate' kann man numerisch integrieren:)
In[4]:= NIntegrate[1/x, {x,1,4 Pi}]

Out[4]= 2.53102
(Mathematica hält Lösungen für viele häufig auftretende mathematische Probleme bereit; z. B. für Integration, Differentiation, Summen, Reihen, Lösen von Gleichungen verschiedener Arten, Lösen von Gleichungssystemen und Differentialgleichung.)

(Man kann z. B. auch eigene Funktionen definieren:)

In[5]:= myfunction[x_]:=Log[x]*Sin[x]
(Hier wurde eine neue Function mit Namen 'myfunction' definiert. Der Unterstrich hinter dem x bezeichnet in Mathematica ein sog. 'Pattern'; es bedeutet soviel wie "an dieser Stelle kann irgendein Ausdruck stehen".)
                                                  
In[6]:= myfunction[1]

Out[6]= 0

In[7]:= myfunction[2]

Out[7]= Log[2] Sin[2]

In[8]:= N[myfunction[2]]

Out[8]= 0.630277
(Eine wichtige Art von Objekten mit denen Mathematica arbeitet, sind Listen. Es gibt viele Befehle zum Einlesen, Erzeugen, zur Bearbeitung und Ausgabe von Listen. Beispiel:)
In[9]:= Table[N[myfunction[v]],{v,1,2,0.1}]

Out[9]= {0, 0.0849411, 0.169931, 0.252803, 0.331576, 
         0.404449, 0.469803, 0.526205, 0.572415, 0.607386, 
         0.630277}
(Mit 'Table' wurde hier eine Liste von Werten der Funktion myfunction an an den Stellen 1.0, 1.1, 1.2, ... , 2.0 erstellt. Mit ListPlot kann man diese Tabelle grafisch darstellen:)
In[10]:= ListPlot[%,PlotJoined->True]

Out[10]= -Graphics-

Darstellung von Funktionen und Daten

(Mathematica verfügt über viele Möglichkeiten der Ausgabe von Funktionen und Daten; z. B. in Form von Listen und Tabellen, 1-, 2- oder 3-dimensionaler Grafiken, die außerdem noch gefärbt und animiert werden können. Auch akustische Darstellungen sind möglich. Weiterhin können Codes ausgegeben werden, die von anderen Programmen oder Compilern nach geringfügigen Ergänzungen weiterverarbeitet werden (C, Fortran, TeX, PostScript). Hier nun einige Beispiele:)
In[1]:= Plot[{Sin[x], Sin[1.1 x], Sin[1.2 x]},{x, 0, 2Pi}]

Out[1]= -Graphics-
(Wie man sieht kann man mehrere Funktionen gleichzeitig ausgeben, nämlich hier z. B. die Funktionen innerhalb der ersten geschweiften Klammer. In der zweiten geschweiften Klammer wird die Variable (hier: x) benannt, und das Intervall angegeben auf dem die Funktionen dargestellt werden (hier: [0,2*Pi]). Will man eine grafische Ausgabe nachbearbeiten, kann man den Befehl Show benutzen:)
In[2]:= Show[Out[1],Frame->True,GridLines->Automatic,
	PlotLabel->"Sinus-Kurven"]

Out[2]= -Graphics-
(Mit Show kann man also eine schon vorhandene Grafik mit neuen Optionen aufbauen. Zu den Plot-Befehlen gibt es eine große Zahl von Optionen, mit denen sich die Grafiken erheblich variieren lassen.
Auch Funktionen die von zwei Variablen abhängen, sind bequem darstellbar:)
In[3]:= Plot3D[Sin[x]Cos[y],{x,-Pi,Pi},{y,-Pi,Pi}]

Out[3]= -SurfaceGraphics-
(Der Befehl Plot3D ist die Entsprechung von Plot für den Fall zweier Variablen (hier: x und y).)
In[4]:= ContourPlot[Sin[x]Cos[y],{x,-Pi,Pi},{y,-Pi,Pi}]

Out[4]= -ContourGraphics-
(Nochmals die gleiche Funktion, hier aber als Kontur-Graph
(Listen und Tabellen können mit Mathematica in vielfältiger Weise verarbeitet werden. Sie können gelesen, manipuliert und ausgegeben werden, zum Beispiel als Grafik, aber auch als Zahlenkolonnen, Matrices oder sonstwie. Nehmen wir einmal an, daß wir in einer Datei mit Namen "daten" folgende zwei Spalten vorliegen haben:
	1.3  3.7693
	2.5  11.9825
	2.6  14.0637
	4.9  130.29
	5.1  169.022
Zuerst lesen wir diese Daten aus der Datei in eine Liste mit Namen "liste":)
In[5]:= liste=ReadList["daten",Number,RecordLists->True]

Out[5]= {{1.3, 3.7693}, {2.5, 11.9825}, {2.6, 14.0637}, 
	{4.9, 130.29}, {5.1, 169.022}}
(Mit der Funktion ListPlot kann diese Liste graphisch dargestellt werden (siehe oben). Wir wollen die zweite Spalte der Liste logarithmieren und die ganze Liste der einer Variablen zuweisen, die wir "logdat" nennen:)
In[6]:= logdat=Table[{liste[[i]][[1]],Log[liste[[i]][[2]]]},
	{i,1,Length[liste]}]

Out[6]= {{1.3, 1.32689}, {2.5, 2.48345}, {2.6, 2.6436}, 
	{4.9, 4.86976}, {5.1, 5.13003}}

(Etwas übersichtlicher ist folgendes Ausgabeformat:)
In[7]:= ColumnForm[logdat]

Out[7]=  {1.3, 1.32689}
         {2.5, 2.48345}
         {2.6, 2.6436}
         {4.9, 4.86976}
         {5.1, 5.13003}
(Nun wollen wir diese Ausgabe in eine Datei namens "logdaten" schreiben:)
In[8]:= Out[%]>>logdaten
(Zum Schluss stellen wir den logarithmierten Datensatz graphisch dar und geben diesen Graph als PostScript-Datei aus.)
In[9]:= ListPlot[logdat, PlotJoined->True]

Out[9]= -Graphics-
In[10]:= Display["logdatengraph", %]

Out[10]= -Graphics-
(Es wurde mit dem letzten Befehl eine Datei namens "logdatengraph" angelegt. Mit "psfix logdatengraph > logdatengraph.ps" kann man (ausserhalb Mathematicas) daraus eine Datei im PostScript-Format erstellen, die dann von vielen Druckern als Eingabe akzeptiert wird.)
In[10]:= Quit

Modellierung und Analyse von Daten

Man kann Mathematica dazu verwenden, Daten zu analysieren und zu modellieren:

Es ist geplant, weitere Texte mit Tips und Beispielen zu erstellen. Dieses kostet allerdings die Autoren viel (Frei-)Zeit. Deshalb wird um Geduld (oder Mitarbeit) gebeten.


Inhalt: Daniel Hoffmann, HTML-Formatierung: Heiko Schlichting, 7. Februar 1994