1. Einführung in MathematicaDie Vorlesung / Übung “Programmieren in der Physik: C++ und Mathematica” (PHY.A70 und PHY.A80)
gliedert sich inhaltlich in 2 Teile:
(1) Programmieren mit C++
(2) Programmieren mit Mathematica.
Hier finden Sie die Vorlesungs-Unterlagen sowie die Übungsbeispiele zum Teil (2): Mathematica
Dieses Skriptum wurde von Peter Puschnig erstellt und ist zur freien Verwendung in der Lehrveranstal-
tung gedacht.
Bei sonstigem Gebrauch bitte Kontaktaufnahme mit dem Autor: [email protected]
Weitere Informationen zur Lehrveranstaltung finden Sie hier: http://physik.uni-graz.at/~pep/Mathemati-
ca14.html
bzw. auf folgender moodle-Seite, auf der Sie auch alle in der LV verwendeten Mathematica notebooks
als Source-code dowloaden können:
http://moodle.uni-graz.at/moodle/course/view.php?id=34422
1.1 Was ist Mathematica?
Mathematica ist ein kommerzielles Softwarepaket des Unternehmens Wolfram Research und stellt
eines der meistbenutzten mathematisch - naturwissenschaftlichen Programmpakete dar. Das Soft-
warepaket „Mathematica“ enthält unter anderem
(i) ein Computeralgebrasystem zur symbolischen Verarbeitung von Gleichungen
(ii) eine Numerik-Software zum numerischen Lösen oder Auswerten von Gleichungen
(iii) ein Visualisierungs-Tool zum Darstellen von Graphen und 3D/2D Graphiken
(iv) eine Programmiersprache, die Elemente des prozeduralen, objektorientierten, funktionalen
und regelbasierten Programmierens in sich vereint.
(i) Beispiele zum symbolischen Auswerten von mathematischen
Ausdrücken
Auswerten / vereinfachen von mathematischen Ausdrücken
Sin@xD2+ Cos@xD2 Simplify
1
Ha + bL4 Expand
a4
+ 4 a3b + 6 a
2b2
+ 4 a b3
+ b4
a4
+ 4 a3b + 6 a
2b2
+ 4 a b3
+ b4 Factor
Ha + bL4
Ableiten von Funktionen
¶xICos@4 xD SinAx2 + 3 x - 1EM-H-3 - 2 xL Cos@4 xD CosA1 - 3 x - x
2E + 4 Sin@4 xD SinA1 - 3 x - x2E
Berechnen von unbestimmten und bestimmten Integarlen
à x Sin@xD âx
-x Cos@xD + Sin@xD
à-¥
+¥
ã-x2
âx
Π
Lösen von Gleichungen bzw. Gleichungssystemen
SolveAx2 + b x + c 0, xE
::x ®1
2
-b - b2
- 4 c >, :x ®1
2
-b + b2
- 4 c >>
Solve@83 x - 4 y 3, x - y 4<, 8x, y<D88x ® 13, y ® 9<<
Berechnung von Tylorreihen von Funktionen
Series@Sin@xD, 8x, 0, 7<D
x -x3
6
+x5
120
-x7
5040
+ O@xD8
2 01_Einfuehrung.nb
Series@Log@xD, 8x, 1, 7<D
Hx - 1L -1
2
Hx - 1L2+1
3
Hx - 1L3-1
4
Hx - 1L4+1
5
Hx - 1L5-1
6
Hx - 1L6+1
7
Hx - 1L7+ O@x - 1D8
(ii) Beispiele zur numerischen Behandlung von Ausdrücken
Folgende Gleichung kann nicht analytisch gelösz werden
Solve@Log@xD + Exp@xD 1, xDSolve::nsmet : This system cannot be solved with the methods available to Solve.
Solve@ãx
+ Log@xD 1, xD... aber eine numerische Lösung existiert sehr wohl.
FindRoot@ãx
+ Log@xD == 1, 8x, 1<D8x ® 0.512222<
Die Wurzeln eines Polynoms 7. Grades können nicht mehr analytisch angegeben werden, aber
SolveAx7 + 2 x4
- x3
+ 2 x2
1, xE99x ® RootA-1 + 2 ð1
2- ð1
3+ 2 ð1
4+ ð1
7&, 1E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 2E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 3E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 4E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 5E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 6E=,
9x ® RootA-1 + 2 ð12
- ð13
+ 2 ð14
+ ð17&, 7E==
die numerische Lösung funktioniert problemlos.
NSolveAx7 + 2 x4
- x3
+ 2 x2
1, xE88x ® -1.49784<, 8x ® -0.564042<,
8x ® -0.0706267 - 1.09536 ä<, 8x ® -0.0706267 + 1.09536 ä<,8x ® 0.655752<, 8x ® 0.77369 - 0.948476 ä<, 8x ® 0.77369 + 0.948476 ä<<
Für folgende Funktion kann keine Stammfunktion angegeben werden ...
01_Einfuehrung.nb 3
IntegrateB Log@xDExp@xD - Sin@xD, xF
à Log@xDãx - Sin@xD âx
... das bestimmte Integral kann aber von Mathematica numerisch berechnet werden.
NIntegrateB Log@xDExp@xD - Sin@xD, 8x, 1, 2<F
0.0967651
Die Zahl “Π” ist zunächst eine symbolische Größe in Mathematica,
Π
Π
ein numerischer Wert von “Π” kann aber mit beliebiger (!) Genauigkeit ausgegeben werden.
N@Π, 100D3.1415926535897932384626433832795028841971693993751058209749445923078164062862
08998628034825342117068
(iii) Beispiele zur Visualisierung
Darstellung von Funktionen einer Variable ...
Plot@Sin@xD, 8x, 0, 2 Π<D
1 2 3 4 5 6
-1.0
-0.5
0.5
1.0
... oder gleichzeitige Darstellung mehrere Funktionen in einem Graphen.
4 01_Einfuehrung.nb
Plot@8Sin@xD, Cos@xD<, 8x, 0, 2 Π<D
1 2 3 4 5 6
-1.0
-0.5
0.5
1.0
Darstellung von Kurven in der Ebene, die in Parameterdarstellung gegeben ist.
ParametricPlot@8Φ Cos@ΦD, Φ Sin@ΦD<, 8Φ, 0, 2 Π<D
-2 2 4 6
-4
-3
-2
-1
1
Plotten von Datenpunkten (zB Messdaten)
01_Einfuehrung.nb 5
Daten = 880.45, 2.3<, 81.67, 3.2<, 82.54, 5.6<, 83.89, 6.1<, 84.45, 7.5<<;p1 = ListPlot@Daten, PlotLabel ® "Datenpunkte",
AxesLabel ® 8"x-Achse", "y-Achse"<D
1 2 3 4
x-Achse
3
4
5
6
7
y-Achse
Datenpunkte
Berechnen einer Ausgleichsgerade (Fit) durch Datenpunkte und Darstellung von Daten und Ausgleichs-
gerade.
f = Fit@Daten, 81, x<, xDp2 = Plot@f, 8x, 0, 5<D;Show@p1, p2, PlotLabel ® "Datenpunkte + Linearer Fit"D1.62486 + 1.27505 x
1 2 3 4
x-Achse
3
4
5
6
7
y-Achse
Datenpunkte + Linearer Fit
Darstellung von Funktionen zweier unabhängiger Variablen
6 01_Einfuehrung.nb
Plot3DAã-Ix2+y2M
, 8x, -2, 2<, 8y, -2, 2<E
-2
-1
0
1
2-2
-1
0
1
2
0.0
0.5
1.0
... einfaches Erstellen von interaktiven Visualisierungen ...
Manipulate@Plot@Sin@Ω tD, 8t, 0, 2 Π<D, 8Ω, 1, 5<D
Ω
1 2 3 4 5 6
-1.0
-0.5
0.5
1.0
01_Einfuehrung.nb 7
ManipulateAParametricPlot3DA9ã-Γ t
Cos@Ω tD, ã-Γ t
Sin@Ω tD, t=,8t, 0, 2 Π<, PlotRange ® 88-1, 1<, 8-1, 1<, 80, 2 Π<<,PlotStyle ® [email protected], 8Ω, 1, 5<, 8Γ, 0, 1<E
Ω
Γ
-1.0-0.5
0.00.5
1.0
-1.0
-0.5
0.0
0.5
1.0
0
2
4
6
(iv) Was ist funktionales oder regelbasiertes Programmieren?
Beispiel: Wir wollen die Summe der Zahlen in der folgenden Liste zu berechnen.
list = 82, 3.4, 6.7, 1.4, 6.3, 8.3, 2, 7, 2<;In eine Programmiersprache wie C++ würden wir wie folgt vorgehen: wir programmieren eine Schleife
über alle Listenelemente und addieren das jeweilige Listenelement zu einer Summenvariable, die wir
anfangs auf Null gesetzt haben. Eine solche Vorgehensweise ist auch in Mathematica möglich:
8 01_Einfuehrung.nb
sum = 0;
len = Length@listD;Do@sum = sum + list@@iDD,
8i, 1, len<D;sum
39.1
In Mathematica kann dieselbe Aufgabe aber viel eleganter mithilfe von “funktionalen” bzw.
“regelbasierten” Programmierkonzepten gelöst werden:
Apply@Plus, listD H* Anwenden der Funktion "Plus" auf die Liste *L39.1
list . List ® Plus H* Anwenden einer "Regel",
die die Funktion "List" durch die Funktion "Plus" ersetzt *L39.1
Beispiel: In einer anderen Anwendung wollen wir die Elemente der Liste quadrieren. Wieder zunächst
die “herkömmliche” Lösung über Schleifen:
len = Length@listD;list2 = 8<;Do@x = list@@iDD;
list2 = Append@list2, x^2D,8i, 1, len<D;
list2
84, 11.56, 44.89, 1.96, 39.69, 68.89, 4, 49, 4<und wieder die Lösung durch “Funktionales Programmieren”
Map@ð^2 &, listD84, 11.56, 44.89, 1.96, 39.69, 68.89, 4, 49, 4<
1.2 Was werden Sie in dieser Vorlesung lernen?
Übersicht über die Vorlesungsinhalte
Kapitel 1: Einführung
Kapitel 2: Symbolisches Rechnen mit Mathematica
Kapitel 3: “Expressions”: Die Struktur von Ausdrücken in Mathematica
Kapitel 4: Funktionen als Programme
01_Einfuehrung.nb 9
Kapitel 5: Listen: Erzeugung und Manipulation von Listen
Kapitel 6: Numerisches Rechnen mit Mathematica
Kapitel 7: Funktionales Programmieren - I: Predicate Functions, Map, Apply, Thread
Kapitel 8: Funktionales Programmieren - II: Iterating functions Nest, Fold und Pure Functions
Kapitel 9: Regelbasiertes Programmieren: “Rules” und “Patterns”
Kapitel 10: Graphische Darstellung: Plot, Plot3D, ParametricPlot, ListPlot, ... und interaktive Plots
mit “Manipulate”
Kapitel 11: Rekursive Funktionsdefinitionen
Kapitel 12: Anwendungsbeispiele aus der Physik
1.3 Literatur
Bücher
Sehr gut für Einsteiger:
An introduction to programming with Mathematica
Paul Wellin, Richard Gaylord, Samuel Kamin, Cambridge University Press, 2005
Reihe von Michael Trott, sehr umfangreich:
The Mathematica Handbook for Programming
Michael Trott, Springer, 2004
The Mathematica Handbook for Symbolics
Michael Trott, Springer, 2006
The Mathematica Handbook for Numerics
Michael Trott, Springer, 2006
The Mathematica Handbook for Graphics
Michael Trott, Springer, 2004
Weitere Bücher:
Mathematica in Theoretical Physics
Gerd Baumann, Springer, 2005
Mathematica for Phyics
Robert L. Zimmermann, Frederick I. Olness, Addison-Wesley Publishing, 1995
Interne Hilfe im “Documentation Center”
10 01_Einfuehrung.nb
? Plot
Plot@ f , 8x, xmin, xmax<D generates a plot of f as a function of x from xmin to xmax.
Plot@8 f1, f2, <, 8x, xmin, xmax<D plots several functions fi.
?? Plot
Plot@ f , 8x, xmin, xmax<D generates a plot of f as a function of x from xmin to xmax.
Plot@8 f1, f2, <, 8x, xmin, xmax<D plots several functions fi.
Attributes@PlotD = 8HoldAll, Protected, ReadProtected<Options@PlotD = 9AlignmentPoint ® Center, AspectRatio ®
1
GoldenRatio, Axes ® True,
AxesLabel ® None, AxesOrigin ® Automatic, AxesStyle ® 8<, Background ® None,
BaselinePosition ® Automatic, BaseStyle ® 8<, ClippingStyle ® None,
ColorFunction ® Automatic, ColorFunctionScaling ® True, ColorOutput ® Automatic,
ContentSelectable ® Automatic, CoordinatesToolOptions ® Automatic,
DisplayFunction ¦ $DisplayFunction, Epilog ® 8<, Evaluated ® Automatic,
EvaluationMonitor ® None, Exclusions ® Automatic, ExclusionsStyle ® None, Filling ® None,
FillingStyle ® Automatic, FormatType ¦ TraditionalForm, Frame ® False, FrameLabel ® None,
FrameStyle ® 8<, FrameTicks ® Automatic, FrameTicksStyle ® 8<, GridLines ® None,
GridLinesStyle ® 8<, ImageMargins ® 0., ImagePadding ® All, ImageSize ® Automatic,
ImageSizeRaw ® Automatic, LabelStyle ® 8<, MaxRecursion ® Automatic,
Mesh ® None, MeshFunctions ® 8ð1 &<, MeshShading ® None, MeshStyle ® Automatic,
Method ® Automatic, PerformanceGoal ¦ $PerformanceGoal, PlotLabel ® None,
PlotLegends ® None, PlotPoints ® Automatic, PlotRange ® 8Full, Automatic<,PlotRangeClipping ® True, PlotRangePadding ® Automatic, PlotRegion ® Automatic,
PlotStyle ® Automatic, PreserveImageOptions ® Automatic, Prolog ® 8<,RegionFunction ® HTrue &L, RotateLabel ® True, TargetUnits ® Automatic,
Ticks ® Automatic, TicksStyle ® 8<, WorkingPrecision ® MachinePrecision="Cursor" auf Mathematica Funktion bewegen und "F1" drücken öffnet das “Documentation Center” mit
ausführlichen Erläuterungen und Beispielen, zB
Plot
1.4 Wie kann ich Mathematica verwenden?
Sie können sich eine kostenloste Kopie von Mathematica über den Software-Server der KFU-Graz
beschaffen:
http://software.uni-graz.at
Es gibt sogenannte work@home Lizenzen für die Plattformen Windows, Mac, und Linux, die es Ihnen
erlauben Mathematica auf Ihrem privaten Laptop oder PC zu installieren.
Sie können auch die Computerräume der KFU nutzen. Insbesondere stehen Ihnen die Computer im
Physik EDV Raum 0005K10130 Computerraum (C-SR) zur Verfügung, für den Sie allerdings eigene
accounts beantragen müssen (Details dazu werden in der Vorlesung besprochen).
Alternativ dazu können Sie z.B. auch die Windows-PCs in dem Computerraum 0025EG0032
(TOUAILLON) in der Mozartgasse 14 nutzen, in die Sie sich mit Ihrem uni-graz Passwort einloggen
können.
01_Einfuehrung.nb 11
Sie können sich eine kostenloste Kopie von Mathematica über den Software-Server der KFU-Graz
beschaffen:
http://software.uni-graz.at
Es gibt sogenannte work@home Lizenzen für die Plattformen Windows, Mac, und Linux, die es Ihnen
erlauben Mathematica auf Ihrem privaten Laptop oder PC zu installieren.
Sie können auch die Computerräume der KFU nutzen. Insbesondere stehen Ihnen die Computer im
Physik EDV Raum 0005K10130 Computerraum (C-SR) zur Verfügung, für den Sie allerdings eigene
accounts beantragen müssen (Details dazu werden in der Vorlesung besprochen).
Alternativ dazu können Sie z.B. auch die Windows-PCs in dem Computerraum 0025EG0032
(TOUAILLON) in der Mozartgasse 14 nutzen, in die Sie sich mit Ihrem uni-graz Passwort einloggen
können.
Übungsaufgaben
Ü1 .1: Installation von Mathematica (optional, siehe oben)
Beschaffen Sie sich eine (kostenlose) Kopie von Mathematica über den Software-Server der KFU-Graz:
http://software.uni-graz.at/
Ü1 .2: “Hello World”
Starten Sie Mathematica, Öffnen Sie ein neues Notebook und werten Sie folgende Ausdrücke aus:
(“Shift-Enter” nicht vergessen!). Was ist die 150. Nachkommastelle der Zahl Pi?
1 + 1
Sin@PiDCos@ΠD H* Eingabe von Π durch Drücken von "ESC-p-ESC" *LN@Π, 150D
Ü1 .3: Benutzung des Documentation Centers
Berechen Sie folgenden Grenzwert: limx®0
Sin@xDx
mithilfe der Funktion “Limit”. Hinweis benutzen Sie die
interne Hilfe von Mathematica
12 01_Einfuehrung.nb
Top Related