Einführung in Mathematica
Aufruf, Hilfe
Normalerweise ruft man Mathematica mit seiner graphischen Oberfläche auf, entweder über die KDE-Leiste oder im Terminal-Fenster als
prompt> mathematica
Befehle werden in das Kommandofenster ("Notebook") eingegeben, das Hilfesystem erreicht man über Help .
Wenn es beim Schreiben im Fenster Probleme mit <Backspace> gibt, sollte man <NumLock> ausschalten.
Man beendet das Programm über den Menüpunkt File -> Quit.
Es gibt auch noch den einfachen Textmodus von Mathematica, aufzurufen als
prompt> math
Es erscheint ein nummeriertes Prompt der Form
In[n]:=
und wartet auf Input. Hilfe zum Begriff Sos bekommt man hier mit ?Sos , man verlässt Mathematica mit Quit .
Notation
Namen bestehen aus Buchstaben, Ziffern (nicht am Anfang) und $ . Groß- und Kleinbuchstaben werden unterschieden.
Die in Mathematica vordefinierten Größen und Funktionen haben große Anfangsbuchstaben.
Einige Konstanten:
I Infinity Degree (= Pi/180) ... Pi E EulerGamma ...
Elementare Funktionen sind u.a.
Sqrt Exp Log (NICHT Ln !) Sin Cos Tan Cot Sec Csc ArcSin Sinh .. ArcSinh ..
Rechenzeichen: + - * / ^ !
Gebrauch der Klammersymbole:
( ) in arithmetischen Ausdrücken,
[ ] für Argumente von Funktionen,
{ } für Listen,
[[ ]] für Indizes.
Zeichenketten werden eingegeben wie "hallo".
Auswertung
Um Ausdrücke auszuwerten, schließt man sie mit <shift><enter> ab. Das Ergebnis wird gleich angezeigt, ein ";" am Ende des Befehls verhindert das.
Das spezielle Symbol % bezeichnet das zuletzt erhaltene Resultat.
Ausdrücke aus Symbolen und ganzen Zahlen werden nur (mathematisch exakt) vereinfacht. Wenn "Komma"zahlen auftreten, wird numerisch ausgewertet.
Einige Beispiele - links die Aufrufe (mit <shift><enter> abzuschließen), rechts ggf. die Auswertung:
1 + 2 3 5/2 5./2 2.5 6/2 3 2*abc + 5*abc 7 abc (abc ist kein Produkt!) Sqrt[z] Sqrt[2] Sqrt[2.] 1.4142 Sqrt[16] 4 Sin[Pi/2] 1
Mit den Befehlen
N[expr] N[expr, digits]
erzwingt man eine numerische Auswertung, ggf. auch mit Vorgabe der Genauigkeit.
Zuweisung
Durch Eingabe von
var = expr
wird der Ausdruck expr ausgewertet und das Resultat unter dem Namen var gespeichert. Eine etwaige vorherige Belegung von var wird dabei überschrieben. Nicht belegte Namen stehen für sich selbst und werden wie mathematische Symbole behandelt.
Beispiele (links die Befehle, rechts die Resultate, z.T. in TeX-Notation):
a = 2 2 w = Sqrt[z] \sqrt{z} w^4 + a^2 + 3 7 + z^2 r = Exp[2*x] e^{2x} r^4 e^{8x}
Man kann auch mehrere Zuweisungen in einem Befehl vornehmen:
var1 = expr1; var2 = expr2; ...
Belegungen löscht man mit
Clear[var1, var2, ..] Clear["*"]
Umformungen
Ausmultiplizieren und Faktorisieren:
Expand[expr] Expand[(a + b)*(a - c)] a^2 + a b - a c - b c Factor[expr] Factor[a^2 + a*b - a*c - b*c] (a + b) (a - c)
Vereinfachungen:
Simplify[expr] z = (a^2 - b^2)/(a - b) (a^2 - b^2)/(a - b) Simplify[z] a + b u = a^5 - b^5 a^5 - b^5 v = a - b a - b Simplify[u/v] (a^5 - b^5)/(a - b) Factor[u]/v a^4 + a^3 b + a^2 b^2 + a b^3 + b^4
Wie man sieht, braucht das Programm manchmal etwas Nachhilfe.
Trigonometrische Relationen sind besonders anspruchsvoll:
Simplify[expr] benutzt sin(x)^2 + cos(x)^2 = 1 TrigExpand[expr] Additionstheoreme etc TrigReduce[expr] Produkte -> Summen von Funktionen TrigFactor[expr] Faktorisierung Beispiele: Simplify[1 - 1/Cos[x]^2] -Tan[x]^2 TrigExpand[Sin[x+2*y]] Cos[y]^2*Sin[x] + 2*Cos[x]*Cos[y]*Sin[y] - Sin[x]*Sin[y]^2 TrigReduce[%] Sin[x + 2 y] TrigFactor[Sin[x] + Cos[y]] 2 * Sin[Pi/4 + x/2 - y/2] * Sin[Pi/4 + x/2 + y/2]
Umformungen, bei denen die Eigenschaften spezieller Funktionen eine Rolle spielen, bekommt man mit
FullSimplify[expr]
Substitutionen
Kommt in einem Ausdruck ein Symbol vor, das seinerseits belegt ist, dann wird automatisch substituiert.
Beispiel:
x = 2 y = a^2 Sin[x + y] Sin[2 + a^2]
x und y sind bis auf weiteres belegt wie angegeben.
Will man Variablen nur vorübergehend setzen, um zu substituieren, dann kann man das als Liste von Zuweisungen schreiben und damit aufrufen:
With[{var1 = expr1, var2 = expr2, ..}, expr]
Beispiel:
With[{x = 2, y = a^2}, Sin[x + y]] Sin[2 + a^2]
Hier bleiben x und y unverändert, die Zuweisung gilt nur innerhalb des With[..].
Am Ausdruck im zweiten Argument von With[{..}, expr] werden normalerweise nur die im ersten Argument verlangten Substitutionen vorgenommen. Wenn der Ausdruck zuvor ausgewertet werden soll, muss man das mit Evaluate[..] erzwingen:
z = a + 1 With[{a = 1}, z] a + 1 With[{a = 1}, Evaluate[z]] 2
Summe und Produkt
Sum[expr, {i, imax}] ueber i=1,2,..,imax Sum[expr, {i, imin, imax}] ueber i=imin,imin+1,..,imax NSum[expr, {i, imin, imax}] numerische Summation Product[expr, {i, imax}] ueber i=1,2,..,imax Product[expr, {i, imin, imax}] ueber i=imin,imin+1,..,imax NProduct[expr, {i, imin, imax}] numerisches Produkt
Beispiele:
Sum[x^k, {k, n}] (x (-1 + x^n))/(-1 + x) Sum[(-1)^n/(n + 1), {n, 0, Infinity}] Log[2]
Reihenentwicklung
Series[expr, {x, x0, n}]
entwickelt expr um x=x0 bis zur Ordnung n, z.B.
Series[Tan[t]/t, {t, 0, 4}] 1 + (1/3) t^2 + (2/15) t^4 + O[t]^5
Das Resultat ist allerdings, wie man am Symbol O[t]^5 erkennt, ein Objekt von spezieller Art, mit Normal verwandelt man es in ein gewöhnliches Polynom:
Normal[%] 1 + (1/3) t^2 + (2/15) t^4
Den Koeffizienten z.B. von t^2 extrahiert man mit
Coefficient[%, t, 2] 1/3
Grenzwert
Limit[expr, x -> x0] Limit[Sqrt[1 + x^2]/(1 + x), x -> Infinity] 1
Differentiation
Partielle Ableitungen des Ausdrucks expr:
D[expr, x] D[t^3 + 2*t, t] 2 + 3 t^2 D[Log[u], u] 1/u D[expr, x, y] D[expr, {x, n}]
Integration
Unbestimmtes Integral:
Integrate[expr, x] Integrate[1/(1 + z^2), z] ArcTan[z]
Bestimmtes Integral (symbolisch und numerisch):
Integrate[expr, {x, a, b}] Integrate[1/x, {x, 1, 2}] Log[2] NIntegrate[expr, {x, a, b}]
Definition eigener Funktionen
Einen Ausdruck expr, der die Variable x enthält, kann man in eine "echte" Funktion f umwandeln, die man, wie die vordefinierten Funktionen, mit beliebigem Argument aufrufen kann:
f[x_] := expr Funktion mit einem Argument f[x_, y_] := expr Funktion zweier Argumente
Beispiel:
radius[x_, y_] := Sqrt[x^2 + y^2] radius[3, 4]
Definition und Eigenschaften von radius kann man anzeigen mit
Definition[radius] Information[radius]
Das funktioniert analog auch für andere Mathematica-Objekte, man bekommt ggf. auch einen Link ins Hilfesystem.
Mit Clear[radius] löscht man die Definition wieder.
Listen, Vektoren, Matrizen
Form einer Liste:
{el1, el2, ..}
Bildung einer Liste mit einem Ausdruck expr und einer Laufvariablen n = n1..n2 bzw. n = 1..n2 :
Table[expr, {n, n1, n2}] Table[expr, {n, n2}]
Wenn man eine Funktion auf eine Liste anwendet, dann wird elementweise ausgewertet, das Resultat ist eine Liste der Funktionswerte.
Listen sind zugleich auch Darstellungen von Vektoren.
Beispiel für Zugriff auf Komponenten:
vec = Table[n^2, {n, 5}] vec[[3]]
Skalarprodukt und Vektorprodukt:
vec1 . vec2 Cross[vec1, vec2]
Eine Matrix ist eine Liste von Listen:
{{a11, a12, a13}, {a21, a22, a23}}
Definition einer (MxN)-Matrix mit Hilfe eines Ausdrucks expr :
mat = Table[expr, {m, M}, {n, N}]
mit Laufvariablen m=1..M, n=1..N .
Elementweiser Zugriff:
mat[[i,j]]
Matrixprodukt etc:
mat1 . mat2 Inverse[mat] Transpose[mat] Det[mat]
Gleichungen
Notation:
expr1 == expr2
Symbolische Lösung von Gleichungen:
Solve[eqn, var] Solve[{eqn1, eqn2}, {var1, var2}]
Solve gibt die Lösungsmenge als eine Liste von Regeln aus. Eine Regel ist eine Vorschrift der Form
var -> value
und bedeutet, dass var ggf. durch value ersetzt wird. var bleibt aber erstmal unbelegt.
Eine Liste von Regeln hat die Form
{{x -> a}, {y -> b}, ..}
Dazu ein Beispiel:
eqn = x^2 == 4 x^2 == 4 res = Solve[eqn, x] {{x -> -2}, {x -> 2}} roots = x /. res {-2, 2} roots[[1]] -2
Das Beispiel zeigt, wie man aus der Liste von Regeln res die Liste der Lösungen roots gewinnt.
Numerische Lösung von Gleichungen:
NSolve[eqn, var] FindRoot[eqn, {x, a}]
Im letzten Fall startet die Lösungssuche bei x=a.
Differentialgleichungen
DSolve[eqn, y, x]
löst eine Differentialgleichung eqn für y(x). Darin sind die Funktion und ihre Ableitungen in der Form y[x], y'[x], y''[x], .. anzugeben.
Beispiele:
sol = DSolve[y''[x] == a*y[x], y, x] sol = DSolve[{y'[x] == y[x], y[0] == 2}, y, x]
Im ersten Fall erscheint die allgemeine Lösung (mit zwei Integrationskonstanten C[1] und C[2]), im zweiten ist sie gleich an eine Anfangsbedingung angepasst.
Die Lösung sol erscheint als eine Regel der Form
{{y -> Function[{x}, ...]}}
Man kann sie für Werte x auswerten oder in eine "echte" Funktion f[x] umwandeln:
y[x] /. sol f[x_] := y[x] /. sol
Grafik
2D-Plot des Ausdrucks expr im x-Intervall [x1, x2]:
Plot[expr, {x, x1, x2}]
3D-Plot einer Funktion von zwei Variablen:
Plot3D[f[x,y], {x, x1, x2}, {y, y1, y2}]
2D-Plot einer Kurve in Parameter-Darstellung:
ParametricPlot[{fx[t], fy[t]}, {t, t1, t2}]
2D-Plot von Punkten und Polygon mit Hilfe von Listen:
ListPlot[{{x1, y1}, {x2, y2}, ..}] ListPlot[{{x1, y1}, {x2, y2}, ..}, PlotJoined -> True]
Die Grafik wird in der Arbeitsfläche dargestellt. Wenn das nicht funktioniert, muss man womöglich eine Einstellung reparieren:
$DisplayFunction = Identity
So exportiert man eine Grafik in eine Datei:
graph = Plot..[..] Export["filename", graph]
Das Grafikformat wird durch die Datei-Erweiterung (eps, pdf, jpg, png, ..) bestimmt. Bei EPS verhindert man eine Drehung des Bildes mit
Export["xyz.eps", graph, ImageTopOrientation -> Top]
Dateien lesen und schreiben
Liste/Matrix mat aus Datei einlesen bzw. in Datei schreiben:
mat = Import["dateiname", "Table"] Export["dateiname", mat, "Table"]
Aktuelles Verzeichnis anzeigen bzw. wechseln:
Directory[] SetDirectory["verz"]
B. Bunk, 01.03.2013