Materialien zur 
Einführung in Computeralgebrasysteme I (Mathematica) 

Ralf Schaper
Wintersemester 2009 / 10

Einleitung

Mathematica wird von seinen Autoren und Herstellern bei Wolfram Research Inc. bezeichnet als "A System for Doing Mathematics by Computer". Mathematica enthält viele unterschiedliche Aspekte: Es ist ein Programmpaket zur Formelverarbeitung, es ist eine Programmiersprache, es ist ein Grafiksystem, kurz ein CAS, ein Computer Algebra System. Es kann aber auch nur wie ein Taschenrechner bedient werden — auch so leicht. Mathematica ist recht umfangreich, doch das sollte Sie nicht schrecken. Ab Version 3 enthält Mathematica beachtenswerte Fähigkeiten zum Schreiben mathematischer Texte, ab Version 4 auch die Möglichkeit im Internet Seiten zu erstellen, ab Version 6 sind die Interaktionsfähigkeiten enorm erweitert.

Mathematica ist sehr gut beschrieben in dem offiziellen 1470-seitigen Handbuch:
	Wolfram, Stephen
	The Mathematica Book, 4th ed.
	Champaign: Wolfram Media, 1999
	Cambridge: Cambridge University Press, 1999
Dieses Buch wird oft einfach als Handbuch oder als Mathematica-Book zitiert.

Wenn Sie aber nur einen Internetzugang haben, dann gibt es The Mathematica Book online; das beschreibt allerdings Version 4 !
Sie erhalten beim Aufruf dieses Links daher auch folgenden Hinweis:

THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.

Eine neue Version gibt es innerhalb einer installierten Version V7 von Mathematica als MouseOver .
Über Help gelangen Sie in das Documentation Center von Mathematica. Der Umgang damit wird im Laufe des Kurses immer wieder geübt. Das Documentation Center ist auch im Internet zugänglich.
Ab 2007 gibt es das Wolfram Demonstrations Project. Auch das wird häufig benutzt werden.

Eine Liste von deutschspracigen Büchern, in denen auf Mathematica eingegangen wird, finden Sie hier. In unserer Bibliothek stehen die Bücher zu Mathematica unter 95 mat B 0.

Dieses Skript ist gespeichert unter
http://www.mathematik.uni-kassel.de/~rascha/Mathematica_Kurs/Skript_09_ 1.nb

Einige Beispiele zur Einstimmung und zum ersten Blick auf die Möglichkeiten von Mathematica.

Diese Beispiele können im Moment nicht immer vollständig erklärt werden. Wie der Editor zu bedienen ist, wird später erläutert. Kurz sei nur gesagt: "In[ ] := " und "Out[ ] = " mit ihrer jeweiligen Numerierung brauchen nicht eingetippt zu werden. Dann werden die ⇧↵ Tasten gedrückt und die Ergebniszeile erscheint. Manchmal lautet aber die Parole: Warte nur ein Weilchen ⌚. Auf geht's:

5+7

1/3+ 2/5

Simplify[(a^2)+2a b+(b^2)]

Der Mathematica-Ausdruck Simplify  erklärt sich selbst!

((1+I)/Sqrt[2])^100

Eine andere Schreibweise:

(((((1+I)/(Sqrt[2]))))^100)

I steht für  (Sqrt[-1]) . i ist eine weitere Mathematica-Form für die komplexe Zahl  i . Statt (Sqrt[2]) kann auch  Sqrt[2] geschrieben werden.

N[Sqrt[10],32]

N steht für den numerischen Wert und der Parameterwert 32 gibt an, dass  (Sqrt[10]) mit 32 Dezimalstellen ausgegeben werden soll.

Timing[  N[ Zeta[1/2 + 14.13482 I],20] ]

Die RIEMANNsche Zetafunktion   (∑_(n=1)^∞)(1/(n^z)) scheint kaum mehr Mühe als die Wurzelfunktion zu machen.

Plot[  Abs[Zeta[1/2 + I t]],{t,0,15} ]

FactorInteger[20102008]

