+ All Categories
Home > Documents > Anhang A Mathematica - risc.jku.at · Anhang A Mathematica In diesem Abschnitt wird das...

Anhang A Mathematica - risc.jku.at · Anhang A Mathematica In diesem Abschnitt wird das...

Date post: 05-Sep-2019
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
28
Anhang A Mathematica In diesem Abschnitt wird das MathematikSoftwaresystem Mathematica vorgest- ellt, das als Basis der gesamten Lehrveranstaltung dient. Die folgenden Aspe- kte des Systems Mathematica sind dabei von entscheidender Bedeutung: Mathematica als Rechenmaschine, Mathematica als Visualisierungswerkzeug für mathematische Objekte, Mathematica als Programmiersprache und Mathematica als mathematisches Dokumentenverarbeitungssystem. Mathematica besteht aus zwei voneinander unabhängigen, nichts desto Trotz aber eng in Verbindung stehenden Komponenten, dem Kernel und dem Front- End. Aufgabe des Kernels ist es, Mathematica Expressions auszuwerten, wobei Mathematica Expressions von einfachen arithmetischen Berechnungen angefangen, über symbolische Umformungen, bis hin zu komplexen Programm- systemen reichen können. Das FrontEnd hingegen ist die Benutzerschnittstelle, in der Eingaben an den Mathematica Kernel gegeben werden können und die für Formatierung der Resultate zuständig ist. Das FrontEnd verfügt über ein eigenes Dokumentenformat, das Mathematica Notebook, in dem wir Mathemat- ica (Kernel)Input, Mathematica (Kernel)Output, Grafiken, Formeln, Text und Strukturierungselemente miteinander vermischen können. In den folgenden Kapiteln werden wir auf die verschiedenen Aspekte des Systems im Detail eingehen.
Transcript

Anhang A

Mathematica

In diesem Abschnitt wird das Mathematik|Softwaresystem Mathematica vorgest−ellt, das als Basis der gesamten Lehrveranstaltung dient. Die folgenden Aspe−kte des Systems Mathematica sind dabei von entscheidender Bedeutung:

è Mathematica als Rechenmaschine,

è Mathematica als Visualisierungswerkzeug für mathematische Objekte,

è Mathematica als Programmiersprache und

è Mathematica als mathematisches Dokumentenverarbeitungssystem.

Mathematica besteht aus zwei voneinander unabhängigen, nichts desto Trotzaber eng in Verbindung stehenden Komponenten, dem Kernel und dem Front−End. Aufgabe des Kernels ist es, Mathematica Expressions auszuwerten, wobeiúMathematica Expressionsø von einfachen arithmetischen Berechnungenangefangen, über symbolische Umformungen, bis hin zu komplexen Programm−systemen reichen können. Das FrontEnd hingegen ist die Benutzerschnittstelle,in der Eingaben an den Mathematica Kernel gegeben werden können und diefür Formatierung der Resultate zuständig ist. Das FrontEnd verfügt über eineigenes Dokumentenformat, das Mathematica Notebook, in dem wir Mathemat−ica (Kernel|)Input, Mathematica (Kernel|)Output, Grafiken, Formeln, Text undStrukturierungselemente miteinander vermischen können.

In den folgenden Kapiteln werden wir auf die verschiedenen Aspekte desSystems im Detail eingehen.

1 Mathematica als Rechenmaschine

1.1 Einfache arithmetische Ausdrücke

Stellen Sie sich den Mathematica Kernel am besten als einen Super|Taschen−rechner vor! Jede Berechnung, die Sie durchführen wollen, schreiben Sie ineinen úeigenen Bereichø im FrontEnd, wie z.B.

756 + 49

Am Teschenrechner würden Sie nun auf die ú=ø|Taste drücken, um demRechner den Befehl zu geben, die Eingabe auszurechnen. In Mathematicapositionieren Sie den Cursor ans Ende der Eingabe (dort steht der Cursorsowieso nach dem Eintippen!) und drücken ÷|¿ oder ó. Dies ist das Kom−mando, das dem FrontEnd mitteilt, dass der Input an den Kernel geschicktwerden soll. Der Kernel führt nun die Berechnung durch und sendet das Resul−tat zurück an das FrontEnd, welches das Ergebnis unmittelbar nach der Eing−abezeile in einen úeigenen Bereichø schreibt.

756 + 49

805

Die jeweiligen Bereiche eines Notebooks werden Zellen genannt. Zellen fürKernel Input heißen Input|Zellen, jene mit Output demnach Output|Zellen, undes gibt noch jede Menge weitere Zelltypen. Das optische Erscheinungsbild derZellen hängt vom Zellstil ab, mehr darüber in Kapitel 4.

Arithmetische Operationen stellen wir durch die gewohnten Operationsze−ichen wie ú+ø, ú−ø, ú*ø und ú/ø dar.

756 - 49

707

756 * 49

37044

756 �49

108��������������

7

Komisch! Vielleicht hätten Sie eher mit einem Resultat 15.428571428571429gerechnet. Mathematica kann aber mit Bruchzahlen rechnen, Gleitkom−mazahlen werden nur verwendet, wenn schon die Eingabe Gleitkommazahlenbeinhaltet.

Anhang A: Mathematica 2

756.0 �49

15.4286

Bedenken Sie aber, dass numerische Berechnungen (fast) immer durch Rund−ungsfehler verfälscht werden können. Wenn exakte Eingangsdaten zur Verfü−gung stehen, sollte man daher bestrebt sein, so lange wie möglich exakt zurechnen und erst auf numerische Auswertung zurückgreifen, wenn exaktesRechnen

è nicht mehr sinnvoll möglich oder

è nicht mehr nötig ist.

Im Laufe von längeren Berechnungen kann exaktes Rechnen mit Brüchennämlich sehr schnell zum Anwachsen der Ausdrücke führen, wie man anfolgendem (viel zu einfachen) Beispiel sehen kann.

ikjjj 313845

��������������������������3847

