39
Einführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von L. Tiator) Praktische Hinweise zur grafischen Oberfläche Menü-Struktur (nur ausgewählte Menüpunkte) ª File-Menü das übliche ª Edit-Menü Undo (Ctrl+Z) : Achtung! Nur die letzte Aktion kann rückgängig gemacht werden. keine Chancen bei Formattierungsänderungen regelmäßiges Zwischenspeichernist ratsam! Complete Selection (Ctrl+K) : sehr hilfreich bei langen Befehlsnahmenund Optionen Preferences ... : einige globale Einstellungen ª Insert-Menü Input from Above (Ctrl+L) : kopiert die letzte Zelle, sehr praktisch für kleine Änderungen bzw. Tests ª Format-Menü spezielle Darstellungenund Formattierungen ª Cell-Menü Convert To : Konvertierungzwischen InputForm (Shift+Ctrl+I), StandardForm(Shift+Ctrl+N), TraditionalForm(Shift+Ctrl+T) Properties : Eigenschaften einer Inputzelle, z.B. Active oder Initialization Divide Cells : an der Cursorposition mit Shift+Ctrl+D in 2 Zellen teilen Merge Cells : Zellklammernmarkieren und mit Shift-Ctrl+M zu einer einzigen Zelle vereinigen Delete All Output : alle Output-Zellen werden gelöscht, z.B. zum Versenden per Email ª Graphics nur Spezialitäten ª Evaluation Quit Kernel : beendet den Kernel, damit wird die gesamte Vorgeschichte gelöscht und alle Rechnungen können wieder "sauber" beginnen (Reset) ª Palettes Basic Math Assistant : wichtigste Palette für Eingabesyntax, kann immer offen sein Algebraic Manipulation: praktisch für Umformungen komplexerAusdrücke Special Characters : Buchstaben (Α -W , A , Æ) und Symbole (¥ ©)

Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Embed Size (px)

Citation preview

Page 1: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Einführung in Mathematica (1)

Numerisches und Symbolisches Rechnen

Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von L. Tiator)

Praktische Hinweise zur grafischen Oberfläche

Menü-Struktur (nur ausgewählte Menüpunkte)

ã File-Menü

das übliche

ã Edit-Menü

Undo (Ctrl+Z) : Achtung! Nur die letzte Aktion kann rückgängig gemacht werden.

keine Chancen bei Formattierungsänderungen

regelmäßiges Zwischenspeichern ist ratsam!

Complete Selection (Ctrl+K) : sehr hilfreich bei langen Befehlsnahmen und Optionen

Preferences ... : einige globale Einstellungen

ã Insert-Menü

Input from Above (Ctrl+L) : kopiert die letzte Zelle, sehr praktisch für kleine Änderungen bzw. Tests

ã Format-Menü

spezielle Darstellungen und Formattierungen

ã Cell-Menü

Convert To : Konvertierung zwischen InputForm (Shift+Ctrl+I), StandardForm (Shift+Ctrl+N),

TraditionalForm (Shift+Ctrl+T)

Properties : Eigenschaften einer Inputzelle, z.B. Active oder Initialization

Divide Cells : an der Cursorposition mit Shift+Ctrl+D in 2 Zellen teilen

Merge Cells : Zellklammern markieren und mit Shift-Ctrl+M zu einer einzigen Zelle vereinigen

Delete All Output : alle Output-Zellen werden gelöscht, z.B. zum Versenden per Email

ã Graphics

nur Spezialitäten

ã Evaluation

Quit Kernel : beendet den Kernel, damit wird die gesamte Vorgeschichte gelöscht

und alle Rechnungen können wieder "sauber" beginnen (Reset)

ã Palettes

Basic Math Assistant : wichtigste Palette für Eingabesyntax, kann immer offen sein

Algebraic Manipulation: praktisch für Umformungen komplexer Ausdrücke

Special Characters : Buchstaben (Α-W, A, Æ) und Symbole (¥Ìª©)

Page 2: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

ã Window

Show Ruler : Maßstab mit Seiten-Markierungen

Show Toolbar : praktische Icon-Leiste

Fullscreen (F12) : ganzer Bildschirm

ã Help

Documentation Center: Umfangreiches Hilfesystem mit Suchfunktion

Function Navigator : Alle Mathematica-Funktionen nach Themenbereichen geordnet

Virtual Book : Mathematica-Tutorium

Option Inspector (Shift-Ctrl-O oder Toolbar oder Format-Menü)

sehr viele Details individuell einstellbar (aber nicht sehr übersichtlich)

eine recht nützliche Einstellung sind die Cell Labels (bis Vers. 5 default)

Show option values: Selected Notebook oder Global Preferences einstellen

im Baumdiagramm: Cell Options - Cell Labels auswählen

option ShowCellLabel: True anklicken

Initialisierung

Mathematica ist das vielseitigste und mächtigste Computer-Algebra-System. Es kann sowohl für symbolisches als auch numerisches

Rechnen eingesetzt werden und enthält sehr umfassende Grafikmöglichkeiten mit 2D- und 3D-Darstellungen, Animationen und vieles

mehr.

Darüber hinaus lässt sich Mathematica durch Zusatzpakete noch beliebig erweitern.

Für solche "packages" als auch für die standard Mathematica packages ist ein Suchpfad definiert. Diesen Suchpfad kann man mit

$Path

anzeigen und ggf. mit

$Path = $Path Ü 8".", "U:\\Mathematica"<erweitern.

Falls Daten oder Programmteile von einem speziellen Arbeitsdirectory eingelesen werden sollen oder geschrieben werden sollen, kann

man global ein Directory (Unix Syntax) definieren, z.B.

SetDirectory@"D:CTKursVorlesung"DD:\CTKurs\Vorlesung

2 Mathematica_1.nb

Page 3: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

SetDirectoryA"U:DokumenteMathematicaÜbung"EDie Files im Arbeitsdirectory können mit

FileNames@D9Datenfiles, extras, fsvmainz05.jpg, Mathematica_1f.nb,

Mathematica_1.nb, packages, temp, Temperatur.dat, Tour, Vorlesung pdf files=

oder auch gezielt mit

FileNames@"*.dat"D8Temperatur.dat<

aufgelistet werden und ggf. mit FilePrint[...] ausgedruckt werden.

FilePrint@"Temperatur.dat"D 0.00000000000000E+0000 2.20000000000000E+0001 2.00000000000000E+0000 2.10000000000000E+0001 4.00000000000000E+0000 2.00000000000000E+0001 6.00000000000000E+0000 1.90000000000000E+0001 8.00000000000000E+0000 2.00000000000000E+0001 1.00000000000000E+0001 2.30000000000000E+0001 1.20000000000000E+0001 2.70000000000000E+0001 1.40000000000000E+0001 3.10000000000000E+0001 1.60000000000000E+0001 3.30000000000000E+0001 1.80000000000000E+0001 3.20000000000000E+0001 2.00000000000000E+0001 2.90000000000000E+0001 2.20000000000000E+0001 2.60000000000000E+0001 2.40000000000000E+0001 2.40000000000000E+0001

Startet man ein Notebook im Windows Explorer, so wird das Directory der Datei automatisch zum aktuellen Arbeitsdirectory. Damit kann

man sich die Initialisierung sparen.

Start von Mathematica

Der Mathematica Kernel

Der Kernel ist eine textorientierte Benutzeroberfläche die auf allen Rechnern gleich aussieht. Auch unter Windows startet der Kernel in

einem einfachen Textfenster:

In@1D :=

Dateien, die im Kernel bearbeitet werden sind reine Textdateien und somit vollständig plattformunabhängig. Sie tragen üblicherweise die

Endung .m (z.B. citydata.m)

Graphische Oberflächen

Mathematica für Windows ist eine graphische Oberfläche, die Text und Graphik in strukturierter Form darstellt. Solche strukurierte

Dateien (Notebooks) werden in einer reinen ASCII Form abgespeichert (name.nb), die für Frontends auf unterschiedlichen Rechnersys-

