für
Windows
Eine Arbeit im Rahmen des Mathematik- Unterrichtes der
-Berufsmatura
Autoren:
Anthony Smith, Gümligen
Christian
Schlatter, Kaltenherberg
Patrick
Strasser, Thun
Mathematica
ist ein Mathematikprogramm das folgende Bereiche abdeckt:
n
Numerische
Berechnungen
n
Algebraische
Operationen
n
2D/3D
Funktionen
n
Sound
n High-level language Programmierung
n
Interaktive
Dokumente (Text, Sound, animierte Grafiken)
n
Steuern
von externen Programmen und Prozessen
1988
wurde die erste Ausgabe für den PC von Wolfram Research herausgegeben.
Inzwischen gibt es auch ausgereifte Versionen für Macintosh, SPARC, und UNIX.
Das
professionelle Programm wurde für Ingenieure und Hochschulen geschaffen, kann
aber problemlos bei einigem Studium auch für den Normalbenützer von grossem
Nutzen sein.
Das
Programm besteht aus der Arbeitsoberfläche und dem Kernel, dem eigentlichen
Rechenprogramm. Die Genauigkeit und Geschwindigkeit der Berechnungen sind stark
von der Rechenmaschine abhängig. Für die Version 2.2 ist ein 486er mit 8MB RAM
Minimalanforderung, um in einem einigermassen erträglichen Umfeld zu arbeiten.
Für die Version 3.0 wird ein Pentium mit 16 MB RAM empfohlen. Das Programm
umfasst über 750 eingebaute mathematische Funktionen. Um einfache Umformungs-
und Berechnungsaufgaben zu lösen ist das Programm sicher ungeeignet, weil das
Programm „einige“ Zeit benötigt um den Kernel zu laden. Um Lösungen grafisch darzustellen
oder kompliziertere Aufgaben zu lösen ist dieses Programm sicher eine grosse
Hilfe für Jedermann.
Nach
dem Aufstarten des Programmes erscheint eine uns vertraute Windows-Oberfläche.
Die Grösse, des für den Kernel reservierten Speichers, sollte zu Beginn auf das
System angepasst werden. Bei 8MB RAM ist eine Reservation von 10MB
empfehlenswert. Die Befehlszeile kann direkt, ohne Vorbereitung, eingegeben
werden. Die Eingabe wird mit Shift + Enter abgeschlossen. Beispiel:
In[1]:= ParametricPlot3D 1 [{Sin[t], Sin[2t] Sin[u], Sin[2t] Cos[u]} 2, {t, -Pi/2, Pi/2}, {u, 0, 2Pi} 3, Ticks ->None 4, ViewPoint->{1.300, -2.400, 2.000} 5, PlotPoints->50 6 ]
Die fett gedruckten Zahlen sind für die untenstehenden
Erklärungen eingefügt und gehören nicht zur Syntax !
1. Operation
2. Funktion
3. Zahlenbereich
der Variablen
4. Grafikanweisungen
(hier: kein Überzug)
5. Räumliche
Lage der Funktion
6. Auflösung
des Variablenbereiches
Out[1]:=ParametricPlot3D
Anhand von konkreten Beispielen wollen wir uns einen kurzen Einblick in die ungeahnten Möglichkeiten von Mathematica verschaffen. Damit erhalten Sie die Fertigkeiten im Umgang mit dem Programm und eine Übersicht der Syntax resp. der Philosophie beim verwenden der vielfältigen Befehle. Die Beispiele sind nach Schwerpunkten geordnet. Die 1. Zeile ist die Benutzereingabe; die zweite die Ausgabe des Programmes. Zur Bedienung siehe spezielles Kapitel.
Beginnen wir ganz einfach...
Auch die grundlegendsten Operationen sind kein Problem!
5 + 7
12
Mathematica rechnet exakt. Und im Gegensatz zu einem Taschenrechner auch mit grossen Zahlen!
3 ^ 100
515377520732011331036461129765621272702107522001
Der Befehl N liefert Näherungswerte. Will man in der neuen Operation Formeln oder Ergebnisse aus der vorhergehenden verwenden, bietet das Bezugslabel % eine gute Hilfe.
N[%]
5.15378 1047
Mathematica rechnet mit jener Genauigkeit, die Sie vorgeben. Die Quadratwurzel aus 10 wird hier auf 50 Nachkommastellen berechnet.
N[ Sqrt[10], 50 ]
3.1622776601683793319988935444327185337195551393252
Mathematica kann auch mit komplexen Zahlen umgehen. I steht hier für die Imaginäre
(3 + 4 I) ^ 10
-9653287 + 1476984 I
Zu den interessantesten Möglichkeiten von Mathematiksoftware wie Mathematica gehören bestimmt die grafischen Funktionen. Mathematica interpretiert alle Grafiken in Postscript, was eine vorzügliche Weiterverwendung in anderen Programmen (Dokumentation) erlaubt oder Ausdrucke auf PS-Druckern vereinfacht.
Mit dem Befehl Plot können jegliche Formeln visualisiert werden. Der Term in den geschweiften Klammern gibt den Wertebereich für x vor.
Plot[
Sin[ Exp[x] ], {x, 0, Pi} ]
Mathematica stellt gute Funktionen zur Verfügung, um die Diagramme zu formatieren. Achsenbeschriftungen, Skalierungen, Wertebereiche und Rasterungen sind sehr einfach zu handhaben.
Show[ %,
Frame -> True, FrameLabel -> {"Zeit", "Amplitude"},
GridLines -> Automatic ]
Mit CountourPlot sind Umrissanalysen möglich.
ContourPlot[
Sin [x + Sin[y]], {x, -2, 2}, {y, -2, 2} ]
Sehr interessant ist die Funktion Plot3D, die unter anderem zum „Spielen“ einlädt. Es lassen sich höchst eindrückliche Oberflächenansichten wie die folgende erstellen, die dank der Farbunterstützung speziellen Charakter haben.
Plot3D[ Sin[x + Sin[y]], {x, -3, 3}, {y, -3, 3} ]
Die X-Y-Z-Koordinaten für dieses Gebilde werden als Funktion der Parameter u und t gerendert.
ParametricPlot3D[ {u Sin[t], u Cos[t], t/3}, {t, 0, 15}, {u, -1, 1}, Ticks -> None ]
Oder etwas umfangreicher...
ParametricPlot3D[ {Sin[t], Sin[2t] Sin[u], Sin[2t] Cos[u]}, {t, -Pi/2, Pi/2}, {u, 0, 2 Pi}, Ticks -> None ]
Figuren lassen sich auch zusammenführen:
Show[%, %%]
Einzelne grafische Objekte (hier: Würfel) können im Raum gezielt plaziert werden:
Show[ Graphics3D[ {Cuboid[{0, 0, 0}], Cuboid[{2, 2, 2}], Cuboid[{2, 1, 3}], Cuboid[{3, 2, 1}], Cuboid[{2, 1, 1}]} ]]
Eine sehr spezielle Funktion stellt Play dar: Es lassen sich Wave-Forms generieren, die per Soundkarte abgespielt oder als WAV-Datei gespeichert werden können.
Play[
Sin[1000 / t], {t, -7, 3} ]
Ein wichtiger Baustein von Mathematica ist zweifellos der Algbra-Teil. Komplexe Formeln lassen sich vereinfachen, umformen, erweitern, analysieren und ausklammern...
Die algebraische Formel...
9 (2 + x) (x +
y) + (x + y)^2
9 (2 + x) (x +
y) + (x + y)2
Wird mit Expand ausmultipliziert...
Expand[ %^3]
5832 x3 + 9720 x4 + 5400 x5 + 1000 x6 + 17496 x2 y + 30132 x3 y +
17280 x4 y + 3300 x5 y + 17496 x y2 + 32076 x2 y2 + 19494 x3 y2 +
3930 x4 y2 + 5832 y3 +
12636 x y3 + 8802 x2 y3 + 1991 x3 y3 +
972 y4 + 1242 x y4 + 393 x2 y4 + 54 y5 + 33 x
y5 + y6
...mit Factor faktorisiert...
Factor[ % ]
(x + y) 3 (18 + 10 x + y) 3
Diese Gleichung wird mit Integrate integriert...
Integrate[ x^2
Sin[x]^2, x ]
4 x3
- 6 x Cos[2 x] + 3 Sin[2 x2] - 6 x Sin[2 x]
24
...mit D differenziert...
D[ %, x ]
12 x2 - 12 x2 Cos[2 x]
24
... und mit Symplify vereinfacht:
Simplify[
% ]
x2 Sin[x] 2
Gleichungen aufzulösen ist vielfach ein arbeitsaufwendiges Prozedere. Gerade bei grösseren Problemen erweist sich der PC hier als guter Arbeitskollege.
Die kubische Gleichung wird zuerst neu sortiert:
x^3 -7 x^2 + 3 a x == 0
3 a x - 7 x2 + x3 == 0
Und schliesslich in die drei Lösungen für x zerlegt
Solve[ %, x ]
{{x -> 0}, {x -> 7 - Sqrt[49 - 12 a]}, {x -> 7 + Sqrt[49 - 12 a]}}
2 2
Ebenso verläuft der Prozess bei Gleichungssystemen: (Man beachte die Doppel-=)
Solve[ { a x +
b y == 0, x + y == c } , {x, y} ]
a c a c
{{x ->
c + -a + b, y -> -(-a + b)}}
Hat man beispielsweise eine Tabelle und will mit diesen Werten jeweils die selben Operationen durchführen, eignen sich sogenannte Tables und Arrays.
Hier erstellen wir eine Tabelle mit den ersten 15 Fakultäten
Table[ n!, {n, 1, 15} ]
{1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800,
479001600, 6227020800, 87178291200, 1307674368000}
Aus diesen obigen Werten bilden wir eine neue Wertetabelle, welche die Logarithmen der Fakultäten enthalten. N errechnet Näherungswerte.
N[ Log[ % ] ]
{0, 0.693147, 1.79176, 3.17805, 4.78749, 6.57925, 8.52516, 10.6046,
12.8018, 15.1044, 17.5023, 19.9872, 22.5522, 25.1912, 27.8993}
Diese Werte können nun im Koordinatensystem dargestellt werden:
ListPlot[ % ]
Mit Fit sucht Mathematica eine quadratische Gleichung, die diesen Werten am nächsten kommt.
Fit[ %2, {1, x,
x^2}, x ]
-1.48508 + 0.963131 x2 + 0.06766 x
Mit dieser Anweisung wird ein zweidimensionales Array mit der Ausdehnung 30 x 30 erstellt und mit binären Werten gefüllt.
array = Table[
If[GCD[i, j] == 1, 1, 0], {i, 30}, {j, 30} ] ;
Mit ListDensityPlot wird nun dieses Array aufgerollt und der Inhalt grafisch dargestellt.
ListDensityPlot[array]
Die Matrizenrechnung nimmt in der höheren Mathematik eine sehr wichtige Stellung ein. Gerade in der Stochastik ist Mathematica ein gutes Werkzeug.
M generiert eine Matrix, die Mathematica als Listen einer Liste ausgibt.
m =
Table[ 1 / (i + j + 1), {i, 3}, {j, 3} ]
1 1 1 1 1 1 1 1 1
{{-, -, -}, {-, -, -}, {-, -, -}}
3 4 5 4 5 6 5 6 7
Die Matrize kann invertiert werden.
Inverse[ m ]
{{300, -900, 630}, {-900, 2880, -2100}, {630, -2100, 1575}}
Multiplizieren wir die ursprüngliche Matrix mit der Inversen.
% . m
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}
Erstellen wir eine neue Matrix mit einer geänderten Führungsdiagonalen
m - x
IdentityMatrix[3]
1
1 1 1 1 1
1 1 1
{{- - x, -, -},
{-, - - x, -}, {-, -, - - x}}
3 4 5 4 5 6 5 6 7
Die Determinante liefert ein charakteristisches Polynom der Matrize
Det[ % ]
2
1 317 x 71 x 3
------ - ----- + ----- - x
378000 25200 105
Eigenvalues berechnet die Eigenwerte der Matrix direkt
Eigenvalues[ N[ m ] ]
{0.657051, 0.0189263, 0.000212737}
Dieser Befehl berechnet die Eigenwerte aus einer 100x100 Matrize aus Zufallszahlen.
Das Semikolon am Schluss unterdrückt die Protokollierung.
Eigenvalues[ Table[Random[ ], {100}, {100}] ] ;
Nun können wir den Sachverhalt noch grafisch darstellen!
ListPlot[ Transpose[ {Re[%], Im[%]} ] ]
Komplexe Probleme erfordern häufig die Anwendung von Platzhaltern für grössere Zahlen und Formeln. Mathematica stellt hier grosse Möglichkeiten zur Vereinfachung zu Verfügung.
Aus den drei Gliedern a, b und c berechnen wir die 6 Möglichen Permutationen
Permutations[{a,
b, c}]
{{a, b, c}, {a,
c, b}, {b, a, c}, {b, c, a}, {c, a, b}, {c, b, a}}
Flatten fügt die einzelnen Terme zu einem zusammen
Flatten[
% ]
{a, b, c,
a, c, b, b, a, c, b, c, a, c, a, b, c, b, a}
Nun können wir alle Positionen von b aufspüren
Position[ %, b ]
{{2}, {6}, {7}, {10}, {15}, {17}}
Häufungsprodukte der Positionen
FoldList[Times, {1}, %]
{{1}, {2}, {12}, {84}, {840}, {12600}, {214200}}
Erstellen wir eine Liste von verschachtelten Cosinus-Funktionen...
NestList[
Cos, x, 3 ]
{x,
Cos[x], Cos[Cos[x]], Cos[Cos[Cos[x]]]}
...und stellen diese graphisch dar.
Plot[Evaluate[%],
{x, 0, 1} ]
Mathematica enthält verschiedene Zusatzpakete für Spezialgebiete. Diese Zusatzpakete sind programmier- und erweiterbar.
Die << laden ein solches Add-On. Hier das Modul über Chemische Elemente.
<<Miscellaneous`ChemicalElements`
Beispielsweise ist das Atomgewicht des Elementes Tungsten eruierbar
AtomicWeight[Tungsten]
183.85
Bei Plutonium erhalten wir die Warnung, dass keine stabile Isotope vorhanden sind (radioaktiv)
AtomicWeight[Plutonium]
AtomicWeight::unstable:
No stable isotope of Plutonium exists.
244
Off verhindert solche „Fehler“-Meldungen
Off[AtomicWeight::unstable]
Dieser Plot zeigt das Verhältnis des Atomgewichts zu den Anzahl Elektronen
ListPlot[ AtomicWeight[Elements]
/ AtomicNumber[Elements], PlotJoined -> True
]
Lädt das Geometrie-Paket und zeigt eine Ansicht eines grossen Ikosahedron
<<Graphics`Polyhedra`
Show[
Polyhedron[GreatIcosahedron] ]