Die Primfaktorzerlegung von 20 102 008 ist (2^3)·(59^1)·(42589^1).

Bei Out[7], In[8] und Out[9] sind eben zum ersten Mal geschweifte Klammern aufgetaucht. Mathematica unterscheidet streng im Gebrauch von  [ ] , ( )  und { } . In eckigen Klammern  [ ]  werden die Argumente von Ausdrücken (engl.: expressions) eingeschlossen. In, Out, Simplify , Sqrt und Zeta ( ζ-Funktion )  bzw.  ∖[Zeta]  ( Buchstabe ζ ) sind in Mathematica Namen für vordefinierte Ausdrücke bzw. Kommandos. 
In runden Klammern  ( )  werden algebraische Terme eingeschlossen, wie etwa in Out[3] und in In[4]. Diese Unterscheidung von eckigen und runden Klammern bringt Vorteile in der Verdeutlichung von Ausdrücken, z.B.:
	c(1 + x)	entspricht  c·(1 + x) ,
	c[1 + x]	ist der Wert des Ausdruckes  c  bei  1 + x .
In geschweiften Klammern  { }  werden Listen eingeschlossen, ähnlich wie beim Gebrauch von Mengenklammern. 
(*  *) sind Kommentarklammern, die beliebig tief geschachtelt werden können.

Table[ n!, {n, 1, 10} ]

Die Tabelle der ersten 10 Fakultäten. So bekommen Sie das auf andere Weise:

Array[ Factorial, 10 ]

m = Table[ 1/(k+n+1),{k,1,3},{n,1,3} ];

m

Dies ist eine mögliche Ausgabe der (3,3)-HILBERTmatrix m. Eine Matrix wird also als Liste von Listen - den Zeilen der Matrix - dargestellt. Auf dem Bildschirm ist aber auch die gewohnte Ausgabeform möglich:

MatrixForm[ m ]

Eine einzelne Zeile der Matrix  m :

m[[1]]

Das einzelne Element (Subscript[m, 13]) :

m[[1,3]]

Die Inverse von  m wird berechnet und ausgegeben mit:

MatrixForm[Inverse[ m ]]

Multiplikation der Inversen von  m  mit m . % steht für das zuletzt erhaltene Ergebnis:

%.m

MatrixForm[%]

Mathematica kann selbstverständlich auch symbolisch differenzieren:

D[ (x^n) , x ]

D[ f[x], x ]  gibt den Wert der Ableitung von  f  nach  x  an:

D[ (x^(2 ))Log[x + a], x ]

Überlegen Sie sich, ob diese Formel allgemein gültig ist.

So sieht die Formel ein wenig gewohnter aus:

TraditionalForm[%]

Symbolische Integration verläuft äußerlich analog. Nun ja!

Integrate[%,x]

Bestimmte Integrale:

Integrate[ Log[x], {x, 1, a},Assumptions->a>1 ]

(∫_1^a)Log[x]\[DifferentialD]x

TraditionalForm[%%]

Es gibt auch Integrale, die Mathematica nicht als Formel lösen kann:

Integrate[ Sin[ Sin[x] ],{x,0,1} ]

Nummerisch wird das Integral jedoch näherungsweise berechnet:

N[ % ]

Beim Lösen von Gleichungen muss der Gebrauch der Zeichen  =  und  ==  in Mathematica beachtet werden. Es ist wie in der Sprache C ;  =  wird als Zuweisungsoperator gebraucht (also wie  :=  in Pascal) und  ==  als Vergleichsoperator (also wie  =  in Pascal).

Solve[ (x^2) + 2x - 7 == 0, x ]

" x →  " bedeutet:  x  wird der folgende Wert zugewiesen.

So erhalten Sie die nummerischen Werte:

N[%]

Mathematica löst Polynomgleichungen (mit einer Variablen) bis zum Grade vier und in speziellen Fällen noch einige mehr.

Solve[ (x^4) - 5 (x^2) - 3 == 0, x ]

TraditionalForm[%]

Das sieht auch nicht viel anders aus!

