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:
- interaktiv (math)
- über das Mathematica-Notebook (mathematica)
- als Programmiersprache
- über Programmpakete
- verknüpft mit anderen Programmen
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:
-
wie sind die Daten verteilt?
- wie gut lassen sie sich mit einem Modell beschreiben?
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