temen gleich sind. In diesen Dateien werden alle Graphiken in einer ASCII-Kodierung gespeichert, so dass die Notebooks

beträchtlichen Umfang annehmen können. Meistens kann man bei Speicherplatzproblemen zum Versenden mit Emails diese Dateien

sehr effektiv z.B. mit Winzip komprimieren.

Mathematica_1.nb 3

Page 4: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Mathematica Packages

Mit den sogenannten "packages" ist Mathematica beliebig erweiterbar. Packages sind rein textorientiert als name.m abgespeichert

(z.B. Calendar.m). Eine Großzahl von Standard Packages gehören zum Lieferumfang von Mathematica dazu und werden mit

Get["PackageName`"], bzw. <<PackageName oder HambestenL mit Needs["PackageName`"] geladen.

Letzteres verhindert ein mehrmaliges Laden eines Packages, was zu einem unerwünschten "Shadowing" (siehe weiter unten) führen

kann:

z.B. Needs["Graphics`"] lädt das Graphics Master Paket (nur noch bis Mathematica5 erforderlich)

<< Calendar`

FilePrint@"Calendar`"D(* ::Package:: *)

(* initialization file for the package Calendar` *)

Get["Calendar`Calendar`"]

?Calendar`*

Calendar`

Calendar EasterSundayGreekOrthodox Monday

CalendarChange Friday Saturday

DateQ Gregorian Sunday

DayOfWeek Islamic Thursday

DaysBetween Jewish Tuesday

DaysPlus JewishNewYear Wednesday

EasterSunday Julian

EasterSunday@2010D82010, 4, 4<

Table@8l1 = EasterSunday@yearD, l2 = EasterSundayGreekOrthodox@yearD,

H17L *DaysBetween@l1, l2D<, 8year, 2000, 2010<D8882000, 4, 23<, 82000, 4, 30<, 1<,

882001, 4, 15<, 82001, 4, 15<, 0<, 882002, 3, 31<, 82002, 5, 5<, 5<,882003, 4, 20<, 82003, 4, 27<, 1<, 882004, 4, 11<, 82004, 4, 11<, 0<,882005, 3, 27<, 82005, 5, 1<, 5<, 882006, 4, 16<, 82006, 4, 23<, 1<,882007, 4, 8<, 82007, 4, 8<, 0<, 882008, 3, 23<, 82008, 4, 27<, 5<,882009, 4, 12<, 82009, 4, 19<, 1<, 882010, 4, 4<, 82010, 4, 4<, 0<<

mit //TableForm erhält man eine besser lesbare Formatierung:

4 Mathematica_1.nb

Page 5: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Table@8l1 = EasterSunday@yearD, l2 = EasterSundayGreekOrthodox@yearD,

H17L *DaysBetween@l1, l2D<, 8year, 2007, 2012<D TableForm

200748

200748

0

2008323

2008427

5

2009412

2009419

1

201044

201044

0

2011424

2011424

0

201248

2012415

1

Damit kann man z.B. auch alle beweglichen Tage berechnen, die mit Ostern zusammenhängen:

RosenMontag@jahr_D := DaysPlus@EasterSunday@jahrD, -48DRosenMontag@2010D82010, 2, 15<

DayOfWeek@%DMonday

und noch etwas schöner:

Print@"Der Rosenmontag ", %%@@1DD," ist am ", %%@@3DD, ".", %%@@2DD, "."D

Der Rosenmontag 2010 ist am 15.2.

ã Alle Rosenmontage zwischen 2000 und 3000:

tab = Table@RosenMontag@JahrD, 8Jahr, 2000, 3000<D;Sortiert nach Monat und Tag :

tab@@Ordering@tab@@All, 82, 3<DDDDD;% Short

882285, 2, 2<, 82353, 2, 2<, 82437, 2, 2<, 995, 82782, 3, 8<, 82877, 3, 8<, 82945, 3, 8<<

Der früheste Termin ist der 2. Februar, z.B. im Jahr 2285 oder 2353,

der späteste Termin ist der 8. März, z.B. im Jahr 2945,

als nächstes im Jahr 2038.

Mathematica_1.nb 5

Page 6: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

ã nochmals Day of Week

DayOfWeek@82010, 1, 1<DFriday

Manipulate ist ein neues (ab Vers. 6) und sehr praktisches Tool

Es kann sehr vielseitig eingesetzt werden, siehe Documentation Center. Weitere Beispiele werden folgen.

Needs@"Calendar`"DManipulate@DayOfWeek@8jahr, monat, tag<D,

88jahr, 2009<, 1950, 2050, 1<, 8monat, 1, 12, 1<, 8tag, 1, 31, 1<D

jahr

monat

tag

Calendar`DayOfWeek@82009, 1, 8<D

Help System

Das Help System von Mathematica ist völlig neu gestaltet: Es heißt jetzt: Documentation Center

Es ist grob in folgende Kategorien aufgeteilt:

Core Language

Mathematics and Algorithms

Visualization and Graphics

Data Manipulation

Computable Data

Dynamic Interactivity

Notebooks and Documents

Systems Interfaces & Deployment

und bietet eine sehr große Verzweigung mit Hinzunahme von Internet Links.

ã Funktions-Browser (F1)

Für die meisten speziellen Probleme bei der Eingabesyntax und bei der Suche von ähnlichen

Befehlen eignet sich am besten der Funktions-Browser (F1)

(am einfachsten: Funktionsname markieren und F1 drücken)

Mathematische Notation

Neben der ursprünglichen rein textorientierten Eingabeform gibt es bei Mathematica zusätzlich eine mathematische "Standard Form"

und eine mathematische "Traditional Form", z.B.:

Input Form (Shift+Ctrl+I) Integrate[ArcTan[x^2]/x^2, x,0,Infinity]

Standard Form (Shift+Ctrl+N) Ù0¥ ArcTanAx2Ex2

âx

Traditional Form (Shift+Ctrl+T) Ù0¥ tan-1Ix2M

x2â x

Mit dem Menü: Cell / Convert To können die Formen durch einfaches Klicken ineinander umgewandelt werden.

Die Eingabe der mathematischen Notation kann auf verschiedene Weise erfolgen:

6 Mathematica_1.nb

Page 7: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

ã Verwendung von Paletten

Die wichtigste Eingabepalette ist: Basic Math Input unter Menü: Palettes/Other.

Eine weitere nützliche Palette ist: Algebraic Manipulation.

ã Eingabe mit Ctrl (Strg) Shortcuts

Beispiele: Ctrl# bedeutet gleichzeitiges Drücken der Ctrl (Strg) Taste und der Taste #

x Ctrl 8^< 3 ® x3

x Ctrl 8 < 3 ®x

3x Ctrl 8_< 3 ® x3

Ctrl 82< x ® xCtrl 8Space< ® beendet die Eingabe

x Ctrl 8^< 2 Ctrl 8Space< + 1 Ctrl 8 < Ctrl 82< x Ctrl 8Space< + a Ctrl 8Space<® x2 +

1

x + a

ã Eingabe mit \[...] bzw. mit Escape

\@Alpha D Esc a Esc Α

\@Pi D Esc pi Esc Π

\@Integral D Esc int Esc à\@DifferentialD D Esc dd Esc â

ã Eingabe mit LATEX-Notation

Esc \infty Esc ¥

Esc \int Esc à

Rechnen mit Zahlen

Rechnen mit Ganzen Zahlen

eine einfache Addition

45 + 77

122

etwas schwieriger

3^100

515377520732 011331036461129765621 272 702107 522 001

Mathematica rechnet im Gegensatz zu einem Taschenrechner mit einer beliebigen Anzahl von Stellen, zum Beispiel auch

Mathematica_1.nb 7

Page 8: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

200!

788657867364 790503552363213932185 062 295135 977 687 173 263 294 742 533 244 359 449 963 403 342

920304284011984623904177212138 919638 830 257 642 790 242 637 105 061 926 624 952 829 931 113 462

857270763317237396988943922445 621451 664 240 254 033 291 864 131 227 428 294 853 277 524 242 407

573903240321257405579568660226 031904 170 324 062 351 700 858 796 178 922 222 789 623 703 897 374

720000000000000000000000000000 000000 000 000 000 000 000

Mit einem Semikolon am Ende kann man die Ausgabe unterdrücken

2000!;

Mit //Short kann man die Ausgabe entsprechend der Fenstergröße verkürzen

2000! Short

33162750924506332411 753933805763 240 5665 000 000 000 000000 000 000 000 000 000 000 000

Mit einem optionalen 2. Parameter kann man auch mehrere Zeilen darstellen:

Short@2000!, 5D331627509245 063324117539338057632 403 828111 720 810 578 039 457 193 543 706 038 077 905 600 822

400273230859732592255402352941225 834 109 258 084 817 415 293 796 131 5454

000000000000000000000000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

000000000000000000000000000000000 000 000 000 000 000 000 000 000 000

Gelegentlich kann es passieren, dass eine Rechnung in eine Endlosschleife gerät oder einfach zu lange dauert. In diesem Fall kann

man die Berechnung abbrechen, in dem man im Menü Kernel - Abort Evaluation wählt oder als Tastaturkürzel: Alt+. , z.B. :

1 000000!; Timing

82.25, Null<

Rechnen mit Reellen Zahlen

Natürlich kann das vorherige Ergebnis auch in kompakter Weise als Dezimalzahl dargestellt werden

N@%%D3.316275092450633´105735

Das Zeichen % bedeutet immer das letzte Ergebnis, %% das vorletzte u.s.w.

Das Ergebnis von Out[8] kann auch als absolute Angabe mit %8 bezeichnet werden.

%8 N

8882007., 4., 8.<, 82007., 4., 8.<, 0.<, 882008., 3., 23.<, 82008., 4., 27.<, 5.<,882009., 4., 12.<, 82009., 4., 19.<, 1.<, 882010., 4., 4.<, 82010., 4., 4.<, 0.<,882011., 4., 24.<, 82011., 4., 24.<, 0.<, 882012., 4., 8.<, 82012., 4., 15.<, 1.<<

Hier bedeutet //N dasselbe wir N[...]. Dies ist für alle Funktionen mit nur einem Argument möglich.

Die Verwendung von % ist in vielen Fällen sinnvoll, weitere Bezüge, insbesondere absolute Bezüge sind nicht zu empfehlen, da sie in

der Regel bereits beim nächsten Start des Notebooks schon nicht mehr stimmen.

So erhält man Pi auf 200 Stellen:

8 Mathematica_1.nb

Page 9: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

N@Pi, 200D3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482

534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555

96446229489549303820

Mit NumberForm kann man weitere spezielle Formatierungen erreichen, z.B.

NumberForm@%, 26, DigitBlock ® 5, NumberSeparator ® " "D3.14159 26535 89793 23846 26434

PaddedForm erzeugt eine Formattierung mit genauer Angabe von Stellen

PaddedForm@N@ΠD, 86, 2<D3.14

PaddedForm@81, 200, 30<, 4D8 1, 200, 30<

mit Grid[...,...] kann man vielfältige Gitterstrukturen erzeugen, auch einzelne Zeilen

Grid@8%<D1 200 30

PaddedForm[ ...] muss immer außen stehen

PaddedForm@Grid@881, 200, 30<<D, 10D1 200 30

Rationalize erzeugt eine rationale Approximation, z.B. auf 2 Stellen genau

Rationalize@Π, 0.01D22

7

Auch Funktionen mit mehr als einem Argument können mit Hilfe der "pure function" (reine Funktion) nachgestellt werden

Pi N@ð, 50D &

3.1415926535897932384626433832795028841971693993751

Ähnlich wie beim Nachstellen einer Funktion gibt es auch die Möglichkeit des Voranstellen mit @, z.B.

2.71828

Die InlineForm ist eine verkürzte Schreibweise für 2-dim Funktionen

ã~N~50

2.7182818284590452353602874713526624977572470937000

auch wenn intern mit der vollen Stellenzahl gerechnet wird, werden explizit eingegebene reelle Zahlen nur mit 6-7 Ziffern angezeigt

Mathematica_1.nb 9

Page 10: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

auch wenn intern mit der vollen Stellenzahl gerechnet wird, werden explizit eingegebene reelle Zahlen nur mit 6-7 Ziffern angezeigt

mproton = 938.272029 MeV

938.272 MeV

% N@ð, 50D &

938.272 MeV

es werden keine weiteren Stellen angezeigt, obwohl sie vorhanden sind:

mproton - 938.272 MeV

0.000029 MeV

in den meisten Fällen ist dies kein Problem, aber wenn es gewünscht wird, kann man durch eine spezielle Syntax die Anzahl der

angezeigten Stellen definieren:

mproton1 = 938.272029`9 MeV

938.272029 MeV

mproton1 - mproton

0. MeV

Rechnen mit Komplexen Zahlen

Die imaginäre Einheit ist als I vorbesetzt (I ist wie E oder Pi ein geschütztes Symbol), sie kann aber auch aus der Palette oder mit Esc ii

Esc erzeugt werden: ä

z1 = 3 + 4 I

3 + 4 ä

Die üblichen komplexen Funktionen, wie Realteil, Imaginärteil, Absolutbetrag, Argument, Komplexe Konjugation sind folgendermaßen

definiert:

In[49]:=

8Re@z1D, Im@z1D, Abs@z1D, Arg@z1D, Conjugate@z1D<In[49]:=

:3, 4, 5, ArcTanB43

F, 3 - 4 ä>

ein weiteres Beispiel:

z2 = ã1.0 ä

0.540302 + 0.841471 ä

8Re@z2D, Im@z2D, Abs@z2D, Arg@z2D, Conjugate@z2D<80.540302, 0.841471, 1., 1., 0.540302 - 0.841471 ä<

mit /° wird ein Winkel im Gradmaß dargestellt

10 Mathematica_1.nb

Page 11: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

9Re@z2D, Im@z2D, Abs@z2D, Arg@z2D °, Conjugate@z2D=80.540302, 0.841471, 1., 57.2958, 0.540302 - 0.841471 ä<

Rechnen mit mathematischen Funktionen

Mathematica kennt sehr viele mathematische Funktionen, praktisch alle, die in der Physik vorkommen, z.B.

[email protected], Cos@0D, Tan@Pi2D, Cot@20 DegreeD,[email protected], ArcCos@-1D, [email protected] °, ArcTan@200D,[email protected], Exp@2D, Log@10D, Log@10, 2D, [email protected]=

:0.00159265, 1, ComplexInfinity, Cot@20 °D, 0.523599,

Π, 180., ArcTan@200D, 0.00999967, ã2, Log@10D, Log@2DLog@10D , 1.1752>

BesselJ@5, 34.6D0.0511826

[email protected] + 2 ID1.59421 + 0.418224 ä

Zeta@12 + 14.3 ID-0.0119878 + 0.132231 ä

Mathematica Symbole und Funktionen beginnen immer mit einem Großbuchstaben.

Es ist ein vernünftiger Programmierstil, die eigenen Definitionen zur besseren Unterscheidung mit kleinen Buchstaben zu starten.

Namen können beliebig viele Buchstaben und Ziffern enthalten und beginnen immer mit einem Buchstaben, Sonderzeichen sind als

Teil des Namens nicht erlaubt, auch sollte Underscore und Subscript nicht verwendet werden, da diese eine eigene Bedeutung in

Mathematica haben.

Die Speziellen Funktionen in Mathematica tragen meistens ihren vollen Namen, z.B.

SphericalHarmonicY@2, -1, Θ, ΦD1

2ã-ä Φ

15

2 ΠCos@ΘD Sin@ΘD

% TraditionalForm

1

2

15

2 Πã-ä Φ sinHΘL cosHΘL

Y2-1HΘ, ΦL

1

2ã-ä Φ

15

2 ΠCos@ΘD Sin@ΘD

Für den genauen Namen und die richtige Syntax sollte man von der sehr guten Online-Hilfe Gebrauch machen. Entweder über das

Help Menü oder einfach den Namen mit der Maus anklicken und auf F1 drücken.

Mathematica_1.nb 11

Page 12: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Für den genauen Namen und die richtige Syntax sollte man von der sehr guten Online-Hilfe Gebrauch machen. Entweder über das

Help Menü oder einfach den Namen mit der Maus anklicken und auf F1 drücken.

Mit Hilfe von Ctrl-K (Complete Selection) kann man sich zum einen Schreibarbeit ersparen, aber auch Funktionsnamen erraten, z.B.

durch Eingeben von "Spher" und anschließend Ctrl-K findet man schnell die richtige Funktion.

Mit dem Funktions Browser finder man unter "Mathematical Functions" eine komplette Liste von eingebauten Funktionen. Mit weiteren

Paketen ist diese Liste beliebig erweiterbar.

Rechnen mit Symbolen

Eingabe-Syntax

ã Namen

ai ist ein einfacher Name

ai FullForm

ai

a_i ist ein Muster (Pattern)

a_i FullForm

Pattern@a, Blank@iDD

ai ist eine indizierte Variable, z.B. für Vektoren oder Matrizen

ai FullForm

Subscript@a, iD

a2 ist wieder ein einfacher Name

a2 FullForm

a2

2a ist ein Produkt und ist identisch mit 2*a oder 2 a

2 a FullForm

Times@2, aD

H*Dies ist ein Kommentar in einer Input-Zelle*Lã Eingabeformen

a* b

a b

a b H*identisch zu a*b*La b

12 Mathematica_1.nb

Page 13: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

ab H*neue Variable ab*Lab

2 a b

2 a b

a ba

b

die Ausgabereihenfolge ist immer alphabetisch

c + b - a

-a + b + c

a^2

a2

a b^-2 c d e f H* Beachte die Rangfolge! *La c d f

b2 e

Fakultät und Doppelfakultät:

5!

120

5!!

15

Skalarprodukt und Matrixprodukt

vectr = 8rx, ry, rz<8rx, ry, rz<

vectp = 8px, py, pz<8px, py, pz<

vectr.vectp

px rx + py ry + pz rz

Mathematica_1.nb 13

Page 14: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Cross@vectr, vectpD8pz ry - py rz, -pz rx + px rz, py rx - px ry<

Logische Operatoren: == != > >= < <= sowie: && für logisches UND | | für logisches ODER

a x + 2 b == 0

2 b + a x 0

Solve@%, xD::x ® -

2 b

a>>

Funktionsaufrufe

f@xDf@xD

Funktionsdefinition

f@x_D := x2 + 9

Funktionsaufruf und Ableitungen

f@yD9 + y2

f²@yD2

f¢@Sin@phiDD2 Sin@phiD

ã Zuweisungen (Definitionen) erstellen und löschen

x = N@ΠD3.14159

x = 1 + a + b

1 + a + b

Sobald wir mit x rechnen wird automatisch ein zuvor definierter Wert eingesetzt.

x2

H1 + a + bL2

aber auch bei einer direkten Funktionszuweisung im folgenden Beispiel, wo es im Allgemeinen unerwünscht ist

14 Mathematica_1.nb

Page 15: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

f@x_D = x

1 + a + b

Damit f(x) tatsächlich als Funktion von x verwendet werden kann, muss vorher der Wert von x gelöscht werden.

?f

Info3466146953-3574994

Global`f

Info3466146953-3574994

f@x_D = 1 + a + b

x =.

Clear@xDClear@"Global`*"D

einmal verwendete Größen, z.B. f, bleiben im Kontext "Global" erhalten, auch wenn deren Wert gelöscht ist.

?f

Info3466146954-9668522

Global`f

Damit f nicht nur gelöscht, sondern ganz aus dem Kontext entfernt wird, verwendet man

Remove@fDRemove@"Global`*"D

Mitunter kann es erforderlich sein, den Kernel ganz neu zu starten, um alle vorherigen Definitionen und Zuweisungen wieder zu

neutralisieren. Dazu kann man entweder den Kernel im Menü Options/Kernel abschalten oder mit dem Kommando Quit den Kernel

beenden.

Quit

Eine korrekte Funktionsdefinition wird mit verzögerter Ausführung geschrieben

f@x_D := x

Polynome und Brüche

ã Ausmultiplikation, Faktorisierung

a x3 + b x + 3 c

3 c + b x + a x3

myPoly = %^2

I3 c + b x + a x3M2

zum Ausmultiplizieren

Mathematica_1.nb 15

Page 16: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Expand@myPolyD9 c2 + 6 b c x + b2 x2 + 6 a c x3 + 2 a b x4 + a2 x6

falls doch wieder faktorisiert werden soll

Factor@%DI3 c + b x + a x3M2

Man kann das Polynom auch nach Potenzen in a sortieren

Collect@myPoly, aD9 c2 + 6 b c x + b2 x2 + a2 x6 + a I6 c x3 + 2 b x4M

Collect@myPoly, a, FactorDa2 x6 + 2 a x3 H3 c + b xL + H3 c + b xL2

Collect@myPoly, xD9 c2 + 6 b c x + b2 x2 + 6 a c x3 + 2 a b x4 + a2 x6

Factor faktorisiert nicht automatisch mit komplexen Zahlen

FactorA1 - x2 + x4E1 - x2 + x4

es gibt jedoch eine Option (siehe Help) die dies ermöglicht.

FactorA1 - x2 + x4, GaussianIntegers ® TrueEI-1 - ä x + x2M I-1 + ä x + x2M

Polynome mit trigonometrischen Funktionen sind oft unübersichtlich

trigPoly = ExpandAI1 + Sin@xD2 + Sin@xD + Cos@xD2M2E1 + 2 Cos@xD2 + Cos@xD4 + 2 Sin@xD + 2 Cos@xD2 Sin@xD + 3 Sin@xD2 + 2 Cos@xD2 Sin@xD2 + 2 Sin@xD3 + Sin@xD4

Sie lassen sich mit Simplify vereinfachen

Simplify@trigPolyDH2 + Sin@xDL2

mit TrigReduce werden Produkte von Winkelfunktionen in Funktionen von mehrfachen Winkeln umgerechnet.

TrigReduce@trigPolyD1

2H9 - Cos@2 xD + 8 Sin@xDL

mit TrigExpand geht es wieder zurück

16 Mathematica_1.nb

Page 17: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

% TrigExpand

9

2-Cos@xD2

2+ 4 Sin@xD +

Sin@xD2

2

im nächsten Beispiel arbeitet Factor besser als Expand

poly1 = H1 + xL7

H1 + xL7

Expand@poly1D1 + 7 x + 21 x2 + 35 x3 + 35 x4 + 21 x5 + 7 x6 + x7

% Factor

H1 + xL7

und hier ist das Ergebnis mit Expand kompakter als mit Factor

poly2 = 1 - x7

1 - x7

Factor@poly2D-H-1 + xL I1 + x + x2 + x3 + x4 + x5 + x6M

% Expand

1 - x7

Die Funktion Simplify arbeitet zwar langsamer, tut dafür auch wesentlich mehr und findet in beiden Fällen das beste Ergebnis.

Es ist jedoch eine gute Übung, die Umwandlung und Vereinfachung der Ausdrücke mit expliziten Funktionen zu probieren.

poly1 Expand

1 + 7 x + 21 x2 + 35 x3 + 35 x4 + 21 x5 + 7 x6 + x7

% Simplify

H1 + xL7

poly2 Factor

-H-1 + xL I1 + x + x2 + x3 + x4 + x5 + x6M

% Simplify

1 - x7

noch mächtiger aber auch noch langsamer ist FullSimplify

Mathematica_1.nb 17

Page 18: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

x! Hx + 1L Simplify

H1 + xL x!

x! Hx + 1L FullSimplify

Gamma@2 + xD

FullSimplify erlaubt auch zusätzliche Annahmen, wie z.B. a > 0

FullSimplifyB ab

+b

c+c

a³ 3, a > 0 && b > 0 && c > 0F

True

ã Gebrochen Rationale Funktionen

quot1 =poly2

1 - x

1 - x7

1 - x

Cancel kürzt Brüche

Cancel@quot1D1 + x + x2 + x3 + x4 + x5 + x6

auch Simplify beinhaltet diese Funktion

Simplify@%D1 + x + x2 + x3 + x4 + x5 + x6

quot2 =Ha + bL2

Ha - bL3+

1

Ha - bL2

1

Ha - bL2+

Ha + bL2

Ha - bL3

Nenner und Zähler können getrennt verändert werden oder auch gemeinsam

ExpandDenominator@quot2D1

a2 - 2 a b + b2+

Ha + bL2

a3 - 3 a2 b + 3 a b2 - b3

ExpandNumerator@quot2D1

Ha - bL2+a2 + 2 a b + b2

Ha - bL3

18 Mathematica_1.nb

Page 19: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

ExpandAll@quot2D1

a2 - 2 a b + b2+

a2

a3 - 3 a2 b + 3 a b2 - b3+

2 a b

a3 - 3 a2 b + 3 a b2 - b3+

b2

a3 - 3 a2 b + 3 a b2 - b3

Brüche können auf einen Hauptnenner gebracht werden

Together@quot2Da + a2 - b + 2 a b + b2

Ha - bL3

oder wieder auseinandergenommen werden

Apart@quot2D-

4 a2

H-a + bL3+

1 - 4 a

H-a + bL2-

1

-a + b

im nächsten Beispiel wird a als Variable betrachtet und erscheint nur im Nenner (Partialbruchzerlegung)

Apart@quot2, aD1

a - b+

4 b2

Ha - bL3+

1 + 4 b

Ha - bL2

Die kürzeste Darstellung liefert wieder Simplify

Simplify@quot2Da - b + Ha + bL2

Ha - bL3

Darüber hinaus gibt es noch eine Reihe weiterer Funktionen zur Manipulation von Polynomen und zur Vereinfachung von Ausdrücken.

z.B. FactorTerms, Factor[N[...]], Coefficient, Exponent, Part, ComplexExpand, PowerExpand, FactorSquareFree, Decompose, etc

(Siehe dazu die Online Help oder das Mathematica Buch.)

Werte einsetzen, Ersetzungsregeln

quot2 . a ® 3

1

H3 - bL2+

H3 + bL2

H3 - bL3

quot2 . 8a ® 3, b ® 5<-31

4

numRule = 8a ® 3, b ® 5<8a ® 3, b ® 5<

Mathematica_1.nb 19

Page 20: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

quot2 . numRule-31

4

Rechnen mit komplexen Zahlen und Symbolen

Vorsicht! Der Name "I" ist geschützt und bedeutet die imaginäre Einheit ä , die man auch aus der Palette nehmen kann

Ξ = 5 + 3 I

5 + 3 ä

% Re

%% Im

%%% Abs

%%%% Conjugate

5

3

34

5 - 3 ä

z = u + I v

u + ä v

8Re@%D, Im@%D, Abs@%D, Conjugate@%D<8-Im@vD + Re@uD, Im@uD + Re@vD, Abs@u + ä vD, Conjugate@uD - ä Conjugate@vD<

Rechnen mit ComplexExpand

Besonders in physikalischen Anwendungen ist es oft klar, dass Parameter, z.B. Frequenzen, innerhalb eines komplexen Ausdrucks

reell sind. Dies kann man in Mathematica mit dem Kommando ComplexExpand erzwingen.

% ComplexExpand

:u, v, u2 + v2 , u - ä v>

Man kann auch explizite Definitionen für einzelne Variable setzen, wie Re[x]=0, Im[x]=0, Positive[x]=True, Negative[x]=True, etc

b : Im@bD = 0

0

a : Im@aD = 0;

20 Mathematica_1.nb

Page 21: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

c = a + I b

a + ä b

8c Re, c Im<8Re@aD, Re@bD<

a1 : Re@a1D = 0

0

Eine andere häufige Anwendung in der Physik ist die Umwandlung von komplexen Exponentialausdrücken in trigonometrische

Ausdrücke und umgekehrt.

Exp@I Ω tDãä t Ω

% ExpToTrig

Cos@t ΩD + ä Sin@t ΩD

Cos@Ω tD TrigToExp

1

2ã-ä t Ω +

1

2ãä t Ω

Rechnen mit PowerExpand und FunctionExpand

PowerExpand wandelt Ausdrücke der Form (x y) p in xp yp um.

Dies liefert aber im Allgemeinen nur dann korrekte Ergebniss, wenn x und y positiv und reell sind und p ein Integer ist.

Viele physikalische Anwendungen sind aber von solcher Art, Potenzen sind fast immer ganzzahlig und viele Konstanten, wie Masse,

Geschwindigkeit, Naturkonstanten sind positive reelle Zahlen.

a2

a2

% PowerExpand

a

a a3

a

a3

Mathematica_1.nb 21

Page 22: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

% PowerExpand

1

a

FunctionExpand arbeitet ähnlich wie PowerExpand bei Ausdrücken mit Potenzen

FunctionExpandAI2 x - x2MaEH2 - xLa xa

Gut geeignet ist FunctionExpand auch bei der Vereinfachung trigonometrischer Funktionen mit doppeltem oder halbem Argument

Sin@2 ArcTan@xDD FunctionExpand

2 x

1 + x2

FunctionExpandBSinB ArcCos@xD2

FF1 - x

2

Einige Funktionen können durch Gammafunktionen ausgedrückt werden

FunctionExpand@Binomial@n, mDDGamma@1 + nD

Gamma@1 + mD Gamma@1 - m + nD

FunctionExpand@n! Hn + 1LDGamma@2 + nD

Rechnen mit zusätzlichen Annahmen: Refine

Refine erlaubt Annahmen über die Parameter oder Variablen eines Ausdrucks anzugeben, z.B. dass die Masse eines Teilchens reell

und positiv ist

RefineB m2 , m > 0Fm

oder einfach nur reell

RefineB a2 , a Î RealsFAbs@aD

wie lautet der Logarithmus auf der negativen reellen Achse?

22 Mathematica_1.nb

Page 23: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Refine@Log@xD, x < 0Dä Π + Log@-xD

Einschränkung auf ganzzahlige Werte

ã2 ä n Π

ã2 ä n Π

Refine@%, n Î IntegersD1

Listen

Erzeugung

l1 = 82, 3, 4<82, 3, 4<

Arithmetische Folgen erzeugt man mit Range

Range@5DRange@2, [email protected], 1.1, 0.2D81, 2, 3, 4, 5<

82, 3, 4<

80.1, 0.3, 0.5, 0.7, 0.9, 1.1<

Mit Table erzeugt man eine Liste von Ausdrücken

Table@x^n, 8n, 5<D9x, x2, x3, x4, x5=

Listen von Listen

Table@x^n y^m, 8n, 3<, 8m, 2<D99x y, x y2=, 9x2 y, x2 y2=, 9x3 y, x3 y2==

Table@8x, Sin@xD<, 8x, 0, 2 Pi, Pi4<D:80, 0<, : Π

4,

1

2>, : Π

2, 1>, :3 Π

4,

1

2>, 8Π, 0<, : 5 Π

4, -

1

2>, : 3 Π

2, -1>, : 7 Π

4, -

1

2>, 82 Π, 0<>

Eine Liste von Zufallszahlen

Mathematica_1.nb 23

Page 24: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

l2 = Table@RandomReal@D, 820<D80.586545, 0.359149, 0.428332, 0.0985141, 0.382958, 0.0270568,

0.431335, 0.205718, 0.380053, 0.443681, 0.91955, 0.374619, 0.199409,

0.820211, 0.480597, 0.813644, 0.673456, 0.107931, 0.0591139, 0.669197<Eine Vielzahl von Funktionen hat die Eigenschaft "listable", was bedeutet, dass man die Funktion auch für eine Liste von Zahlen oder

Variablen aufrufen kann. Das Ergebnis ist dann wieder eine Liste:

Sin@80, 1, 1.0, 3.14, Π<D80, Sin@1D, 0.841471, 0.00159265, 0<

Man beachte, dass Sin[1] für Mathematica eine exakte Zahl darstellt, während Sin[1.0] eine numerische Zahl in Maschinengenauigkeit

ist.

Mit exakten Zahlen kann z.B. exakt weitergerechnet werden:

Sin@2D Cos@1DSec@1D Sin@2D

% Simplify

2 Sin@1D

Ausgabeformate

nPi = Table@N@i Π, j + 2 iD, 8i, 1, 3<, 8j, 2, 5<D883.142, 3.1416, 3.14159, 3.141593<, 86.28319, 6.283185, 6.2831853, 6.28318531<,

89.4247780, 9.42477796, 9.424777961, 9.4247779608<<als Tabelle

[email protected] 3.1416 3.14159 3.1415936.28319 6.283185 6.2831853 6.283185319.4247780 9.42477796 9.424777961 9.4247779608

mit PaddedForm werden alle Elemente der Tabelle mit gleicher Stellenzahl vor und nach dem Dezimalpunkt dargestellt

PaddedForm@ TableForm@nPiD, 810, 5<D3.14200 3.14160 3.14159 3.141596.28319 6.28319 6.28319 6.283199.42478 9.42478 9.42478 9.42478

Tabelle als Matrix mit Klammern und zentrierten Spalten

[email protected] 3.1416 3.14159 3.1415936.28319 6.283185 6.2831853 6.283185319.4247780 9.42477796 9.424777961 9.4247779608

mit Zeilen- und Spaltenbezeichnungen und zentriert

24 Mathematica_1.nb

Page 25: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

TableForm@nPi, TableHeadings ® 88" Π:", "2Π:", "3Π:"<, None<,TableAlignments ® 8Center, Center, Center<D

Π: 3.142 3.1416 3.14159 3.1415932Π: 6.28319 6.283185 6.2831853 6.283185313Π: 9.4247780 9.42477796 9.424777961 9.4247779608

Operationen auf Listen

Die meisten Funktionen in Mathematica sind Listable

Attributes@SinD8Listable, NumericFunction, Protected<

Sin@80, 1., Π 2, x<D80, 0.841471, 1, Sin@xD<

Einzelne Elemente können mit Part aus einer Liste geholt werden

Part@%, 4DSin@xD

oder einfach mit

%%@@2DD0.841471

Listen können mehrfach geschachtelt sein, z.B. die Lösungen von Gleichungen:

lsg = Solve@x^2 - 1 0, xD88x ® -1<, 8x ® 1<<

lsg@@1DD8x ® -1<

lsg@@1, 1DDx ® -1

lsg@@2, 1, 2DD1

am einfachsten übergibt man eine solche Lösung durch eine Regelzuweisung and eine neue Variable, z.B.

x1 = x . lsg@@2DD1

Die Struktur einer geschachtelten Liste erkennt man am besten mit FullForm oder TreeForm.

Mathematica_1.nb 25

Page 26: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

FullForm@lsgDList@List@Rule@x, -1DD, List@Rule@x, 1DDD

TreeForm@lsgD

List

List

Rule

x -1

List

Rule

x 1

weitere nützliche Operationen mit Listen sind: First, Last, Length, Take, Join, Union, Sort, Order, ... (siehe online help)

Funktionen

Definition

Funktionen werden in Mathematica ebenso wie in der Mathematik definiert. Sie können ein oder mehrere Argumente haben, und die

Werte werden mit einer Funktionsgleichung berechnet.

Die Variablen werden mit einem Unterstrich _ gekennzeichnet und durch Kommas getrennt in eckige Klammern eingeschlossen! Die

Zuweisung erfolgt mit :=

f@x_D := x3 - x

Aufruf der Funktion für Zahlen oder Symbole

f@1D0

f@aD-a + a3

Beispiele von Funktionen mit 2 Argumenten:

f@x_, y_D :=ã-Ix2+y2M

x y

26 Mathematica_1.nb

Page 27: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

f@a, aDã-2 a2

a2

f@aD-a + a3

?f

Info3466146957-5541415

Global`f

Info3466146957-5541415

f@x_D := x3 - x

f@x_, y_D :=ã

-Jx2+y2Nx y

eine Funktion f kann merfach mit unterschiedlicher Anzahl von Variablen definiert werden.

Auch das nächste Beispiel ist eine Funktion zweier Variablen

g@a_, b_D := NBTableBSin@xDx

, :x, a, b,b - a

10>FF

g@1, 11D80.841471, 0.454649, 0.04704, -0.189201, -0.191785,

-0.0465692, 0.0938552, 0.12367, 0.0457909, -0.0544021, -0.0909082<Bei der Definition von Funktionen darf der Unterstrich bei den Variablen nicht vergessen werden,

da sonst unerwünschte Effekte auftreten können:

h@xD := x2 + 4

h@3Dh@3D

h@xD4 + x2

h@yDh@yD

Wie man sieht, ist nur für x ein Funktionswert vorhanden, für alle anderen Konstanten oder Variablen ist die Funktion nicht definiert.

Unterschied zwischen direkter (=) und verzögerter (:=) Ausführung

Ganz offensichtlich ist der Unterschied bei zeitabhängigen Größen:

DateList@D82009, 11, 2, 10, 35, 57.8437500<

Mathematica_1.nb 27

Page 28: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Uhrzeit = Take@DateList@D, 84, 6<D810, 35, 57.8593750<

AktuelleUhrzeit := Take@DateList@D, 84, 6<Dim ersten Fall ist die Uhrzeit immer dieselbe:

8Uhrzeit, AktuelleUhrzeit<8810, 35, 57.8593750<, 810, 35, 57.8906250<<

neu in Version 6

DateString@8<DMon 2 Nov 2009 10:35:57

DateString@82009, 11, 2<,8"DayName", " ", "Day", " ", "MonthName", " ", "Year"<D

Monday 02 November 2009

Datum@d_, m_, y_D := DateString@8y, m, d<,8"DayName", " ", "Day", " ", "MonthName", " ", "Year"<D

Datum@1, 11, 2009DSunday 01 November 2009

Datum@29, 8, 1009DTuesday 29 August 1009

Datum@15, 10, 1582DFriday 15 October 1582

Datum@4, 10, 1582DMonday 04 October 1582

ähnlich ist die Situation bei Zufallszahlen:

z1 = [email protected]

z2 := RandomReal@D

28 Mathematica_1.nb

Page 29: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Table@z1, 820<D80.972883, 0.972883, 0.972883, 0.972883, 0.972883, 0.972883,

0.972883, 0.972883, 0.972883, 0.972883, 0.972883, 0.972883, 0.972883,

0.972883, 0.972883, 0.972883, 0.972883, 0.972883, 0.972883, 0.972883<

Table@z2, 820<D80.206076, 0.671451, 0.0436252, 0.500613, 0.863572, 0.200286,

0.499893, 0.907659, 0.0778667, 0.382288, 0.350599, 0.871432, 0.801277,

0.452228, 0.435805, 0.670963, 0.698237, 0.2036, 0.20136, 0.722176<

ã Beispiel für eine direkte Ausführung

Plot@Sinc@xD, 8x, -10, 10<D

-10 -5 5 10

-0.2

0.2

0.4

0.6

0.8

1.0

Find Fourier transform of Sinc :

FourierTransform@Sinc@tD, t, ΩD1

2

Π

2HSign@1 - ΩD + Sign@1 + ΩDL

g@Ω_D := FourierTransform@Sinc@tD, t, ΩDPlot@g@xD, 8x, -5, 5<D Timing

90.984,

-4 -2 2 4

0.2

0.4

0.6

0.8

1.0

1.2

=

Mathematica_1.nb 29

Page 30: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

h@Ω_D = FourierTransform@Sinc@tD, t, ΩD1

2

Π

2HSign@1 - ΩD + Sign@1 + ΩDL

Plot@h@xD, 8x, -5, 5<D Timing

96.93889´10-17,

-4 -2 2 4

0.2

0.4

0.6

0.8

1.0

1.2

=

Unstetige Funktionen

Auch Mathematica-Funktionen müssen nicht unbedingt immer stetig sein. Z.B. kann die Stufenfunktion mit Hilfe von bedingten

Anweisungen geschrieben werden:

step1@x_D := -1 ; x £ 0

step1@x_D := 1 ; 0 < x

oder

step2@x_ ; x £ 0D := -1

step2@x_ ; 0 < xD := 1

Im 2. Beispiel wird die rechte Seite von step2 nur ausgewertet wenn die Bedingung wahr ist.

Damit ist step2 etwas schneller als step1.

step3@x_D := Piecewise@88-1, x < 0<, 81, x ³ 0<<DPlot@step3@xD, 8x, -5, 5<D

-4 -2 2 4

-1.0

-0.5

0.5

1.0

30 Mathematica_1.nb

Page 31: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Funktionen auf Listen

häufig kann man eine Funktion direkt auf eine Liste anwenden

viele Funktionen haben die Eigenschaft "listable"

f@8x, y, z, 1, -1, 0<D9-x + x3, -y + y3, -u + Hu + ä vL3

- ä v, 0, 0, 0=

bzw. in post - fix Darstellung

8x, y, z, 1, -1, 0< f

9-x + x3, -y + y3, -u + Hu + ä vL3- ä v, 0, 0, 0=

allgemein geht es aber immer mit der Map[ ...] Funktion :

Map@f, 8x, y, z, 1, -1, 0<D9-x + x3, -y + y3, -u + Hu + ä vL3

- ä v, 0, 0, 0=

bzw. in Operatordarstellung (siehe Help Map)

f 8x, y, z, 1, -1, 0<9-x + x3, -y + y3, -u + Hu + ä vL3

- ä v, 0, 0, 0=

Reine Funktionen (Pure Functions)

Eine "pure function" ist eine Funktion ohne Argumentangabe und häufig auch ohne Funktionsnamen, wie bei Operatoren

z.B.: Sin ist eine p.f . ohne Argument

#^2& ist eine p.f. ohne Argument und ohne Namen

a) Sin, Log, Exp, ... sind pure functions (p.f.) ohne Argument

8Sin, Log, Exp<8Sin, Log, Exp<

bL 1 &, ð &,ð2

1 - ð, ... sind p.f. ohne Argument und ohne Namen

:1 &, ð &,ð2

1 - ð&>

91 &, ð1 &,ð12

1 - ð1&=

c) die beiden nächsten Beispiele sind p.f. von 2 Variablen ohne Argumente und ohne Namen

:Ið12 + ð22M &,ð12 + a2

Sin@ð2D &>

9ð12 + ð22 &,ð12 + a2

Sin@ð2D &=

Definition einer pure function

Mathematica_1.nb 31

Page 32: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Definition einer pure function

N20 = Function@x, N@x, 20DDFunction@x, N@x, 20DD

N30 = N@ð, 30D &

N@ð1, 30D &

N@ΠDN20@ΠDN30@ΠDN@ð, 50D &@ΠD3.14159

3.1415926535897932385

3.14159265358979323846264338328

3.1415926535897932384626433832795028841971693993751

Funktionsaufruf einer pure function

8Sin@xD, Log@1D, [email protected]< H* Bsp aL *L8Sin@xD, 0, 7.38906<

:1 &@xD, ð &@yD, ð2

1 - ð&@zD> H* Bsp bL *L

91, y,Hu + ä vL2

1 - u - ä v=

:Ið12 + ð22M &@3, 4D, ð12 + a2

Sin@ð2D &@x, bD> H* Bsp cL *L

925, a2 + x2 Csc@bD=

wo treten pure functions in Mathematica häufiger auf?

1) bei Lösungen von DGLs

DSolve@y'@xD x + y@xD, y, xD88y ® Function@8x<, -1 - x + ãx C@1DD<<

32 Mathematica_1.nb

Page 33: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

pf1 = y . %@@1DDFunction@8x<, -1 - x + ãx C@1DD

pf1@tD-1 - t + ãt C@1D

2) bei Optionen, z.B. bei GradientFieldPlot, Aufgabe10, Serie 2.

ScaleFunction ® H1 &L oder Ið2 &M etc

3) bei sogenannten postfix Anwendungenvon Funktionen: (expr) // p.f.

8Π N, Range@3D Sin<83.14159, 8Sin@1D, Sin@2D, Sin@3D<<

N50 = N@ð, 50D &

N@ð1, 50D &

N20@ΠD3.1415926535897932385

N50@ΠD3.1415926535897932384626433832795028841971693993751

Π N50

Π N@ð, 200D &

N@ð, 100D &B 2 F3.1415926535897932384626433832795028841971693993751

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482

534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555

96446229489549303820

1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753

4327641573

"pure function" mit mehreren Variablen

ð12 + ð22 &@a, bDa2 + b2

Anwendungen mit Map und Nest

Map@Ξ, 8a, b, c<D8H5 + 3 äL@aD, H5 + 3 äL@bD, H5 + 3 äL@a + ä bD<

Mathematica_1.nb 33

Page 34: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Map@ð^2 &, 81, 5, 13<D81, 25, 169<

Map@Sin, a + b + cDSin@2 aD + Sin@H1 + äL bD

Nest@1 H1 + ðL &, Ζ, 3D1

1 +1

1+1

1+Ζ

ohne p.f. braucht man dafür 2 Anweisungen und ein Symbol

q@x_D :=1

1 + x

Nest@q, Ζ, 3D1

1 +1

1+1

1+Ζ

Exp@RandomReal@80, 10<, 10DD TableForm PaddedForm@ð, 810, 3<D &

1.999194.04830.917368.1825.594

55.6644.089

518.9825.7762.724

Exp@RandomReal@80, 10<, 10DD TableForm PaddedForm@ð, 810, 3<D &

57.716183.9174.863

230.4702715.806

4.25612.8223.2913.061

14.514

34 Mathematica_1.nb

Page 35: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Kontexte und Pakete

Alle Mathematica Symbole, sowohl selbstdefinierte als auch vom System vorgegebene sind in verschiedenen Kontexten eingeordnet:

Global : wichtigster Kontext, enthält alle selbsteingegebenen Symbole

System : alle eingebauten Mathematica Symbole

Durch Dazuladen von Paketen werden weitere Kontexte geöffnet.

Wenn ein Name eingetippt wird, sucht Mathematica zuerst im aktuellen Kontext

$Context

Global`

und anschliessend der Reihe nach bei den in der Liste $ContextPath aufgeführten:

$ContextPath

8Calendar`, PacletManager`, WebServices`, System`, Global`<

ã Überschattung von Namen

Beim Einlesen eröffnet jedes Paket einen oder mehrere neue Kontexte. Diese werden der globalen Variablen $ContextPath vorne

angefügt.

Dies kann zu Problemen führen, wenn man versehentlich eine Funktion aus einem noch nicht geöffneten Paket aufruft, z.B.

c = SpeedOfLight

SpeedOfLight

Nun merkt man, dass die Funktion aus dem Paket PhysicalConstants zugeladen werden muss.

<< PhysicalConstants`

SpeedOfLight::shdw : Symbol SpeedOfLight appears in multiple contexts 9PhysicalConstants` ,

Global`=; definitions in context PhysicalConstants` may shadow or be shadowed by other definitions.

Mathematica informiert darüber, dass der Name SpeedOfLight in zwei verschiedenen Kontexten vorkommt,

es wird jedoch immer zuerst der Kontext Global ausgewertet

In diesem Fall muss man das Symbol SpeedOfLight aus dem Kontext Global entfernen.

Remove@Global`SpeedOfLightDDanach verwendet Mathematica das Symbol aus dem gewünschten Kontext.

SpeedOfLight

299792458 Meter

Second

Fehlermeldungen und Warnungen

hier ist die Schreibweise, bzw. der Name des Pakets falsch

Mathematica_1.nb 35

Page 36: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Needs@"Calender`"DGet::noopen : Cannot open Calender`.

Needs::nocont : Context Calender` was not created when Needs was evaluated.

$Failed

eine Funktion wird mit mehr oder auch weniger Argumenten aufgerufen, als zwingend erforderlich sind:

Sin@a, xDSin::argx : Sin called with 2 arguments; 1 argument is expected.

Sin@a, xD

E = 1

Set::wrsym : Symbol ã is Protected.

1

Ein bereits verwendetes Symbol kann nicht erneut als Funktionsbezeichner verwendet werden:

f = Sin@2 ArcTan@xDDSin@2 ArcTan@xDD

f@x_D = Sin@2 ArcTan@xDDSet::write : Tag Sin in Sin@2 ArcTan@xDD@x_D is Protected.

Sin@2 ArcTan@xDD

Am besten entfernt man das Symbol aus dem Kontext mit Remove

Remove@fDIm folgenden Beispiel wird eine numerische Funktion mit einem symbolischen Argument aufgerufen:

NIntegrate@Cos@c xD, 8x, 0, 6<DNIntegrate::inumr :

The integrand Cos@Removed@SpeedOfLightD xD has evaluated to non-numerical values for all sampling

points in the region with boundaries 880, 6<<.

NIntegrate@Cos@c xD, 8x, 0, 6<D

Die beiden folgenden Beispiele sind äquivalent. Dabei wird c nur lokal der Wert 1 zugewiesen, global bleibt c ein allgemeines Symbol

With@8c = 1<, NIntegrate@Cos@c xD, 8x, 0, 6<DD-0.279415

NIntegrate@Cos@c xD . c ® 1, 8x, 0, 6<D-0.279415

Mit c=2 gibt man c einen globalen Wert, dieser kann mit c=. wieder entfernt werden

36 Mathematica_1.nb

Page 37: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

c = 2

2

c =.

Beim Versuch eine Gleichung zu schreiben, verwechselt man manchmal das logische Gleichheitszeichen (==) mit dem normalen

Gleichheitszeichen (=)

a x + 2 b = 0

Set::write : Tag Plus in 2 b + a x is Protected.

0

a x + 2 b == 0

2 b + a x 0

hier wird z als Variable benutzt, obwohl es bereits einen Wert besitzt

Solve@z == a, zDGeneral::ivar : u + ä v is not a valid variable.

Solve@u + ä v a, u + ä vD

?z

Info3466146986-9517161

Global`z

Info3466146986-9517161

z = u + ä v

Zusammenfassung Syntax und Notation

Syntax (Zusammenfassung)

In der Eingabesyntax sind bisher eine Reihe ungewohnter Symbole aufgetreten:

( ) mathematische Klammern

[ ] Funktionsklammern

Listenklammern, z.B. auch Vektoren, Matrizen

(* Kommentar in einer Inputzeile *)

% letzte Output-Zeile

%% vorletzte Output-Zeile

%n n-te Output-Zeile

; Output wird unterdrückt

// erlaubt das Nachstellen einer Funktion

@ erlaubt das Voranstellen einer Funktion

~ Infixform für f[x,y] als x~f~y

/. Ersetzungen mit nachfolgender Regel

//. mehrfache Ersetzungen nacheinander

/; bedingte Anweisung (If ..)

/: spezielle Definitionen für einen Ausdruck oder Symbol

-> Regelzuweisung

:= Funktionszuweisung (verzögerte Ausführung)

:-> Regelzuweisung (verzögerte Ausführung)

/@ Map[f,expr], z.B. f /@ 1,2,3 = f[1],f[2],f[3]

@@ Apply[f,expr], z.B. f @@ 1,2,3 = f[1,2,3]

Boolsche Operatoren (Ergebnis ist True oder False)

== mathematisch "gleich"

!= mathematisch "ungleich"

> mathematisch "größer"

< mathematisch "kleiner"

>= mathematisch "größer gleich"

|| mathematisch "oder"

&& mathematisch "und"

Mathematica_1.nb 37

Page 38: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

( ) mathematische Klammern

[ ] Funktionsklammern

Listenklammern, z.B. auch Vektoren, Matrizen

(* Kommentar in einer Inputzeile *)

% letzte Output-Zeile

%% vorletzte Output-Zeile

%n n-te Output-Zeile

; Output wird unterdrückt

// erlaubt das Nachstellen einer Funktion

@ erlaubt das Voranstellen einer Funktion

~ Infixform für f[x,y] als x~f~y

/. Ersetzungen mit nachfolgender Regel

//. mehrfache Ersetzungen nacheinander

/; bedingte Anweisung (If ..)

/: spezielle Definitionen für einen Ausdruck oder Symbol

-> Regelzuweisung

:= Funktionszuweisung (verzögerte Ausführung)

:-> Regelzuweisung (verzögerte Ausführung)

/@ Map[f,expr], z.B. f /@ 1,2,3 = f[1],f[2],f[3]

@@ Apply[f,expr], z.B. f @@ 1,2,3 = f[1,2,3]

Boolsche Operatoren (Ergebnis ist True oder False)

== mathematisch "gleich"

!= mathematisch "ungleich"

> mathematisch "größer"

< mathematisch "kleiner"

>= mathematisch "größer gleich"

|| mathematisch "oder"

&& mathematisch "und"

Mathematische Notation (Zusammenfassung)

Palette : BasicMathInput Hoberer TeilL :

à â ¶

à

â ¶,

â=

ä=

PT

38 Mathematica_1.nb

Page 39: Einführung in Mathematica (1) · PDF fileEinführung in Mathematica (1) Numerisches und Symbolisches Rechnen Michael O. Distler, Computer in der Wissenschaft, SS 2010 (Vorlage von

Palette : BasicMathInput Hunterer TeilL :

Π ã ä ¥ °

´ ¸ ® ¦

¹ £ ³ Î

Ø ß Þ Ü ÝΑ Β Γ ∆ Ε

Ζ Η Θ Κ Λ

Μ Ν Ξ Π Ρ

Σ Τ Φ j Χ

Ψ Ω G D Q

L X F Y W

Für eine vollständige Übersicht über alle Paletten, siehe Documentation Center: Palette

Häufig verwendete Tastatur-Shortcuts

Shift+Enter Berechnung ausführen

Alt+. bricht eine Berechnung ab

Ctrl+L kopiert Inputzeile von oben

Ctrl+Shift+L kopiert Outputzeile von oben

Ctrl+K ergänzt unvollständige Namen bei der Eingabe

Ctrl+^ erzeugt Hochzahlen

Ctrl+_ erzeugt Index

Ctrl+2 erzeugt eine Quadratwurzel

Esc,a,Esc erzeugt griechischen Buchstaben Α, etc.

Ctrl+Y animiert Grafiksequenzen oder spielt Tonsequenzen

Shift+Ctrl+D zerlegt eine Eingabezelle in zwei Zellen (divide)

Shift+Ctrl+M vereinigt 2 Zellen (merge)

Shift+Ctrl+G gruppiert eine Reihe ausgewählter Zellen

Shift+Ctrl+U macht eine Gruppierung rückgängig

Shift+Ctrl+I ändert eine Zelle nach Eingabe Form

Shift+Ctrl+N ändert eine Zelle nach Standard Form

Shift+Ctrl+T ändert eine Zelle nach Traditional Form

Ctrl+Z macht die letzte Änderung rückgängig (Undo)

F1 öffnet den Help Browser

Mathematica_1.nb 39