. Einführung in Mathematica Die Vorlesung / Übung Programmieren in der Physik: C++ und Mathematica (PHY.A70 und PHY.A80) gliedert sich inhaltlich in Teile: () Programmieren mit C++ () Programmieren mit Mathematica. Hier finden Sie die Vorlesungs-Unterlagen sowie die Übungsbeispiele zum Teil (): Mathematica Dieses Skriptum wurde von Peter Puschnig erstellt und ist zur freien Verwendung in der Lehrveranstaltung gedacht. Bei sonstigem Gebrauch bitte Kontaktaufnahme mit dem Autor: peter.puschnig@uni-graz.at Weitere Informationen zur Lehrveranstaltung finden Sie hier: http://physik.uni-graz.at/~pep/mathematica.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=. Was ist Mathematica? Mathematica ist ein kommerzielles Softwarepaket des Unternehmens Wolfram Research und stellt eines der meistbenutzten mathematisch - naturwissenschaftlichen Programmpakete dar. Das Softwarepaket 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 D/D 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@xD + Cos@xD Simplify
0_Einfuehrung.nb Ha + bl Expand a + a b + a b + a b + b a + a b + a b + a b + b Factor Ha + bl Ableiten von Funktionen x ICos@ xd SinAx + x - EM - H- - xl Cos@ xd CosA - x - x E + Sin@ xd SinA - x - x E Berechnen von unbestimmten und bestimmten Integarlen à x Sin@xD â x - x Cos@xD + Sin@xD à + ã-x â x - Π Lösen von Gleichungen bzw. Gleichungssystemen SolveAx + b x + c 0, xe ::x -b b - c >, :x -b + Solve@8 x - y, x - y <, 8x, y<d 88x, y 9<< Berechnung von Tylorreihen von Funktionen Series@Sin@xD, 8x, 0, 7<D x x- x + x7-0 00 + O@xD8 b - c >>
0_Einfuehrung.nb Series@Log@xD, 8x,, 7<D Hx - L - Hx - L + Hx - L - Hx - L + Hx - L - Hx - L + 7 Hx - L7 + O@x - D8 (ii) Beispiele zur numerischen Behandlung von Ausdrücken Folgende Gleichung kann nicht analytisch gelösz werden Solve@Log@xD + Exp@xD, xd Solve::nsmet : This system cannot be solved with the methods available to Solve. Solve@ãx + Log@xD, xd... aber eine numerische Lösung existiert sehr wohl. FindRoot@ãx + Log@xD ==, 8x, <D 8x 0.< Die Wurzeln eines Polynoms 7. Grades können nicht mehr analytisch angegeben werden, aber SolveAx7 + x - x + x, xe 99x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, E=, 9x RootA- + ð - ð + ð + ð7 &, 7E== die numerische Lösung funktioniert problemlos. NSolveAx7 + x - x + x, xe 88x -.978<, 8x - 0.0<, 8x - 0.0707 -.09 ä<, 8x - 0.0707 +.09 ä<, 8x 0.7<, 8x 0.779-0.987 ä<, 8x 0.779 + 0.987 ä<< Für folgende Funktion kann keine Stammfunktion angegeben werden...
0_Einfuehrung.nb Log@xD IntegrateB, xf Exp@xD - Sin@xD à Log@xD ãx - Sin@xD âx... das bestimmte Integral kann aber von Mathematica numerisch berechnet werden. Log@xD NIntegrateB Exp@xD - Sin@xD 0.097, 8x,, <F Die Zahl Π ist zunächst eine symbolische Größe in Mathematica, Π Π ein numerischer Wert von Π kann aber mit beliebiger (!) Genauigkeit ausgegeben werden. N@Π, 00D.989798879088979997080979907808 08998808708 (iii) Beispiele zur Visualisierung Darstellung von Funktionen einer Variable... Plot@Sin@xD, 8x, 0, Π<D.0 0. -0. -.0... oder gleichzeitige Darstellung mehrere Funktionen in einem Graphen.
0_Einfuehrung.nb Plot@8Sin@xD, Cos@xD<, 8x, 0, Π<D.0 0. -0. -.0 Darstellung von Kurven in der Ebene, die in Parameterdarstellung gegeben ist. ParametricPlot@8Φ Cos@ΦD, Φ Sin@ΦD<, 8Φ, 0, Π<D - - - - - Plotten von Datenpunkten (zb Messdaten)
0_Einfuehrung.nb Daten = 880.,.<, 8.7,.<, 8.,.<, 8.89,.<, 8., 7.<<; p = ListPlot@Daten, PlotLabel "Datenpunkte", AxesLabel 8"x-Achse", "y-achse"<d Datenpunkte y-achse 7 x-achse Berechnen einer Ausgleichsgerade (Fit) durch Datenpunkte und Darstellung von Daten und Ausgleichsgerade. f = Fit@Daten, 8, x<, xd p = Plot@f, 8x, 0, <D; Show@p, p, PlotLabel "Datenpunkte + Linearer Fit"D.8 +.70 x Datenpunkte + Linearer Fit y-achse 7 x-achse Darstellung von Funktionen zweier unabhängiger Variablen
0_Einfuehrung.nb PlotDAã-Ix +y M, 8x, -, <, 8y, -, <E.0-0. - 0.0 0 0 - -... einfaches Erstellen von interaktiven Visualisierungen... Manipulate@Plot@Sin@Ω td, 8t, 0, Π<D, 8Ω,, <D Ω.0 0. -0. -.0 7
8 0_Einfuehrung.nb ManipulateAParametricPlotDA9ã-Γ t Cos@Ω td, ã-γ t Sin@Ω td, t=, 8t, 0, Π<, PlotRange 88-, <, 8-, <, 80, Π<<, PlotStyle Thickness@0.0DE, 8Ω,, <, 8Γ, 0, <E Ω Γ -.0.0 0. 0.0-0. 0.0 0..0-0. -.0 0 (iv) Was ist funktionales oder regelbasiertes Programmieren? Beispiel: Wir wollen die Summe der Zahlen in der folgenden Liste zu berechnen. list = 8,.,.7,.,., 8.,, 7, <; 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:
0_Einfuehrung.nb 9 sum = 0; len = Length@listD; Do@sum = sum + list@@idd, 8i,, len<d; sum 9. 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 *L 9. list. List Plus H* Anwenden einer "Regel", die die Funktion "List" durch die Funktion "Plus" ersetzt *L 9. 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; list = 8<; Do@x = list@@idd; list = Append@list, x ^ D, 8i,, len<d; list 8,.,.89,.9, 9.9, 8.89,, 9, < und wieder die Lösung durch Funktionales Programmieren Map@ð ^ &, listd 8,.,.89,.9, 9.9, 8.89,, 9, <. Was werden Sie in dieser Vorlesung lernen? Übersicht über die Vorlesungsinhalte Kapitel : Einführung Kapitel : Symbolisches Rechnen mit Mathematica Kapitel : Expressions : Die Struktur von Ausdrücken in Mathematica Kapitel : Funktionen als Programme
0 0_Einfuehrung.nb Kapitel : Listen: Erzeugung und Manipulation von Listen Kapitel : 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 0: Graphische Darstellung: Plot, PlotD, ParametricPlot, ListPlot,... und interaktive Plots mit Manipulate Kapitel : Rekursive Funktionsdefinitionen Kapitel : Anwendungsbeispiele aus der Physik. Literatur Bücher Sehr gut für Einsteiger: An introduction to programming with Mathematica Paul Wellin, Richard Gaylord, Samuel Kamin, Cambridge University Press, 00 Reihe von Michael Trott, sehr umfangreich: The Mathematica Handbook for Programming Michael Trott, Springer, 00 The Mathematica Handbook for Symbolics Michael Trott, Springer, 00 The Mathematica Handbook for Numerics Michael Trott, Springer, 00 The Mathematica Handbook for Graphics Michael Trott, Springer, 00 Weitere Bücher: Mathematica in Theoretical Physics Gerd Baumann, Springer, 00 Mathematica for Phyics Robert L. Zimmermann, Frederick I. Olness, Addison-Wesley Publishing, 99 Interne Hilfe im Documentation Center
0_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 f, f, <, 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 f, f, <, 8x, xmin, xmax <D plots several functions fi. Attributes@PlotD = 8HoldAll, Protected, ReadProtected< Options@PlotD = 9AlignmentPoint Center, AspectRatio, 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ð &<, 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 "F" drücken öffnet das Documentation Center mit ausführlichen Erläuterungen und Beispielen, zb Plot. 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 000K00 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 00EG00 (TOUAILLON) in der Mozartgasse nutzen, in die Sie sich mit Ihrem uni-graz Passwort einloggen können.
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. 0_Einfuehrung.nb Sie können auch die Computerräume der KFU nutzen. Insbesondere stehen Ihnen die Computer im Physik EDV Raum 000K00 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 00EG00 (TOUAILLON) in der Mozartgasse nutzen, in die Sie sich mit Ihrem uni-graz Passwort einloggen können. Übungsaufgaben Ü.: 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/ Ü.: Hello World Starten Sie Mathematica, Öffnen Sie ein neues Notebook und werten Sie folgende Ausdrücke aus: ( Shift-Enter nicht vergessen!). Was ist die 0. Nachkommastelle der Zahl Pi? + Sin@PiD Cos@ΠD H* Eingabe von Π durch Drücken von "ESC-p-ESC" *L N@Π, 0D Ü.: Benutzung des Documentation Centers Berechen Sie folgenden Grenzwert: limx 0 interne Hilfe von Mathematica Sin@xD mithilfe x der Funktion Limit. Hinweis benutzen Sie die