y{zzz

30

+ikjjj 313845

��������������������������3848

y{zzz

35

86835654727474858206035539897073187139957574952912043697001859456544�

4946510340790482454914004142026171242255095311091424176315073591732�

2251442617904578611565964315925493830288915469233803944950373290587�

2677023118218678581532149614738155439460259478205803669133244595443�

2736428041942417621612548828125 �1088661355697611427885035374126402122275919009642918871077130244858�

33688882538883351090322461987136357572400055411946462824269588275�

65372446426336258623090909988246669939342141835754980170934290496�

6228100163785155856676224111285895168

Das Rechnen mit derartigen Zahlen ist sehr aufwendig, die Gesamtrechen−zeiten können sich in diesen Fällen dramatisch verlängern. Will ich außerdem

eine Vorstellung davon bekommen, wie groß die Zahl H 313845������������������3847 L

30+ H 313845

������������������3848 L35

ungefähr ist, so hilft das vorangegangene Resultat nicht wirklich, das numerischausgewertete Resultat

ikjjj 313845.0

��������������������������������3847

y{zzz

30

+ikjjj 313845

��������������������������3848

y{zzz

35

7.97637 ´ 1066

hingegen lässt schon mehr Aufschlüsse zu. Lesen Sie mehr dazu in Kapitel 1.4.Weitere mathematisch Funktionen, die in Mathematica zur Verfügung stehen,sind etwa

�!!!!!!!23�!!!!!!!

23

Anhang A: Mathematica 3

�!!!!!!!24

2�!!!!

6

122

144

Wie gibt man Berechnungen wie úWurzelø (�!!!

), úPotenzierenø, úBrücheø oderandere mathematische Sonderzeichen im Mathematica FrontEnd eigentlichein? Im Wesentlichen gibt es 3 Arten:

è Eingabe|Paletten: siehe Menü File®Palettes.

è Tastatur|Sequenzen mit â: hauptsächlich für Operationen: z.B. â|2 fürúWurzelø oder â|/ für úBruchø.

è Tastatur|Sequenzen mit å: hauptsächlich für Sonderzeichen: z.B. åpåfür úΠø, åintå für úÙ ø.

Lesen Sie mehr dazu im Kapitel 4.1.

1.2 Die Mathematica Kommandosprache

Bisher haben wir immer Berechnungen durchgeführt, indem wir eine Rechenop−eration in úgewohnter Weiseø in eine Input|Zelle geschrieben haben. Das war inden bisherigen Beispielen auch relativ einfach möglich, da es für Addition,Subtraktion, Multiplikation, Potenzieren und Wurzelziehen úbeinahe eindeutigeøNotation gibt. Es können aber nicht alle Schreibweisen, die in unterschiedlicherMathematikliteratur verwendet werden, von Mathematica unterstützt werden.Die allgemeine Form eines Kommandos ist in Mathematica

Kommando|Name@param1 , param2 , ¼, paramn D

wobei úKommando|Nameø der Name eines Mathematica|Befehls ist, der aufdie Parameter (Argumente) úparam1ø bis úparamnø angewendet wird. Dies ist dieallgemeine Form der Mathematica|Expression, jeder Mathematica |Befehl hatdiese Form . Für manche dieser Befehle existieren alternative Schreibweisen,die denen der klassischen Mathematik nachempfunden sind.

So ist etwa 756 + 49 nur eine alternative Schreibweise (Infix|Notation) fürden Befehl Plus[756,49] , was wiederum soviel heißt wie úwende den BefehlPlus auf die Argumente 756 und 49 anø.

Plus@756, 49D805

Anhang A: Mathematica 4

Times@756, 49D37044

Sqrt@24D2�!!!!

6

Power@12, 2D144

Log@12DLog@12D

Ein wichtiger Hinweis: Mit ? bzw. ?? können Sie jederzeit Hilfe zu einer bestim−mten Funktion bekommen, auch den Help|Browser (Menü Help) sollte mannicht außer Acht lassen.

? Log

Log@zD gives the natural logarithm of z Hlogarithmto base eL. Log@b, zD gives the logarithm to base b. More¼

Log@12, 2DLog@2D

����������������������������Log@12D

Die numerische Auswertung eines Resultats kann ich auch erzwingen, indemich das Kommando N anwende.

N@Log@12, 2DD0.278943

Log@12, 2D �� N0.278943

N@Log@12, 2D, 30D0.278942945651129843191044081038

Cos@ΠD-1

1.3 Symbolische Berechnungen

Bisher haben wir immer numerische Berechnungen durchgeführt. Mathematicakann aber auch mit Symbolen úrechnenø.

2 * a + b + 5 * a + 7 * b

7 a + 8 b

Anhang A: Mathematica 5

Der ú*ø als Operationszeichen für die Multiplikation kann, wie man es aus derSchule kennt, auch weggelassen werden und durch ein Leerzeichen ersetztwerden, im Falle der Multiplikation einer Zahl mit einem Symbol kann selbst dasLeerzeichen entfallen.

2 a + b + 6 a + 7 b����������������������������������������������������������

81������8H8 a + 8 bL

ExpandA 2 a + b + 6 a + 7 b����������������������������������������������������������

8E

a + b

ExpandA 2 a + b + 6 a + 7 b����������������������������������������������������������

8 Ha + bL Ea

������������������a + b

+b

������������������a + b

SimplifyA 2 a + b + 6 a + 7 b����������������������������������������������������������

8 Ha + bL E1

Vorsicht: die Euler’sche Zahl e wird in Mathematica durch "E" oder "ã" (=åeeå) repräsentiert.

Log@eDLog@eDLog@ãD1

Symbole können Werte mit ú=ø zugewiesen bekommen, was ich zum Speich−ern von Zwischenresultaten verwenden kann.

ex = ExpandA 2 a + b + 6 a + 7 b����������������������������������������������������������

8 Ha + bL Ea

������������������a + b

+b

������������������a + b

Together@exD1

Anhang A: Mathematica 6

1.4 Numerisches Rechnen

Unter úNumerischem Rechnenø verstehen wir üblicherweise das Rechnen mitreellen Zahlen in einem Computer, genauer gesagt das Rechnen mit jenenObjekten, die wir als Modell der reellen Zahlen in einem Computer ansehenkönnen. Eine kurze Überlegung verdeutlicht, dass die reellen Zahlen nicht alsGanzes in einem Computer dargestellt werden können: Es gibt unendlich vielereelle Zahlen (sogar überabzählbar viele), in einem Computer können wir abernur endlich viele Zahlen darstellen.

Als Computer|Modell der reellen Zahlen verwenden wir üblicherweiseGleitkommazahlen (engl. floating point numbers), bei denen wir eine fixe Anzahlvon bits zur Beschreibung einer Zahl verwenden, die sich auf ein Vorzeichen|Bit, die Mantisse und den Exponent aufteilen. Die mathematischen Grundlagendazu werden wir im Abschnitt über Gleitkommazahlen genauer beleuchten. DieAnzahl der Stellen in der Mantisse bestimmt die Genauigkeit (engl. precision)der Zahl. Nach jeder Rechenoperation müssen wir durch Rundung wieder eineGleitkommazahl ermitten, sodass es in (fast) jeder Berechnung zu einemRundungsfehler kommt. In manchen Fällen sind diese Fehler vernachlässigbarklein, in anderen Fällen kann ein numerisch berechnetes Resultat durch Akku−mulation von Rundungsfehlern völlig unbrauchbar werden.

Mathematica verwendet ein ausgefeilteres Konzept zur Darstellung vonreellen Zahlen, und zwar eine Mischung aus

è machine|precision numbers (Maschinenzahlen): Gleitkommazahlen mitfixer Genauigkeit abhängig von der darunterliegenden Hardware und

è arbitrary|precision numbers: Gleitkommazahlen mit beliebigerGenauigkeit.

Das Prinzip dabei ist das Folgende: die globale Variable

$MachinePrecision

16

gibt an, wieviele Dezimalstellen an Genauigkeit für Maschinenzahlen zurVerfügung stehen. Wird nun eine Zahl eingegeben, die weniger Stellen als 16benötigt, so wird diese als Maschinenzahl abgespeichert, andernfalls alsarbitrary|precision number. Bei allenarithmetischen Berechnungen wird derRundungsfehler beachtet, und Mathematica hat stets Kontrolle darüber,wieviele Stellen der Zahl als korrekt betrachtet werden können.

PrecisionA 756��������������49E

¥

Anhang A: Mathematica 7

Precision@756. �49D16

Der zweite Parameter im Kommando N verleitet natürlich dazu, mehr Stellen zuermitteln als eigentlich gesichert zur Verfügung stehen.

N@756. �49, 30D15.4286

Da aber in 756. �49 nur 16 Stellen Genauigkeit vorhanden sind, können nicht 30Stellen ermittelt werden. Dass von den 16 Stellen aber nur 6 Stellen angezeigtwerden, ist rein eine Sache der Formatierung

NumberForm@N@756. �49, 30D, 10D15.42857143

Von exakten Zahlen, also Zahlen mit unendlich großer Genauigkeit, kann mannatürlich beliebig viele Stellen berechnen lassen.

NA 756��������������49

, 30E15.4285714285714285714285714286

NA 756��������������49

, 300E15.428571428571428571428571428571428571428571428571428571428571428571�

4285714285714285714285714285714285714285714285714285714285714285714�

2857142857142857142857142857142857142857142857142857142857142857142�

8571428571428571428571428571428571428571428571428571428571428571428�

5714285714285714285714285714286

N@Π, 300D3.1415926535897932384626433832795028841971693993751058209749445923078�

1640628620899862803482534211706798214808651328230664709384460955058�

2231725359408128481117450284102701938521105559644622948954930381964�

4288109756659334461284756482337867831652712019091456485669234603486�

1045432664821339360726024914127

Bei numerischen Berechnungen ist immer zu beachten, dass es durch Auslös−chung zum Verlust von Genauigkeit kommen kann.

[email protected]

[email protected]

[email protected] - 1.11111111111111111000D2

Anhang A: Mathematica 8

1.5 Listen

Table ist der grundlegende Befehl zum Erstellen von Datenlisten (siehe Kapitel1.8 und im Mathematica Buch).

myList = Table@3 x2+ 2 x - 5, 8x, -10, 10<D

8275, 220, 171, 128, 91, 60, 35, 16, 3,-4, -5, 0, 11, 28, 51, 80, 115, 156, 203, 256, 315<

Table@3 x2+ 2 x - 5, 8x, -10, 10, 0.5<D

8275, 246.75, 220., 194.75, 171., 148.75, 128., 108.75, 91., 74.75, 60., 46.75, 35.,24.75, 16., 8.75, 3., -1.25, -4., -5.25, -5., -3.25, 0., 4.75, 11., 18.75, 28., 38.75,51., 64.75, 80., 96.75, 115., 134.75, 156., 178.75, 203., 228.75, 256., 284.75, 315.<

TableA3 x2+ 2 x - 5, 9x, -10, 10,

1������2=E

9275,987��������������

4, 220,

779��������������

4, 171,

595��������������

4, 128,

435��������������

4, 91,

299��������������

4, 60,

187��������������

4, 35,

99����������4

, 16,35����������4

, 3, -5������4

, -4, -21����������4

, -5, -13����������4

, 0,19����������4

, 11,75����������4

, 28,155��������������

4,

51,259��������������

4, 80,

387��������������

4, 115,

539��������������

4, 156,

715��������������

4, 203,

915��������������

4, 256,

1139������������������

4, 315=

Listen können auf verschiedenste Art und Weise bearbeitet werden:

è Zugriff auf einzelne Elemente

myListP1T275

è Zugriff auf mehrere Elemente gleichzeitig

myListP81, 5<T8275, 91<Take@myList, 5D8275, 220, 171, 128, 91<Take@myList, -5D8115, 156, 203, 256, 315<Take@myList, 83, 6<D8171, 128, 91, 60<

è Löschen von (mehreren) Elementen

Drop@myList, 10D8-5, 0, 11, 28, 51, 80, 115, 156, 203, 256, 315<

Anhang A: Mathematica 9

Drop@myList, -10D8275, 220, 171, 128, 91, 60, 35, 16, 3, -4, -5<

è Veränderung der Struktur,

Reverse@myListD8315, 256, 203, 156, 115, 80, 51, 28, 11,

0, -5, -4, 3, 16, 35, 60, 91, 128, 171, 220, 275<è Auswahl von Elementen, die eine bestimmte Bedingung erfüllen

Select@myList, NegativeD8-4, -5<Select@myList, Function@x, x2

< 100DD83, -4, -5, 0<

è Auswahl von Elementen, die eine bestimmte syntaktische Gestalt haben

CasesA91, 3, a, b, 0.7,7

����������10=, _IntegerE

81, 3<

CasesA91, 3, a, b, 0.7,7

����������10=, _SymbolE

8a, b<

CasesA91, 3, a, b, 0.7,7

����������10=, _RealE

80.7<

CasesA91, 3, a, b, 0.7,7

����������10=, _RationalE

9 7����������10=

è Modifikation der Listenelemente

MapAFunctionAz,�!!!!

z E, myListE95�!!!!!!!11 , 2

�!!!!!!!55 , 3

�!!!!!!!19 , 8

�!!!!2 ,�!!!!!!!

91 , 2�!!!!!!!

15 ,�!!!!!!!

35 , 4,�!!!!

3 , 2 ä,

ä�!!!!

5 , 0,�!!!!!!!

11 , 2�!!!!

7 ,�!!!!!!!

51 , 4�!!!!

5 ,�!!!!!!!!!!

115 , 2�!!!!!!!

39 ,�!!!!!!!!!!

203 , 16, 3�!!!!!!!

35 =

MapA�!!!!# &, myListE95�!!!!!!!11 , 2

�!!!!!!!55 , 3

�!!!!!!!19 , 8

�!!!!2 ,�!!!!!!!

91 , 2�!!!!!!!

15 ,�!!!!!!!

35 , 4,�!!!!

3 , 2 ä,

ä�!!!!

5 , 0,�!!!!!!!

11 , 2�!!!!

7 ,�!!!!!!!

51 , 4�!!!!

5 ,�!!!!!!!!!!

115 , 2�!!!!!!!

39 ,�!!!!!!!!!!

203 , 16, 3�!!!!!!!

35 =

Anhang A: Mathematica 10

2 Mathematica als Visualisierungswerkzeug

Mathematica bietet verschiedenste Möglichkeiten zum Erstellen von Grafiken.

2.1 Funktionsgrafen

ListPlot@Table@3 x2+ 2 x - 5, 8x, -10, 10, 0.5<D, PlotStyle ® [email protected]<D;

10 20 30 40

50

100

150

200

250

300

ListPlot@Table@3 x2+ 2 x - 5, 8x, -10, 10, 0.5<D, PlotJoined ® TrueD;

10 20 30 40

50

100

150

200

250

300

Zum Erstellen von Funktionsgrafiken für Funktionen in einer Variablen ist abereigentlich die Funktion Plot gedacht.

Anhang A: Mathematica 11

Plot@3 x2+ 2 x - 5, 8x, -10, 10<D;

-10 -5 5 10

50

100

150

200

250

300

Für 3D|Grafiken gibt es die Funktion Plot3D , die eine Funktion von 2 Variablengrafisch darstellt.

plot3d = Plot3D@Sin@xDCos@yDExp@yD, 8x, 0, 2 Π<, 8y, 0, 2<, Boxed ® FalseD;

0

2

4

6 0

0.5

1

1.5

2

-2

0

2

0

2

4

6

In den neuesten Versionen von Mathematica hat man auch die Möglichkeit,Grafiken interaktiv zu bearbeiten, indem man das Zusatzpaket RealTime3D lädt.

<< RealTime3D‘

Plot3D@Sin@xDCos@yDExp@yD, 8x, 0, 2 Π<, 8y, 0, 2<, Boxed ® FalseD;<< Default3D‘

Anhang A: Mathematica 12

2.2 Allgemeine Struktur von Grafiken

Mathematica bietet eine Datenstruktur für grafische Objekte, die mit dem BefehlShow angezeigt werden können. In dieser Datenstruktur können grafischePrimitivobjekte (Punkte, Linien, Kreise, Polygone, etc.) mit Visualisierungsan−weisungen (Frabe, Linienstärke, Punktgröße, etc.) hierarchisch angeordnetwerden. (Hinweis zur Auswahl von Farben: Menü Input®Color Selector.)

primGraf =

Graphics@88AbsoluteThickness@3D, [email protected], 0.329412, 0.784314D,Circle@80, 0<, 1D<, [email protected],[email protected], 0.0627451, 0.784314D, Line@880, 1<, 80, 0<, 81, 0<<D,[email protected], [email protected], -0.5<D<<, AspectRatio ® AutomaticD �� Show;

2.3 Überlagern von Grafiken

úÜberlagernø von Grafiken kann erreicht werden, indem mehrere Grafikensimultan an Show gegeben werden.

Anhang A: Mathematica 13

Show@primGraf, plot3dD;

Mathematica bestimmt in den meisten Fällen selbst, welcher Ausschnitt einerGrafik angezeigt wird. Durch die Option PlotRange ®All kann auf jeden Fallerzwungen werden, dass alle Bestandteile angezeigt werden.

Show@primGraf, plot3d, PlotRange ® AllD;

Etwas mehr Kontrolle über die Art der Überlagerung gewinnt man, wenn mandie einzelnen Grafiken in Ausschnitte plaziert, die dann innerhalb der Grafikpositioniert werden können.

Anhang A: Mathematica 14

Show@Graphics@8Rectangle@80, 0<, 81, 1<, plot3dD, [email protected], 0.5<, 81, 1<, primGrafD<DD;

02

4

6 0

0.5

1

1.5

2

-202

02

4

6

Auf diese Art könnte man dann selbstverständlich Grafiken neben| oder unterein−ander tabellenartig arrangieren. Das wird aber durch einen eigen Befehlerleichtert.

GraphicsArray@Partition@Join@Table@primGraf, 84<D, Table@plot3d, 85<DD, 3DD �� Show;

0 2 4 600.511.52-20

2

0 2 4 60 2 4 60

0.511.52-20

2

0 2 4 60 2 4 60

0.511.52-20

2

0 2 4 6

0 2 4 600.511.52-20

2

0 2 4 60 2 4 60

0.511.52-20

2

0 2 4 6

Anhang A: Mathematica 15

2.4Kombination von Funktionsplots mit allgemeinen Grafikobjekten

Der eingangs beschriebene Plot |Befehl ermöglicht die Kombination mit allge−meinen Grafikobjekten über die Optionen Prolog und Epilog . Bevor der Funk−tionsplot gezeichnet wird, werden die Grafikelementen (wie in Graphics ) ausder List in Prolog gezeichnet. Diese werden daher unter dem Funktionsploterscheinen! Epilog enthält Elemente, die nach dem Funktionsplot dargestelltwerden und demnach über dem Funktionsplot zu liegen kommen.

Plot3D@Sin@xDCos@yDExp@yD, 8x, 0, 2 Π<, 8y, 0, 2<, Boxed ® False,Prolog ® [email protected], 0.188235, 0.121569D, [email protected], 0.4<, 0.3D<<,Epilog ® [email protected], 1, 0.121569D,

Text@StyleForm@"The Wave", FontFamily ® "Times",FontWeight -> "Bold", FontSize ® 22D, 80.75, 0.55<D<<D;

0

2

4

6 0

0.5

1

1.5

2

-2

0

2

0

2

4

6

The Wave

3 Mathematica als Programmiersprache

Aus der Schule kennen wir (hoffentlich) die Aufgabenstellung einer úKurvendis−kussionø. Gegeben ist eine Funktion f , gesucht ist eine Funktionsgrafik, in deralle besonderen Punkte (Nullstellen, Hoch| und Tiefpunkte, Wendepunkte)eingezeichnet sind. Betrachten wir beispielsweise einmal die Funktion

f@x_D := -25����������2

+ 10 x +11 x2

��������������������2

- 3 x3

Anhang A: Mathematica 16

Die Nullstellen erhält man, indem man die Gleichung f @xD � 0 nach x auflöst.Achtung: eine Gleichung wird mit ú==ø oder "�" (å==å) geschrieben, daseinfache ú=ø steht für die Wertzuweisung.

Zeros = Solve@f@xD � 0, xD

99x ® -5������3=, 8x ® 1<, 9x ®

5������2==

Die Extremstellen erhalte ich, indem ich die Gleichung f ’@xD � 0 nach x auflöse.

Extremes = Solve@f ’@xD � 0, xD

99x ®1

����������18I11 -

�!!!!!!!!!!481 M=, 9x ®

1����������18I11 +

�!!!!!!!!!!481 M==

Die Wendestellen erhalte ich, indem ich die Gleichung f ’’@xD � 0 nach x auflöse.

Inflections = Solve@f ’’@xD � 0, xD

99x ®11����������18==

Wir müssen nun nur noch aus den berechneten Werten Grafikobjekte erzeu−gen, die wir dann entsprechend mit dem Funktionsplot kombinieren können.Das machen wir am einfachsten so: 8x, f @xD< sind immer die Koordinaten einesPunktes am Funktionsgrafen. Durch Einsetzen von konkreten Werten für xbekommen wir konkrete Punkte am Grafen. Einsetzen von Werten geschieht inMathematica durch den Befehl "/.", also z.B.

8x, f@xD< �. x ® 0

90, -25����������2=

8x, f@xD< �. 88x ® 0<, 8x ® 5<<

990, -25����������2=, 85, -200<=

Das heißt also, dass die Ausdrücke, die wir als Resultate von beim Lösen derGleichungen zurückbekommen haben, genau die gewünschte Struktur auf−weisen. Die passenden Grafikobjekte sind Ausdrücke der Form Point[{x,f[x]}] ,in die die passenden Werte für x einzusetzen sind.

Point@8x, f@xD<D �. Zeros

9PointA9- 5������3

, 0=E, Point@81, 0<D, PointA9 5������2

, 0=E=

Farben können auch per Namen ausgewählt werden, wenn wir ein geeignetesZusatzpaket laden. Wir nehmen úTurquoiseBlueø für Nullstellen, úDeepCobaltVi−oletø für Extermwerte und úDarkOrangeø für Wendestellen.

Anhang A: Mathematica 17

<< Graphics‘Colors‘

Names@"Graphics‘Colors‘*"D8AliceBlue, AlizarinCrimson, AllColors, Antique, Apricot, Aquamarine,

AquamarineMedium, AureolineYellow, Azure, Banana, Beige, Bisque,Black, BlanchedAlmond, Blue, BlueLight, BlueMedium, BlueViolet, Brick,Brown, BrownMadder, BrownOchre, Burlywood, BurntSienna, BurntUmber,Cadet, CadetBlue, CadmiumLemon, CadmiumOrange, CadmiumRedDeep,CadmiumRedLight, CadmiumYellow, CadmiumYellowLight, Carrot, Cerulean,Chartreuse, Chocolate, ChromeOxideGreen, CinnabarGreen, CMYColor,Cobalt, CobaltGreen, CobaltVioletDeep, ColdGray, Coral, CoralLight,CornflowerBlue, Cornsilk, Cyan, CyanWhite, DarkGoldenrod, DarkGreen,DarkKhaki, DarkOliveGreen, DarkOrange, DarkOrchid, DarkSeaGreen,DarkSlateBlue, DarkSlateGray, DarkTurquoise, DarkViolet, DeepCadmiumRed,DeepCobaltViolet, DeepMadderLake, DeepNaplesYellow, DeepOchre,DeepPink, DeepSkyBlue, DimGray, DodgerBlue, Eggshell, EmeraldGreen,EnglishRed, Firebrick, Floral, ForestGreen, Gainsboro, GeraniumLake, Ghost,Gold, Goldenrod, GoldenrodDark, GoldenrodLight, GoldenrodPale, GoldOchre,Gray, Green, GreenDark, GreenishUmber, GreenPale, GreenYellow, HLSColor,Honeydew, HotPink, HSBColor, IndianRed, Indigo, Ivory, IvoryBlack, Khaki,KhakiDark, LampBlack, Lavender, LavenderBlush, LawnGreen, LemonChiffon,LightBeige, LightBlue, LightCadmiumRed, LightCadmiumYellow, LightCoral,LightGoldenrod, LightGray, LightPink, LightSalmon, LightSeaGreen,LightSkyBlue, LightSlateBlue, LightSlateGray, LightSteelBlue, LightViridian,LightYellow, LimeGreen, Linen, MadderLakeDeep, Magenta, ManganeseBlue,Maroon, MarsOrange, MarsYellow, MediumAquamarine, MediumBlue,MediumOrchid, MediumPurple, MediumSeaGreen, MediumSlateBlue,MediumSpringGreen, MediumTurquoise, MediumVioletRed, Melon,MidnightBlue, Mint, MintCream, MistyRose, Moccasin, NaplesYellowDeep,Navajo, Navy, NavyBlue, Oak, OldLace, Olive, OliveDrab, OliveGreenDark,Orange, OrangeRed, Orchid, OrchidDark, OrchidMedium, PaleGoldenrod,PaleGreen, PaleTurquoise, PaleVioletRed, PapayaWhip, Peach, PeachPuff,Peacock, PermanentGreen, PermanentRedViolet, Peru, Pink, PinkLight, Plum,PowderBlue, PrussianBlue, Purple, PurpleMedium, Raspberry, RawSienna,RawUmber, Red, RoseMadder, RosyBrown, RoyalBlue, SaddleBrown,Salmon, SandyBrown, SapGreen, SeaGreen, SeaGreenDark, SeaGreenLight,SeaGreenMedium, Seashell, Sepia, Sienna, SkyBlue, SkyBlueDeep, SkyBlueLight,SlateBlue, SlateBlueDark, SlateBlueLight, SlateBlueMedium, SlateGray,SlateGrayDark, SlateGrayLight, Smoke, Snow, SpringGreen, SpringGreenMedium,SteelBlue, SteelBlueLight, TerreVerte, Thistle, Titanium, Tomato, Turquoise,TurquoiseBlue, TurquoiseDark, TurquoiseMedium, TurquoisePale, Ultramarine,UltramarineViolet, VanDykeBrown, VenetianRed, Violet, VioletDark, VioletRed,VioletRedMedium, VioletRedPale, ViridianLight, WarmGray, Wheat, White,Yellow, YellowBrown, YellowGreen, YellowLight, YellowOchre, YIQColor, Zinc<

Anhang A: Mathematica 18

Plot@f@xD, 8x, -2.5, 3<,Epilog ® [email protected], Prepend@Point@8x, f@xD<D �. Zeros, TurquoiseBlueD,

Prepend@Point@8x, f@xD<D �. Extremes, DeepCobaltVioletD,Prepend@Point@8x, f@xD<D �. Inflections, DarkOrangeD<D;

-2 -1 1 2 3

-10

10

20

30

40

Wollen wir nun eine andere Funktion behandeln, so könnten wir f neudefinieren und das Ganze wieder von vorne beginnen. Die einzelnen Befehlebedürfen keinerlei Änderungen mehr, sie können ohne zu überlegenwieder|ausgeführt werden.

Wir können es sogar dem Computer überlassen, die einzelnen Schrittewieder auszuführen, wenn wir dem Computer ein Programm vorgeben,nach dem er die einzelnen Schritte ausführen soll!

Curve@f_D := Module@8x, Zeros, Extremes, Inflections, all, minX, maxX<,Zeros = Solve@f@xD � 0, xD;Extremes = Solve@f ’@xD � 0, xD;Inflections = Solve@f ’’@xD � 0, xD;all = x �. Join@Zeros, Extremes, InflectionsD �� N �� Sort;8minX, maxX< = allP81, -1<T;Plot@f@xD,8x, minX - HmaxX - minXL �10, maxX + HmaxX - minXL �10<, PlotRange ® All,Epilog ® [email protected], Prepend@Point@8x, f@xD<D �. Zeros, TurquoiseBlueD,

Prepend@Point@8x, f@xD<D �. Extremes, DeepCobaltVioletD,Prepend@Point@8x, f@xD<D �. Inflections, DarkOrangeD<DD

General::spell1 :

Possible spelling error: new symbol name "all" is similar to existing symbol "All".

Anhang A: Mathematica 19

Curve@fD;

-2 -1 1 2 3

-15

-10

-5

5

10

15

g@x_D := x2+ 3 x - 1

Curve@gD;Point::argx : Point called with 2 arguments; 1 argument is expected.

-3 -2 -1

-3

-2

-1

1

Perfekt is diese Programm noch lange nicht. Zumindestens eines MUSSaus diesem Beispiel gelernt werden: Beim Übergang von einem konkretenBeispiel zu einem allgemein einsetzbaren Programm muss sehr vorsichtigumgegange werden! Anweisungen, die im speziellen Beispiel funktionierthaben, können bei geändertem Input zu Fehlern führen. In obigemBeispiel passierte dies, weil die Kurve keinen Wendepunkt besitzt, daherdie Gleichung keine Lösung besitzt, und daher ein inkorrektesGrafikelement erzeugt wurde. Es ist daher von äußerster Wichtigkeit, sichbei jeder Programmzeile zu überlegen, ob deren Ausführung für jedendenkbaren erlaubten Input fehlerlos möglich ist!

Anhang A: Mathematica 20

Fehler treten in obigem Programm auf, wenn

è Funktionen weniger als 2 Nullstellen, Extremwerte, oder Wendestellenbesitzen (Berechnung des zu zeichnenden Bereichs)

Curve@Function@x, 1DD

Plot::plln : Limiting value x$26 in 9x$26, minX$26 -maxX$26 - minX$26�����������������������������������������������������������������������������

10,

maxX$26 +maxX$26 - minX$26�����������������������������������������������������������������������������

10= is not a machine-size real number.

PlotAFunction@x, 1D@x$26D,

9x$26, minX$26 -maxX$26 - minX$26������������������������������������������������������������������������

10, maxX$26 +

maxX$26 - minX$26������������������������������������������������������������������������

10=,

PlotRange ® All, Epilog ® [email protected], Prepend@Point@8x$26, Function@x, 1D@x$26D<D �. Zeros$26, TurquoiseBlueD, Prepend@Point@8x$26, Function@x, 1D@x$26D<D �. Extremes$26, DeepCobaltVioletD,

Prepend@Point@8x$26, Function@x, 1D@x$26D<D �. Inflections$26, DarkOrangeD<E

è komplexe Zahlen als Lösungen auftreten (Berechnung des zu zeich−nenden Bereichs)

Curve@Function@x, x3- 1DD;

Plot::plln : Limiting value -0.65 - 0.952628 ä in 9x$27, minX$27 -maxX$27 - minX$27�����������������������������������������������������������������������������

10,

maxX$27 +maxX$27 - minX$27�����������������������������������������������������������������������������

10= is not a machine-size real number.

è an einer Stelle die 2. und die 3. Ableitung 0 sind (Extremwert wird irrtüm−lich als Wendestelle gekennzeichnet)

Curve@Function@x, x4- 1DD;

Graphics::gptn : Coordinate -ä in 8-ä, 0< is not a floating-point number.

Graphics::gptn : Coordinate ä in 8ä, 0< is not a floating-point number.

-1 -0.5 0.5 1

-1

-0.5

0.5

1

Anhang A: Mathematica 21

Die allgemeine Struktur eines Mathematica Programmes ist

program|name@parameter|pattern1 , ¼, parameter|patternn D := program

wobei:

è parameter|patterni bezeichnet einen Pattern für einen Programm|Parame−ter. Patterns sind sehr praktische Elemente der Mathematica Programmier−sprache, mit deren Hilfe spezifiziert werden kann, für welche Parameterw−erte das Programm aufrufbar sein soll. Will man jeden MathematicaAusdruck als Parameter zulassen, dann schreibt man ú_ø, will man denAusdruck im Programm auch unter einem Namen ansprechen, wasnormalerweise der Fall ist, so stellt man den Namen dem ú_ø davor, z.B.úx_ø, úf_ø, etc.

è program stellt das Programm dar, wobei ein Programm aus einer odermehrerer Anweisungen besteht, die nacheinander ausgeführt werdensollen. Die formalen Programmparameter werden im Programm ohne ú_øgeschrieben. Besteht ein Programm aus mehreren Anweisungen, sowerden diese durch ú;ø voneinander getrennt. Die letzte Anweisung mussnicht unbedingt einen ú;ø als Abschluss haben. Ein abschließender ú;ø hatden Effekt, die Ausgabe des Resultats zu unterdrücken. Will man lokaleVariable im Programm verwenden, so ist Module oder Block (manchmalauch With) ein passendes Konstrukt. Jeder einzelne Befehl in einemProgramm kann selbstverständlich wieder ein selbstdefiniertes Programmsein! Selbstdefinierte Programme wreden genauso aufgerufen wie einge−baute Mathematica|Befehle.

Zusätzlich zu den schon bekannten Mathematica Befehlen gibt es noch einigespezielle Anweisungen, die in Programmen von Interesse sein können, wieetwa Schleifen (For, Do, While), Verzweigungen (If, Switch, Which), etc.Das nachfolgende Programm ist eine verbesserte Version des obigen Pro−grammes, das in vielen Beispielen das gewünschte Resultat liefert. (Perfekt istauch dieses Programm nicht ¼)

Anhang A: Mathematica 22

Curve@f_D := Module@8x, Zeros, Extremes, Inflections, all, minX, maxX<,Zeros = SelectRealZeros@Solve@f@xD � 0, xDD;Extremes = SelectRealZerosOf@Solve@f ’@xD � 0, xD, f ’’@xDD;Inflections = SelectRealZerosOf@Solve@f ’’@xD � 0, xD, f ’’’@xDD;With@8listall = Union@Zeros, Extremes, InflectionsD<,

Switch@Length@listallD,0, 8minX, maxX< = 8-1, 1<,1, 8minX, maxX< = Join@Hx �. listallL- 1, Hx �. listallL+ 1D �� N,_, 8minX, maxX< = Part@x �. listall �� N �� Sort, 81, -1<DDD;

Plot@f@xD, 8x, minX - HmaxX - minXL �10, maxX + HmaxX - minXL �10<,PlotRange ® All, Epilog ® [email protected],

If@Length@ZerosD > 0, Prepend@Point@8x, f@xD<D �. Zeros, TurquoiseBlueD, 8<D,If@Length@ExtremesD > 0, Prepend@Point@8x, f@xD<D �. Extremes,

DeepCobaltVioletD, 8<D, If@Length@InflectionsD > 0,Prepend@Point@8x, f@xD<D �. Inflections, DarkOrangeD, 8<D<DD

SelectRealZeros@l_D := Select@l, FreeQ@#, ComplexD &DSelectRealZerosOf@l_, f_D := Select@SelectRealZeros@lD, Hf �. #L ¹ 0 &DCurve@gD;

-3 -2 -1

-3

-2

-1

1

h@x_D := x2+ 3 x + 3

Anhang A: Mathematica 23

Curve@hD;

-2.5 -1.5 -1 -0.5

0.8

1.2

1.4

1.6

1.8

2

2.2

Curve@Function@x, x3 DD;

-1 -0.5 0.5 1

-1.5

-1

-0.5

0.5

1

1.5

Anhang A: Mathematica 24

Curve@Function@x, Sin@xD+ 1 �2DD;Solve::ifun : Inverse functions are being used by Solve, so some solutions may not be found.

Solve::ifun : Inverse functions are being used by Solve, so some solutions may not be found.

Solve::ifun : Inverse functions are being used by Solve, so some solutions may not be found.

General::stop : Further output of Solve::ifun will be suppressed during this calculation.

-1.5 -1 -0.5 0.5 1 1.5

-0.5

0.5

1

1.5

4 Mathematica als Dokumentenverarbeitungssystem

Das Mathematica FrontEnd kann auch als Dokumentenverarbeitungssystemgesehen werden. Ein Mathematica Notebook setzt sich aus Zellen zusammen,die durch verschiedene Formatierungsmöglichkeiten in ihrem optischen Erschei−nungsbild verändert werden können. Die Zellstruktur eines Notebooks wirddurch die Zellklammern am rechten Bildschirmrand veranschaulicht, im Aus−druck auf Papier werden diese Klammern nicht dargestellt. Jede Zelle hat einenStil, der durch das zugrundeliegende Stylesheet definiert wird. Jeder Benutzerkann eigene Stylesheets entwerfen und so das optische Erscheinungsbild derDokumente gestalten, im Stylesheet wird überdies festgehalten, welche Stileüberhaupt zur Verfügung stehen. Darüberhinaus stehen über das Stylesheetnoch sogenannte Environments zur Verfügung, die das Erscheinungsbildbeeinflussen. Environments sind dazu geeignet, verschiedene Formatierungenfür z.B. Bildschirm, Präsentation und Ausdruck zu definieren.

Der große Vorteil von Stylesheets liegt in der Einheitlichkeit der For−matierung. Zellen mit gleichem Stil erscheinen einheitlich formatiert, ändert sichder Formatierungswunsch ~ will man etwa Sektionsüberschriften nachträglichin einer anderen Schriftart ~, so genügt eine Änderung im Stylesheet. Abwe−ichend vom Stylesheet können Formatierungen auch auf einzelne Zellenangewendet werden, indem die Zelle markiert wird und im Format|Menü diegewünschte Formatierung eingestellt wird. Alle Formatierungen schlagen sichin Zelloptionen nieder, die alternativ auch über dne Option|Inspector eingestellt

Anhang A: Mathematica 25

in Zelloptionen nieder, die alternativ auch über dne Option|Inspector eingestelltwerden können.

4.1 Mathematische Formeln

Mathematische Formeln treten zumeist in einer der 3 folgenden Varianten auf:

Inline Formula

Kurze Formeln werden im laufenden Text geschrieben. Um die Formel vomumgebenden Text abzuheben, werden einzelne Symbole meist kursiv geschrie−ben, Namen wie úlogø, úsinø, úcosø, etc. jedoch nicht kursiv. Das Schreiben vonúschönenø Formeln ist eine hohe Kunst, vieles dabei ist natürlich Geschmacks−sache, aber es gibt einen gewissen Standard, der weltweit beim Schreiben vonFormeln Anwendung findet.Formatierungstipp: Mathematica bietet die Möglichkeit, in Textzellen mathema−tische Formeln einzubetten, sogenannte Inline cells. Inline cells werden mitâ|9 eröffnet und mit â|0 wieder beendet. Alle Stylesheets beinhalten dieFormatierungsdefinitionen für Inline cells, die für die passende Schriftart füreinzelne Symbole und ein ansprechendes Spacing (= Abstände zwischen deneinzelnen Formelbestandteilen) sorgen.Beispiel: Wenn wir in dem Term x2 - a x jedes Vorkommen von x durch 2ersetzen, so erhalten wir 4 - 2 a.

Displayed Formula

Längere oder wichtigere Formeln werden in eine eigene Zeile geschrieben.Abhängig vom persönlichen Geschmack werden diese zentriert oder mit einemfixen Abstand vom linken Rand eingerückt. Unbedingt sollte aber Einheitlichkeitin ein und demselben Dokument herrschen. Alle Stylesheets definieren fürdiesen Zweck einen Zellstil DisplayFormula.Beispiel: Eine Funktion f heißt differenzierbar an der Stelle a, wenn derGrenzwert

limx®a

f @xD - f @aD

������������������������������������x - a

Anhang A: Mathematica 26

Numbered Formula

Längere oder wichtigere Formeln werden in eine eigene Zeile geschrieben undmit einer laufenden Nummer versehen, wenn später auf diese Formel Bezuggenommen wird. Die meisten Stylesheets definieren für diesen Zweck einenZellstil NumberedEquation, die fortlaufende Nummerierung wird durch einenCounter realisiert, dessen Name mit dem Zellstil (also NumberedEquation)übereinstimmt.Beispiel: Eine Funktion f heißt differenzierbar an der Stelle a, wenn derGrenzwert

(1)limx®a

f @xD - f @aD

������������������������������������x - a

Ein Bezug zu einer Formel kann durch ein Automatic Numbering Object hergest−ellt werden. Jene Zelle, die das Ziel einer solchen Referenz enthält, muss einenCell Tag zugewiesen bekommen (Menü Find®Add/Remove Cell Tags), überdas Menü Input®Create Automatic Numbering Object kann dann ein Bezug zujener Zelle hergestellt werden, die genau diesen Cell Tag trägt. In obigemBeispiel trägt die Zelle mit der nummerierten Formel den Cell Tag "Eq:Diff", einBezug zu dieser Zelle sieht wie folgt aus: ¼ in Formel (1) ¼

Der Vorteil dieser Art von Bezügen ist, dass die Nummerierung automatischam aktuellen Stand gehalten wird. Wird eine neue Formel eingefügt, so werdensowohl die Nummerierung als auch alle Bezüge angepasst. Im NotebookFrontEnd ist der Bezug überdies ein Hyperlink, der durch Anklicken zur Formelspringt!

4.2 Hyperlinks

Wie schon im vorangegangenen Kapitel bei Bezügen zu nummerierten Formelnangesprochen wurde, besitzt das Mathematica FrontEnd einige Features zumGestalten von interaktiven Dokumenten. Alleine dadurch, dass Dialoge mit demMathematica Kernel (Input ~ Output ~ Grafik) in einem Dokument möglichsind, wird jedes Mathematica Notebook zu einem interaktiven Dokument.Darüberhinaus können im Text Hyperlinks eingebaut werden, deren Ziele Zelleninnerhalb des Notebooks, Zellen in anderen Notebooks oder allgemeine Web|Adressen sein können. Zum Einfügen eines Hyperlinks den Linktext markieren,ins Menü Input®Create Hyperlink gehen und die Zieladresse eingeben. Im Falleeiner Notebookzelle ist die Zieladresse in Form eines Cell Tags anzugeben,wird eine Adresse der Form úhttp://¼ø angegeben, so wird diese als Web|Adresse interpretiert, und beim Anklicken entsprechend ein Web|Browsergestartet. (Das weitere Verhalten ist betriebssystemabhängig.)

Anhang A: Mathematica 27

4.3 Buttons und Palettes

Die im vorangegangenen Kapitel beschriebenen Hyperlinks sind spezielleAusprägungen von Mathematica Buttons. Buttons sind FrontEnd Elemente, diebeim Anklicken mit der Maus eine beliebige Aktion ausführen. Palettes (einigesind zu finden im Menü File®Palettes) sind Ansammlungen von Buttons, die alsEingabehilfen für Mathematica fungieren. Einfache Buttons können im MenüInput®Create Button erstellt werden, wobei die Symbole � und � in einemButton als Platzhalter (� steht für den im Notebook selektierten Ausdruck, � istein freier Platzhalter). Die Aktion solcher Buttons hängt vom gewählten Button−Style ab, siehe ButtonStyle im Online|Help oder Kapitel 2.10.6 im Mathemat−ica Buch. Das Interessante daran ist, dass die Aktion, die beim Anklickenausgeführt wird, neben den vordefinierten Aktionen wie úPasteø, úEvaluateø etc.auch ein beliebiges Mathematica Programm sein kann ~ auch ein vomBenutzer definiertes Programm! Die Programmierung von Buttons ist aber einKapitel für fortgeschrittene Mathematica Programmierer.

Anhang A: Mathematica 28


Recommended