1. Einführung in Mathematicapep/Lehre/Mathematica2014/01_Einfuehru… · Mathematica ist ein...

12
1. Einführung in Mathematica Die 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@xD 2 + Cos@xD 2 Simplify 1

Transcript of 1. Einführung in Mathematicapep/Lehre/Mathematica2014/01_Einfuehru… · Mathematica ist ein...

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