Lineare Gleichungssyteme werden gelöst:

Solve[{ x + y == 2, x + a y == 1 + a }, {x, y}]

Solve[ { x +  y == 2,2x + 2y == 4 }, {x, y} ]

Inkonsistente Gleichungen:

Solve[ {x == 1, x == 2} ]

Auch Differentialgleichungen können gelöst werden:

DSolve[ y'[x] == a y[x], y[x], x ]

C[1] ist die Integrationskonstante.

Mathematica kennt die Potenzreihenentwicklungen vieler Funktionen:

Series[ (E^x), {x, 0, 5} ]

Jetzt sind die Namen einiger Funktionen in Mathematica vorgekommen: Sqrt,Log, Exp.  Die Namen beginnen mit großen Buchstaben. Mathematica bleibt möglichst nahe an den allgemein üblichen Bezeichnungen von mathematischen Funktionen. Einige seien noch angeführt: Abs, ArcSin, Cos, Min, Max, aber auch AnimationDisplayTime oder IgnoreCase. Im Index of All Functions finden Sie alle diese Namen.

Grafik

Einige Beispiele sollen die Grafikmöglichkeiten demonstrieren.

SetOptions[{Plot,ContourPlot},BaseStyle->{FontFamily-> "Times",FontSize->12}];

Ein einfacher Graph einer Funktion:

Plot[ Sin[x], {x,-π, π}]

Eine erste Variation:

Plot[Sin[(E^x)],{x,-π,π},PlotLabel->Sin[(E^x)],
LabelStyle-> Directive[Plain, FontFamily -> "Times"],FormatType->TraditionalForm]

Eine Darstellung von  f (x, y) := (x^(3 ))– 3 x(y^2) :

f[x_, y_] := (x^3) - 3 x (y^2)

Plot3D[f[x,y],{x,-1,1},{y,-1,1},BoxRatios->{1,1,1}]

Ein Höhenliniendiagramm dazu:

ContourPlot[f[x,y],{x,-1,1},{y,-1,1},ColorFunction->Hue]

ContourPlot[f[x,y],{x,-1,1},{y,-1,1},ColorFunction->Hue,PlotPoints->101,Contours->31]

ContourPlot[(x^2)-(y^4)==Sin[(x^4) (y^4)],{x,0,2},{y,0,1.5},PlotPoints->10]

ContourPlot[(x^2)-(y^4)==Sin[(x^4) (y^4)],{x,0,2},{y,0,1.5},PlotPoints->50]

ContourPlot[(x^2)-(y^4)==Sin[(x^4) (y^4)],{x,0,4},{y,0,2},PlotPoints->50,AspectRatio->Automatic]

Ein Vektorfeld, dazu muss das Paket "VectorFieldPlots`" geladen werden :

Needs["VectorFieldPlots`"]

VectorFieldPlot[{Sin[x y],Cos[x y]-1},{x,0,π},{y,0,π},PlotPoints->16,ColorFunction->Hue,ScaleFunction->(((#1)/2)&),ScaleFactor->None,Frame->True,
LabelStyle-> Directive[Plain, FontFamily -> "Times"]]

Der Ausdruck Manipulate ist eine der wichtigsten Erweiterungen bei Version 6::

Manipulate[ Plot3D[ Sin[2 x] Sin[2 y] Cos[t],
{x,0,π},{y,0,π},
	PlotRange->{-1,1},
	PlotPoints -> 31,
	BoxRatios->{1,1,1},
	Ticks->None],
{t,0,π,π/12}]

Mittlerweile können Sie mit Mathematica mit einigen Betriebssystemen auch Töne erzeugen:

ψ[{α_,β_},𝒜_,f_]:=If[β>α,If[α<t<β,Sin[((π (t-α))/(β-α))] 𝒜 Sin[f t],0],0]

Play[Evaluate[N[Sin[((π t)/2)] (∑_(i=0)^24)ψ[{(i/12),((i+4)/12)},(Sqrt[(((((i-24)/12)))^2)]),1000 (i-12)]]],{t,0,2},PlayRange->All]