Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer...

271
Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht als Ganzes, z.B. mit "Evaluate Notebook" ausgeführt werden. Aus Demonstrationsgründen können einzelne Zellen sehr viel Rechenzeit beanspruchen, bzw. sogar in Endlosschleifen geraten. Sollte dies geschehen, kann die Rechnung mit "Abort Evaluation" (Alt .) abgebrochen wer- den. Sinnvoll ist es, die Inputzellen einzeln auszuführen (Shift Enter). Ein vollständig ausgeführtes Notebook kann als wesentlich größere Datei, Mathematica_2014_complete.nb, heruntergeladen werden. Zusätzlich ist ein PDF Ausdruck davon bereitgestellt. Allgemeine Informationen i. 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 unbedingt notwendig! 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

Transcript of Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer...

Page 1: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Einführung in Mathematica (V7)

L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15

ü wichtiger Hinweis:

Dieses Notebook soll nicht als Ganzes, z.B. mit "Evaluate Notebook" ausgeführt werden.

Aus Demonstrationsgründen können einzelne Zellen sehr viel Rechenzeit beanspruchen,

bzw. sogar in Endlosschleifen geraten.

Sollte dies geschehen, kann die Rechnung mit "Abort Evaluation" (Alt .) abgebrochen wer-

den.

Sinnvoll ist es, die Inputzellen einzeln auszuführen (Shift Enter).

Ein vollständig ausgeführtes Notebook kann als wesentlich größere Datei,

Mathematica_2014_complete.nb, heruntergeladen werden.

Zusätzlich ist ein PDF Ausdruck davon bereitgestellt.

Allgemeine Informationen

i. 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 unbedingt notwendig!

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

Page 2: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

BasicMathInput : wichtigste Palette für Eingabesyntax, kann immer offen sein

AlgebraicManipulation : praktisch für Umformungen komplexer Ausdrücke

ã Window

Show Ruler : Maßstab mit Seiten-Markierungen

Show Toolbar : praktische Icon-Leiste

Fullscreen (F12) : ganzer Bildschirm

ü 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

ii. Initialisierung

ü Pfade und Arbeits-Verzeichnisse

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

2 Mathematica_2014_complete.nb

Page 3: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

$Path

., C:\ProgramData\Mathematica\Applications,C:\ProgramData\Mathematica\Autoload, C:\ProgramData\Mathematica\Kernel,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Applications,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Autoload,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\ExtraPackages,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\LegacyPackages,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Packages,C:\Program Files\Wolfram Research\Mathematica\7.0\Documentation\English\System,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Autoload,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Kernel\Packages,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links,C:\Users\tiator, C:\Users\tiator\AppData\Roaming\Mathematica\Applications,C:\Users\tiator\AppData\Roaming\Mathematica\Autoload,C:\Users\tiator\AppData\Roaming\Mathematica\Kernel, U:\Mathematica

anzeigen und ggf. mit

$Path $Path ".", "U:\\Mathematica"., C:\ProgramData\Mathematica\Applications,C:\ProgramData\Mathematica\Autoload, C:\ProgramData\Mathematica\Kernel,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Applications,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Autoload,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\ExtraPackages,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\LegacyPackages,C:\Program Files\Wolfram Research\Mathematica\7.0\AddOns\Packages,C:\Program Files\Wolfram Research\Mathematica\7.0\Documentation\English\System,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Autoload,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Kernel\Packages,C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links,C:\Users\tiator, C:\Users\tiator\AppData\Roaming\Mathematica\Applications,C:\Users\tiator\AppData\Roaming\Mathematica\Autoload,C:\Users\tiator\AppData\Roaming\Mathematica\Kernel, 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"C:DatenMathematica"C:\Daten\Mathematica

Mit der nachfolgenden Eingabe wird das Directory aus dem das Notebook geöffnet wurde zum aktuellen Directory.

Dies ist in den meisten Fällen die beste Variante.

SetDirectoryNotebookDirectoryC:\Daten\CTKurs\Aktueller Kurs 2014

Die Files im Arbeitsdirectory können mit

FileNamesGauss.dat, Mathematica_2014_compact.pdf, Mathematica_2014.nb,

Mathematica_2014_opensubgroups.nb, Organisation, Output.dat, Temperatur.dat, tmp

oder auch gezielt mit

FileNames".dat"Gauss.dat, Output.dat, Temperatur.dat

Mathematica_2014_complete.nb 3

Page 4: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

FilePrint"Temperatur.dat" 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

Pane ist eine andere Möglichkeit, um Dateiinhalte in Kurzform darzustellen

PaneImport"Gauss.dat", "Text", 200, 200, Scrollbars True 0.0000 3.00001.0000 2.00002.0000 3.00003.0000 7.00004.0000 5.00005.0000 6.00006.0000 4.00007.0000 5.00008.0000 16.00009.0000 13.0000

10.0000 15.000011.0000 19.000012.0000 31.0000

PaneImport"Gauss.dat", "Text", Full, 100, Scrollbars True 0.0000 3.00001.0000 2.00002.0000 3.00003.0000 7.00004.0000 5.00005 0000 6 0000

ü Initialisierung mit "Initialization cells"

einzelne Zellen eines Notebooks können mit Hilfe des Cell-Menüs und Cell Properties

zu Initialisierungszellen ausgewählt werden

diese Zellen werden dann bei jedem Start von Mathematica vor allen anderen Befehlen

automatisch ausgeführt

damit können eigene Voreinstellungen z.B. für Grafik oder eigene Funktionen definiert wer-

den

4 Mathematica_2014_complete.nb

Page 5: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Beispiel für Grafik Initialisierung

SetOptionsPlot, ListPlot, ParametricPlot,

Plot3D, Graphics, DensityPlot, RegionPlot,

ContourPlot, ParametricPlot3D,BaseStyle 16, FontFamily "Times", Italic, ImageSize 350;

SetOptionsPlot, PlotStyle Thickness0.005;SetOptionsListPlot, PlotStyle Red, PointSize0.015;

dünne Linien und Punkte :

SetOptionsPlot, ListPlot, Graphics,BaseStyle Medium, FontFamily "Times";

SetOptionsPlot, PlotStyle Thickness0.002;SetOptionsListPlot, PlotStyle Red, PointSize0.005;

andere mögliche Fonts :

BaseStyle 18, FontFamily "Helvetica"BaseStyle Large, FontFamily "Helvetica", Italic, Bold

ã Beispiel für selbstdefinierte globale Funktionen

für selbstdefinierte Funktionen etc. eignet sich die Cell-Option : Cell Properties: Initialization Cell

solche Zellen können auch an beliebigen Stellen der Datei stehen und werden nach dem Laden der

Datei beim ersten Ausführen einer Zelle direkt gestartet

tooltipflist_, nlist_ : InnerTooltip, flist, nlist, List

RootPlotsol_, opts : OptionsPatternListPlot : Module,CellPrintExpressionCellNsol, "Output";ListPlotTooltipRe, Im & Nx . sol, opts,

AspectRatio Automatic, PlotStyle Red, PointSize.02

ComplexNumberPlotlist_,opts : OptionsPatternListPlot : Module,ListPlotTooltipRe, Im & Nlist, opts,

AspectRatio Automatic, PlotStyle Red, PointSize.02 ã Beispiel für Zusatzpakete zu Interpolation und Fit

Needs"Splines`"Needs"ErrorBarPlots`"

ã Beispiel für Arbeitsverzeichnis zum Arbeiten mit externen Datenfiles

spezielles Datenverzeichnis als Arbeitsverzeichnis definieren:

SetDirectory"C:DatenMathematica"C:\Daten\Mathematica

Mathematica_2014_complete.nb 5

Page 6: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

aktuelles Notebook Directory als Arbeitsverzeichnis definieren:

SetDirectoryNotebookDirectoryC:\Daten\CTKurs\Aktueller Kurs 2014

iii. Start von Mathematica

ü Der Mathematica Kernel (MathKernel.exe)

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

Kernel in einem einfachen Textfenster:

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

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

ü Grafische Oberflächen (Mathematica.exe)

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

Rechnersystemen 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.

Bei der ersten Ausführung eines Mathematica - Befehls startet der Kernel automatisch im Hintergrund.

In der Graphischen Oberfläche wird ein Mathematica-Befehl mit: Shift-Enter ausgeführt.

1 1

2

In der Graphischen Oberfläche gibt es eine große Zahl von verschiedenen Zellentypen (> 10)

Nur der Typ: Input erlaubt eine Mathematica Berechnung

Viele Typen: Title, Subtitle, Subsubtitle, Section, Subsection, Subsubsection, Text,

dienen nur zur Strukturierung eines Mathematica-Notebooks

ü 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 am besten mit Needs["PackageName`"] geladen.

Letzteres verhindert ein mehrmaliges Laden eines Packages,

was zu einem unerwünschten "Shadowing" (siehe weiter unten) führen kann.

Extra packages sollten aber nur dann geladen werden, wenn man sie wirklich braucht,

da sie beim Laden teilweise etwas Zeit benötigen und auch Ressourcen verbrauchen.

ã Package : Calendar (just for fun)

Calendar`

6 Mathematica_2014_complete.nb

Page 7: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

(* initialization file for the package Calendar` *)

Get["Calendar`Calendar`"]

?Calendar`*

Calendar`

Calendar DaysPlus Islamic Saturday

CalendarChange EasterSunday Jewish Sunday

DateQ

EasterSundayGreeÖkOrthodox JewishNewYear Thursday

DayOfWeek Friday Julian Tuesday

DaysBetween Gregorian Monday Wednesday

Date2014, 10, 20, 15, 33, 9.7560362

currentyear PartDate, 12014

EasterSundaycurrentyear2014, 4, 20

Tablel1 EasterSundayyear, l2 EasterSundayGreekOrthodoxyear,1 7 DaysBetweenl1, l2, year, 2010, 2020

2010, 4, 4, 2010, 4, 4, 0,2011, 4, 24, 2011, 4, 24, 0, 2012, 4, 8, 2012, 4, 15, 1,2013, 3, 31, 2013, 5, 5, 5, 2014, 4, 20, 2014, 4, 20, 0,2015, 4, 5, 2015, 4, 12, 1, 2016, 3, 27, 2016, 5, 1, 5,2017, 4, 16, 2017, 4, 16, 0, 2018, 4, 1, 2018, 4, 8, 1,2019, 4, 21, 2019, 4, 28, 1, 2020, 4, 12, 2020, 4, 19, 1

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

Mathematica_2014_complete.nb 7

Page 8: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Tablel1 EasterSundayyear, l2 EasterSundayGreekOrthodoxyear,17 DaysBetweenl1, l2, year, 2007, 2017 TableForm

200748

200748

0

2008323

2008427

5

2009412

2009419

1

201044

201044

0

2011424

2011424

0

201248

2012415

1

2013331

201355

5

2014420

2014420

0

201545

2015412

1

2016327

201651

5

2017416

2017416

0

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

RosenMontagjahr_ : DaysPlusEasterSundayjahr, 48

RosenMontagcurrentyear2014, 3, 3

DayOfWeekMonday

und noch etwas schöner:

Print"Der Rosenmontag ", 1," ist am ", 3, ".", 2, "."

Der Rosenmontag 2014 ist am 3.3.

Alle Rosenmontage zwischen 2000 und 3000:

tab TableRosenMontagJahr, Jahr, 2000, 3000;Sortiert nach Monat und Tag :

tabOrderingtabAll, 2, 3;

8 Mathematica_2014_complete.nb

Page 9: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Short2285, 2, 2, 2353, 2, 2, 2437, 2, 2, 2505, 2, 2,993, 2630, 3, 8, 2782, 3, 8, 2877, 3, 8, 2945, 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.

ã Package: PhysicalConstants

Needs"PhysicalConstants`"das Laden dieses Pakets dauert überdurchschnittlich lange

?PhysicalConstants`*

PhysicalConstants`

AccelerationDueToÖGravity ElectronGFactor

MuonMagneticMomÖent

SackurTetrodeConsÖtant

AgeOfUniverse

ElectronMagneticMÖoment MuonMass SolarConstant

AvogadroConstant ElectronMass

NeutronComptonWÖavelength SolarLuminosity

BohrRadius FaradayConstant

NeutronMagneticMÖoment SolarRadius

BoltzmannConstant

FineStructureConstÖant NeutronMass

SolarSchwarzschildÖRadius

ClassicalElectronRÖadius GalacticUnit PlanckConstant SpeedOfLight

CosmicBackgroundÖTemperature

GravitationalConstaÖnt

PlanckConstantRedÖuced SpeedOfSound

DeuteronMagneticÖMoment HubbleConstant PlanckMass StefanConstant

DeuteronMass IcePoint

ProtonComptonWaÖvelength

ThomsonCrossSectÖion

EarthMass

MagneticFluxQuantÖum

ProtonMagneticMoÖment VacuumPermeability

EarthRadius MolarGasConstant ProtonMass VacuumPermittivity

ElectronCharge MolarVolume

QuantizedHallCondÖuctance WeakMixingAngle

ElectronComptonWÖavelength MuonGFactor RydbergConstant

ProtonMass

1.672621027 Kilogram

AgeOfUniverse

4.71017 Second

Mathematica_2014_complete.nb 9

Page 10: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Convert, Year1.490361010 Year

ã Package: ErrorBarPlots

Needs"ErrorBarPlots`"

?ErrorBarPlots`*

ErrorBarPlots`

ErrorBar ErrorBarFunction ErrorBarPlot ErrorListPlot

ã Package: Splines

Needs"Splines`"

?Splines`*

Splines`

Bezier Cubic Spline SplineDots SplineFunction

CompositeBeziÖer RenderSpline SplineDivision SplineFit SplinePoints

ü Help System (F1)

Das Help System von Mathematica heißt: Documentation Center und öffnet sich mit F1

es ist sehr umfangreich und äußerst hilfreich

Es ist grob in folgende Kategorien aufgeteilt:

Core Language

Mathematics and Algorithms

Data Handling & Data Sources

Systems Interfaces & Deployment

Dynamic Interactivity

Visualization and Graphics

Notebooks and Documents

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

ã Funktions-Browser (F1 mit Cursor in Funktionsname)

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 ArcTanx2

x2x

Traditional Form (Shift+Ctrl+T) 0¶ tan-1x2

x2„ x

Auch mit dem Menü: Cell / Convert To können die Formen ineinander umgewandelt werden.

Die Eingabe der mathematischen Notation kann auf verschiedene Weise erfolgen:

10 Mathematica_2014_complete.nb

Page 11: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Verwendung von Paletten

Am umfangreichsten sind die Assistenten: Basic Math Assistent, Classroom Assistent und Writing Assistent

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 ^ 3 Æ x3

x Ctrl 3 Æx

3x Ctrl _ 3 Æ x3

Ctrl 2 x Æ xCtrl Space Æ beendet die Eingabe oder einfach : Pfeil nach rechts

x Ctrl ^ 2 Ctrl Space + 1 Ctrl Ctrl 2 x Ctrl Space + a Ctrl SpaceÆ x2 +

1

x + a

ã Eingabe mit Escape

Esc a Esc

Esc pi Esc

Esc sum Esc Esc int Esc Esc dd Esc

ã Eingabe mit LATEX-Notation

Esc \infty Esc

Esc \int Esc

ã Eingabe mit Complete Selection (Ctrl-K) und Template (Ctrl-Shift-K)

SphericalHarmonicY l , m , q , f

NDSolve eqns , y , x , xmin , xmax

Plot f , x , xmin , xmax

iv. Kontexte und Pakete

v. Fehlermeldungen und Warnungen

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

Mathematica_2014_complete.nb 11

Page 12: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Needs"Calender`"Get::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:

Sina, xSin::argx : Sin called with 2 arguments; 1 argument is expected.à

Sina, x

E 1

Set::wrsym : Symbol ‰ is Protected.à

1

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

f Sin2 ArcTanxSin2 ArcTanx

fx_ Sin2 ArcTanxSet::write : Tag Sin in Sin2 ArcTanxx_ is Protected.àSin2 ArcTanx

Am besten entfernt man das Symbol aus dem Kontext mit Remove

RemovefIm folgenden Beispiel wird eine numerische Funktion mit einem symbolischen Argument aufgerufen:

NIntegrateCosc x, x, 0, 6NIntegrate::inumr :

The integrand CosRemovedSpeedOfLight x has evaluated to non-numerical values for all samplingpoints in the region with boundaries 0, 6.à

NIntegrateCosc x, x, 0, 6

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

Symbol

Withc 1, NIntegrateCosc x, x, 0, 60.279415

NIntegrateCosc x . c 1, x, 0, 60.279415

12 Mathematica_2014_complete.nb

Page 13: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

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

z 0

0

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

Solvez a, zGeneral::ivar : 0 is not a valid variable.à

Solve0 a, 0

?z

Global`z

z 0

Vorsicht beim "Copy and Paste" aus Texten, ggf. auch aus dem Help System:

Der folgende Ausdruck ergibt einen Fehler bei der Eingabe: pol2 = z2 + 1) 5 x2 - 3x + y )

pol2 z2 1 5 x2 3 x y in einem solchen Fall hilft es nur alle Klammern neu zu setzen :

pol2 z2 1 5 x2 3 x y3 x 5 x2 y

Beim nächsten Beispiel sieht alles in Ordnung aus, es ist jedoch ein Fehler in der internen Struktur

diese Fehler (wahrscheinlich Systemfehler) sind sehr schwer zu finden, z.B. durch systematische

Eingrenzung und Neuschreibung

Daten a, b, c;f2 Y0Daten12

Mathematica_2014_complete.nb 13

Page 14: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Daten a, b, c;f2 Y0Daten1^2a2 Y02

mit Ctrl + Shift + E kann man auch die volle Struktur anzeigen,

dann wird es für "Experten" auch offensichtlich :

f2 Y0Daten12die SuperscriptBox ist an der falschen Stelle und unvollständig

vi. 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 (postfix)

@ erlaubt das Voranstellen einer Funktion (prefix)

~ Infixform für f[x,y] als x~f~y (infix)

/. 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"

14 Mathematica_2014_complete.nb

Page 15: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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+Shift+K Ergänzung und Template

Ctrl+^ erzeugt Hochzahlen

Ctrl+_ erzeugt Index

Ctrl+/ erzeugt einen Bruch

Ctrl+2 erzeugt eine Quadratwurzel

Esc,a,Esc erzeugt griechischen Buchstaben , etc.

Esc,p,Esc erzeugt griechischen Buchstaben

Esc,int,Esc erzeugt ein Integralzeichen

Esc,sum,Esc erzeugt ein Summenzeichen

Esc,inf,Esc erzeugt ein Unendlichzeichen

Esc,ii,Esc erzeugt imaginäre Einheit

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

ü Mathematische Notation (Zusammenfassung)

Palette : BasicMathInput oberer Teil :

ÇÉ ÇÉ

Ç ÇÉ

Ç‚É ∂É Ç

É

ÉÇ‚É ∂É,ÉÇ

É=É

É

Ç É=É

É

Ç

É ÉÉ É

ÇÉ

Mathematica_2014_complete.nb 15

Page 16: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Palette : BasicMathInput unterer Teil :

p „ ‰ • °

¥ ∏ â Æ ¶

ä π £ ≥ Œ

ÿ a b g d e

z h q k l

m n x p r

s t f j c

y w G D Q

L X F Y W

ÇÉ ÇÉ ÇÉÉ ÉÇ ÉÇ

ÇÉ Ç

ÉÇÉ

ÉÇ Ç

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

1. Numerisches und Symbolisches Rechnen

1.1. Rechnen mit Zahlen

ü Rechnen mit Ganzen Zahlen

eine einfache Addition

45 77

122

etwas schwieriger

3^100

515 377 520 732 011 331 036 461 129 765 621 272702 107 522 001

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

200

788 657 867 364 790 503 552 363 213 932 185 062295 135 977 687 173 263 294 742 533 244 359 449963 403 342 920 304 284 011 984 623 904 177 212 138 919 638 830 257642 790 242 637 105 061 926 624 952 829 931 113 462 857 270 763 317 237 396 988 943 922 445 621 451 664 240254 033 291 864 131 227 428 294 853 277 524 242 407 573 903 240 321 257 405 579 568 660 226 031 904 170 324062 351 700 858 796 178 922 222 789 623 703 897 374 720 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000

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

16 Mathematica_2014_complete.nb

Page 17: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

2000;

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

2000 Short331 627 509 245 063 324 117 539 338 057 632 403828 111 7205646 000 000 000 000 000 000 000 000 000 000 000000 000 000 000

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

Short2000, 5331 627 509 245 063 324 117 539 338 057 632 403828 111 720 810 578 039 457 193 543 706 038 077905 600 822

400 273 230 859 732 592 255 402 352 941 225 834109 258 084 817 415 293 796 131 386 633 526343 688 905 634 058 556 163 940 6055382

000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000000 000 000 000 000 000 000 000 000 000 000000 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. :

10000000; Timing5.709, Null

ü Rechnen mit Reellen Zahlen

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

N3.316275092450633105735

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

N3.316275092450633105735

Hier bedeutet //N dasselbe wir N[...]. Dies ist für alle Funktionen möglich, die nur 1 Argument benötigen.

Für mehrere Argumente gibt es jedoch auch einen Umweg über die "pure functions", siehe weiter unten.

NPi3.14159

So erhält man Pi auf 200 Stellen:

NPi, 2003.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303820

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

Mathematica_2014_complete.nb 17

Page 18: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

NumberForm, 26, DigitBlock 5, NumberSeparator " "3.14159 26535 89793 23846 26434

PaddedForm erzeugt eine Formattierung mit genauer Angabe von Stellen

PaddedFormN, 6, 23.14

PaddedForm1, 200, 30, 4 1, 200, 30

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

Grid1 200 30

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

PaddedFormGrid1, 200, 30, 101 200 30

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

Pi N, 50 &3.1415926535897932384626433832795028841971693993751

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

N

2.71828

Die InlineForm ist eine verkürzte Schreibweise für 2-dim Funktionen, sie wird jedoch selten verwendet.

N50

2.7182818284590452353602874713526624977572470937000

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, 50 &938.272 MeV

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

18 Mathematica_2014_complete.nb

Page 19: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

die nachfolgende Syntax (Eingabe : ==) prüft auf Identität

mproton1 mproton

True

ü 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 folgender-

maßen definiert:

Rez1, Imz1, Absz1, Argz1, Conjugatez1

3, 4, 5, ArcTan 43, 3 4

ein weiteres Beispiel:

z2 60.0 °

0.5 0.866025

Rez2, Imz2, Absz2, Argz2, Conjugatez20.5, 0.866025, 1., 1.0472, 0.5 0.866025

mit /° wird ein Winkel im Gradmaß dargestellt

Rez2, Imz2, Absz2, Argz2 °, Conjugatez20.5, 0.866025, 1., 60., 0.5 0.866025

ü Rechnen mit mathematischen Funktionen

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

Mathematica_2014_complete.nb 19

Page 20: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Sin3.14, Cos0, TanPi 2, Cot20 Degree,ArcSin0.5, ArcCos1, ArcCos1.0 °, ArcTan200,ArcCot100.0, Exp2, Log10, Log10, 2, Sinh1.0

0.00159265, 1, ComplexInfinity, Cot20 °, 0.523599,

, 180., ArcTan200, 0.00999967, 2, Log10, Log2Log10 , 1.1752

BesselJ5, 34.60.0511826

Log4.5 2 I1.59421 0.418224

Zeta12 14.3 I0.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.

SphericalHarmonicY2, 1, ,

1

2

15

2 Cos Sin

TraditionalForm

1

2

15

2 p‰-Â f sinq cosq

Y2-1q, f

1

2

15

2 Cos Sin

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.

20 Mathematica_2014_complete.nb

Page 21: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

1.2. Rechnen mit Symbolen

ü Eingabe-Syntax

ã Namen

ai ist ein einfacher Name:

ai FullFormai

a_i ist ein Muster (Pattern) und kann nicht als Variable verwendet werden:

a_i FullFormPatterna, Blanki

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

ai FullFormSubscripta, i

a2 ist wieder ein einfacher Name:

a2 FullForma2

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

2 a FullFormTimes2, a

Dies ist ein Kommentar in einer InputZelleã Eingabeformen

a b

a b

a b identisch zu aba b

ab neue Variable abab

Mathematica_2014_complete.nb 21

Page 22: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

2 a b

2 a b

a ba

b

a^2

a2

die Ausgabereihenfolge ist immer alphabetisch:

c b a

a b c

im folgenden Fall beachte man die Rangfolge, zur Sicherheit sollte man evtl. runde Klammern verwenden:

a b^2 c d e fa c d f

b2 e

Fakultät und Doppelfakultät:

5

120

5

15

für das Skalarprodukt (Matrixprodukt) kann man den Punkt (.) als Operator verwenden (Funktion: Dota, b)

vectr rx, ry, rzrx, ry, rz

vectp px, py, pzpx, py, pz

vectr.vectp

px rx py ry pz rz

für das Vektorprodukt (Kreuzprodukt) verwendet man eine spezielle Funktion: Crossa, b

Crossvectr, vectppz ry py rz, pz rx px rz, py rx px ry

22 Mathematica_2014_complete.nb

Page 23: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

es gibt auch dafür einen "Kreuzoperator" (ä) shortcut: Esc cross Esc

vectrvectp

pz 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, x

x 2 b

a

Funktionsaufrufe

fxfx

Funktionsdefinition: Auf Muster ( _ ) und Verzögerung ( : ) achten!

fx_ : x2 9Funktionsaufruf und Ableitungen

fy9 y2

fy2

fSinphi2 Sinphi

ã Zuweisungen (Definitionen) erstellen und löschen

x N3.14159

x 1 a b

1 a b

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

Mathematica_2014_complete.nb 23

Page 24: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

x2

1 a b2

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

fx_ 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

Global`f

fx_ 1 a b

x .

Clearx

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

?f

Global`f

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

Removef

Remove"Global`"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

fx_ : x

?f

Global`f

fx_ : x

gx_ : x x x 2 3 5

24 Mathematica_2014_complete.nb

Page 25: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

?g

Global`g

gx_ : x x x 2 3 5

ü Polynome und Brüche

ã Expandexpr, Factorexpr, Simplifyexpr , Collectexpr, x, Coefficientexpr, x, n, Exponentexpr, x

x .

a x3 b x 3 c

3 c b x a x3

myPoly ^2

3 c b x a x32

zum Ausmultiplizieren

ExpandmyPoly9 c2 6 b c x b2 x2 6 a c x3 2 a b x4 a2 x6

falls doch wieder faktorisiert werden soll

Factor3 c b x a x32

Man kann das Polynom auch nach Potenzen in a sortieren

CollectmyPoly, a9 c2 6 b c x b2 x2 a2 x6 a 6 c x3 2 b x4

mit einer zusätzlichen Option, wie Factor, Simplify etc. können die einzelnen Terme weiter umgeformt werden

CollectmyPoly, a, Factora2 x6 2 a x3 3 c b x 3 c b x2

CollectmyPoly, x9 c2 6 b c x b2 x2 6 a c x3 2 a b x4 a2 x6

CollectmyPoly, c9 c2 b2 x2 2 a b x4 a2 x6 c 6 b x 6 a x3

Mathematica_2014_complete.nb 25

Page 26: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

CollectmyPoly, c, Factor9 c2 6 c x b a x2 x2 b a x22

mit Coefficient kann man einzelne Koeffizienten aus einem Polynom entnehmen,

hier der Koeffizient :x ^ 3

CoefficientmyPoly, x, 36 a c

der höchste Exponent in x eines Polynoms

ExponentmyPoly, x6

ã Faktorisierung über komplexe oder algebraische Zahlen

Factor faktorisiert nicht automatisch mit komplexen Zahlen

Factor1 x2 x41 x2 x4

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

Factor1 x2 x4, GaussianIntegers True1 x x2 1 x x2

auch folgende Möglichkeit findet man, wenn man in der Help, wenn man bei "Examples" weitersucht

Factor1 x2 x4, Extension I1 x x2 1 x x2

Faktorisierung über algebraische Zahlen

Factor2 x22 x2

Factor2 x2, Extension 2

2 x 2 x

ã Umwandeln und Vereinfachen von trigonometrische Ausdrücken mit TrigReduceexpr, TrigExpandexprPolynome mit trigonometrischen Funktionen sind oft unübersichtlich

trigPoly Expand1 Sinx2 Sinx Cosx22

1 2 Cosx2 Cosx4 2 Sinx 2 Cosx2 Sinx 3 Sinx2 2 Cosx2 Sinx2 2 Sinx3 Sinx4

26 Mathematica_2014_complete.nb

Page 27: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Sie lassen sich mit Simplify vereinfachen

SimplifytrigPoly2 Sinx2

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

TrigReducetrigPoly1

29 Cos2 x 8 Sinx

mit TrigExpand geht es wieder zurück

TrigExpand9

2Cosx2

2 4 Sinx Sinx2

2

im nächsten Beispiel arbeitet Factor besser als Expand

poly1 1 x7

1 x7

Expandpoly11 7 x 21 x2 35 x3 35 x4 21 x5 7 x6 x7

Factor1 x7

und im Folgenden ist das Ergebnis mit Expand kompakter als mit Factor

poly2 1 x7

1 x7

Factorpoly21 x 1 x x2 x3 x4 x5 x6

Expand1 x7

ã Simplifyexpr und FullSimplifyexprDie 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 Expand1 7 x 21 x2 35 x3 35 x4 21 x5 7 x6 x7

Mathematica_2014_complete.nb 27

Page 28: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Simplify1 x7

poly2 Factor1 x 1 x x2 x3 x4 x5 x6

Simplify1 x7

noch mächtiger aber auch noch langsamer ist FullSimplify

x x 1 Simplify1 x x

x x 1 FullSimplifyGamma2 x

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

FullSimplify abb

cc

a 3, a 0 && b 0 && c 0

True

FullSimplify nutzt auch trigonometrische Relationen

ArcSin12 °

6 °

ArcSin12 ° FullSimplify30

ã Gebrochen Rationale Funktionen - Cancelexpr, Apartexpr, Togetherexpr, ExpandNumerator, ExpandDenominator, ExpandAll

quot1 poly2

1 x

1 x7

1 x

Cancel kürzt Brüche

Cancelquot11 x x2 x3 x4 x5 x6

28 Mathematica_2014_complete.nb

Page 29: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

auch Simplify beinhaltet diese Funktion

Simplify1 x x2 x3 x4 x5 x6

quot2 a b2a b3

1

a b2

1

a b2a b2a b3

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

ExpandDenominatorquot21

a2 2 a b b2

a b2a3 3 a2 b 3 a b2 b3

ExpandNumeratorquot21

a b2a2 2 a b b2

a b3

ExpandAllquot21

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

Togetherquot2a a2 b 2 a b b2

a b3

oder wieder auseinandergenommen werden

Apartquot2

4 a2

a b3

1 4 a

a b2

1

a b

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

Apartquot2, a1

a b

4 b2

a b3

1 4 b

a b2

Die kompakteste Darstellung liefert wieder Simplify

Mathematica_2014_complete.nb 29

Page 30: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Simplifyquot2a b a b2

a b3

Darüber hinaus gibt es noch eine Reihe weiterer Funktionen zur Manipulation von Polynomen und zur Vereinfachung von Aus-

drücken.

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

(Siehe dazu die Online Help.)

ü Werte einsetzen, Ersetzungsregeln

quot2

1

a b2a b2a b3

quot2 . a 3

1

3 b23 b2

3 b3

Apartquot2 . a x, x4 b2

b x3

1 4 b

b x2

1

b x

quot2 . a 3, b 5

31

4

numRule a 3, b 5a 3, b 5

quot2 . numRule

31

4

bei all diesen Operationen bleibt der ursprüngliche Ausdruck unverändert

quot2

1

a b2a b2a b3

ü 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

oder mit Esc ii Esc

30 Mathematica_2014_complete.nb

Page 31: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

I 0

Set::wrsym : Symbol  is Protected.à

0

5 3 I

5 3

Re Im Abs Arg Conjugate5

3

34

ArcTan 35

5 3

im nächsten Beispiel sind für Mathematica die Symbole u, v erstmal beliebig komplex

Clearu, v

z u I v

u v

Re, Im, Abs, ConjugateImv Reu, Imu Rev, Absu v, Conjugateu Conjugatev

ü Rechnen mit ComplexExpand

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

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

ComplexExpand

u, v, u2 v2 , u v

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

Ausdrücke und umgekehrt.

Mathematica_2014_complete.nb 31

Page 32: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ExpI t t

ExpToTrigCost Sint

Cos t TrigToExp1

2 t

1

2 t

ExpI t ReImt CosRet

mit ComplexExpand kann man wieder festlegen, dass w und t reell-wertige Variable sind

ExpI t Re ComplexExpandCost

im nächsten Beispiel wird nur t als reell angenommen, w bleibt dagegen komplex

ComplexExpandExp t Re, t Im Cost Re

ã Orderless

ClearAttributesTimes, Orderless

ExpI t t

aber das ist sehr unpraktisch für alle anderen Manipulationen

3 a b 5 b a

5 b a 3 a b

SetAttributesTimes, Orderless

2 a b

32 Mathematica_2014_complete.nb

Page 33: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Rechnen mit PowerExpand

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

PowerExpanda

a a3

a

a3

PowerExpand1

a

im nächsten Beispiel führt PowerExpand erst nach der Faktorisierung zum gewünschten Erfolg

a2 b2

a b

a2 b2

a b

PowerExpanda2 b2

a b

Factor PowerExpanda b

ü Rechnen mit FunctionExpand

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

FunctionExpand2 x x2a2 xa xa

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

Mathematica_2014_complete.nb 33

Page 34: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Sin2 ArcTanx FunctionExpand2 x

1 x2

FunctionExpandSin ArcCosx2

1 x

2

Einige Funktionen können durch Gammafunktionen ausgedrückt werden

FunctionExpandBinomialn, mGamma1 n

Gamma1 m Gamma1 m n

FunctionExpandn n 1Gamma2 n

ü 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

Refine m2 , m 0m

oder einfach nur reell

Refine a2 , a RealsAbsa

welche Werte hat der Logarithmus auf der negativen reellen Achse?

RefineLogx, x 0 Logx

Einschränkung auf ganzzahlige Werte

2 n

2 n

Refine, n Integers1

34 Mathematica_2014_complete.nb

Page 35: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

2. Funktionen, Listen, Vektoren und Matrizen

2.1. Funktionen

ü Definition einer Funktion

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 berech-

net.

Die Variablen werden mit einem Unterstrich _ (einem Muster) gekennzeichnet und durch

Kommas getrennt in eckige Klammern eingeschlossen!

Die Zuweisung erfolgt mit :=

fx_ : x3 xAufruf der Funktion für Zahlen oder Symbole

f10

faa a3

Beispiele von Funktionen mit 2 Argumenten:

fx_, y_ : x2y2

x y

fa, a2 a

2

a2

faa a3

die Help Kurzform ?

gibt auch Auskunft über selbstdefinierte Symbole

?f

Global`f

fx_ : x3 x

fx_, y_ : x2y2

x y

Mathematica_2014_complete.nb 35

Page 36: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

Auch das nächste Beispiel ist eine Funktion zweier Variablen

ga_, b_ : NTable Sinxx

, x, a, b,b a

10

g1, 110.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:

hx : x2 4

h3h3

hx4 x2

hyhy

Wie man sieht, ist nur für x ein Funktionswert vorhanden, für alle anderen Konstanten oder

Variablen ist die Funktion nicht definiert.

Man beachte auch die Farbcodierung in der Input-Zelle

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

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

DateList2014, 10, 20, 15, 43, 42.9923484

Uhrzeit TakeDateList, 4, 615, 43, 43.0859486

AktuelleUhrzeit : TakeDateList, 4, 6im ersten Fall ist die Uhrzeit immer dieselbe:

Uhrzeit, AktuelleUhrzeit15, 43, 43.0859486, 15, 43, 43.1171486

DateString gibt Uhrzeit und Datum im gebräuchlichen Format:

36 Mathematica_2014_complete.nb

Page 37: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

DateStringMon 20 Oct 2014 15:43:43

Wie sehr häufig, findet man in der Help eine Vielzahl von weiteren Möglichkeiten :

Datumd_, m_, y_ : DateStringy, m, d,"DayName", " ", "Day", " ", "MonthName", " ", "Year"

Datum1, 11, 2011Tuesday 01 November 2011

Mit Dynamic und Refresh im Intervall von 1 Sekunde ergibt sich eine einfache Digitaluhr

DynamicRefreshDateString, UpdateInterval 1Mon 20 Oct 2014 17:51:25

ähnlich ist die Situation bei Zufallszahlen:

z1 RandomReal0.6057

z2 : RandomRealim ersten Fall bekommen wir immer dieselbe Zufallszahl

Tablez1, 200.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057,0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057, 0.6057

im zweiten Fall bekommen wir eine Liste von echten Zufallszahlen

Tablez2, 200.76991, 0.479042, 0.0699937, 0.686574, 0.948656, 0.792864,0.415726, 0.537683, 0.85796, 0.612241, 0.899064, 0.827867, 0.88233,0.837439, 0.157714, 0.941674, 0.35734, 0.937047, 0.453887, 0.0892438

Mathematica_2014_complete.nb 37

Page 38: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Beispiel für eine sinnvolle direkte Ausführung

PlotSincx, x, 10, 10

-10 -5 5 10-0.2

0.2

0.4

0.6

0.8

1.0

Berechnung der Fourier transformierten Funktion:

FourierTransformSinct, t,

1

2

2Sign1 Sign1

wird dies verzögert definiert, dauert die Ausführung recht lange

g_ : FourierTransformSinct, t,

Plotgx, x, 5, 5 Timing

0.421,

-4 -2 2 4

0.2

0.4

0.6

0.8

1.0

1.2

während die direkte Ausführung praktisch instantan abläuft :

h_ FourierTransformSinct, t,

1

2

2Sign1 Sign1

38 Mathematica_2014_complete.nb

Page 39: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plothx, x, 5, 5 Timing

0.,

-4 -2 2 4

0.2

0.4

0.6

0.8

1.0

1.2

im nächsten Beispiel wird bei der Funktionsdefinition gleich die rechte Seite ausgewertet

h1_ : FourierTransformSinct, t, Evaluate

Ploth1x, x, 5, 5 Timing

0.,

-4 -2 2 4

0.2

0.4

0.6

0.8

1.0

1.2

?h

Global`h

hx : x2 4

h_ 1

2

2Sign1 Sign1

?h1

Global`h1

h1_ : 1

2

2Sign1 Sign1

Removex

Mathematica_2014_complete.nb 39

Page 40: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Unstetige Funktionen

Auch Mathematica-Funktionen müssen nicht unbedingt immer stetig sein. Z.B. kann die

Stufenfunktion mit Hilfe von bedingten Anweisungen geschrieben werden:

step1x_ : 1 ; x 0step1x_ : 1 ; 0 x

oder

step2x_ ; x 0 : 1step2x_ ; 0 x : 1

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

ist.

Damit ist step2 etwas schneller als step1.

step3x_ : Piecewise1, x 2, 1, x 2

Plotstep3x, x, 5, 5

-4 -2 2 4

-1.0

-0.5

0.5

1.0

standardmäßig werden Unstetigkeitsstellen bei Piecewise beim Plotten ausgespart,

mit Exclusions->None kann man dies jedoch auch vermeiden

Plotstep3x, x, 5, 5,Exclusions None, PlotStyle Red, Thick

-4 -2 2 4

-1.0

-0.5

0.5

1.0

40 Mathematica_2014_complete.nb

Page 41: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Funktionen auf Listen

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

viele Funktionen haben die Eigenschaft "listable". Selbstdefinierten Funktionen

kann man mit SetAttributes diese Eingenschaft zuweisen:

Clearf

fx, y, z, 1, 1, 0fx, y, u v, 1, 1, 0

Attributesf

SetAttributesf, Listablebzw. in post - fix Darstellung

x, y, z, 1, 1, 0 ffx, fy, fu v, f1, f1, f0

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

Mapf, x, y, z, 1, 1, 0fx, fy, fu v, f1, f1, f0

bzw. in Operatordarstellung (siehe Help Map)

f x, y, z, 1, 1, 0fx, fy, fu v, f1, f1, f0

2.2. Reine Funktionen (Pure Functions)

ü Definition einer pure function

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

Sin, Log, ExpSin, Log, Exp

b 1 &, &,2

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

Mathematica_2014_complete.nb 41

Page 42: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

1 &, &,2

1 &

1 &, 1 &,12

1 1&

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

Namen

12 22 &, 12 a2

Sin2 &

12 22 &, 12 a2

Sin2 &

bzw. mit der Fullform: Function[ ...]

Functionx, 1, Functionx, x, Functionx1, x2, x12 x22Functionx, 1, Functionx, x, Functionx1, x2, x12 x22

ã Erzeugung einer pure function

N20 Functionx, Nx, 20Functionx, Nx, 20

oder einfacher:

N30 N, 30 &N1, 30 &

NN20N30N, 50 &3.14159

3.1415926535897932385

3.14159265358979323846264338328

3.1415926535897932384626433832795028841971693993751

ü Funktionsaufruf einer pure function

Sinx, Log1, Exp2.0 Bsp a Sinx, 0, 7.38906

42 Mathematica_2014_complete.nb

Page 43: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

1 &x, &y, 2

1 &z Bsp b

1, y,u v21 u v

12 22 &3, 4, 12 a2

Sin2 &x, b Bsp c

25, a2 x2 Cscb

ü wo treten pure functions in Mathematica häufiger auf?

1) bei Lösungen von DGLs

DSolvey'x x yx, y, xy Functionx, 1 x x C1

pf1 y . 1Functionx, 1 x x C1

pf1t1 t t C1

2) bei sogenannten postfix Anwendungen von Funktionen: (expr) // p.f.

N, Range3 Sin3.14159, Sin1, Sin2, Sin3

N50 N, 50 &N1, 50 &

N502 N, 100 &

3.1415926535897932384626433832795028841971693993751

1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573

3) Anwendungen mit Map und Nest

Map, a, b, c5 3 a, 5 3 b, 5 3 c

Mathematica_2014_complete.nb 43

Page 44: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Map^2 &, 1, 5, 131, 25, 169

MapSin, a b cSina Sinb Sinc

Nest11 &, , 31

1 1

11

1

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

qx_ : 1

1 x

Nestq, , 31

1 1

11

1

ExpRandomReal0, 10, 10 TableForm PaddedForm, 10, 3 &1169.059

33.8134.171

1549.020653.453149.903

10714.59151.201

3371.674100.371

2.3. Listen ....

ü Erzeugung von Listen

l1 2, 3, 42, 3, 4

Arithmetische Folgen erzeugt man am einfachsten mit Range

44 Mathematica_2014_complete.nb

Page 45: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Range5Range2, 4Range0.1, 1.1, 0.21, 2, 3, 4, 5

2, 3, 4

0.1, 0.3, 0.5, 0.7, 0.9, 1.1

Mit Table kann man Listen aller Art erzeugen,

z.B. Listen von Zahlen oder Symbolischen Ausdrücken

Tablex^n, n, 5x, x2, x3, x4, x5

Listen von Listen, bzw. geschachtelte Listen oder Matrizen

Tablex^n y^m, n, 3, m, 2x y, x y2, x2 y, x2 y2, x3 y, x3 y2

Tablex, Sinx, x, 0, 2 Pi, Pi 4

0, 0, 4,

1

2,

2, 1, 3

4,

1

2, , 0, 5

4,

1

2, 3

2, 1, 7

4,

1

2, 2 , 0

Eine Liste von Zufallszahlen

l2 TableRandomReal, 200.301473, 0.742062, 0.419267, 0.255465, 0.358688, 0.676718,0.495266, 0.127366, 0.833929, 0.165581, 0.114931, 0.213081, 0.674014,0.879938, 0.204973, 0.322488, 0.938045, 0.74282, 0.312768, 0.0740554

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:

Sin0, 1, 1.0, 3.14, , 90, 90 °0, Sin1, 0.841471, 0.00159265, 0, Sin90, 1

Man beachte, dass Sin[1] oder Sin[90] 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:

Sin2Cos1Sec1 Sin2

Mathematica_2014_complete.nb 45

Page 46: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Simplify2 Sin1

ü Ausgabeformate

nPi TableNi , j 2 i, i, 1, 3, j, 2, 53.142, 3.1416, 3.14159, 3.141593, 6.28319, 6.283185, 6.2831853, 6.28318531,9.4247780, 9.42477796, 9.424777961, 9.4247779608

als Tabelle

TableFormnPi3.142 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 TableFormnPi, 10, 53.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

MatrixFormnPi3.142 3.1416 3.14159 3.141593

6.28319 6.283185 6.2831853 6.283185319.4247780 9.42477796 9.424777961 9.4247779608

mit Zeilen- und Spaltenbezeichnungen und zentriert

TableFormnPi, TableHeadings " :", "2:", "3:", None,TableAlignments Center, Center, Center: 3.142 3.1416 3.14159 3.141593

2: 6.28319 6.283185 6.2831853 6.283185313: 9.4247780 9.42477796 9.424777961 9.4247779608

ü Operationen auf Listen

ã listeable

Die meisten Funktionen in Mathematica sind Listable

AttributesSinListable, NumericFunction, Protected

46 Mathematica_2014_complete.nb

Page 47: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Sin0, 1., 2, x0, 0.841471, 1, Sinx

Nicht jede Funktion ist Listable

f1b_ : NIntegrateLogx, x, 0, b

f11, 10, 20, 100NIntegrate::nlim : x = 1., 10., 20., 100. is not a valid limit of integration.àNIntegrateLogx, x, 0, 1, 10, 20, 100

dann kann man entweder das Attribut explizit setzen

Attributesf1 ListableListable

f11, 10, 20, 1001., 13.0259, 39.9146, 360.517

zur Demonstration einer zweiten Möglichkeit wird hier das Attribut wieder zurückgesetzt

Attributesf1

ã Map, bzw. /@

alternative kann man die Funktion Map anwenden:

Mapf1, 1, 10, 20, 1001., 13.0259, 39.9146, 360.517

für Map[f,list] gibt es den Operator /@

f1 1, 10, 20, 1001., 13.0259, 39.9146, 360.517

ã Part, bzw. [[ ]]

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

Part, 4360.517

oder einfach mit

213.0259

Mathematica_2014_complete.nb 47

Page 48: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

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

lsg Solvex^2 1 0, xx 1, x 1

lsg1x 1

lsg1, 1x 1

lsg2, 1, 21

am besten übergibt man eine solche Lösung durch eine Regelzuweisung an eine neue

Variable, z.B:

x2 x . lsg21

generell können bei Zuweisungen auf der linken Seite auch Listen stehen:

x1, x2 x . lsg1, 1

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

FullFormlsgListListRulex, 1, ListRulex, 1

48 Mathematica_2014_complete.nb

Page 49: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

TreeFormlsg

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)

ü mehrdimensionale oder geschachtelte Listen

list3 10, 20, a, b, 30, c, , 10, 20, a, b, 30, c, ,

Partlist3, 3a, b

list33a, b

list33, 1a

list35, 2, 2

ü Transpose

Transpose vertauscht Zeilen mit Spalten, ergibt also eine transponierte Matrix

Mathematica_2014_complete.nb 49

Page 50: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

list3 1, 2, 3, 4, a, b, c, d1, 2, 3, 4, a, b, c, d

MatrixForm 1 2 3 4a b c d

Transposelist31, a, 2, b, 3, c, 4, d

MatrixForm1 a2 b3 c4 d

für Operationen mit Matrizen aber auch z.B. zum Plotten von Datenpunkten:

x1 1, 3, 4, 7;y1 2, 0, 3, 5;

Transposex1, y11, 2, 3, 0, 4, 3, 7, 5

ListPlotTransposex1, y1, PlotStyle PointSize0.05

2 3 4 5 6 7

-2

2

4

2.4. Vektoren und Matrizen

ü Vektoren

In Mathematica ist ein Vektor eine Liste

50 Mathematica_2014_complete.nb

Page 51: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

vec1 a, b, ca, b, c

vec1 MatrixFormabc

vec2 Arraya, 3a1, a2, a3

ü Matrizen

In Mathematica ist eine Matrix eine geschachtelte Liste

Erzeugung einer 2x2 Matrix mit Palette

mat1 a bc d

a, b, c, d

Erzeugung einer beliebigen NxM Matrix mit Palette

mit Ctrl Enter ( ‚¿ ) erzeugt man eine neue Zeile

mit Ctrl , (Komma) ( ‚ , ) erzeugt man eine neue Spalte

mat2

a1 a2 a3 a4b1

b2

b4

a1, a2, a3, a4, b1, , , , b2, , , , , , , , b4, , ,

Erzeugung einer Matrix mit ContextMenu (rechte Maustaste) : "Insert Table/Matrix"

1 0 00 1 00 0 1

1, 0, 0, 0, 1, 0, 0, 0, 1

Erzeugung einer symbolischen Matrix mit Array

mat3 ArrayA, 2, 3A1, 1, A1, 2, A1, 3, A2, 1, A2, 2, A2, 3

MatrixFormA1, 1 A1, 2 A1, 3A2, 1 A2, 2 A2, 3

Mathematica_2014_complete.nb 51

Page 52: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

auch eine etwas schönere Schreibweise mit Indizes ist möglich mit der Funktion Subscript[...]

ArraySubscriptx, 1, 2 &, 3, 3 MatrixFormx1,1 x1,2 x1,3x2,1 x2,2 x2,3x3,1 x3,2 x3,3

aber Vorsicht bei Indizes: Die indizierte Größe ist nicht unabhängig von der normalen Variablen.

x 2, x1,2 0, x3 52, 0, 5

ArraySubscriptx, 1, 2 &, 3, 3 MatrixForm21,1 0 21,322,1 22,2 22,323,1 23,2 23,3

Removexnatürlich kann eine Matrix auch mit dem Befehl Table[...] erzeugt werden:

mat4 Tableai,j, i, 1, 4, j, 1, 3 MatrixForma1,1 a1,2 a1,3a2,1 a2,2 a2,3a3,1 a3,2 a3,3a4,1 a4,2 a4,3

Vorsicht: //MatrixForm ist wie auch //TableForm etc eine Darstellungsform und sollte nicht in die

Definition einer Größe aufgenommen werden:

mat42, 2

Part::partw : Part 2 of

a1,1 a1,2 a1,3a2,1 a2,2 a2,3a3,1 a3,2 a3,3a4,1 a4,2 a4,3

does not exist.à

a1,1 a1,2 a1,3a2,1 a2,2 a2,3a3,1 a3,2 a3,3a4,1 a4,2 a4,3

2, 2

besser:

mat5 Tablebi,j, i, 1, 4, j, 1, 3 MatrixFormb1,1 b1,2 b1,3b2,1 b2,2 b2,3b3,1 b3,2 b3,3b4,1 b4,2 b4,3

oder:

52 Mathematica_2014_complete.nb

Page 53: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

mat5 Tablebi,j, i, 1, 4, j, 1, 3 MatrixFormb1,1, b1,2, b1,3, b2,1, b2,2, b2,3, b3,1, b3,2, b3,3, b4,1, b4,2, b4,3

b1,1 b1,2 b1,3b2,1 b2,2 b2,3b3,1 b3,2 b3,3b4,1 b4,2 b4,3

ã Einheitsmatrix

IdentityMatrix5 MatrixForm1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1

ã Diagonalmatrix

DiagonalMatrix1, 2, 3, 4, 5 MatrixForm1 0 0 0 00 2 0 0 00 0 3 0 00 0 0 4 00 0 0 0 5

auch für sub- und superdiagonale Matrizen

DiagonalMatrixa, b, 1 MatrixForm0 0 0a 0 00 b 0

ü Operationen auf Matrizen und Vektoren

ã Multiplikation Dot (mit normalem Punkt: . )

diese beiden Matrizen passen nicht zusammen:

mat1.mat5

Dot::dotsh :

Tensors a, b, c, d and b1,1, b1,2, b1,3, b2,1, b2,2, b2,3, b3,1, b3,2, b3,3, b4,1, b4,2, b4,3 have incompatibleshapes.à

a, b, c, d.b1,1, b1,2, b1,3, b2,1, b2,2, b2,3, b3,1, b3,2, b3,3, b4,1, b4,2, b4,3

mat1.mat3 MatrixForma A1, 1 b A2, 1 a A1, 2 b A2, 2 a A1, 3 b A2, 3c A1, 1 d A2, 1 c A1, 2 d A2, 2 c A1, 3 d A2, 3

mit Apply[funct, liste] bzw. funct /@ liste operiert die Funktion auf jedes einzelne Element

Mathematica_2014_complete.nb 53

Page 54: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

MatrixForm mat1, mat3, mat1.mat3

a bc d

, A1, 1 A1, 2 A1, 3A2, 1 A2, 2 A2, 3 ,

a A1, 1 b A2, 1 a A1, 2 b A2, 2 a A1, 3 b A2, 3c A1, 1 d A2, 1 c A1, 2 d A2, 2 c A1, 3 d A2, 3

mat1.x, ya x b y, c x d y

vec x, yx, y

vec MatrixForm xy

hier unterscheidet Mathematica nicht zwischen Spalten- und Zeilenvektoren

mat1.vec MatrixForm a x b yc x d y

vec.mat1 MatrixForm a x c yb x d y

Skalarprodukt

1, 2.3, 411

Vektorprodukt

1, 2, 13, 4, 514, 8, 2

ã Spalten - und Zeilenvektoren

wenn man zwischen Spalten- und Zeilenvektoren unterscheiden möchte, muss man diese als Matrizen

schreiben:

vcolumn x, yx, y

54 Mathematica_2014_complete.nb

Page 55: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

MatrixForm xy

vline x, yx, y

MatrixForm x y

mat1.vcolumn MatrixForm a x b yc x d y

vline.mat1 MatrixForm a x c y b x d y

die jeweils andere Schreibweise ist dann ausgeschlossen:

mat1.vline MatrixFormDot::dotsh : Tensors a, b, c, d and x, y have incompatible shapes.àa, b, c, d.x, y

vcolumn.mat1 MatrixFormDot::dotsh : Tensors x, y and a, b, c, d have incompatible shapes.àx, y.a, b, c, d

mit Transpose[ ] kann man die beiden Formen ineinander überführen:

Transposevline MatrixForm xy

Transposevcolumn MatrixForm x y

ã Norm und Normierung: Norm, Normalize

v 1, 2, 31, 2, 3

Mathematica_2014_complete.nb 55

Page 56: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Normv

14

vn Normalizev

1

14,

2

7,

3

14

Norm1

ã Operationen auf Matrizen: Transpose, ConjugateTranspose, Inverse, Tr, Det

c1 1 1

1 1

1, 1 , 1 , 1

die Transponierte Matrix AT

Transposec1 MatrixForm1 1

1 1

und die Hermitisch Konjugierte Matrix A† (transponiert und konjugiert komplex)

ConjugateTransposec1 MatrixForm1 1

1 1

Abfrage als logischer Ausdruck: Ergebnis entweder True oder False

ConjugateTransposec1 c1

True

für viele Eigenschaften hat Mathematica auch Testfunktionen eingebaut, die mit Q enden,

z.B. PrimeQ, EvenQ, OddQ, IntegerQ, etc. so auch HermitianMatrixQ

HermitianMatrixQc1True

Inverse Matrix

Inversec1 c1

False

56 Mathematica_2014_complete.nb

Page 57: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Inversec1 MatrixForm1

3

1

3

3

1

3

31

3

Spur (Tr[...]) und Determinante (Det[...])

c1 Trc1 Det0

3

Unitäre Matrix, dann, wenn: A-1 = A†

smat 0

0

, 0, 0,

Inversesmat ConjugateTransposesmat , 0, 0, Conjugate, 0, 0, Conjugate

die Matrix A ist unitär, wenn a,b e R

ComplexExpandTrue

ü Lineare Gleichungssysteme

A . x = b

dabei ist A eine Matrix und b und x sind Vektoren. Formal ist die Lösung: x = A-1 . b

mA RandomInteger5, 3, 31, 3, 1, 3, 1, 5, 2, 3, 5

vb RandomInteger2, 2, 30, 1, 0

ã Lösung mit Inverser Matrix

vx InversemA.vb

23,

1

6,

1

6

Mathematica_2014_complete.nb 57

Page 58: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Lösung mit LinearSolve

vx LinearSolvemA, vb

23,

1

6,

1

6

ã Lösung mit Solve

Removex, y, z

vx x, y, zx, y, z

eq1 mA.vx vb

x 3 y z, 3 x y 5 z, 2 x 3 y 5 z 0, 1, 0

Solveeq1, x, y, z

x 2

3, y

1

6, z

1

6

ü Eigenwert Gleichungen

M . v = l v bzw. (M - lI) . v = 0

dabei ist l ein Eigenwert und v ein Eigenvektor. Eine 3x3 Matrix hat 3 Eigenwerte und 3 dazuge-

hörige Eigenvektoren.

ã triviales Beispiel

mA DiagonalMatrixa, b, c MatrixForma 0 00 b 00 0 c

EigenvaluesmAa, b, c

EigenvectorsmA1, 0, 0, 0, 1, 0, 0, 0, 1

man kann auch mit Eigensystem[...] die Eigenwerte und dazugehörigen Eigenvektoren auf einmal

berechnen:

EigensystemmAa, b, c, 1, 0, 0, 0, 1, 0, 0, 0, 1

58 Mathematica_2014_complete.nb

Page 59: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

MatrixForm a b c1, 0, 0 0, 1, 0 0, 0, 1

ã ein nicht so triviales Beispiel

mB ArraySubscriptb, 1, 2 &, 2, 2 MatrixFormb1,1 b1,2b2,1 b2,2

EigensystemmB MatrixForm1

2b1,1 b2,2 b1,1

2 4 b1,2 b2,1 2 b1,1 b2,2 b2,22 1

2b1,1 b2,2 b1,1

2 4 b1,2 b2,1 2 b1,1 b2,2 b2,22

b1,1b2,2 b1,12 4 b1,2 b2,12 b1,1 b2,2b2,2

2

2 b2,1, 1 b1,1b2,2 b1,1

2 4 b1,2 b2,12 b1,1 b2,2b2,22

2 b2,1, 1

mB ArraySubscriptb, 1, 2 &, 4, 4 MatrixFormb1,1 b1,2 b1,3 b1,4b2,1 b2,2 b2,3 b2,4b3,1 b3,2 b3,3 b3,4b4,1 b4,2 b4,3 b4,4

EigensystemmB

A very large output was generated. Here is a sample of it:

Root14 361 12 b1,2 b2,1 15 b3,3 b4,4 1 b1,3 b2,2 b3,1 b1,2 b2,3 b3,1 b1,3 b2,1 b3,2 b1,1 b2,3 b3,2 b1,2 b2,1 b3,3 b1,1 b2,2 b3,3

b1,4 b2,2 b4,1 b1,2 b2,4 b4,1 13 b1,1 b3,4 b4,3 b2,2 b3,4 b4,3 b1,2 b2,1 b4,4

b1,1 b2,2 b4,4 b1,3 b3,1 b4,4 b2,3 b3,2 b4,4 b1,1 b3,3 b4,4 b2,2 b3,3 b4,4 &, 1,Root1 &, 2, 1, Root14 38 1 1 &, 4, 1

Show Less Show More Show Full Output Set Size Limit...

analytische Lösungen gibt es nur bis 3x3 Matrizen

auch formale Lösungen mit Root erfordern sehr viel Rechenzeit

mit numerischen Matrizen ist das alles kein Problem

das nächste Beispiel rechnet jedoch erstmal exakt, da es sich um ganze Zahlen handelt

mC RandomInteger9, 5, 5 MatrixForm3 5 1 1 21 2 9 1 37 2 7 2 59 6 7 8 58 5 9 7 4

EigensystemmC

Mathematica_2014_complete.nb 59

Page 60: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Root1664 633 1 365 12 47 13 24 14 15 &, 3,Root1664 633 1 365 12 47 13 24 14 15 &, 5,Root1664 633 1 365 12 47 13 24 14 15 &, 4,Root1664 633 1 365 12 47 13 24 14 15 &, 2,Root1664 633 1 365 12 47 13 24 14 15 &, 1,

35 121 61843 953 053

5 507 986 Root1664 633 1 365 12 47 13 24 14 15 &, 3

43 953 053

4 852 882 Root1664 633 1 365 12 47 13 24 14 15 &, 32

43 953 053

1 039 789 Root1664 633 1 365 12 47 13 24 14 15 &, 33

43 953 053

37 208 Root1664 633 1 365 12 47 13 24 14 15 &, 34

43 953 053,

13 970 301

43 953 05312 538 101 Root1664 633 1 365 12 47 13 24 14 15 &, 3

43 953 053

473 949 Root1664 633 1 365 12 47 13 24 14 15 &, 32

43 953 053

1 176 709 Root1664 633 1 365 12 47 13 24 14 15 &, 33

43 953 053

49 970 Root1664 633 1 365 12 47 13 24 14 15 &, 34

43 953 053,

1 380 375

43 953 0536 926 179 Root1664 633 1 365 12 47 13 24 14 15 &, 3

87 906 106

3 820 771 Root1664 633 1 365 12 47 13 24 14 15 &, 32

43 953 053

55 271 Root1664 633 1 365 12 47 13 24 14 15 &, 33

87 906 106

12 183 Root1664 633 1 365 12 47 13 24 14 15 &, 34

87 906 106,

26 776 516

43 953 05334 154 183 Root1664 633 1 365 12 47 13 24 14 15 &, 3

87 906 106

295 196 Root1664 633 1 365 12 47 13 24 14 15 &, 32

43 953 053

624 585 Root1664 633 1 365 12 47 13 24 14 15 &, 33

87 906 106

29 325 Root1664 633 1 365 12 47 13 24 14 15 &, 34

87 906 106, 1,

60 Mathematica_2014_complete.nb

Page 61: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

35 121 61843 953 053

5 507 986 Root1664 633 1 365 12 47 13 24 14 15 &, 5

43 953 053

4 852 882 Root1664 633 1 365 12 47 13 24 14 15 &, 52

43 953 053

1 039 789 Root1664 633 1 365 12 47 13 24 14 15 &, 53

43 953 053

37 208 Root1664 633 1 365 12 47 13 24 14 15 &, 54

43 953 053,

13 970 301

43 953 05312 538 101 Root1664 633 1 365 12 47 13 24 14 15 &, 5

43 953 053

473 949 Root1664 633 1 365 12 47 13 24 14 15 &, 52

43 953 053

1 176 709 Root1664 633 1 365 12 47 13 24 14 15 &, 53

43 953 053

49 970 Root1664 633 1 365 12 47 13 24 14 15 &, 54

43 953 053,

1 380 375

43 953 0536 926 179 Root1664 633 1 365 12 47 13 24 14 15 &, 5

87 906 106

3 820 771 Root1664 633 1 365 12 47 13 24 14 15 &, 52

43 953 053

55 271 Root1664 633 1 365 12 47 13 24 14 15 &, 53

87 906 106

12 183 Root1664 633 1 365 12 47 13 24 14 15 &, 54

87 906 106,

26 776 516

43 953 05334 154 183 Root1664 633 1 365 12 47 13 24 14 15 &, 5

87 906 106

295 196 Root1664 633 1 365 12 47 13 24 14 15 &, 52

43 953 053

624 585 Root1664 633 1 365 12 47 13 24 14 15 &, 53

87 906 106

29 325 Root1664 633 1 365 12 47 13 24 14 15 &, 54

87 906 106, 1,

35 121 61843 953 053

5 507 986 Root1664 633 1 365 12 47 13 24 14 15 &, 4

43 953 053

4 852 882 Root1664 633 1 365 12 47 13 24 14 15 &, 42

43 953 053

Mathematica_2014_complete.nb 61

Page 62: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

1 039 789 Root1664 633 1 365 12 47 13 24 14 15 &, 43

43 953 053

37 208 Root1664 633 1 365 12 47 13 24 14 15 &, 44

43 953 053,

13 970 301

43 953 05312 538 101 Root1664 633 1 365 12 47 13 24 14 15 &, 4

43 953 053

473 949 Root1664 633 1 365 12 47 13 24 14 15 &, 42

43 953 053

1 176 709 Root1664 633 1 365 12 47 13 24 14 15 &, 43

43 953 053

49 970 Root1664 633 1 365 12 47 13 24 14 15 &, 44

43 953 053,

1 380 375

43 953 0536 926 179 Root1664 633 1 365 12 47 13 24 14 15 &, 4

87 906 106

3 820 771 Root1664 633 1 365 12 47 13 24 14 15 &, 42

43 953 053

55 271 Root1664 633 1 365 12 47 13 24 14 15 &, 43

87 906 106

12 183 Root1664 633 1 365 12 47 13 24 14 15 &, 44

87 906 106,

26 776 516

43 953 05334 154 183 Root1664 633 1 365 12 47 13 24 14 15 &, 4

87 906 106

295 196 Root1664 633 1 365 12 47 13 24 14 15 &, 42

43 953 053

624 585 Root1664 633 1 365 12 47 13 24 14 15 &, 43

87 906 106

29 325 Root1664 633 1 365 12 47 13 24 14 15 &, 44

87 906 106, 1,

35 121 61843 953 053

5 507 986 Root1664 633 1 365 12 47 13 24 14 15 &, 2

43 953 053

4 852 882 Root1664 633 1 365 12 47 13 24 14 15 &, 22

43 953 053

1 039 789 Root1664 633 1 365 12 47 13 24 14 15 &, 23

43 953 053

37 208 Root1664 633 1 365 12 47 13 24 14 15 &, 24

43 953 053,

62 Mathematica_2014_complete.nb

Page 63: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

13 970 301

43 953 05312 538 101 Root1664 633 1 365 12 47 13 24 14 15 &, 2

43 953 053

473 949 Root1664 633 1 365 12 47 13 24 14 15 &, 22

43 953 053

1 176 709 Root1664 633 1 365 12 47 13 24 14 15 &, 23

43 953 053

49 970 Root1664 633 1 365 12 47 13 24 14 15 &, 24

43 953 053,

1 380 375

43 953 0536 926 179 Root1664 633 1 365 12 47 13 24 14 15 &, 2

87 906 106

3 820 771 Root1664 633 1 365 12 47 13 24 14 15 &, 22

43 953 053

55 271 Root1664 633 1 365 12 47 13 24 14 15 &, 23

87 906 106

12 183 Root1664 633 1 365 12 47 13 24 14 15 &, 24

87 906 106,

26 776 516

43 953 05334 154 183 Root1664 633 1 365 12 47 13 24 14 15 &, 2

87 906 106

295 196 Root1664 633 1 365 12 47 13 24 14 15 &, 22

43 953 053

624 585 Root1664 633 1 365 12 47 13 24 14 15 &, 23

87 906 106

29 325 Root1664 633 1 365 12 47 13 24 14 15 &, 24

87 906 106, 1,

35 121 61843 953 053

5 507 986 Root1664 633 1 365 12 47 13 24 14 15 &, 1

43 953 053

4 852 882 Root1664 633 1 365 12 47 13 24 14 15 &, 12

43 953 053

1 039 789 Root1664 633 1 365 12 47 13 24 14 15 &, 13

43 953 053

37 208 Root1664 633 1 365 12 47 13 24 14 15 &, 14

43 953 053,

13 970 301

43 953 05312 538 101 Root1664 633 1 365 12 47 13 24 14 15 &, 1

43 953 053

473 949 Root1664 633 1 365 12 47 13 24 14 15 &, 12

43 953 053

Mathematica_2014_complete.nb 63

Page 64: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

1 176 709 Root1664 633 1 365 12 47 13 24 14 15 &, 13

43 953 053

49 970 Root1664 633 1 365 12 47 13 24 14 15 &, 14

43 953 053,

1 380 375

43 953 0536 926 179 Root1664 633 1 365 12 47 13 24 14 15 &, 1

87 906 106

3 820 771 Root1664 633 1 365 12 47 13 24 14 15 &, 12

43 953 053

55 271 Root1664 633 1 365 12 47 13 24 14 15 &, 13

87 906 106

12 183 Root1664 633 1 365 12 47 13 24 14 15 &, 14

87 906 106,

26 776 516

43 953 05334 154 183 Root1664 633 1 365 12 47 13 24 14 15 &, 1

87 906 106

295 196 Root1664 633 1 365 12 47 13 24 14 15 &, 12

43 953 053

624 585 Root1664 633 1 365 12 47 13 24 14 15 &, 13

87 906 106

29 325 Root1664 633 1 365 12 47 13 24 14 15 &, 14

87 906 106, 1

EigensystemmC N22.5727, 0.0926728 4.35426 , 0.0926728 4.35426 , 2.9362, 1.3236,0.319936, 0.505167, 0.66707, 1.06911, 1.,2.70105 1.34147 , 0.353528 3.47533 , 1.66167 0.365633 , 0.618335 1.10121 , 1.,2.70105 1.34147 , 0.353528 3.47533 , 1.66167 0.365633 , 0.618335 1.10121 , 1.,0.751065, 0.655195, 0.523278, 1.84717, 1.,0.382319, 0.0247343, 0.289017, 0.0656823, 1.

ComplexNumberPlot1ComplexNumberPlot22.5727, 0.0926728 4.35426 , 0.0926728 4.35426 , 2.9362, 1.3236

64 Mathematica_2014_complete.nb

Page 65: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateComplexNumberPlotEigenvaluesRandomInteger9, n, n N,PlotRange 20, 20, 20, 20,n, 3, 1, 50, 1, Appearance "Labeled", "Open"

n 3

3

ã Vergleich von Rechenzeiten

EigenvaluesRandomInteger9, 50, 50; Timing0.468, Null

EigenvaluesRandomInteger9, 100, 100; Timing64.719, Null

im ersten Beispiel wird noch exakt gerechnet, was zu sehr langen Rechenzeiten führen

kann,

in allen weiteren Beispielen ist die Rechenzeit sehr kurz und praktisch gleich

EigenvaluesNRandomInteger9, 500, 500; Timing0.172, Null

Mathematica_2014_complete.nb 65

Page 66: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

EigenvaluesRandomReal9, 500, 500; Timing0.171, Null

ü Matrix Diagonalisierung

eine quadratische Matrix A ist diagonalisierbar, wenn es eine Matrix X gibt, für die

gilt:

X-1. A . X diag lA

dabei sind l(A) die Eigenwerte und X eine Matrix aus den Eigenvektoren

A =1 23 4

1, 2, 3, 4

EigenvaluesA

12

5 33 ,1

25 33

vecs EigenvectorsA

431

65 33 , 1, 4

31

65 33 , 1

X vecs Transpose

431

65 33 ,

4

31

65 33 , 1, 1

X MatrixForm4

3

1

65 33

4

3

1

65 33

1 1

66 Mathematica_2014_complete.nb

Page 67: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

X-1.A.X

2 3

11 4

3

11

4

31

65 33

4

31

65 33

3

11 3

3

11

4

31

65 33 ,

23

11 4

3

11

4

31

65 33

4

31

65 33

3

11 3

3

11

4

31

65 33 ,

2 3

11 4

3

114

31

65 33

4

31

65 33

3

11 3

3

114

31

65 33 ,

23

11 4

3

114

31

65 33

4

31

65 33

3

11 3

3

114

31

65 33

Simplify MatrixForm TraditionalForm1

25 + 33 0

01

25 - 33

DiagonalMatrix MatrixForm TraditionalForm1

25 + 33 0

01

25 - 33

3. Grafik und Manipulate

3.1. Übersicht über die wichtigsten Grafik-Prozeduren

ü 2D Grafik

Plot ListPlot ListLinePlot

ParametricPlot

ContourPlot ListContourPlot

DensityPlot ListDensityPlot

ü 3D Grafik

Plot3D ListPlot3D ListPointPlot3D

ParametricPlot3D

Mathematica_2014_complete.nb 67

Page 68: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

3.2. 2D-Grafik

ü Plot

Plotf, x, xmin, xmaxHier ist ein einfacher 2-dim Plot, bei dem alle notwendigen Einstellungen, wie Achsenskalierungen automatisch vorgenommen

werden:

PlotSinx, x, 0, 2

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

Wie auch bei Berechnungen wird durch das Semikolon (;) die Ausgabe unterdrückt.

PlotSinx, x, 0, 4 ;Mit Plot kann man auch mehrere Funktionen gleichzeitig in ein Diagramm einzeichnen:

Dabei wird eine automatische Skalierung vorgenommen, die die verschiedenen Wertebereiche optimiert.

Die verschiedenen Kurven werden mit unterschiedlichen Farben dargestellt (Blau, Rot, Braun, Grün).

Plotx2, Sinx, Cosx, x, x, 0, 2

1 2 3 4 5 6

10

20

30

40

50

60

Das Aussehen der Plots kann auf vielfältige Weise durch "Optionen" verändert werden. Diese Optionen haben Voreinstellungen,

können aber auch einzeln manuell verändert werden.

Eine Übersicht gibt die Online-Help oder wie folgt mit Information und LongForm oder einfach mit ??Plot:

Information"Plot", LongForm True

68 Mathematica_2014_complete.nb

Page 69: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plot f , x, xmin, xmax generates a plot of f as a function of x from xmin to xmax.Plot f1, f2, …, x, xmin, xmax plots several functions fi. à

AttributesPlot HoldAll, Protected

OptionsPlot : AlignmentPoint Center, AspectRatio 1

GoldenRatio, Axes True, AxesLabel None,

AxesOrigin Automatic, AxesStyle , Background None, BaselinePosition Automatic,BaseStyle 16, FontFamily Times, Italic, ClippingStyle None, ColorFunction Automatic,ColorFunctionScaling True, ColorOutput Automatic, ContentSelectable Automatic,CoordinatesToolOptions Automatic, DisplayFunction $DisplayFunction, Epilog ,Evaluated Automatic, EvaluationMonitor None, Exclusions Automatic, ExclusionsStyle None,Filling None, FillingStyle Automatic, FormatType TraditionalForm, Frame False,FrameLabel None, FrameStyle , FrameTicks Automatic, FrameTicksStyle ,GridLines None, GridLinesStyle , ImageMargins 0., ImagePadding All,ImageSize 350, ImageSizeRaw Automatic, LabelStyle , MaxRecursion Automatic,Mesh None, MeshFunctions 1 &, MeshShading None, MeshStyle Automatic,Method Automatic, PerformanceGoal $PerformanceGoal, PlotLabel None,PlotPoints Automatic, PlotRange Full, Automatic, PlotRangeClipping True,PlotRangePadding Automatic, PlotRegion Automatic, PlotStyle Thickness0.005,PreserveImageOptions Automatic, Prolog , RegionFunction True &,RotateLabel True, Ticks Automatic, TicksStyle , WorkingPrecision MachinePrecision

?? Plot

Plot f , x, xmin, xmax generates a plot of f as a function of x from xmin to xmax.Plot f1, f2, …, x, xmin, xmax plots several functions fi. à

AttributesPlot HoldAll, Protected

OptionsPlot : AlignmentPoint Center, AspectRatio 1

GoldenRatio, Axes True, AxesLabel None,

AxesOrigin Automatic, AxesStyle , Background None, BaselinePosition Automatic,BaseStyle 16, FontFamily Times, Italic, ClippingStyle None, ColorFunction Automatic,ColorFunctionScaling True, ColorOutput Automatic, ContentSelectable Automatic,CoordinatesToolOptions Automatic, DisplayFunction $DisplayFunction, Epilog ,Evaluated Automatic, EvaluationMonitor None, Exclusions Automatic, ExclusionsStyle None,Filling None, FillingStyle Automatic, FormatType TraditionalForm, Frame False,FrameLabel None, FrameStyle , FrameTicks Automatic, FrameTicksStyle ,GridLines None, GridLinesStyle , ImageMargins 0., ImagePadding All,ImageSize 350, ImageSizeRaw Automatic, LabelStyle , MaxRecursion Automatic,Mesh None, MeshFunctions 1 &, MeshShading None, MeshStyle Automatic,Method Automatic, PerformanceGoal $PerformanceGoal, PlotLabel None,PlotPoints Automatic, PlotRange Full, Automatic, PlotRangeClipping True,PlotRangePadding Automatic, PlotRegion Automatic, PlotStyle Thickness0.005,PreserveImageOptions Automatic, Prolog , RegionFunction True &,RotateLabel True, Ticks Automatic, TicksStyle , WorkingPrecision MachinePrecision

Mathematica_2014_complete.nb 69

Page 70: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl1 PlotSinx, x, 0, 2 , PlotStyle Thick,

PlotLabel "Die SinusFunktion", AxesLabel "x", "Sinx"

1 2 3 4 5 6x

-1.0

-0.5

0.5

1.0Sinx

Die Sinus-Funktion

ü etwas Plot-Kosmetik

eine sehr große Anzahl von Optionen erlauben vielfältige Verschönerungen der Plots,

z.B. für Präsentationen oder Publikationen

StyleForm[ ] und BaseStyle[ ] erlauben spezielle Font-Wahl

PlotSinx, x, 0, 2 , PlotStyle Red, Dashed, Thick,PlotLabel StyleForm"Die SinusFunktion", "Times", 20,FrameLabel "x", "Sinx",BaseStyle 16, FontFamily "HelveticaOblique",FrameStyle Thickness0.0025,GridLines Automatic, Frame True

0 1 2 3 4 5 6-1.0

-0.5

0.0

0.5

1.0

x

Sin

x

Die Sinus-Funktion

ImageSize:

Die Größe eines Plots ist in den Grundeinstellungen (Option Inspector) festgelegt. Sie kann nachträglich einfach mit der Maus

verändert werden. Sie kann aber auch durch ImageSize (z.B. ImageSizeØ400) eingegeben werden:

70 Mathematica_2014_complete.nb

Page 71: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

individuelle PlotStyles:

meist wird man die einfachen voreingestellten Werte verwenden, es geht aber auch sehr individuell:

Farbe: Hue[h] oder RGB[r,g,b] mit h,r,g,b e [0,1] Z.B. Hue[1] (Rot) RGB[0,0,1] (Blau)

Linienart: Dashing[r] oder Dashing[{r1,r2}], wobei r in Einheiten der ImageSize angegeben wird.

Liniendicke: Thickness[r], Achtung: nicht zu groß wählen, z.B. r=0.005

FrameStyle-> erzeugt dickere Achsen

pl2 PlotSinx, x, 0, 2 ,PlotStyle Hue0.9, Dashing0.05, Thickness0.007,GridLines Automatic,

PlotLabel StyleForm"Die SinusFunktion", "Times", 22,FrameLabel "x", "Sinx",BaseStyle 14, FontFamily "HelveticaOblique",Frame True, FrameStyle Thickness0.0025, ImageSize 400

0 1 2 3 4 5 6-1.0

-0.5

0.0

0.5

1.0

x

Sin

x

Die Sinus-Funktion

mit PlotRange werden die Achsen skaliert

im ersten Plot werden PlotRange und PlotStyle automatisch eingestellt

Mathematica_2014_complete.nb 71

Page 72: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl3 PlotSinx, Cosx, Tanx, Cotx, x, 0, 2 ,PlotRange Automatic, PlotStyle Automatic,PlotLabel "Sin, Cos, Tan, Cot", FrameLabel "x", None,BaseStyle 18, FontFamily "Helvetica", Frame True

0 1 2 3 4 5 6

-3-2-1

01234

x

Sin, Cos, Tan, Cot

ü Dashing

Das standardmäßige Stricheln der Kurven lässt sehr zu wünschen übrig:

PlotSqrtx 0.5, Sqrtx 1,Sqrtx 1.5, Sqrtx 2, Sqrtx 2.5, x, 0, 5,

PlotStyle Dashed, DotDashed, Dotted,FrameStyle Thickness0.0025, Frame True, BaseStyle 16

0 1 2 3 4 50.0

0.5

1.0

1.5

2.0

Im Folgenden werden die Kurven in Publikationsqualität dargestellt:

72 Mathematica_2014_complete.nb

Page 73: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl3 PlotTanx, x, 0, 2 ,

AxesLabel "x", "tanx", BaseStyle 16,

Ticks 0, 2, , 3 2 , 2 , 2, 0, 2, Frame True

0 1 2 3 4 5 6

-6

-4

-2

0

2

4

6

x

Dafür gibt es die speziellen Optionen für gerahmte Plots : FrameLabel und FrameTicks

FrameLabels haben die gleiche Struktur, FrameTicks sind etwas anders aufgebaut, siehe Beispiel :

pl3 PlotTanx, x, 0, 2 ,

FrameLabel "x", "tanx", BaseStyle 16,

FrameTicks 0, 2, , 3 2 , 2 , 2, 0, 2, Frame True

0 p2

p 3 p2

2 p

-2

0

2

0p2 p

3 p2 2 p

-2

0

2

x

tanx

Mathematica_2014_complete.nb 73

Page 74: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl3 PlotTanx, x, 0, 2 ,

FrameLabel "x", "tanx", BaseStyle 16, PlotRange 2.5,

FrameTicks 2, 1, 0, 1, 2, None,

0, 2, , 32 , 2 , None, Frame True

0 p2

p 3 p2

2 p

-2

-1

0

1

2

x

tanx

ü Tooltipexpr, labelim nächsten Plot wird die y - Achse neu skaliert und die Linien individuell gewählt

Beachte auch die Funktion Tooltip[ ... ], die die Funktion, bzw. einen Kommentar anzeigt,

sobald man mit der Maus in die Nähe kommt.

pl3 PlotTooltipSinx, Cosx, Tanx, Cotx, x, 0, 2 ,

PlotRange 2, 2, PlotStyle

Black, Thick, Red, Thick, Blue, Thick, Green, Thick,

PlotLabel "Sin, Cos, Tan, Cot", FrameLabel "x", None,

BaseStyle 18, FontFamily "Helvetica", Frame True

0 1 2 3 4 5 6-2

-1

0

1

2

x

Sin, Cos, Tan, Cot

im zweiten Beispiel können eigene Labels vergeben werden:

74 Mathematica_2014_complete.nb

Page 75: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotTooltipSinx, "Sinus",

TooltipCosx, "Cosinus", x, 0, 2

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

PlotTooltipSinx, "Sinus", TooltipCosx, "Cosinus",

x, 0, 2 , AxesOrigin , 1, AspectRatio 0.2,

ImageSize 700, PlotStyle Thickness0.003

0 1 2 3 4 5

-0.5

0.0

0.5

1.0

ã eigene Funktion tooltip

noch flexibler ist ein modifiziertes "tooltip" für die Anwendung auf Listen:

tooltipflist_, clist_ :

TableTooltipflisti, clisti, i, Lengthflist

tooltipSinx, Cosx, "Sinus", "Cosinus" InputForm

{Tooltip[Sin[x], "Sinus"], Tooltip[Cos[x], "Cosinus"]}

Mathematica_2014_complete.nb 75

Page 76: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlottooltipSinx, Cosx, "Sinus", "Cosinus" Evaluate,

x, 0, 2

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

ü Show und PlotRange

fa_, x_ :Sina x2

a x2

del1 Plotf2, x, x, 2, 2

-2 -1 1 2

0.1

0.2

0.3

0.4

0.5

0.6

76 Mathematica_2014_complete.nb

Page 77: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

del2 Plotf10, x, x, 2, 2, PlotRange All

-2 -1 1 2

0.5

1.0

1.5

2.0

2.5

3.0

Mit der Funktion "Show" können bereits existierende Grafiken mit geänderten Optionen dargestellt werden oder auch verschiedene

Grafiken in ein Bild gezeichnet werden.

Showdel2, PlotRange Automatic

-2 -1 1 2

0.05

0.10

0.15

0.20

del3 Plotf20, x, x, 2, 2, PlotRange All

-2 -1 1 2

1

2

3

4

5

6

Mathematica_2014_complete.nb 77

Page 78: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Showdel1, del2, del3, PlotRange All

-2 -1 1 2

1

2

3

4

5

6

ü ListPlot

ListPloty1, y2, y3, ...oder ListPlotx1, y1, x2, y2, ...

Kennt man von einer Funktion nur einzelne Punkte oder Wertepaare, kann man diese Funktion nicht mit "Plot" zeichnen. Dafür gibt

es die Funktion "ListPlot" mit ähnlichen Optionen wie Plot.

li1 RandomReal0, 1, 100;

ListPlotli1

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

78 Mathematica_2014_complete.nb

Page 79: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plot0.5, x, 0, 100

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

Show,

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

ein wichtiger PlotStyle für ListPlot ist die Punktdicke PointSize[d]

dabei ist die Größe d in Einheiten des Gesamtplots

lp1 ListPlotli1, PlotStyle PointSize0.03

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

es können auch festdefinierte Werte mit PointSize verwendet werden :

PointSize[Large], PointSize[Small], PointSize[Tiny],

Mathematica_2014_complete.nb 79

Page 80: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

eine weitere Option ist PlotMarkers -> g, s, dabei ist g ein Graphics Objekt und s die

relat. Größe

damit können beliebige andere Symbole erzeugt werden

lp1 ListPlotli1, PlotMarkers

GraphicsOrange, Rectangle1, 1, 1, 1, 0.05

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

Als weitere Option gibt es im Vergleich zu Plot die Option: PlotJoined->True,

wobei die einzelnen Punkte durch Linien verbunden werden.

Dafür gibt es auch eine eigene Funktion

ListPlotli1, Joined True

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

80 Mathematica_2014_complete.nb

Page 81: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListLinePlotli1, Filling Axis

Mit "Show" können nun beide Darstellungen, Linien und Punkte überlagert werden:

Show, lp1

ListPlotTableRandomReal0, 1, 2, 3000,

PlotStyle Red, ThicknessSmall

0.2 0.4 0.6 0.8 1.0

0.2

0.4

0.6

0.8

1.0

Mathematica_2014_complete.nb 81

Page 82: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Überlagerung mehrerer Plots im gemeinsamen Koordinatensystem mit Show

ShowPlot2.5, x, 0, 1,

ListPlotTableRandomReal, 2 RandomReal, 100,

PlotRange 0, 4

0.2 0.4 0.6 0.8 1.0

1

2

3

4

bei automatischer Skalierung spielt die Reihenfolge eine entscheidende Rolle:

ShowPlot2.5, x, 0, 1,

ListPlotTableRandomReal, 2 RandomReal, 100

0.2 0.4 0.6 0.8 1.0

1

2

3

4

5

82 Mathematica_2014_complete.nb

Page 83: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlotTableRandomReal, 2 RandomReal, 100,

Plot2.5, x, 0, 1

0.2 0.4 0.6 0.8 1.0

2.2

2.4

2.6

2.8

3.0

ü ParametricPlot

ParametricPlotSint, Cost, t, 0, 2

-1.0 -0.5 0.5 1.0

-1.0

-0.5

0.5

1.0

Mathematica_2014_complete.nb 83

Page 84: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ParametricPlotSin7 t Cost, Sin5 t Sint, t, 0, 2

-1.0 -0.5 0.5 1.0

-0.5

0.5

1.0

ü Option: Filling

TablePlotSinx, x, 0, 2 Pi, ImageSize 150, Filling f,

f, Top, Bottom, Axis, 0.3

, ,

,

TablePlotx3, Sin4 x, x, 1, 1, ImageSize 200, Filling f,

f, Axis, 1 2

,

84 Mathematica_2014_complete.nb

Page 85: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Epilog

PlotSinx, x, 0, 10, Epilog Text"Sinx", 5, 0.8

2 4 6 8 10

-1.0

-0.5

0.5

1.0Sinx

ListPlotRandomReal0, 1, 100,

Epilog Line0, 0.5, 100, 0.5

20 40 60 80 100

0.2

0.4

0.6

0.8

1.0

3.3. Contour Plots und Density Plots

ü ContourPlot, DensityPlot

fx_, y_ Exp x2 y2 CosArcTanx, y

x2y2 CosArcTanx, y

Mathematica_2014_complete.nb 85

Page 86: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

cp ContourPlotfx, y, x, 1, 1,

y, 1, 1, PlotPoints 30, ContourShading False

cp1 ContourPlotfx, y, x, 1, 1, y, 1, 1, PlotPoints 30

86 Mathematica_2014_complete.nb

Page 87: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

dp DensityPlotfx, y, x, 1, 1, y, 1, 1,

PlotPoints 30, Mesh False, ColorFunction Hue,

Axes True, Ticks Automatic, Frame False

Es gibt eine Vielzahl von Color Schemes (Farbverläufe), siehe Help

greenblue RGBColor0, , &;

eigene Definition für Farbabstufung

Mathematica_2014_complete.nb 87

Page 88: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateContourPlotfx, y, x, 1, 1,

y, 1, 1, PlotPoints 30, Contours contours,

ColorFunction colfunc, Axes axes, Ticks Automatic,

Frame False, ContourLabels labels, ContourStyle style,

colfunc, Automatic, "ColorFunction",

JoinAutomatic, Hue, greenblue, ColorData"Gradients",

axes, True, "Axes", True, False,

ControlType Checkbox, ControlPlacement Bottom,

style, Automatic, "Linien", None, Automatic,

ControlType Checkbox, ControlPlacement Bottom,

labels, None, "ContourLabels", None, Automatic, True, All,

ControlPlacement Bottom,

contours, 10, "Contours", 30, 5, 5,ControlType VerticalSlider, ControlPlacement Right,

SaveDefinitions True

ColorFunction Automatic

Contours

Axes

Linien

ContourLabels None Automatic True All

ü Anordnung von Grafiken in Listen und Tabellen: GraphicsRow, GraphicsColumn, GraphicsGrid

einfachste Anordnung als Liste, jedoch ohne weitere Größenänderung

88 Mathematica_2014_complete.nb

Page 89: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

cp, dp

,

gemeinsame Darstellung mit GraphicsRow

Mathematica_2014_complete.nb 89

Page 90: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

GraphicsRowcp, dp, PlotLabel Expr Cos, ImageSize 400

GraphicsRowcp, dp

90 Mathematica_2014_complete.nb

Page 91: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

GraphicsColumncp, dp, ImageSize 200

ü Veranschaulichung komplexer Funktionen

erstes Beispiel: f z = e-

1

z2 mit einer wesentlichen Singularität im Ursprung

Plot3DExp1 x y2 Abs,

x, 2, 2, y, 2, 2, ColorFunction greenblue,

PlotRange 0, 50, ClippingStyle Automatic

Mathematica_2014_complete.nb 91

Page 92: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ContourPlotExp1 x y2 Im, x, 4, 4, y, 4, 4,

ColorFunction "Rainbow", ClippingStyle Automatic, Contours 20

ContourPlotExp1 x y2 Abs, x, 5, 5, y, 5, 5,

ColorFunction "Rainbow", ClippingStyle Automatic, Contours 20

92 Mathematica_2014_complete.nb

Page 93: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ContourPlotExp1 x y2 Im, x, 4, 4, y, 4, 4,

PlotPoints 50, Contours 80,

ContourStyle None, ClippingStyle Automatic,

ColorFunction ColorData"Rainbow"FractionalPart10 &

-4 -2 0 2 4-4

-2

0

2

4

ContourPlotExp1 x y2 Im, x, 4, 4, y, 4, 4,

PlotPoints 50, Contours 100,

ContourStyle None, ClippingStyle Automatic,

ColorFunction ColorData"BrightBands"FractionalPart10 &

-4 -2 0 2 4-4

-2

0

2

4

Mathematica_2014_complete.nb 93

Page 94: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

zweites Beispiel: f z = 1

zn-a mit n Polen auf einem Kreis mit Radius a

a 0;

Plot3D1 x y6 a Abs, x, 1, 1, y, 1, 1,

ColorFunction greenblue &, ClippingStyle Automatic

ContourPlot1 x y6 a Im, x, 1, 1, y, 1, 1,

ColorFunction greenblue &, ClippingStyle Automatic

a 0.2;

94 Mathematica_2014_complete.nb

Page 95: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plot3D1 x y6 a Abs, x, 1, 1, y, 1, 1,

ColorFunction greenblue &, ClippingStyle Automatic

ContourPlot1 x y6 a Im, x, 1, 1, y, 1, 1,

ColorFunction "TemperatureMap", ClippingStyle Automatic

3.4. Plots exportieren

ü Export

per default landen die Plots im aktuellen Arbeitsverzeichnis

Mathematica_2014_complete.nb 95

Page 96: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

DirectoryC:\Daten\CTKurs\Aktueller Kurs 2014

FileNamesGauss.dat, Mathematica_2014_compact.pdf, Mathematica_2014_complete.nb, Mathematica_2014.nb,

Mathematica_2014_opensubgroups.nb, Organisation, Output.dat, Temperatur.dat, tmp

man kann Arbeitsverzeichnisse aber auch explizit definieren:

SetDirectory"D:Mathematicaciw"in den meisten Fällen ist wohl das aktuelle Notebook Verzeichnis am sinnvollsten:

SetDirectoryNotebookDirectoryC:\Daten\CTKurs\Aktueller Kurs 2014

FileNamesGauss.dat, Mathematica_2014_compact.pdf, Mathematica_2014_complete.nb, Mathematica_2014.nb,

Mathematica_2014_opensubgroups.nb, Organisation, Output.dat, Temperatur.dat, tmp

Export"cp.pdf", cpcp.pdf

Export"dp.pdf", dpdp.pdf

Export"cp1.pdf", cp1cp1.pdf

plot GraphicsRowcp, dp,

PlotLabel Expr Cos, ImageSize 400;

Export"twoplots.pdf", plottwoplots.pdf

Export"twoplots.jpg", plottwoplots.jpg

Export"twoplots.eps", plottwoplots.eps

96 Mathematica_2014_complete.nb

Page 97: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

3.5. Plot-Legenden

ü selbstdefinierte Legende mit Epilog (aus Mathematica Documentation Center)

legendPlotxl_List, d_, args___ : Plotxl, d,

Epilog

InsetPanelGridMapIndexedGraphicsColorData1, First2,

Thick, Line0, 0, 1, 0,

AspectRatio .1, ImageSize 20, 1 &, xl,

Offset2, 2, Scaled1, 1, Right, Top, args

legendPlotSinx, Cosx, Sincx, x, 0, 10

2 4 6 8 10

-1.0

-0.5

0.5

1.0sinxcosxsincx

ü Paket : PlotLegend

Needs"PlotLegends`"

PlotSinx, Cosx, x, 0, 2 Pi,

PlotLegend "sine", "cosine"

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

cosine

sine

Mathematica_2014_complete.nb 97

Page 98: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotSinx, Cosx, x, 0, 2 Pi,

PlotLegend "sine", "cosine", LegendSize 0.6,

LegendPosition 0.9, 0.1, LegendBackground LightYellow

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

cosine

sine

ShowLegendDensityPlotSinx y, x, 0, , y, 0, , Mesh False,

PlotPoints 30, ColorData"LakeColors"1 1 &,

10, " 1", "1", LegendPosition 1.1, .4

contour1

ContourPlotfx, y, x, 1, 1, y, 1, 1, PlotPoints 30;

98 Mathematica_2014_complete.nb

Page 99: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowLegendcontour1,

ColorData"LakeColors"1 1 &,

10, "1", "1", LegendSize 0.55, 1.35,

LegendLabel "Legende",

LegendPosition 1.1, .7

ShowLegendContourPlotfx, y, x, 1, 1,

y, 1, 1, PlotPoints 30, ColorFunction "Rainbow",

Contours 11, ContourLabels Automatic,

ColorData"Rainbow"1 1 &, 9, "0.80",

"0.80", LegendSize 0.55, 1.35,

LegendLabel "Legende",

LegendPosition 1.1, .7

3.6. 3D-Grafik

ü Plot3D

Plot3Df, x, xmin, xmax, y, ymin, ymax

Mathematica_2014_complete.nb 99

Page 100: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Mit "Plot3D" erzeugt man eine Oberflächen-Grafik einer 2-dim Funktion

pl3 Plot3DSinx Siny, x, , , y, ,

pl3 Plot3DSinx Siny, x, , ,

y, , , Mesh False, PlotPoints 100

Mit einer Vielzahl von Optionen lassen sich auch diese 3-dim Grafiken verändern,

siehe Options[Plot3D] oder mit Online-Help.

100 Mathematica_2014_complete.nb

Page 101: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl4 Plot3DSinx Siny, x, , , y, , ,

AxesLabel "x", "y", " ", AxesStyle Thickness0.006,

AxesEdge Automatic, Automatic, 1, 1,

BoxStyle Dashing0.02, 0.02, PlotLabel "sinxsiny",

BaseStyle 16, FontFamily "Helvetica"

ü ListPlot3D und ListPointPlot3D

data TableSinj^2 i, i, 0, Pi, Pi5, j, 0, Pi, Pi 5;

ListPlot3Ddata, Mesh None,

InterpolationOrder 3, ColorFunction "SouthwestColors"

data1 TableSinj^2 i, i, 0, Pi, 0.1, j, 0, Pi, 0.1;

Mathematica_2014_complete.nb 101

Page 102: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPointPlot3Ddata1

10

20

30

10

20

30

-1.0

-0.5

0.0

0.5

1.0

data2 Tablei, j, Sinj^2 i, i, 0, Pi, 0.1, j, 0, Pi, 0.1;

data2 Short, 30 &

0., 0., 0., 0., 0.1, 0.00999983, 0., 0.2, 0.0399893, 0., 0.3, 0.0898785,0., 0.4, 0.159318, 0., 0.5, 0.247404, 0., 0.6, 0.352274, 0., 0.7, 0.470626,0., 0.8, 0.597195, 0., 0.9, 0.724287, 0., 1., 0.841471, 0., 1.1, 0.935616,0., 1.2, 0.991458, 0., 1.3, 0.992904, 0., 1.4, 0.925212, 0., 1.5, 0.778073,0., 1.6, 0.549355, 0., 1.7, 0.248947, 0., 1.8, 0.0982486, 0., 1.9, 0.451466,0., 2., 0.756802, 0., 2.1, 0.954628, 0., 2.2, 0.991869, 0., 2.3, 0.837769,0., 2.4, 0.499642, 0., 2.5, 0.0331792, 0., 2.6, 0.458951, 0., 2.7, 0.845133,0., 2.8, 0.999902, 0., 2.9, 0.849363, 0., 3., 0.412118, 0., 3.1, 0.184165,

30, 3.1, 0., 0.0415807, 3.1, 0.1, 0.0315874, 3.1, 0.2, 0.00159265,3.1, 0.3, 0.0483884, 3.1, 0.4, 0.118131, 3.1, 0.5, 0.206902, 3.1, 0.6, 0.313054,3.1, 0.7, 0.433531, 3.1, 0.8, 0.563327, 3.1, 0.9, 0.694991, 3.1, 1., 0.818277,3.1, 1.1, 0.920128, 3.1, 1.2, 0.985178, 6, 3.1, 1.9, 0.413973,3.1, 2., 0.728969, 3.1, 2.1, 0.941419, 3.1, 2.2, 0.996303, 3.1, 2.3, 0.859749,3.1, 2.4, 0.535228, 3.1, 2.5, 0.0747083, 3.1, 2.6, 0.421612, 3.1, 2.7, 0.822175,3.1, 2.8, 0.998456, 3.1, 2.9, 0.870575, 3.1, 3., 0.449647, 3.1, 3.1, 0.143136

ListPointPlot3Ddata2

0

1

2

3 0

1

2

3

-1.0

-0.5

0.0

0.5

1.0

data3 data2 Flatten, 1 &;

102 Mathematica_2014_complete.nb

Page 103: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPointPlot3Ddata3

0

1

2

3 0

1

2

3

-1.0

-0.5

0.0

0.5

1.0

ü ParametricPlot3D

z.B. Phasenraumdiagramm einer gedämpften Schwingung

ParametricPlot3DExp0.1 t Sin2 t, Exp0.1 t Cos2 t, t10, t, 0, 25

-0.50.0

0.5

-0.5

0.0

0.5

1.0

0

1

2

parametrisierte Oberfläche

Mathematica_2014_complete.nb 103

Page 104: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ParametricPlot3DCosu, Sinu Cosv, Sinv, u, 0, 2 , v, ,

Plot zweier Flächen in 3 D

ParametricPlot3D4 3 Cosv Sinu, 4 3 Cosv Cosu, 4 Sinv,

8 3 Cosv Cosu,

3 Sinv, 4 3 Cosv Sinu,

u, 0, 2 Pi, v, 0, 2 Pi, PlotStyle Red, Green

104 Mathematica_2014_complete.nb

Page 105: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

3.7. weitere Grafik-Befehle: LogPlot etc.

ü Logarithmische Plots

gx_ : Ifx 0, 1, xx

Plotgx, x, 0, 10

2 4 6 8 10

2μ 107

4μ 107

6μ 107

8μ 107

LogPlotgx, x, 0, 10

2 4 6 8 10

100

104

106

108

1010

Mathematica_2014_complete.nb 105

Page 106: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

LogLinearPlotSin1x, x, 0.01, 100

0.1 1 10 100

-0.5

0.0

0.5

1.0

LogLogPlotx3 x13, x, 0.1, 100

0.5 1.0 5.0 10.0 50.0 100.0

100

107

1012

1017

1022

106 Mathematica_2014_complete.nb

Page 107: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü PolarPlot

PolarPlott, t, 0, 4 2

-20 -10 10 20

-20

-10

10

20

ü RegionPlot

RegionPlotx^2 y^3 2, x, 2, 2, y, 2, 2

Mathematica_2014_complete.nb 107

Page 108: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

GraphicsGridRegionPlotSinx Siny 1 4, x, 10, 10, y, 10, 10,

BoundaryStyle Dashed, PlotStyle Yellow,

RegionPlotx^2 y^2 1, x, 1, 1, y, 1, 1, Mesh 10,

MeshShading Automatic, None, None, Automatic,

ColorFunction "DarkRainbow", ImageSize 600

108 Mathematica_2014_complete.nb

Page 109: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü SphericalPlot3D

SphericalPlot3DAbsSphericalHarmonicY2, 0, theta, phi,

theta, 0, , phi, 0, 2

Mathematica_2014_complete.nb 109

Page 110: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

SphericalPlot3DAbsSphericalHarmonicY2, 0, theta, phi,

theta, 0, , phi, 0, 2 , Boxed False, Axes None, Mesh None

ü SurfaceOfRevolution

Plot1

2 x2

x4

2, x, 1.45, 1.45

-1.5 -1.0 -0.5 0.5 1.0 1.5

0.1

0.2

0.3

0.4

0.5

0.6

110 Mathematica_2014_complete.nb

Page 111: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

RevolutionPlot3D1

2 x2

x4

2, x, 0.05, 1.4,

ViewPoint 0.521, 0.962, 1.954, BoxRatios 1, 1, 1

ManipulateRevolutionPlot3DSinx a Sinb x,

x, 0, 20, PlotStyle Opacity.3, color, Axes False,

a, 0, 1, b, 0, 10, color, Red

a

b

color

Mathematica_2014_complete.nb 111

Page 112: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

3.8. VectorPlot

ü Vektorfeld einer Kraft Fx, yVektorfeld einer Zentralkraft F

r

rvect x, y, zx, y, z

Fvect rvect

x, y, z

VectorPlotTakeFvect, 1, 2, x, 1, 1, y, 1, 1

-1.0 -0.5 0.0 0.5 1.0

-1.0

-0.5

0.0

0.5

1.0

Vektorfeld einer Axialkraft : Fr B

Bvect 0, 0, 1;

Fvect rvect Bvect

y, x, 0

112 Mathematica_2014_complete.nb

Page 113: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

VectorPlotTakeFvect, 1, 2, x, 1, 1, y, 1, 1

-1.0 -0.5 0.0 0.5 1.0

-1.0

-0.5

0.0

0.5

1.0

ü Vektorfeld eines Potentials V x, y

Vpotx_, y_ :1

x2 y2

Berechnung des Gradienten in einzelnen Komponenten

Fx_, y_ DVpotx, y, x, DVpotx, y, y

x

x2 y232,

y

x2 y232

Berechnung des Gradienten auf elegante Weise

Fx_, y_ DVpotx, y, x, y

x

x2 y232,

y

x2 y232

Mathematica_2014_complete.nb 113

Page 114: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

VectorPlotFx, y, x, 3, 3, y, 3, 3

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

VectorPlotFx, y, x, 3, 3, y, 3, 3, VectorPoints 4

-4 -2 0 2 4

-4

-2

0

2

4

114 Mathematica_2014_complete.nb

Page 115: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

VectorPlotFx, y, x, 3, 3, y, 3, 3,

VectorPoints 10, VectorScale Large, 0.5, Automatic

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

VectorPlotFx, y, x, 3, 3, y, 3, 3,

VectorPoints 10, VectorScale Large, 0.5, None

-3 -2 -1 0 1 2 3

-3

-2

-1

0

1

2

3

Mathematica_2014_complete.nb 115

Page 116: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü 3D Vektorfeld eines Potentials V x, y, z

Vpotx_, y_, z_ :1

x 12 y2 z2

1

x 42 y2 z2

Fx_, y_, z_ DVpotx, y, z, x, y, z

1 x

1 x2 y2 z232

4 x

4 x2 y2 z232,

y

1 x2 y2 z232

y

4 x2 y2 z232,

z

1 x2 y2 z232

z

4 x2 y2 z232

VectorPlot3DFx, y, z, x, 5, 5, y, 5, 5, z, 5, 5,

VectorPoints 8, VectorScale Small, 0.5, None

-5

0

5

-5

0

5

-5

0

5

3.9. Paket: ErrorBarPlots`

ü ErrorListPlot

Needs"ErrorBarPlots`"

? ErrorBarPlots`*

ErrorBarPlots`

ErrorBar ErrorBarFunction ErrorBarPlot ErrorListPlot

116 Mathematica_2014_complete.nb

Page 117: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

im ersten Beispiel sind die Abszissen wieder einfach die natürlichen Zahlen,

die Ordinaten zeigen die i , unabhängig von x !

Der Fehlerbalken wird zufällig ermittelt.

ErrorListPlotTableSqrti, RandomReal0.3, i, 1, 20, 2

2 4 6 8 10

1.5

2.0

2.5

3.0

3.5

4.0

4.5

in dem nächsten Beispiel (Normalfall) wird der Fehler in der Ordinate y einfach als 3. Komponente der Vektoren angegeben

ErrorListPlot1, 1., 0.3, 2, 2, 0.6, 3, 4, 0.3, 4, 8, 1

1.5 2.0 2.5 3.0 3.5 4.0

2

4

6

8

im allgemeinen Fall werden Fehlerbalken mit der Funktion ErrorBar erzeugt.

Damit können zum einen Fehlerbalken in beiden Richtungen angegeben werden

und zum anderen können auch unsymmetrische Fehler angezeigt werden.

Mathematica_2014_complete.nb 117

Page 118: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ErrorListPlot1, 1, ErrorBar0.2, 0.3,

2, 2, ErrorBar0.2, 0.3, 3, 4, ErrorBar0.2, 0.3, 0.5,

4, 8, ErrorBar0.7, 0.4, 1, 0.5,

ErrorBarFunction Automatic

1.5 2.0 2.5 3.0 3.5 4.0

2

4

6

8

3.10. Manipulate

ü so einfach wie eine Tabelle

Manipulate[ ] ist so einfach anzuwenden wie Table[ ]

TableSinx, x, 0, 100, Sin1, Sin2, Sin3, Sin4, Sin5, Sin6, Sin7, Sin8, Sin9, Sin10

ManipulateSinx, x, 0, 10

x

0

im Allgemeinen werden die Parameter kontinuierlich verändert,

in manchen Fällen ist dies aber nicht so sinnvoll

118 Mathematica_2014_complete.nb

Page 119: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü in diskreten Schritten

Manipulatex, Sinx, x, 0, 10, 1

x

0, 0

ManipulateFactorx^n 1, n, 10, 100, 1

n

1 x 1 x 1 x x2 x3 x4 1 x x2 x3 x4

ü Appearance

ManipulateFactorx^n 1, n, 10, 100, 1, Appearance "Labeled"

n 10

1 x 1 x 1 x x2 x3 x4 1 x x2 x3 x4

ManipulateFactorx^n 1, n, 10, 100, 1, Appearance "Open"

n

10

1 x 1 x 1 x x2 x3 x4 1 x x2 x3 x4

Mathematica_2014_complete.nb 119

Page 120: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Table Grids

ManipulateGridTablei, i^m, i, 1, n,

Alignment Left, Frame All, n, 1, 20, 1, m, 1, 100, 1

n

m

1 1

Für die folgenden "manipulierten" Plots wird einheitlich eine etwas kleinere Bildgröße

voreingestellt.

SetOptionsPlot, ParametricPlot, Graphics, ImageSize 300;

ü mehrere Parameter manipulieren

im nachfolgenen Beispiel werden zusätzlich Startparameter definiert :

ManipulatePlotSink x t, x, 0, 10,

k, 2, 1, 3, , 0.2, 0, 5, t, 0, 2

k

w

t

2 4 6 8 10

-1.0

-0.5

0.5

1.0

bei Grafiken ist es oft sinnvoll mit festem PlotRange zu arbeiten:

120 Mathematica_2014_complete.nb

Page 121: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulatePlotSinn1 x Sinn2 x, x, 0, 2 Pi, PlotRange 2,

n1, 14, 1, 20, n2, 2, 1, 20

n1

n2

1 2 3 4 5 6

-2

-1

1

2

ü Radio Buttons und Pop-up Menüs

ManipulatePlotSinn1 x Sinn2 x,

x, 0, 2 Pi, Filling filling, PlotRange 2,

n1, 8, 1, 20,

n2, 13, 1, 20,

filling, None, Axis, Top, Bottom, ControlType RadioButton

n1

n2

filling None Axis Top Bottom

1 2 3 4 5 6

-2

-1

1

2

wenn die Auswahl zu groß wird, erscheint automatisch ein Pop-Up Menü

Mathematica_2014_complete.nb 121

Page 122: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulatePlotSinn1 x Sinn2 x, x, 0, 2 Pi, Filling filling,

PlotRange 2, n1, 1, 20, n2, 1, 20, filling,

None, Axis, Top, Bottom, Automatic, 1, 0.5, 0, 0.5, 1

n1

n2

filling None

1 2 3 4 5 6

-2

-1

1

2

was man aber auch explizit mit ControlType Ø PopupMenu erreichen kann

ü Checkbox für True und False

ManipulatePlotSinn1 x Sinn2 x, x, 0, 2 Pi, Frame frame,

PlotRange 2, n1, 1, 20, n2, 1, 20, frame, True, False

n1

n2

frame

0 1 2 3 4 5 6-2

-1

0

1

2

122 Mathematica_2014_complete.nb

Page 123: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Anfangswerte und Labels

Ein schönes Beispiel mit Lissajous Kurven

app Appearance "Labeled";

ManipulateParametricPlota1 Sinn1 x p1, a2 Cosn2 x p2,

x, 0, 20 Pi, PlotRange 1, PerformanceGoal "Quality",

n1, 1, "Frequency 1", 1, 4, app,

a1, 1, "Amplitude 1", 0, 1, app,

p1, 0, "Phase 1", 0, 2 Pi, app,

n2, 54, "Frequency 2", 1, 4, app,

a2, 1, "Amplitude 2", 0, 1, app,

p2, 0, "Phase 2", 0, 2 Pi, app

Frequency 1 1

Amplitude 1 1

Phase 1 0

Frequency 2 54

Amplitude 2 1

Phase 2 0

-1.0 -0.5 0.5 1.0

-1.0

-0.5

0.5

1.0

die Empfindlichkeit der Regler kann erheblich gesteigert werden :

mit der Alt Taste um Faktor 20, mit Alt+Ctrl um Faktor 400

mit mit Alt+Ctrl+Shift um Faktor 8000

Mathematica_2014_complete.nb 123

Page 124: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

weitere Verschönerungen

ManipulateParametricPlota1 Sinn1 x p1, a2 Cosn2 x p2, x, 0, 20 Pi,

PlotRange 1, PerformanceGoal "Quality", ImageSize 200,

Style"Horizontal", 12, Bold, n1, 1, "Frequency", 1, 4,

a1, 1, "Amplitude", 0, 1, p1, 0, "Phase", 0, 2 Pi,

Delimiter, Style"Vertical", 12, Bold,

n2, 54, "Frequency", 1, 4, a2, 1, "Amplitude", 0, 1,

p2, 0, "Phase", 0, 2 Pi, ControlPlacement Left

Horizontal

Frequency

Amplitude

Phase

Vertical

Frequency

Amplitude

Phase

-1.0 -0.5 0.5 1.0

-1.0

-0.5

0.5

1.0

124 Mathematica_2014_complete.nb

Page 125: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü 2 D Sliders

ManipulateGraphicsLineTableCost, Sint, pt,

t, 2. Pi n, 2. Pi, 2. Pi n, PlotRange 1,

n, 50, 1, 200, 1, pt, 0, 0, 1, 1, 1, 1

n

pt

Mathematica_2014_complete.nb 125

Page 126: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Locators

ManipulateGraphicsLineTableCost, Sint, pt, t, 2. Pin, 2. Pi, 2. Pin,

PlotRange 1, n, 30, 1, 200, 1, pt, 0, 0, Locator

n

ã Polynom durch n Punkte

mit Alt - Klick lassen sich Punkte sowohl hinzufügen als auch löschen

126 Mathematica_2014_complete.nb

Page 127: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulatePlotInterpolatingPolynomialpoints, x, x, 2, 2,

PlotRange 4, 4, PlotStyle Red, Thick, ImageSize 350,

points, 1, 2, 0, 2, 1, 3,

Locator , LocatorAutoCreate True

-2 -1 1 2

-4

-2

2

4

eine vollständigere Übersicht über die Möglichkeiten mit Manipulate

und weitere Grafik-Elemente sind in der

Ergänzung zu Mathematica(3) auf der CIW Webseite zu finden.

ü Probleme und Lösungen

das folgende (inaktive) Beispiel zwingt den Mathematica Kernel zu einer ständigen Neu-

berechnung von f xManipulatefx_ : x Sinx; Plotfx, x, 0, xmax, xmax, 1, 10

im zweiten Beispiel ist f x global definiert und erzeugt keine Probleme

fx_ :Sin2 x

x

Mathematica_2014_complete.nb 127

Page 128: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulatePlotfx, x, 0, xmax, xmax, 1, 10

xmax

0.2 0.4 0.6 0.8 1.0

0.2

0.4

0.6

0.8

1.0

? f

Global`f

fx_ : Sin2 xx

Die korrekte Verwendung geschieht mit lokalen Parametern und Funktionen

mit Hilfe von Module und Block Umgebungen.

Darin kann f x lokal definiert werden.

ManipulateModulef, fx_ : x Sinx; Plotfx, x, 0, xmax,

xmax, 1, 10

xmax

0.2 0.4 0.6 0.8 1.0

0.2

0.4

0.6

0.8

128 Mathematica_2014_complete.nb

Page 129: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateBlockf, fx_ :Sin3 x

3 x; Plotfx, x, 0, xmax,

xmax, 1, 10

xmax

0.2 0.4 0.6 0.8 1.0

0.2

0.4

0.6

0.8

1.0

im nächsten Beispiel hat die globale Variable w nichts mit der lokalen Variablen w im Manipu-

late zu tun,

und kann dort nicht verändert werden

gt_ :Sin t

t

ManipulatePlotgt, t, 0, 10, , 1, 5

w

2 4 6 8 10

0.2

0.4

0.6

0.8

1.0

Mathematica_2014_complete.nb 129

Page 130: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Manipulate, t, gt, , 1, 5

w

1, t, gt

hierbei kann man sich mit einer neuen Variablen, z.B. w1 behelfen

Manipulate, t, gt . 1, 1, 1, 5

w1

1, t, gt

im Control Element w1 kann man die Anzeige auch wieder in w umbenennen

ManipulatePlotgt . 1, t, 0, 10,

1, 1, "", 0.001, 5

w

2 4 6 8 10

0.2

0.4

0.6

0.8

1.0

130 Mathematica_2014_complete.nb

Page 131: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

4. Analysis, Gleichungen und Gleichungssysteme, Differentialgleichungen und Bewegungsgleichungen

4.1. Analysis

ü Ableitungen

ã Einfache oder mehrfache Ableitungen Df , x

Eine Funktion y[x] kann einfach mit y', y'', usw (Apostroph) abgeleitet werden.

yx_ : x Logx

y'x1 Logx

y'''''x

6

x4

Die folgenden Ausdrücke sind in StandardForm, z.B.: y ''' Ctrl-Shift-N

yx1 Logx

yx1

x

y3x

1

x2

die zugrunde liegende Funktion ist: Df , x, bzw. Df , x, n und bezeichnet die "partielle

Ableitung"

Dyx, x1 Logx

Dyx, x, 3

1

x2

Mathematica_2014_complete.nb 131

Page 132: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

das mathematische Symbol für die partielle Ableitung kann durch Âpd oder mit der

Palette eingegeben werden

fx_ : LegendreP5, x

x fx1

815 210 x2 315 x4

Mit Shift-Ctrl-I (Eingabe Form) Shift-Ctrl-N (Standard Form) und Shift-Ctrl-T (Traditional

Form)

kann man leicht und schnell mal die Darstellung wechseln.

x,5fx945

ã Partielle Ableitungen für mehrdimensionale Funktionen

partielle Ableitung von x2 - y2 nach x

xx2 y22 x

oder nach x und y

Dx^2 y^2, x, y0

in der "Traditional Form" sieht die Eingabe etwas vertrauter aus:

∂2 x2 - y2∂x ∂ y

0

ã Totales Differential und totale Ableitung Dtf , x

ohne 2. Argument liefert Dtf das totale Differential df

Dtfx, yDty f0,1x, y Dtx f1,0x, y

Ergebnis in der "Traditional Form" :

(die TraditionalForm sollte aber besser nicht bei der Eingabe verwendet werden)

Dtfx, y TraditionalForm

„ y f 0,1x, y + „ x f 1,0x, y

zum Beispiel

132 Mathematica_2014_complete.nb

Page 133: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Dtx2 y22 x Dtx 2 y Dty

Ergebnis in der "Traditional Form" :

Dtx2 y2 TraditionalForm

2 x „ x - 2 y „ y

mit einem 2. Argument liefert Dtf , x die totale Ableitung nach x: df dx

Dtx2 y2, x2 x 2 y Dty, x

oder

Dtx2 y2, t2 x Dtx, t 2 y Dty, t

Ergebnis in der "Traditional Form" :

Dtx2 y2, t TraditionalForm

2 x„ x

„ t- 2 y

„ y

„ t

Beispiel: f x, z, t = x2 + z2 nicht explizit zeitabhängig, wie z.B. die meisten Lagrangefunk-

tionen

fx_, z_, t_ : x2 z2

partielle Ableitung:

t fx, z, t0

in der "Traditional Form" :

t fx, z, t TraditionalForm

0

totale Ableitung:

Dtfx, z, t, t2 x Dtx, t 2 z Dtz, t

2 x2 z2

in der "Traditional Form" :

Mathematica_2014_complete.nb 133

Page 134: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Dtfx, z, t, t Simplify TraditionalForm

x„x

„t+ z

„z

„t

x2 + z2

wenn aber die Zeit t explizit angegeben wird, sind partielle und totale Ableitungen bei

Mathematica identisch

totale Ableitung:

erst für eine beliebige Funktion rx, z mit x, z als Funktionen der Zeit t

Dtrxt, zt, t, t TraditionalForm

x£t r1,0,0xt, zt, t + z£t r0,1,0xt, zt, t + r0,0,1xt, zt, t

dann für die Funktion f x, y = x2 + z2 mit x, z als Funktionen der Zeit t

Dtfxt, zt, t, t TraditionalForm

2 xt x£t + 2 zt z£t

2 xt2 + zt2

partielle Ableitung:

t rxt, zt, t Simplify TraditionalForm

x£t r1,0,0xt, zt, t + z£t r0,1,0xt, zt, t + r0,0,1xt, zt, t

t fxt, zt, t Simplify TraditionalForm

xt x£t + zt z£t

xt2 + zt2

soll eine Konstante (z.B. die Masse m) nicht auch differenziert werden, kann man dies als

Option angeben:

Dtm xt, t, Constants mm xt

sonst erhält man einen Zusatzterm:

Dtm xt, t TraditionalForm

m x££t +„m

„ tx£t

in solchen Bewegungsgleichungen kann man aber genauso gut mit der "partiellen Ableitung"

arbeiten

134 Mathematica_2014_complete.nb

Page 135: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Dm xt, tm xt

ü Integrale

ã Unbestimmte Integrale

IntegrateSinx, xCosx

Das Integralzeichen und „x bekommt man mit Âint und ÂddÂ

Sinx x

Cosx

nicht ganz so trivial ist

Logx Sinx 1

x2 Expx x

1

2 x2 x x Cosx 2 x CosIntegralx 2 x ExpIntegralEix 2 Logx 2 x x Logx 2 Sinx x x Sinx

zur Probe kann man wieder differenzieren

x

1

2 x

2

x x Cosx 2 CosIntegralx

2 ExpIntegralEix 2 x Logx 2 x x Logx x Sinx 2 x x Sinx

1

2 x22 x x Cosx 2 x CosIntegralx 2 x ExpIntegralEix

2 Logx 2 x x Logx 2 Sinx x x Sinx

allerdings kann man dies erst nach einer Vereinfachung als ursprüngliche Funktion

wiedererkennen.

Simplify1 x x2 Logx Sinx

x2

ã Bestimmte Integrale

0

Sinx2 x

2

Mathematica_2014_complete.nb 135

Page 136: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Auch uneigentliche Integrale sind möglich (¶ bekommt man mit ÂinfÂ)

1

1

x2x

1

0

Expa x2 x

IfRea 0,

2 a, Integratea x2, x, 0, , Assumptions Rea 0

Mathematica gibt die allgemeinste Lösung des Integrals an, für Spezialfälle müssen Annah-

men über die Parameter angegeben werden

solche Optionen sind nur in der InputForm möglich

IntegrateExpa x^2, x, 0, Infinity, Assumptions Rea 0

2 a

einfacher (aber auch unsicher) ist es, die Fallunterscheidung abzuschalten

IntegrateExpa x^2,

x, 0, Infinity, GenerateConditions False

2 a

mehrdimenionale Integrale

0

1

0

2x Siny y x

1

2

Bei bestimmten Integralen, die über einen einfachen Pol mit Vorzeichenwechsel führen,

kann auch das Cauchy Hauptwertintegral ermittelt werden.

Integrate 1

x 1, x, 0, 3

Integrate::idiv : Integral of1

-1 + xdoes not converge on 0, 3.à

0

3 1

1 xx

136 Mathematica_2014_complete.nb

Page 137: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plot 1

x 1, x, 0, 3, Filling Axis

Hauptwertintegral (principal value integral):

Integrate 1

x 1, x, 0, 1 eps, Assumptions eps 0

Logeps

hwi Integrate 1

x 1, x, 0, 1 eps, Assumptions eps 0

Integrate 1

x 1, x, 1 eps, 3, Assumptions 0 eps 1

Log 2

eps Logeps

hwi Simplify

Log 2

eps Logeps

hwi PowerExpand

Log2

im Allgemeinen muss jedoch der Grenzfall eps -> 0 berechnet werden

Limithwi, eps 0Log2

in Mathematica genügt dafür die Option PrincipalValue -> True

Integrate 1

x 1, x, 0, 3, PrincipalValue True

Log2

Mathematica_2014_complete.nb 137

Page 138: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Bei Eingebung von zusätzlichen Optionen kann das Integralzeichen nicht benutzt werden.

ã Numerische Integration

in vielen Fällen liefert eine analytische Integration als Ergebnis spezielle Funktionen

IntegrateSinSinx, x, 0, Pi StruveH0, 1

N

1.78649

N, 50 &

1.7864874819500523366874236012519572937614804561287

oder

IntegrateSinSqrtLog1 x, x, 0, Pi

1

4 14 Erf 1

2 Log1 Erfi

2 Log1 1 Sin Log1

N

2.39176 0.

Chop

2.39176

oder auch überhaupt kein Ergebnis

IntegrateSin 1

x2 1, x, 0, 1

0

1

Sin 1

1 x2 x

N

0.698101

N, 30 &

0.698100626829193442752163971945

NIntegrateSin 1

x2 1, x, 0, 1

0.698101

138 Mathematica_2014_complete.nb

Page 139: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

NIntegrateSinSinx, x, 0, 1.78649

Der folgende Versuch einer genaueren Darstellung gelingt nicht.

Numerische Ergebnisse können nicht nachträglich erweitert werden.

N, 30 &

1.78649

Bei einer normalerweise 16-stelligen internen Maschinengenauigkeit ergibt sich eine etwa 6-

stellige absolute Genauigkeit des Integrals. Höhere Genauigkeit erzielt man mit

entsprechend höherer WorkingPrecision.

NIntegrateSinSinx, x, 0, Pi, WorkingPrecision 501.7864874819500523366874236012519572937614804561287

Beispiel eines 2-dim Integrals über eine Dreiecksfläche

NIntegrateExpx2 y2, x, 0, 1, y, 0, x0.722623

auch in diesem Fall gibt es eine analytische Lösung mit hypergeometrischen Reihen

0

1

0

x

x2y2y x

1

2HypergeometricPFQ1, 1, 3

2, 2, 1

bei analytischen Lösungen braucht man natürlich keine Workingprecision

N, 1000.7226228066941736144338319192179077041813074327602015236466145905187402161988902478714850361886118942

ü Grenzwerte

Limitxx, x 01

LimitLogx2x

, x

0

Mathematica_2014_complete.nb 139

Page 140: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

limxƕ

logx2x

0

LimitExpa x, x Limita x, x

Falls a positiv ist, z.B. bei einer Masse oder einer Wellenzahl etc., kann dies als zusätzliche

Annahme (Assumption) angegeben werden:

LimitExpa x, x , Assumptions a 00

Bei Grenzwerten, die von oben und unten verschieden sind, kann man eine Richtung

angeben

Direction -> 1 bedeutet von links nach rechts, bzw. unten nach oben

Limit1x, x 0, Direction 1

Limit1x, x 0, Direction

LimitSin1x, x 0Interval1, 1

LimitSin1x, x 0

ü Einschub Intervallrechnung

x1 Interval0.1, 0.1Interval0.1, 0.1

x2 2.0 x12

Interval1.95, 2.05

y1 x1x2

Interval0.205, 0.205

140 Mathematica_2014_complete.nb

Page 141: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

y1 3 x1

x2

Interval1.41463, 1.58974

2 selbst definierte Funktionen, die Intervallrechnung einfacher machen

makeinta_, _ : Intervala , a makecenterinterv_ : Modulemin1, max1, mid,

min1 Mininterv;

max1 Maxinterv;

mid min1 max1 2;

mid, min1 mid, max1 mid

y1 makecenter

1.50219, 0.0875547, 0.0875547

makeint1.5021888680425266`, 0.08755472170106393`Interval1.41463, 1.58974

ü Reihenentwicklungen

Removefformale Taylor - Entwicklung :

Seriesfx, x, x0, 3

fx0 fx0 x x0 1

2fx0 x x02 1

6f3x0 x x03 Ox x04

auch als Entwicklung in mehreren Dimensionen möglich :

Seriesgx, y, x, x0, 3, y, y0, 2

gx0, y0 g0,1x0, y0 y y0 1

2g0,2x0, y0 y y02 Oy y03

g1,0x0, y0 g1,1x0, y0 y y0 1

2g1,2x0, y0 y y02 Oy y03 x x0

1

2g2,0x0, y0 1

2g2,1x0, y0 y y0 1

4g2,2x0, y0 y y02 Oy y03 x x02

1

6g3,0x0, y0 1

6g3,1x0, y0 y y0 1

12g3,2x0, y0 y y02 Oy y03 x x03

Ox x04

Sinus Taylorreihe

SeriesSinx, x, 0, 8

x x3

6

x5

120

x7

5040 Ox9

Mathematica_2014_complete.nb 141

Page 142: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

so wird aus einer Reihe eine normale Funktion :

f0x_ Normal

x x3

6

x5

120

x7

5040

Sinus Taylorreihe um p/2

f1x_ SeriesSinx, x, 2, 8 Normal Simplify

1 1

8 2 x2 1

384 2 x4 2 x6

46 080

2 x8

40 320

N Expand

0.0000247373 0.999843 x 0.000447261 x2 0.167421 x3

0.00083204 x4 0.00770694 x5 0.000324584 x6 0.000311666 x7 0.0000248016 x8

mit Chop kann man kleine Terme eines Ausdrucks vernachlässigen, als Default gilt < 10-10

so wie hier kann man aber eine beliebige Schranke angeben:

f2x_ Chop, 104 &

0.999843 x 0.000447261 x2 0.167421 x3

0.00083204 x4 0.00770694 x5 0.000324584 x6 0.000311666 x7

was aber in diesem Fall nicht sinnvoll wäre, wie man im nächsten Plot sieht

PlotTooltipSinx, f0x, f1x, f2x,

x, 0, 2 , PlotStyle Red, Blue, Green, Cyan

1 2 3 4 5 6

-6

-5

-4

-3

-2

-1

1

142 Mathematica_2014_complete.nb

Page 143: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlottooltipSinx, f0x, f1x, f2x, Sin, f0, f1, f2 Evaluate, x, 0, 2 , PlotStyle Red, Blue, Green, Cyan

1 2 3 4 5 6

-6

-5

-4

-3

-2

-1

1

im nächsten Beispiel vergleichen wir eine Entwicklung um Null mit einer asymptotischen

Entwicklung um Unendlich

h0x_ :ArcTanx Sinx2

1 x23

h1x_ Seriesh0x, x, 0, 10 Normal

x3 11 x5

3376 x7

4514 453 x9

945

h2x_ Seriesh0x, x, , 10 Normal

3

x10

10

3 x9

3

2 x8

1

x7

2 x6Sinx2

PlotTooltiph0x, h1x, h2x, x, 0, 4, PlotRange 0.2,

PlotStyle Red, Blue, Green

1 2 3 4

-0.2

-0.1

0.1

0.2

Mathematica_2014_complete.nb 143

Page 144: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

LogPlotAbsh0x h2xh0x, x, 0, 100

20 40 60 80 100

10-9

10-7

10-5

0.001

SeriesGamma1 x, x, , 10

1Log 1

x xO 1

x11 2 x

2

6 x

2

144 x32

139

2

25 920 x52

571

2

1 244 160 x72

163 879

2

104 509 440 x92

5 246 819

2

37 623 398 400 x112

534 703 531

2

451 480 780 800 x132

4 483 131 259

2

43 342 154 956 800 x152

432 261 921 612 371

2

257 452 400 443 392 000 x172

6 232 523 202 521 089

2

43 252 003 274 489 856 000 x192 O 1

x212

N Expand

1.1. Log 1

x xO 1

x11 2.50663 x

0.208886

x0.00870357

x320.00672109

x520.000575201

x720.00196529

x92

0.000174783

x1120.00148434

x1320.000129638

x1520.00210431

x1720.0001806

x192 O 1

x212

g10x_ Normal;

144 Mathematica_2014_complete.nb

Page 145: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

LogPlotGamma1 x, g10x, x, 0, 100

20 40 60 80 100

1027

1054

1081

10108

10135

SeriesSphericalBesselJ3, x, x, 0, 10 Normal

x3

105

x5

1890

x7

83 160

x9

6 486 480

Bie der folgenden Reihenentwicklung um den Pol der Tangensfunktion bei p/2 bekommt man

als Ergebnis eine Laurentreihe

SeriesTanx, x, 2, 10 Normal

1

2 x

1

3

2 x

1

45

2 x

3

2

945

2 x

5

2 x7

47252

2 x9

93 555

ü Laurentreihen und Residuen

Das Residuum einer Funktion ist der -1. Koeffizient ihrer Laurentreihe

laurent a2

x x02

a1x x0

a0 a1 x x0

a2x x02

a1x x0

a0 x x0 a1

Residuelaurent, x, x0a1

zum Beispiel für eine gebrochen rationale Funktion

quot1 1

x x 1 x 22

1

2 x2 1 x x

Partialbruchzerlegung

Mathematica_2014_complete.nb 145

Page 146: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

quot1 Apart

1

2 2 x2

3

4 2 x 1

1 x

1

4 x

Residuequot1, x, 0

1

4

Residuequot1, x, 11

Residuequot1, x, 2

3

4

oder für eine beliebige singuläre Funktion

Series 1

Sinx3, x, 0, 5

1

x3

1

2 x17 x

120457 x3

15 1203287 x5

604 800 Ox6

Residue 1

Sinx3, x, 0

1

2

im Folgenden handelt es sich um eine wesentliche Singularität am Ort x = 0

in diesem Fall existiert weder eine Laurentreihe noch ein Residuum

Series 1

x2 , x, 0, 5

1

x2

4.2. Lösungen von Gleichungen und Gleichungssysteme

ü Exakte Lösungen von Gleichungen

In Mathematica werden Gleichungen mit doppeltem Gleichheitszeichen definiert:

eqn1 a x2 b x c 0

c b x a x2 0

146 Mathematica_2014_complete.nb

Page 147: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Algebraische Gleichungen werden bis zum Grad n=4 von Mathematica exakt gelöst mit

Angabe aller Lösungen.

Solveeqn1, x

x b b2 4 a c

2 a, x b b2 4 a c

2 a

Alle Lösungen unter Berücksichtigung von Ausnahmefällen, wie z.B. a=0 findet man mit

Reduceeqn1, x

a 0 && x b b2 4 a c

2 a x b b2 4 a c

2 a

a 0 && b 0 && x c

b c 0 && b 0 && a 0

Solve löst auch Systeme von Gleichungen, die als Liste eingegeben werden

eqn2 a x2 y 1, b y x 15a x2 y 1, x b y 15

solution2 Solveeqn2, x, y

y 1

2

1

a b230

b

1 60 a b 4 a b2

a b2, x

1 1 60 a b 4 a b2

2 a b,

y 1

2 a b215

b

1 60 a b 4 a b2

2 a b2, x

1 1 60 a b 4 a b2

2 a b

Die Lösung lässt sich durch Einsetzen überprüfen

Simplifyeqn2 . solution2True, True, True, True

Man kann aber auch in einem Gleichungssystem Variable eliminieren,

um so Gleichungen mit weniger Unbekannten zu erhalten

Eliminateeqn2, x30 a b y a b2 y2 1 225 a y

Die Funktion Solve arbeitet mit Inversen Funktionen.

Sofern diese existieren, sind auch nichtalgebraische Lösungen möglich.

SolveArcSinx a, xx Sina

Mathematica_2014_complete.nb 147

Page 148: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

SolveExpx y 2, x 2 y 1, x, ySolve::ifun :

Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution

information.à

x 1

21

2 1 8 Log2 , y

1

41 1 8 Log2 ,

x 1

21

2 1 8 Log2 , y

1

41 1 8 Log2

SimplifyExpx y 2, x 2 y 1 . True, True, True, True

ReduceExpx y 2, x 2 y 1, x, yC1 Integers &&

x 1

21 1 8 2 C1 Log2 x 1

21 1 8 2 C1 Log2 && y

1 x

2

Bei höherem Polynomgrad gibt es im allgemeinen keine exakten Lösungen mehr.

Solvex5 5 x2 1 0, xx Root1 5 12 15 &, 1, x Root1 5 12 15 &, 2,x Root1 5 12 15 &, 3, x Root1 5 12 15 &, 4, x Root1 5 12 15 &, 5

ü Numerische Lösungen algebraischer Gleichungen

In solchen Fällen helfen dann die numerischen Fähigkeiten von Mathematica. Entweder

NSolve[...] oder N[Solve[...]] oder Solve[...]//N . Die Lösungen sind immer

noch vollständig.

NSolvex5 5 x2 1 0, xx 0.837998 1.51442 , x 0.837998 1.51442 ,x 0.443366, x 0.451384, x 1.66798

ü Numerische Lösungen nichtalgebraischer Gleichungen

Transzendente Gleichungen können natürlich nicht vollständig gelöst werden, da es mitunter une-

ndlich viele Lösungen geben kann.

Hier verwendet man die numerische Funktion "FindRoot", bei der ein Startwert angegeben werden

muss. Mathematica sucht dann die Lösung in der Nähe des Startwertes.

FindRootCosx x, x, 1x 0.739085

FindRootCosa x x, a Sina x 1, x, 1, a, 1x 0.652185, a 1.31916

148 Mathematica_2014_complete.nb

Page 149: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Für das nächste Beispiel gibt es unendlich viele Lösungen, Mathematica findet die Lösung,

welche am nächsten zum Startwert liegt:

FindRootSinx2 0, x, 2x 1.77245

PlotSinx2, x, 0, 5

1 2 3 4 5

-1.0

-0.5

0.5

1.0

Im nächsten Beispiel wird ein Intervall für die Suche angegeben, in dem jedoch keine Null-

stelle liegt:

FindRootSinx2 0, x, 1., .5, 1.5FindRoot::reged :

The point 0.5 is at the edge of the search region 0.5, 1.5 in coordinate 1 and the computed searchdirection points outside the region.à

x 0.5

FindRootSinx2 0, x, 4.2, 4, 4.5x 4.34161

Um eine Lösung auch im Komplexen zu finden, muss man einen komplexen Startwert

angeben:

FindRootSinx2 , x, 1FindRoot::lstol :

The line search decreased the step size to within tolerance specified by AccuracyGoal and PrecisionGoal

but was unable to find a sufficient decrease in the merit function. You may need

more than MachinePrecision digits of working precision to meet these tolerances.à

x 1.25331

FindRootSinx2 , x, 1 x 1.40864 0.643007

Mathematica_2014_complete.nb 149

Page 150: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

4.3. Lösungen von Differentialgleichungen

ü Exakte Lösungen von DGL 1. Ordnung

Removeyim ersten Fall gibt DSolve als Lösung eine Regel für yx

DSolvey'x yx 1, yx, xyx 1 x C1

diese Regel passt jedoch nicht auf y ' xy'x yx 1 .

1 x C1 yx 1

man kann aus der Lösung auch einen Ausdruck (expression) machen

yx . 11 x C1

oder eine Funktion, z.B. f xfx_ yx . DSolvey'x yx 1, yx, x11 x C1

DGL 1. O. als Anfangswertproblem mit y0 = y0

lsg1 DSolvey'x yx 1, y0 y0, yx, xfx_ yx . lsg11yx x 1 x y0

x 1 x y0

im folgenden Beispiel gibt DSolve als Lösung eine Regel für die pure function y

DSolvey'x yx 1, y, xy Functionx, 1 x C1

die pure function lässt sich direkt mit der DGL testen

y'x yx 1 .

True

150 Mathematica_2014_complete.nb

Page 151: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Exakte Lösungen von DGL 2. Ordnung

für eine allgemeine DGL 2. O. gibt es 2 freie Konstanten C[1] und C[2], die durch

Anfangswerte, bzw. Randwerte festgelegt werden müssen

DSolveyx yx, yx, xyx x C1 x C2

Ein Anfangswertproblem mit den Startwerten y(0)=1 und y'(0)=2

lsg1 DSolveyx yx, y0 1, y0 2, yx, x

yx 1

2x 1 3 2 x

Lösung als pure function

lsg2 DSolveyx yx, y0 1, y0 2, y, x

y Functionx, 1

2x 1 3 2 x

mit Hilfe von Ersetzungsregeln bekommt man eine funktionelle Form der Lösung,

mit der man beliebig weiterrechnen und plotten kann

fx_ yx . lsg111

2x 1 3 2 x

fx_ yx . lsg211

2x 1 3 2 x

oder einfach

f1 y . lsg21

Functionx, 1

2x 1 3 2 x

Unterschiede zwischen der Lösung als y(x) und als pure function y

yx, yx, yx . lsg11

12x 1 3 2 x, yx, yx

yx, yx, yx . lsg21

12x 1 3 2 x, 3 x

1

2x 1 3 2 x, 1

2x 1 3 2 x

Vergleich Anfangswertproblem mit Randwertproblem

1.) Anfangswertproblem: y0 = y0, y ' 0 = v0

Mathematica_2014_complete.nb 151

Page 152: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Clearg, v0, y0, y1

yt . DSolveyt g, y0 y0, y0 v0, yt, t1 Simplify

g t2

2 t v0 y0

2.) Randwertproblem: yt0 = y0, yt1 = y1

yt . DSolveyt g, yt0 y0, yt1 y1, yt, t1 Simplify

g t t0 t t1 t0 t1 2 t1 y0 t y0 y1 t0 y12 t0 t1

bis auf wenige Ausnahmen sind jedoch die meisten DGLs nicht analytisch lösbar,

hier noch ein paar Beispiele mit Lösung, ausgedrückt durch spezielle Funktionen

DSolveyx a Cosx yx, yx, x

yx C1 MathieuC0, 2 a,x

2 C2 MathieuS0, 2 a,

x

2

DSolveyx x yx 0, yx, xyx AiryAix C1 AiryBix C2

DSolvey3x Expx yx 0, yx, xyx C1 HypergeometricPFQ, 1, 1, x

C2 MeijerG, , 0, 0, 0, x C3 MeijerG, , 0, 0, 0, , x

PlotMeijerG, , 0, 0, 0, x Re, x, 3, 3

-3 -2 -1 1 2 3

-2

2

4

6

8

152 Mathematica_2014_complete.nb

Page 153: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü DGLs höherer Ordnung als Systeme von gekoppelten DGLs 1. Ordnung

DSolveyx x yx 0, yx, xyx AiryAix C1 AiryBix C2

statt y '' x = f y ', y, x kann man auch ein System von 2 gekoppelten DGL 1. O

definieren:y ' x = gv, y, x = vxv ' x = f v, y, xDSolvey'x vx, v'x x yx 0, yx, vx, xyx AiryAix C1 AiryBix C2, vx AiryAiPrimex C1 AiryBiPrimex C2

statt y ''' x = f y '', y ', y, x kann man auch ein System von 3 gekoppelten DGL 1. O

definieren:y ' x = gv, z, y, x = zxz ' x = hv, z, y, x = vxv ' x = f v, z, y, x

DSolvey3x Expx yx 0, yx, xyx C1 HypergeometricPFQ, 1, 1, x

C2 MeijerG, , 0, 0, 0, x C3 MeijerG, , 0, 0, 0, , x

Das nächste System von 3 gekoppelten DGL wird jedoch von Mathematica nicht mehr

gelöst, obwohl es offensichtlich

eine exakte Lösung gibt. Es kann jedoch numerisch gelöst werden.

DSolvey'x zx, z'x vx, v'x Expx yx 0, y, z, v, x

DSolveyx zx, zx vx, x yx vx 0, y, z, v, x

NDSolvey'x zx, z'x vx, v'x Expx yx,y0 1, z0 0, v0 0, yx, zx, vx, x, 0, 10

yx InterpolatingFunction0., 10., x,zx InterpolatingFunction0., 10., x,vx InterpolatingFunction0., 10., x

ü Numerische Lösungen von Differentialgleichungen

das nächste Beispiel ist eine nichtlineare DGL, die keine analytische Lösung besitzt:

DSolveyx a Sinyx x2, yx, xDSolveyx a x2 Sinyx, yx, x

Mathematica_2014_complete.nb 153

Page 154: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

In solchen Fällen hilft die Numerik weiter, mit der sehr viele DGLs bequem gelöst werden

können.

Natürlich müssen dafür alle Parameter durch numerische Konstanten ersetzt werden und

die Lösung kann nur für einen eingeschränkten Bereich berechnet werden.

Für eine graphische Darstellung der Lösung reicht dies im allgemeinen aus, ansonsten

müssen die einzelnen Bereiche nacheinander berechnet werden.

NDSolveyx a Sinyx x2, y0 1, y0 1 . a 1,

yx, x, 0, 20yx InterpolatingFunction0., 20., x

oder auch wieder als pure function

NDSolveyx a Sinyx x2, y0 1, y0 1 . a 1, y, x, 0, 20

y InterpolatingFunction0., 20.,

Die Lösung wird intern als Interpolationspolynom gespeichert, die mit der gewünschten oder

voreingestellten Genauigkeit für den ganzen Definitionsbereich gilt. Mit Hilfe der Erset-

zungsregeln erzeugt man eine normale Funktion g(x), die man danach weiter verwenden

kann, z.B. zum Plotten, Differenzieren oder Integrieren, etc

gx_ yx . 1InterpolatingFunction0., 20., x

Plotgx, x, 0, 20

5 10 15 20

1.5

2.0

2.5

3.0

3.5

4.0

versucht man jedoch die Lösung für wesentlich größere Intervalle zu berechnen, bekomm

man

eine Fehlermeldung, dass die maximale Anzahl von Schritten (10 000) erreicht ist

154 Mathematica_2014_complete.nb

Page 155: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

NDSolveyx a Sinyx x2, y0 1, y0 1. a 1, yx, x, 0, 100

NDSolve::mxst : Maximum number of 10000 steps reached at the point x == 34.443368153664494`.à

yx InterpolatingFunction0., 34.4434, x

mit der Option: MaxSteps->100 000 oder auch mehr kann man auch größere Bereiche auf

Kosten längerer Rechenzeiten und Speicherplatz berechnen

NDSolveyx a Sinyx x2, y0 1, y0 1. a 1, yx, x, 0, 100, MaxSteps 100000

yx InterpolatingFunction0., 100., x

beim nächsten (inaktiven) Beispiel ist endgültig Schluss (abhängig vom vorhandenen RAM)

NDSolveyx a Sinyx x2, y0 1, y0 1. a 1, yx,

x, 0, 1000, MaxSteps 10000000 Timing167.719, yx InterpolatingFunction0., 1000., x

bei numerischen Lösungen kann man als gesuchte Funktionen auch deren Ableitungen

gleich mit berechnen lassen

nlsg NDSolveyx x Sinyx , y0 1, y0 1,yx, y'x, y''x, x, 0, 20

yx InterpolatingFunction0., 20., x,yx InterpolatingFunction0., 20., x,yx InterpolatingFunction0., 20., x

Plotyx, y'x, y''x . nlsg1 Evaluate, x, 0, 20

5 10 15 20

-10

-5

5

10

löst man die DGL jedoch für eine pure function, dann hat man dies garnicht nötig,

da die Regel mit pure function auf alle Ableitungen ebenso anwendbar ist

Mathematica_2014_complete.nb 155

Page 156: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

nlsg1

NDSolveyx x Sinyx , y0 1, y0 1, y, x, 0, 20y InterpolatingFunction0., 20.,

Plotyx, y'x, y''x . nlsg11 Evaluate, x, 0, 20

5 10 15 20

-10

-5

5

10

4.4. Bewegungsgleichungen mit Newton II (Beispiel Duffing-Oszillator)

ü Potential V(x) = a x^2 + b x^4

Beispiel: Duffing-Oszillator

nichtlineare Schwingungen

Duffinga_, b_, x_ a x2 b x4

a x2 b x4

ã Beispiel: a<0 und b>0

Potx_ : Duffing2, 0.2, x

156 Mathematica_2014_complete.nb

Page 157: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotPotx, x, 4.2, 4.2, Frame True,

FrameLabel "x", "Vx", PlotLabel "DuffingOszillator",

PlotStyle Red, BaseStyle 14, FontFamily "CourierBold"

-4 -2 0 2 4-5

0

5

10

15

20

25

x

Vx

Duffing-Oszillator

FindMinimumPotx, x, 25., x 2.23607

ü Kraft = -Gradient (Potential)

Kraft Potx . x xt4 xt 0.8 xt3

ü Lösung der Bewegungsgleichung: x'' = Kraft, bzw. x' = v und v' = Kraft

DSolvex''t Kraft, x'0 0, x0 x0, xt, tDSolve::bvimp :

General solution contains implicit solutions. In the boundary value problem these solutions will be ignored,

so some of the solutions will be lost.à

Für diese nichtlineare DGL ist eine analytische Lösung nicht möglich.

Daher löst man solche DGLs im Allgemeinen numerisch.

Bei einer numerischen Rechnung müssen natürlich auch alle Parameter und Anfangswerte,

bzw. Randwerte explizit mit einem numerischen Wert angegeben werden

NDSolvext vt, vt Kraft, x0 2, v0 0,xt, vt, t, 0, 10

xt InterpolatingFunction0., 10., t,vt InterpolatingFunction0., 10., t

lsg 1;

Mathematica_2014_complete.nb 157

Page 158: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plotxt . lsg, t, 0, 10, PlotStyle Red, PlotRange 4

2 4 6 8 10

-4

-2

2

4

Im nächsten Beispiel ist die Energie des Teilchen höher als die Potentialbarriere bei x=0

lsg NDSolvext vt, vt Kraft, x0 3.5, v0 0,xt, vt, t, 0, 10

xt InterpolatingFunction0., 10., t,vt InterpolatingFunction0., 10., t

Plotxt . lsg, t, 0, 10, PlotStyle Red, PlotRange 4

2 4 6 8 10

-4

-2

2

4

158 Mathematica_2014_complete.nb

Page 159: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Lösung für die Geschwindigkeit v(t)

Plotvt . lsg, t, 0, 10, PlotStyle Blue

2 4 6 8 10

-4

-2

2

4

ü und schließlich die Darstellung im Phasenraum (x(t), v(t))

warum erscheint im 1. Versuch des ParametricPlots keine Figur?

ParametricPlotxt . lsg, vt . lsg,t, 0, 10, PlotStyle Magenta

0.2 0.4 0.6 0.8 1.0

0.2

0.4

0.6

0.8

1.0

xt . lsg, vt . lsg . t 1

0.0481846, 3.32179

bei manchen Funktionen, wie hier bei ParametricPlot muss man genau auf die Listenstruktur

achten

Mathematica_2014_complete.nb 159

Page 160: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

xt . lsg1, vt . lsg1 . t 1

0.0481846, 3.32179

alternativ würde aber auch die folgende Schreibweise funktionieren

ParametricPlotxt, vt . lsg, t, 0, 10, PlotStyle Magenta

-3 -2 -1 1 2 3

-4

-2

2

4

xt, vt . lsg . t 1

0.0481846, 3.32179

eine weitere Möglichkeit zur Vermeidung dieses Problems bietet die Funktion: Flatten[...]

damit werden Listenstrukturen vereinfacht

Flatten0.0481846, 3.32179

lsg NDSolvext vt, vt Kraft, x0 3.5, v0 0,xt, vt, t, 0, 10

xt InterpolatingFunction0., 10., t,vt InterpolatingFunction0., 10., t

160 Mathematica_2014_complete.nb

Page 161: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

lsg NDSolvext vt, vt Kraft, x0 3.5, v0 0,xt, vt, t, 0, 10 Flatten

xt InterpolatingFunction0., 10., t,vt InterpolatingFunction0., 10., t

ü AspectRatio

ein AspectRatio ∫ 1 fällt bei anharmonischen Bewegungen nicht so sehr auf

ParametricPlotxt, vt . lsg, t, 0, 10, AspectRatio 0.61

-3 -2 -1 1 2 3

-4

-2

2

4

jedoch um so stärker bei harmonischen Schwingungen, hier erwartet man einen perfekten

Kreis

lsg NDSolvext vt, vt Kraft, x0 2.2, v0 0,xt, vt, t, 0, 10;

ParametricPlotxt, vt . lsg, t, 0, 10

Mathematica_2014_complete.nb 161

Page 162: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

2.21 2.22 2.23 2.24 2.25 2.26 2.27

-0.10

-0.05

0.05

0.10

162 Mathematica_2014_complete.nb

Page 163: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ParametricPlotxt, vt . lsg, t, 0, 10, AspectRatio 0.61

2.21 2.22 2.23 2.24 2.25 2.26 2.27

-0.10

-0.05

0.05

0.10

den Kreis muss man mit AspectRatio -> 1 erzwingen:

ParametricPlotxt, vt . lsg, t, 0, 10, AspectRatio 1

2.21 2.22 2.23 2.24 2.25 2.26 2.27

-0.10

-0.05

0.05

0.10

im nächsten aufwändigeren Beispiel wird der AspectRatio manuell eingestellt

ü Phasenraumdiagramm mit Manipulate

Darstellung des Phasenraums y x über dem Potential V x mit Manipulate

der Anfangswert x0 ist durch eine grüne Linie und einen grünen Punkt dargestellt

Mathematica_2014_complete.nb 163

Page 164: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateModulelsg,lsg NDSolvext vt, vt Kraft, x0 x0, v0 0,

xt, vt, t, 0, 20;ShowParametricPlotxt, vt . lsg,

t, 0, 20, PlotRange 4.5, 4.5, 5.5, 5.5 plr,PlotStyle Thick, Red, AspectRatio asp, ImageSize 500,

Prolog Green, Diskx0, Potx0, 0.1, 0.25,Linex0, 9, x0, 9,

PlotPotx, x, 5, 5, ImageSize 500,asp, 0.5, "aspect ratio", 0.3, 1.3, Appearance "Labeled",x0, 2.4, 6, 6, ImageSize Large,plr, 1, 0.3, 3, ControlType VerticalSlider,

ControlPlacement Right

aspect ratio 0.5

x0

-4 -2 2 4

-4

-2

2

4

plr

4.5. Euler-Lagrange-Bewegungsgleichungen (Beispiel Federpendel)

ü Beispiel Federpendel mit Lagrange-Formalismus

Beispiel: Federpendel im homogenen Erdfeld (in 1 Dimension)

Aufstellung von Bewegungsgleichungen mit dem Euler - Lagrange - Formalismus

Numerische Lösung der Bewegungsgleichungen

Grafische Darstellung der Bewegung im Orts - und Phasenraum

164 Mathematica_2014_complete.nb

Page 165: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Eine punktförmige Masse m hängt an einer Feder mit der Federkonstanten c. Die Ruhelänge der Feder

sei L0 (siehe Abb. 1). Durch Einwirkung des Erdfeldes (g = 9.81 m sec2) wird die Feder auf die

Länge L1 gespannt.

Zum Zeitpunkt t = 0 wird der Körper am Ort x = L0 + x0 losgelassen und dadurch in Schwingungen

versetzt. Berechne die Bewegung des Körpers und zeichne den zeitlichen Verlauf x(t) und die Darstel-

lung im Phasenraum x† als Funktion von x.

Abb. 1 : Federpendel im homogenen Erdfeld

Lagrange - Funktion : L = T - V

T : kinetische Energie

V : potentielle Energie

ü kinetische und potentielle Energie

kinetische Energie T: ( hier nur von der Geschwindigkeit v t = x ' t abhängig, nicht aber von x t )

T 1

2m xt2

1

2m xt2

potentielle Energie V: ( hier nur von x t abhängig, nicht aber von x ' t )

V m g xt 1

2c L0 xt2

1

2c L0 xt2 g m xt

Lagrange-Funktion L=T-V:

L T V

1

2c L0 xt2 g m xt 1

2m xt2

Mathematica_2014_complete.nb 165

Page 166: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Aufstellen der Bewegungsgleichung

t

Lx t L

x t 0

als erstes soll nur nochmal die Lagrange-Bewegungsgleichung dargestellt werden:

durch Anwendung der Funktion HoldForm oder auch Hold wird der Ausdruck nicht ausgerechnet,

sondern bleibt so wie er eingegeben wird,

nur die Formattierung, hier TraditionalForm, wird ausgeführt

DtDL, x't, t DL, xt 0 HoldForm TraditionalForm„

„ t

∑L

∑ x£t -∑L

∑ xt 0

DtDL, x't, t DL, xt 0g m c L0 xt Dtm, t xt m xt 0

DtDL, x't, t DL, xt 0 TraditionalForm

-c L0 - xt - g m + m x££t +„m

„ tx£t 0

die Masse m und die Federkonsante c sind Konstanten

DtDL, x't, t, Constants m, c DL, xt 0 TraditionalForm

-c L0 - xt - g m + m x££t 0

oder man gibt m und c global das Attribut: Constant

SetAttributesm, c, Constant

DtDL, x't, t DL, xt 0 TraditionalForm-c L0 - xt - g m + m x££t 0

wenn alle Zeitabhängigkeiten explizit angegeben sind, braucht man keine totale Ableitung, es reicht

dann eine partielle Ableitung nach t

DDL, x't, t DL, xt 0 TraditionalForm-c L0 - xt - g m + m x££t 0

bwgl

g m c L0 xt m xt 0

nur zur Demonstration: Darstellung der Gleichung inclusive der Definition auf der linken

Seite:

166 Mathematica_2014_complete.nb

Page 167: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

HoldFormDtDL, x't, t DL, xt DtDL, x't, t DL, xt 0 TraditionalForm

„ t

∑L

∑ x£t -∑L

∑ xt -c L0 - xt - g m + m x££t 0

ü Lösung der Bewegungsgleichung

In diesem einfachen Beispiel ist eine analytische Lösung möglich,

wenn nicht kann jede DGL mit NDSolve[{...}, x[t], {t,0, tmax}]

auch numerisch gelöst werden.

DSolvebwgl, x'0 0, x0 L0 x0, xt, t

xt c L0 g m g m Cos c t

m c x0 Cos c t

m

c

. c m ^2 PowerExpand

xt g m L0 m 2 g m Cost m x0 2 Cost m 2

hier wird wieder Flatten angewandt, damit die Liste "flach" wird

lsg Simplify Flatten

xt L0 g

2 x0

g

2Cost

ü Einsetzen der Parameter und graphische Darstellung x(t)

parameter g 9.81, 1, L0 5, x0 1g 9.81, 1, L0 5, x0 1

x1 Clear

x1t_ xt . lsg . parameter14.81 8.81 Cost

Ruhelage x1Pi214.81

Mathematica_2014_complete.nb 167

Page 168: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plotx1t, t, 0, 10, AxesOrigin 0, Ruhelage,PlotRange 25, 0, PlotStyle Red, PlotLabel "Pendelschwingung",

FrameLabel "t", "x t ", Frame True

0 2 4 6 8 100

5

10

15

20

25

t

xt

Pendelschwingung

alternativ unter Verwendung von Epilog:

Plotx1t, t, 0, 10, PlotRange 25, 0,PlotStyle Red, PlotLabel "Pendelschwingung",

FrameLabel "t", "x t ", Frame True,

Epilog Blue, Thick, Line0, Ruhelage, 10, Ruhelage

0 2 4 6 8 100

5

10

15

20

25

t

xt

Pendelschwingung

168 Mathematica_2014_complete.nb

Page 169: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Geschwindigkeit x

(t) als Funktion der Zeit t

Plotx1t, t, 0, 10, PlotLabel "Geschwindigkeit: xt"

2 4 6 8 10

-5

5

Geschwindigkeit: x° t

ü Darstellung im Phasenraum x(t), x†(t) als Parameterdarstellung mit Parameter t

ParametricPlotx1t, x1t, t, 0, 10, PlotStyle Red,

AxesOrigin Ruhelage, 0, PlotLabel "Phasenraumdiagramm",

FrameLabel "xt", "xt", Frame True

10 15 20

-5

0

5

xt

x° t

Phasenraumdiagramm

Mathematica_2014_complete.nb 169

Page 170: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

5. Programmieren mit Mathematica

5.1. Definition von Funktionen und Prozeduren

ü Übersicht

Prozeduren im herkömmlichen Sinne einer prozeduralen Sprache gibt es nicht.

Letztlich sind alle Definitionen gewöhnliche Regeln.

Die syntaktische Ähnlichkeit mit Prozeduren ist allerdings beabsichtigt.

ü Typische Definition einer Funktion

Clearf1

f1x_ : x2 1

f1a b1 a b2

ü Typische Definition einer Prozedur mit dem Befehl: Module[...]

Polardiagrammr_, phi_, phi0_, phi1_ : Modulex, y,x r Cosphi; y r Sinphi;ParametricPlotx, y,

phi, phi0, phi1, AspectRatio Automatic

Polardiagramm1 Sinphi, phi, 0, 2

-1.0 -0.5 0.5 1.0

0.5

1.0

1.5

2.0

170 Mathematica_2014_complete.nb

Page 171: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Polardiagramm1 Sin5 phi, phi, 0, 2

-1.5 -1.0 -0.5 0.5 1.0 1.5

-1.5

-1.0

-0.5

0.5

1.0

1.5

2.0

diese neue Funktion Polardiagramm tut das gleiche wie die Mathematica-Funktion PolarPlot

5.2. Bedingte Anweisungen

ü Übersicht

If[...] und Switch[...] sind ähnlich wie in C.

Anstelle einer Kette von if..then..else..if.. kann man Which[...] verwenden.

ü If

func1x_ : Ifx 0, 1

x,

oder die sphärische Besselfunktion j0x

j0x_ : Ifx 0, Sinxx

, 1

Mathematica_2014_complete.nb 171

Page 172: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Tablefunc1x, x, 2, 2 typisches

Beispiel für eine Tabelle mit inkrementellen Werten Tablej0x, x, 1, 0, 1.0, 2.0 Tabelle mit beliebigen Werten j0 1, 0, 1.0, 2.0 am einfachsten

erzeugt man diese letztere Tabelle mit Map

12, 1, , 1,

1

2

Sin1, 1, 0.841471, 0.454649

Sin1, 1, 0.841471, 0.454649

ü Switch

func2n_ : Switchn,0, f0x,1, f1x,_, defx

Map[...] bzw. /@ arbeitet immer mit pure functions :

func2 1, n, m, 0, 1, 2, x

defx, defx, defx, x x3

6

x5

120

x7

5040, 1 x2, defx, defx

ü Which

vorzeichenx_ : Whichx 0, 1, x 0, 0, x 0, 1

vorzeichen 5.5, 0, a1, 0, Whicha 0, 1, a 0, 0, a 0, 1

ü Select und Cases

Zum Auswählen aus einer Liste gibt es Select[...] und Cases[...].

Select1, 2, 3, 4, 5, 6, 7, 8, 9, PrimeQ2, 3, 5, 7

oder z. B. die geraden und ungeraden Zahlen mit EvenQ und OddQ

Select1, 2, 3, 4, 5, 6, 7, 8, 9, EvenQ2, 4, 6, 8

Clearf, g

172 Mathematica_2014_complete.nb

Page 173: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Casesf1, g2, fs, f2.5, f_Integerf1

5.3. Schleifen mit For und Do

ü For Schleifen

For[...] ist wie in C. Sollte aber in Mathematica vermieden werden.

s 0;

Fori 1, i 10, i, s s i2s

385

ü Do Schleifen

Viel mehr zu empfehlen ist die Do[ ...] - Schleife mit der typischen Mathematica Syntax.

s 0;

Dos s i2, i, 1, 10s

385

Sowohl bei For als auch bei Do ergeben die Funktionen kein direktes Ergebnis.

Man kann dies aber mit einem Print Befehl erreichen, z.B.

s 0;

Dos s i2; Prints, i, 1, 101

5

14

30

55

91

140

204

285

385

was ist im nächsten Beispiel verkehrt?

s 0;

Dos s i2; Print"i,s ", i, s, i, 1, 10

Mathematica_2014_complete.nb 173

Page 174: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

i,s 11

i,s 25

i,s 314

i,s 430

i,s 555

i,s 691

i,s 7140

i,s 8204

i,s 9285

i,s 10385

In vielen Fällen kann auch strukturierte Iteration verwendet werden.

z.B. Sum[f, {i, imin, imax}]

i1

10

i2

385

oder Product[f, {i, imin, imax}]

i1

5

i2

14 400

ü Beispiel: Energieniveaus in der QM im 1-dim. Potentialtopf

ListPlot5, 0, 2, 0, 2, 800, 2, 800, 2, 0, 5, 0,Joined True, PlotStyle Red, Thickness0.01`,AxesOrigin 5, 0, AxesLabel "x", "Potential Vx"

-4 -2 0 2 4x

-800

-600

-400

-200

Potential V x

Mit Stetigkeitsbedingungen der 1. und 2. Ableitung an den Rändern des Topfes findet man nach

einiger Rechnung 2 transzendente Gleichungen für symmetrische und antisymmetrische Lösungen

Cos(k x) und Sin(k x)

174 Mathematica_2014_complete.nb

Page 175: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Suche nach Lösungen der transzendenten Gleichungen:

x tan(x) = r2-x2 und x cot(x) = - r2-x2

r 7.244; U0 800 eV;

f1x_ : r2 x2 ;

g1x_ : x Tanx;u1x_ : x Cotx;xs1 1., 4., 7.; xs2 2., 5.; En ;

Plotf1x, g1x, u1x, x, 0, r

1 2 3 4 5 6 7

-10

10

20

Plotf1x, g1x, u1x, x, 0, r,PlotStyle Black, Red, Blue, PlotRange 1, 10

1 2 3 4 5 6 7

2

4

6

8

10

Do x1 FindRootg1x f1x, x, xs1i;

e1 U0 zr2 . z x11, 2; AppendToEn, e1;

If i 3, x2 FindRootu1x f1x, x, xs2i;

e2 U0 zr2 . z x21, 2; AppendToEn, e2 ,

i, 1, 3

Mathematica_2014_complete.nb 175

Page 176: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ColumnEn29.0006 eV115.453 eV257.425 eV450.291 eV680.337 eV

energy TableEnieV

, i, LengthEn;Plotenergy, x, 0, 1,PlotStyle Red, Thickness0.01`, Ticks None, Automatic,AspectRatio 1.3`, AxesLabel " ", "E in eV"

100

200

300

400

500

600

E in eV

5.4. Stückweise definierte Funktionen

ü mit If Switch oder Which

für einfache Beispiele kann man If ..., Switch[...] oder Which ... verwenden

p1x_ : Sinx; p2x_ : x;px_ : Ifx 0, p1x, p2x

solche Konstruktionen arbeiten gut in numerischen Anwendungen

176 Mathematica_2014_complete.nb

Page 177: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plotpx, px, px, x, 5, 2, PlotStyle Black, Red, Blue

-5 -4 -3 -2 -1 1 2

-1.0

-0.5

0.5

1.0

1.5

2.0

Integratepx, x, 5, 523

2 Cos5

sie sind jedoch nicht für symbolische Anwendungen geeignet

p'xIfx 0, p1x, p2x

p'x EvaluateIfx 0, p1x, p2x

ü mit Piecewise

am besten und allgemeinsten benutzt man dafür die Funktion Piecewise[...]

qx_ Piecewisep1x, x 0, p2x, x 0Sinx x 0x x 00 True

im Falle, dass alle explizit angegebenen Bedingungen "False" sind, wird der letzte Wert 0 ausgegeben.

Diese Darstellung kann auch bei der Eingabe mit Esc und Strg über die Tastatur erreicht werden:

erst "Esc pw Esc" dann "Strg ," , dann weiter mit "Tab" und für weitere Zeilen "Strg Return"

Mathematica_2014_complete.nb 177

Page 178: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

qx_ Piecewisep1x, x 0, p2x, 0 x 2, 2 2x, x 2Sinx x 0x 0 x 2

2 2x x 2

0 True

Sinx x 0x 0 x 2

2 2x x 2

0 True

q'xCosx x 01 x 0 0 x 22 2x x 2

Indeterminate True

Plotqx, qx, qx, x, 5, 4,PlotStyle Black, Red, Blue, Exclusions None

-4 -2 2 4

-2

-1

1

2

Integrateqx, x, 5, 52 3 3 3 Cos5

3

im Gegensatz zur vereinfachten Definition mit If[...] etc, wird die Piecewise[...] Konstruktion in

Mathematica weitgehend auch mit anderen Funktionen wie D[...], Integrate[...], Limit[...], DSolve[...]

unterstützt

5.5. Funktionale Operationen

ü Map

Removef, a, bMap f , expr oder f û expr wendet die Funktion f auf alle Elemente von expr an.

178 Mathematica_2014_complete.nb

Page 179: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Mapf, 1, 2, 3f1, f2, f3

f a, b, cfa, fb, fc

Sin a, b, cSina, Sinb, Sinc

für Funktionen mit dem Attribut "Listable" geht dies auch einfacher

Sina, b, cSina, Sinb, Sinc

?? Sin

Sinz gives the sine of z. à

AttributesSin Listable, NumericFunction, Protected

Map ist dagegen allgemeiner, z.B. auch

Sin x ySinx Siny

Anwendungen auf Datenlisten

data3 Tablex, Sinx x, 0.1 RandomReal, x, 1., 51., 0.841471, 0.0926126, 2., 0.454649, 0.0754058,3., 0.04704, 0.0565252, 4., 0.189201, 0.0123594, 5., 0.191785, 0.0491499

im folgenden wird das 3. Element gelöscht:

Drop, 3 & data3

1., 0.841471, 2., 0.454649, 3., 0.04704, 4., 0.189201, 5., 0.191785

das gleiche Resultat wird erzielt, indem man das letzte Element löscht:

Drop, 1 & data3

1., 0.841471, 2., 0.454649, 3., 0.04704, 4., 0.189201, 5., 0.191785

bisher wurde Drop auf die Listen "gemapped", jetzt wird Drop direkt auf die Listen

angewandt:

Drop, 1 &

1., 0.841471, 2., 0.454649, 3., 0.04704, 4., 0.189201

Mathematica_2014_complete.nb 179

Page 180: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Drop, 23., 0.04704, 4., 0.189201

Take, 1, 2 & data3

1., 0.841471, 2., 0.454649, 3., 0.04704, 4., 0.189201, 5., 0.191785

Take, 3 & data3

0.0926126, 0.0754058, 0.0565252, 0.0123594, 0.0491499

Flatten macht die Listenstruktur flach

Take, 3 & data3 Flatten0.0926126, 0.0754058, 0.0565252, 0.0123594, 0.0491499

Flattenliste bringt alles auf eine Ebene

Flatten1, 2, 3, a, b, c, 4, "Hallo"1, 2, 3, a, b, c, 4, Hallo

ü Apply

Apply[f, expr] oder f @@ expr ersetzt den Kopf von expr durch f.

Applyf, 1, 2, 3f1, 2, 3

f a, bfa, b

Plus a, b, ca b c

Times a, b, c, da b c d

Power a, b, c, d, eab

cde

mittell_List : Plus l

Lengthl

180 Mathematica_2014_complete.nb

Page 181: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

mittel1, 2, 3, 4, 5, 67

2

mittelc, dc d

2

ü Scan

Scan[f, expr] wendet f auf jedes Element in expr an.

Scan gibt jedoch keinen Wert zurück

Scanf, 1, 2, 3Jedoch kann man es sehr gut mit Print anwenden, da Print seinen eigenen Output erzeugt.

ScanPrint, 1, 2, 31

2

3

ScanPrint^2 &, 2, 3, 44

9

16

ü Through

Through[{f,g,h} [x,y]] wendet eine Liste von Funktionen auf das gleiche Argument an.

(Für weitere Anwendungen, siehe Online Help)

Throughf, g, hx, yfx, y, gx, y, hx, y

ThroughSin, Cos, TanxSinx, Cosx, Tanx

Beispiel: Minimum, Maximum und Dimension einer Liste

liste 2, 1, 6, 4, 0, 3;

min, max, n0 ThroughMin, Max, Lengthliste6, 4, 6

Mathematica_2014_complete.nb 181

Page 182: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Nest

Nestf, x, 5fffffx

Nest1 1

1&, x, 5

1 1

1 1

11

11

11

x

NestList erzeugt eine Liste mit allen Unterelementen von Nest

NestListf, x, 3x, fx, ffx, fffx

ü FixedPoint

Fixpunkt Berechnung

FixedPointg, expr, 10ggggggggggexpr

FixedPointCos, 0.10.739085

FixedPointList gibt alle Einzelschritte als Liste an

FixedPointListCos, 0.10.1, 0.995004, 0.544499, 0.855387, 0.655927, 0.792483, 0.702079, 0.763501, 0.72242, 0.750208,0.731547, 0.744142, 0.735669, 0.741382, 0.737536, 0.740128, 0.738383, 0.739558, 0.738766,0.7393, 0.73894, 0.739183, 0.73902, 0.739129, 0.739055, 0.739105, 0.739072, 0.739094,0.739079, 0.739089, 0.739082, 0.739087, 0.739084, 0.739086, 0.739085, 0.739086,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085,0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085, 0.739085

182 Mathematica_2014_complete.nb

Page 183: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPlot, PlotStyle Red, PointSize0.010

20 40 60 80

0.739084

0.739086

0.739088

Fixpunkte der Logistischen Abbildung xn+1 = 4 xna- xn, für a œ 0, 1a 0.7; FixedPointList4 a &, 0.2, 1000;

ListPlot, PlotRange 0, 1, PlotStyle Red, PointSize0.005

0 200 400 600 800 1000

0.2

0.4

0.6

0.8

1.0

a 0.8`; FixedPointList4 1 a 1 &, 0.2`, 500;ListPlot, PlotRange 0, 1, PlotStyle Red, PointSize0.005

0 100 200 300 400 500

0.2

0.4

0.6

0.8

1.0

Mathematica_2014_complete.nb 183

Page 184: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

a 0.998`; FixedPointList4 1 a 1 &, 0.2, 10000;ListPlot, PlotRange 0, 1, PlotStyle Red, PointSize0.005

0 2000 4000 6000 8000 10 000

0.2

0.4

0.6

0.8

1.0

ü Fold

Cleara, b, c

Foldg, x, a, b, cgggx, a, b, c

Beispiel für das Produkt

FoldTimes, 1, 2, 3, 4, 5, 6720

Beispiel für das Hornersche Schema

Fold1 x 2 &, 0, a, b, c, d, ee x d x c x b a x

FoldList erzeugt eine Liste mit allen Unterelementen von Fold, wie auch bei NestList

FoldListg, x, a, b, cx, gx, a, ggx, a, b, gggx, a, b, c

ü Thread

Mit Thread[...] (thread = einfädeln, durchfädeln) lassen sich Listen umgruppieren, bzw. umsortieren.

Threadk1, 2, 3, a, b, ck1, a, k2, b, k3, c

Threada, b, c 1, 2, 3a 1, b 2, c 3

184 Mathematica_2014_complete.nb

Page 185: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Beispiel mit Vektoren, z.B. bei Bewegungsgleichungen im 3-dimensionalen Raum

F m xt, yt, ztm xt, m yt, m zt

fr k0 Cos, 0, Sin xt, 0, 0k0 Cos xt, 0, k0 Sin

ThreadF frm xt k0 Cos xt, m yt 0, m zt k0 Sin

DSolve, xt, yt, zt, t

xt

t

m m C1

C2 k0 t Cos

, yt C3 t C4, zt C5 t C6 k0 t2 Sin2 m

ü Compile

Compiled Functions sind rein numerische Funktionen, die sehr viel schneller

als normale Funktionen evaluiert werden können.

ã Beispiel : Logistische Abbildung

1. Beispiel ohne Compile

logistic1n_Integer :Modulef, t, x, fx_, t_ Evaluate 3

t

nx 1 x;

FoldListf, 0.223, Rangen

logistic11000000; Timing1.872, Null

2. Beispiel mit Compile

logistic2n_Integer :Modulef, t, x, f Compilex, t, Evaluate 3

t

nx 1 x;

FoldListf, 0.223, Rangen

logistic21000000; Timing0.14, Null

Mathematica_2014_complete.nb 185

Page 186: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPlotlogistic2100000,PlotStyle Red, PointSize0.0025, ImageSize 500

20 000 40 000 60 000 80 000 100 000

0.2

0.4

0.6

0.8

1.0

logistic250.223, 0.554467, 0.839913, 0.484052, 0.949034, 0.193476

Logistic Map als Funktion des Parameters m : f x; m = m x1- xhier: Ausschnitt von m œ (3, 4]

186 Mathematica_2014_complete.nb

Page 187: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

logisticn_Integer : Modulef, t, x, list,

f Compilex, t, Evaluate 3 t

nx 1 x;

Transpose3 Range0, 1, 1n, FoldListf, 0.223, RangenListPlotlogistic100000, PlotStyle Red, PointSize0.0025,AxesLabel "", "x",ImageSize 500

3.2 3.4 3.6 3.8 4.0m

0.2

0.4

0.6

0.8

1.0

ã 2. Beispiel : Apfelmännchen

Beispiel aus: Mathematica 6, H.-G. Gräbe, M. Kofler, Pearson Studium Verlag, 2007

ClearApfelCalcApfelCalcz0_Complex, nmax_Integer : Modulen 0, z 0,

WhileAbsz 2 && n nmax, z z2 z0; n; n

c ColorData"TemperatureMap";

ApfelPlotz0_Complex, z1_Complex, nmax_Integer, dx_Real :Moduler0 Rez0, r1 Rez1, i0 Imz0, i1 Imz1,ListDensityPlotTableApfelCalcr i , nmax, i, i0, i1, dx, r, r0, r1, dx,AspectRatio

i1 i0

r1 r0, FrameTicks None, ColorFunction c

Mathematica_2014_complete.nb 187

Page 188: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ApfelPlot2 1.25 , 1.25 1.25 , 20, 0.02

ApfelPlot0.7476 0.0976 ,0.7452 0.0993 , 200, 0.8 105 Timing

16.333,

ClearApfelCalcApfelCalc Compilez0, _Complex, nmax, _Integer,

Modulen 0, z 0. ,WhileAbsz 2 && n nmax, z z2 z0; n; n

CompiledFunctionz0, nmax,Modulen 0, z 0. , WhileAbsz 2 && n nmax, z z2 z0; n; n, CompiledCode

ApfelPlot0.7476 0.0976 ,0.7452 0.0993 , 200, 0.8 105 Timing

1.825,

auch im zweiten Beispiel ist die kompilierte Version um etwa einen Faktor 10 schneller

188 Mathematica_2014_complete.nb

Page 189: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ApfelPlot0.7476 0.0976 , 0.7452 0.0993 , 200, 0.3 105

ã 3. Beispiel : Anwendung auf spezielle Funktionen

PlotMeijerG, , 0, 0, 0, x Re,x, 3, 4, PlotRange All Timing

4.18,

-3 -2 -1 1 2 3 4

-30

-20

-10

MeijerGcomp Compilez0, _Complex,ReMeijerG, , 0, 0, 0, z0

CompiledFunctionz0, ReMeijerG, , 0, 0, 0, z0, CompiledCode

Mathematica_2014_complete.nb 189

Page 190: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotMeijerGcompx, x, 3, 4, PlotRange All TimingCompiledFunction::cflist : Nontensor object generated; proceeding with uncompiled evaluation.à

4.322,

-3 -2 -1 1 2 3 4

-30

-20

-10

im ersten Beispiel funktioniert das leider nicht, für viele andere (Standardfunktionen) ist es jedoch möglich

allerdings ist dort der Zeitgewinn auch nicht so bedeutend

Fcomp Compilez0, _Real, Sinhz0 z0

CompiledFunctionz0, Sinhz0z0

, CompiledCode

Fcomp Compilez0, _Real, SinIntegralz0CompiledFunctionz0, SinIntegralz0, CompiledCode

PlotFcompx, x, 10, 10

-10 -5 5 10

-1.5

-1.0

-0.5

0.5

1.0

1.5

DoSinIntegralz0, z0, 10, 10, 104 Timing2.418, Null

DoFcompz0, z0, 10, 10, 104 Timing30.264, Null

190 Mathematica_2014_complete.nb

Page 191: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

hier gehts auch wieder nicht Fcomp

Compilez0, _Real, HypergeometricPFQ1, 1, 3, 3, 3, z0CompiledFunctionz0, HypergeometricPFQ1, 1, 3, 3, 3, z0, CompiledCode

ü Inner

Inner ist eine Operation mit Funktionen, vergleichbar mit einem Skalarprodukt

(siehe auch Outer)

grundsätzliches Beispiel

Innerf, a, b, x, y, ggfa, x, fb, y

Beispiel mit g = List

Innerf, a, b, x, y, Listfa, x, fb, y

InnerTooltip, a, b, "1. Beispiel", "2. Beispiel", Lista, b

Anwendung mit Tooltip (siehe Einführung Grafik)

tooltipflist_, nlist_ : InnerTooltip, flist, nlist, List

5.6. Eigene Operatoren definieren

ü z.B. CirclePlus

Eine Reihe von Operatoren wie CirclePlus ∆ , CircleTimes ≈ , SmallCircle ë , Del “ , Square Ñ und

weitere haben in Mathematica keine vorgegebene Bedeutung. Sie können daher für eigene Zwecke

definiert werden, z.B.

∆ ("Esc c+ Esc") für die relativistische Geschwindigkeitsaddition

CirclePlusa_, b_ : a b

1 a b

v1 v2

v1 v2

1 v1 v2

0.01 0.01

0.019998

Mathematica_2014_complete.nb 191

Page 192: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

0.5 0.5

0.8

1 1

1

Erweiterung der Operation auf beliebig viele Elemente

v1 v2 v3 v4

v1v2v3v4

Man beachte den 2-fachen Underscore _ _ , dieser steht für ein oder mehrere Elemente. Er wird bei

der Eingabe zu einem längeren Strich zusammengezogen.

CirclePlusa_, b_, c__ :CirclePlusa, CirclePlusb, c Together

v1 v2 v3 v4

v1 v2 v3 v1 v2 v3 v4 v1 v2 v4 v1 v3 v4 v2 v3 v4

1 v1 v2 v1 v3 v2 v3 v1 v4 v2 v4 v3 v4 v1 v2 v3 v4

0.4 0.4 0.4 0.4

0.93473

5.7. Prozedurale Strukturen: Module und Block

ü einfache Strukturen

Die einfachste prozedurale Struktur ist eine Folge von Ausdrücken mit Semikolon getrennt.

Dabei wird das letzte Resultat, das ohne Semikolon geschrieben ist als Ergebnis ausgegeben :

r 3; s Sqrt4 r; r^2 s^234

im folgenden Beispiel werden mit einer runden Klammer 2 Funktionen miteinander

zu einer einfachen Prozedur verbunden:

funcy_ : Print"Das Argument der Funktion ist: ", y;PlotSinx y, x, 0, 2

192 Mathematica_2014_complete.nb

Page 193: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

func5Das Argument der Funktion ist: 5

1 2 3 4 5 6

-1.0

-0.5

0.5

1.0

ü Module und Block

Für Prozeduren mit lokalen Variablen verwendet man Module[...] oder Block[...]

Module[{x,y,...}, expr]

Block[{x,y,...}, expr]

wobei "expr" wieder eine beliebige Folge von Ausdrücken sein kann, die mit Semikolon getrennt

werden.

Sie bieten die Möglichkeit, mit lokalen Variablen x,y,... zu arbeiten, die außerhalb des Befehls nicht

definiert sind, bzw. andere Werte besitzen können. Dadurch wird die Programmierung übersichtlicher

und weniger fehleranfällig. Darüber

hinaus können mit expr. verschiedene Befehle zusammengefasst werden.

Die beiden Befehle unterscheiden sich nur darin, dass bei Module auch die Namen lokal sind,

während die Namen bei Block global sind, die Werte sind in beiden Fällen immer lokal.

aus Mathematica tutorial: Blocks compared to Modules:

In writing actual programs, modules are far more common than blocks.

When scoping is needed in interactive calculations, however, blocks are often convenient.

Modulevars, body lexical scoping

Blockvars, body dynamic scoping

Removes, u

u : s2 1

ohne lokale Variable verhalten sich beide genau gleich

Module, u1 s2

Mathematica_2014_complete.nb 193

Page 194: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Block, u1 s2

setzt man u als lokale Variable, dann sind die Ergebnisse sehr verschieden:

Moduleu, uu$418896

im ersten Fall erscheint nur eine interne Variable u$xxxx, die sich bei jedem weiteren Aufruf verändert

Blocku, u1 s2

im zweiten Fall erscheint die globale Variable u = 1+s2

jedoch besteht der Sinn dieser prozeduralen Strukturen gerade darin,

lokale Variable zu definieren, die außerhalb keine Gültigkeit haben und umgekehrt.

Darin unterscheiden sich dann Module und Block:

Blocks 1, u2

Modules 1, u1 s2

im zweiten Beispiel unterscheidet Mathematica zwischen der äußeren und inneren Variablen s

Blocks 1, u s3

Modules 1, u s2 s2

Am besten verwendet man nur Variable und Parameter, die innerhalb des Moduls

bzw. in einer Funktionsdefinition explizit aufgeführt werden:

fmu_ : Modules 1, u s

fma1 a

fbu_ : Blocks 1, u s

fba1 a

194 Mathematica_2014_complete.nb

Page 195: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

oder

Moduleu, s 1, u : 1 s2; u s3

Blocku, s 1, u : 1 s2; u s3

ü Beispiele für Module oder Block

ã Fibonacchi Folge

fibn_ :Modulef,f1 f2 1;fi_ : fi fi 1 fi 2;fn

fib1055

ã Euclidscher Algoritmus für den größten gemeinsamen Teiler GGT

ggtm0_, n0_ :Blockm m0, n n0,Whilen 0, m, n n, Modm, n;m

ggt32, 728

Mathematica_2014_complete.nb 195

Page 196: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü tückisches Beispiel innerhalb von Manipulate

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;x1t_ xt . lsg1;Plotx1t, t, 0, tmax,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

2 4 6 8 10

0.2

0.4

0.6

0.8

1.0

196 Mathematica_2014_complete.nb

Page 197: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateBlockg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;x1t_ xt . lsg1;Plotx1t, t, 0, tmax,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

2 4 6 8 10

-1.0

-0.5

0.5

1.0

ManipulateBlockg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;x1t_ xt . lsg1;xt, lsg1, x10 ColumnForm,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

xtxt InterpolatingFunction0., 10., 3, 11, 2, 369, 4, 0, 0, 0, 0, 0., 0.0000256540.

das Problem hängt mit der Regelanwedung: x1t_ = xt . lsg1 zusammen

Mathematica_2014_complete.nb 197

Page 198: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;x1t_ xt . lsg1;xt, lsg1, x10 ColumnForm,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

x$934t$934x$934t$934 InterpolatingFunction0., 10., 3, 11, 2, 369, 4, 0, 0, 0, 0, 0., 0.0x$9340

Lösung mit pure function

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, x, t, 0, tmax Flatten;x1t_ xt . lsg1;xt, lsg1, x10 ColumnForm,

v0, 4, 0, 10, Appearance "Labeled",tmax, 10, 1, 100

v0 4

tmax

x$951t$951x$951 InterpolatingFunction0., 10., 3, 11, 2, 369, 4, 0, 0, 0, 0, 0., 0.000025650.

198 Mathematica_2014_complete.nb

Page 199: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, x, t, 0, tmax Flatten;x1t_ xt . lsg1;Plotx1t, t, 0, tmax,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

2 4 6 8 10

-1.0

-0.5

0.5

1.0

für Module ist auch die folgende Lösung mit Verzögerung bei der Regelzuweisung

möglich:

Mathematica_2014_complete.nb 199

Page 200: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;x1t_ : xt . lsg1;Plotx1t, t, 0, tmax,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

2 4 6 8 10

-1.0

-0.5

0.5

1.0

und bei der Regelzuweisung direkt in der Plot-Funktion funktioniert schließlich auch die

ursprüngliche Form

200 Mathematica_2014_complete.nb

Page 201: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateModuleg 9.81, l 1, eq1, lsg1, x, x0, x1, t,eq1 l x''t g Sinxt 0, x0 0, x'0 v0;lsg1 NDSolveeq1, xt, t, 0, tmax Flatten;Plotxt . lsg1, t, 0, tmax,

v0, 4, 0, 10, tmax, 10, 1, 100

v0

tmax

2 4 6 8 10

-1.0

-0.5

0.5

1.0

ü Beispiel: Kurvendiskussion (ohne lokale Variable)

kdf_, a_, b_ : Module, Print"Die 1. Ableitung ist :", fx;Print"Die 2. Ableitung ist :", fx;Print"Die 3. Ableitung ist :", f3x;Print"Die Nullstellen sind :", Solvefx 0, x;Print"Die Stellen mit f'x0 sind :", Solvefx 0, x;Print"Die Stellen mit f''x0 sind :", Solvefx 0, x;Print"Die Stammfunktion von f ist :", fx x;Plotfx, x, a, b

fx_ : x3 x

kdf, 3, 3

Mathematica_2014_complete.nb 201

Page 202: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Die 1. Ableitung ist :1 3 x2

Die 2. Ableitung ist :6 x

Die 3. Ableitung ist :6

Die Nullstellen sind :x 1, x 0, x 1

Die Stellen mit f'x0 sind :x 1

3, x

1

3

Die Stellen mit f''x0 sind :x 0

Die Stammfunktion von f ist :x2

2x4

4

-3 -2 -1 1 2 3

-20

-10

10

20

Aufruf mit einer "pure function"

kd2 2 &, 3, 3

202 Mathematica_2014_complete.nb

Page 203: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Die 1. Ableitung ist :2 2 x2

x2

Die 2. Ableitung ist :2

x2 2 x2

x3

Die 3. Ableitung ist :6

x26 2 x2

x4

Die Nullstellen sind :x 2 , x 2

Die Stellen mit f'x0 sind :x 2 , x 2 Die Stellen mit f''x0 sind :

Die Stammfunktion von f ist :x2

2 2 Logx

-3 -2 -1 1 2 3

-5

5

ü Beispiel: Prozedur zur Erzeugung einer Kurvenschar (mit lokalen Variablen)

amplv0_, tmin_, tmax_, color_ : Modulex, t, res, lsg,res NDSolvext xt 0, x0 0, x0 v0,xt, t, tmin, tmax; lsg res;Plotxt . lsg, t, tmin, tmax, PlotStyle color

a1 ampl0.5, 0, 10, Red;a1 ampl0.5, 0, 10, Red;a2 ampl1.0, 0, 10, Blue;a3 ampl3.0, 0, 10, Green;

Mathematica_2014_complete.nb 203

Page 204: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowTableai, i, 1, 3

2 4 6 8 10

-0.4

-0.2

0.2

0.4

5.8. Regeln und Rekursionen

ü Anwendung von Regeln

Die grundlegende Arbeitsweise des Evaluators besteht darin, für den zu evaluierenden Ausdruck

Regeln zu finden, deren linke Seite anwendbar ist.

Dies geschieht auf Verlangen bei der Substitution...

term . term neu

neu

hx, y, z . y alpha

hx, alpha, z

rekursive Regel, z.B. für Fakultät

fac5 . fac0 1, facn_ n facn 15 fac4

mit //. wird die Regel beliebig häufig angewandt, bis alles aufgelöst ist

fac5 . fac0 1, facn_ n facn 1120

das nächste Beispiel lässt sich aber auch nach beliebiger Anzahl nicht auflösen,

daher ist irgendwann Schluss und es erscheint eine Fehlermeldung

fac5.0 . fac0 1, facn_ n facn 1ReplaceRepeated::rrlim : Exiting after fac5. scanned 65536 times.à0. fac65 531.

..oder automatisch, wenn Regeln global definiert werden.

204 Mathematica_2014_complete.nb

Page 205: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

loga_ b_ : loga logb

log2 x y2log2 logx logy2

loga_n_ : n loga

log2 logx 2 logy

ü Rekursionen

ã ungewollte, falsche Rekursionen

in Mathematica kann man sehr leicht eine ungewollte Rekursion starten, wenn man Pro-

grammiermethoden aus C, FORTRAN

oder anderen numerischen Computersprachen übernimmt

Daher ist standardmäßig ein Rekursionslimit bei 256 gesetzt. Diesen kann man mit

$RecursionLimit=nnnn erweitern

p p 1

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

255 Hold1 p

Clearp

p pp 1$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

General::stop : Further output of $RecursionLimit::reclim will be suppressed during this calculation.à

$Aborted

fn_ fn1 fn1

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

General::stop : Further output of $RecursionLimit::reclim will be suppressed during this calculation.à

$Aborted

Mathematica_2014_complete.nb 205

Page 206: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Eine Rekursion muss immer verzögert definiert werden. Außerdem braucht sie einen

Punkt, an dem sie gestoppt,

bzw. aufgelöst wird

ã Fibonacci Reihe

Fibonacci1055

The Fn satisfy the recurrence relation Fn Fn1 Fn2 with F1 F2 1.

fn_ : fn1 fn2f1 f2 1;

f3

2

f10

55

f20 Timing0.031, 6765

f30 Timing1.045, 832 040

f32 Timing2.714, 2 178 309

ü Rekursive Funktionen mit "Gedächtnis"

im vorherigen Fall stiegen die Rechenzeiten mit wachsendem n enorm an,

im nächsten Fall merkt man kaum eine Verzögerung

Removeg

gn_ : gn gn1 gn2g1 g2 1;

g3

2

206 Mathematica_2014_complete.nb

Page 207: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

g20 Timing0., 6765

g30 Timing0., 832 040

g100 Timing0., 354 224 848 179 261 915 075

g1000 Timing$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

$RecursionLimit::reclim : Recursion depth of 256 exceeded.à

0.016, 33 449 372 971 981 195 681 356 806 732944 396 691 005 381 570 580 873 Holdg7461 g7462 54 122 222 371 037 658 776 676 579 571 233 761 483 351 206 693 809 497 Holdg7471 g7472

normalerweise ist bei 256 Iterationen das Limit erreicht

mit $RecursionLimit kann es aber bei Bedarf auch wesentlich höher gesetzt werden

$RecursionLimit 10000;

Removeg

$RecursionLimit 256;

für diesen speziellen Fall ein Beispiel aus Gräbe/Kofler, Mathematica 6

mit der sehr effektiven Matrix Multiplikation: MatrixPower[...]

matfibn_ : MatrixPower1, 1, 1, 0, n.1, 02, 1

matfib100 Timing0., 354 224 848 179 261 915 075

matfib1000 Timing0.,43 466 557 686 937 456 435 688 527 675040 625 802 564 660 517 371 780 402 481 729089 536 555 417 949 051 890 403 879 840 079 255 169 295 922 593 080 322634 775 209 689 623 239 873 322 471 161 642996 440 906 533 187 938 298 969 649 928 516 003 704 476 137 795166 849 228 875

5.9. Mustererkennen

ü verschiedene Muster (Pattern)

Ein Muster (Pattern) ist ein Ausdruck, der besondere Musterobjekte enthalten kann. Das Musterobjekt

Blank[ ] oder _ steht für beliebige Ausdrücke.

Blank[h] passt auf einen Ausdruck mit Kopf h.

BlankSequence[ ] und BlankNullSequence[ ] passen auf Folgen von Ausdrücken

Mathematica_2014_complete.nb 207

Page 208: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

_

_expr

__

__expr

___

___expr

_.

_ : a

symb_

symb_expr

symb__

symb__expr

symb___

symb___expr

symb_.

ü Muster für Ausdrücke des Typs t_ , t__ , t___ oder nur _ , __ , ___

Removef, a, b, c, dZur Illustrierung werden wir jeweils die Muster in einer Regel verwenden.

Die Leerstelle _ steht für irgend etwas, aber nur ein einzelnes Symbol oder eine Zahl, keine leere

Menge

fx, fy, hz, fx, y, fx, y, z, f . f_ uu

uu, uu, hz, fx, y, fx, y, z, f

Der für die Leerstelle eingesetzte Ausdruck erhält den Namen t, der dann auf der rechten Seite verwen-

det wird.

Standardfall bei Funktionsdefinitionen, wie oben nur wenn es passt, dann erhält es den Namen t

fx, fy, hz, fx, y, fx, y, z, f . ft_ tx, y, hz, fx, y, fx, y, z, f

Die doppelte Leerstelle __ steht für irgendeine Reihe mit ein oder mehreren Elementen

fx, fy, hz, fx, y, fx, y, z, f . f__ uuuu, uu, hz, uu, uu, f

Die dreifache Leerstelle ___ steht für irgendeine Reihe mit null oder mehreren Elementen

fx, fy, hz, fx, y, fx, y, z, f . f___ uuuu, uu, hz, uu, uu, uu

fx, fy, hz, fx, y, fx, y, z, f . ft___ tx, y, hz, x, y, x, y, z,

208 Mathematica_2014_complete.nb

Page 209: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Das Muster _:a steht für irgend etwas mit dem Defaultargument a

fx, fy, hz, fx, y, fx, y, z, f . ft_: a t2

x2, y2, hz, fx, y, fx, y, z, a2

Dieses "Muster" passt nur auf sich selbst! Es ist gar kein Muster im eigentlichen Sinn.

fx, fy, hz . fx xx, fy, hz

Tritt eine Mustervariable zweimal auf, so muss jedes Mal dasselbe ersetzt werden

fa, b, f2, 2, f3, 3.0 . fx_, x_ gxfa, b, g2, f3, 3.

ü Mustererkennen für Ausdrücke mit Default-Argumenten

das Muster _. heisst Default

das Muster _: heisst Optional

bei einer Summe: x_ + y_. ist der Default-Wert y = 0

f, fa, fa b, fd c . fx_ y_. pqx yf, pqa, pqa b, pqc d

fx_. y_. : x

bei einem Produkt: x_ y_. ist der Default-Wert y = 1

fa, fa b, fb a, fa b c . fx_ y_. pqxypqa, pqa b, pqa b, pqa b c

ebenso bei einem Exponenten ist der Default-Wert y = 1

fa, fab, fabc . fx_ y_. pqxypqa, pqab, pqabc

bei einem Muster x_:2 ist der optionale (default) Wert x = 2

Removeff, fa, fa b . fx_: 2 x

2 , a , a b

Mathematica_2014_complete.nb 209

Page 210: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Removeff, fa, fa b, fa, b, c . fx_, y_: x, yf, a, , a b, , fa, b, c

ü praktische Beispiele zur Mustererkennung

Beispiel 1: vereinfachte Taylorreihe, default: x0 = 0 und bis Ox6

PotenzReihef_, x_: x, x0_: 0, nm_: 6 : Seriesf, x, x0, nm

PotenzReiheSinx

x x3

6

x5

120 Ox7

PotenzReiheSinx, x, 1.00.841471 0.540302 x 1. 0.420735 x 1.2 0.0900504 x 1.3 0.0350613 x 1.4 0.00450252 x 1.5 0.00116871 x 1.6 Ox 1.7

PotenzReiheSinx, x, 1.0, 3 Normal Expand0.0295164 1.11162 x 0.150584 x2 0.0900504 x3

Beispiel 2: Im ersten Fall passt die Regel nur auf erste Element, im zweiten Fall auf die ersten 3

Elemente

1 x2 y2, 1 x2 y2, 2 x2 2 y2, 2 x2 y2 . x2 y2 z2

1 z2, 1 x2 y2, 2 x2 2 y2, 2 x2 y2

1 x2 y2, 1 x2 y2, 2 x2 2 y2, 2 x2 y2 . a_. x2 a_. y2 a z2

1 z2, 1 z2, 2 z2, 2 x2 y2

Beispiel 3: Wurzel-Regel für positive reelle Zahlen (ähnlich wie PowerExpand)

SqrtRules x_ y_ x y ,1

y_

1

y,

x_

y_

x

y;

z a b x

z b x y Mathematica kann diesen

Ausdruck nicht allgemein vereinfachen a b x z

b x y z

210 Mathematica_2014_complete.nb

Page 211: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

z a b x

z b x y. SqrtRules

hier wird die Regel nur einmal angewandt a b x z

b x y z

z a b x

z b x y. SqrtRules

hier wird die Regel nacheinander beliebig oft angewandt

a

y

z a b x

z b x y PowerExpand

PowerExpand funktioniert sehr ähnlich als Funkion a

y

ü Mustererkennen für Ausdrücke eines Typs: _expr

Das Muster Blank[expr], oder _expr, passt nur Ausdrücke mit Kopf expr.

expr kann als Datentyp angesehen werden.

hier passt nur das 2. Beispiel fa, f2, f3.5, f1 I . fx_Integer x2

fa, 4, f3.5, f1

hier passt nur das 3. Beispiel fa, f2, f3.5, f1 I . fx_Real x2

fa, f2, 12.25, f1

hier passt nur das 4. Beispiel,

Complex schließt Real nicht ein fa, f2, f3.5, f1 I . fx_Complex x2

fa, f2, f3.5, 2

Mathematica_2014_complete.nb 211

Page 212: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

auch Rational gilt als eigener ZahlenTyp f2

3, f a

b, f2, f3.5, f1 I . fx_Rational x2

49, f a

b, f2, f3.5, f1

ü Prädikate im Mustererkennen

Ein Muster der Form pattern?test passt nur, falls test[expr] den Wert True ergibt,

wobei expr der zu vergleichende Ausdruck ist.

Typische Verwendungsweise:

fx_Integer?Positive : x

f berechnet die Wurzel nur für positive ganze Zahlen

f1, f0, f1, fI, f0.5, f1 I, f3

1, f0, f1, f, f0.5, f1 , 3

gx_?NonNegative : x

g ist wie f aber es berechnet die Wurzel auch für x0

g 1, 0, 1, I, 0.5, 1 I, 3

1, 0, g1, g, 0.707107, g1 , 3

ü Nebenbedingungen ; Prädikate werden nur auf eine Mustervariable angewendet. Kompliziertere Bedingungen können auf

der rechten Seite der Regel angegeben werden. Die Nebenbedingung wird evaluiert, nachdem ein

Ausdruck in das Muster passt. Nur wenn das Resultat True ist, wird die Regel auch angewendet.

gx_, y_ : xy ; x y && y 0

g2, 3, g3, 3, g2, 18, g3, 3, g2, 1

5.10. Testen von Eigenschaften

Es gibt in Mathematica eine Reihe von Funktionen zum Testen von Eigenschaften von Ausdrücken.

Diese Funktionen haben Namen, die mit Q enden, um anzuzeigenm dass sie eine Frage (Question)

stellen.

Z.B. IntegerQ, NumericQ, NumberQ, EvenQ, OddQ, PrimeQ, etc

212 Mathematica_2014_complete.nb

Page 213: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

IntegerQ 1, 3, 2., a12,2

3, 2

True, True, False, False, False, False

NumericQ 1, 3, 2., a12,2

3, 2

True, True, True, False, True, True

NumberQ 1, 3, 2., a12,2

3, 2

True, True, True, False, True, False

EvenQ 1, 2, 3, 4, 5.0, 6.False, True, False, True, False, False

PrimeQ 1, 2, 3, 129, 1001False, True, True, False, False

eine mögliche Anwendung, um sicher zustellen, dass in einer Rechnung eine Integerzahl gerade ist

evenn_ : IfOddQn, n 1, n

even 1, 2, 3, 4, 52, 2, 4, 4, 6

im nächsten Beispiel werden die Elemente auf ein Muster getestet und alle erfolgreichen Tests gezählt

RandomInteger1, 100, 1072, 47, 45, 9, 77, 5, 72, 32, 1, 10

Count, _?EvenQ4

Count, _?PrimeQ2

Mathematica_2014_complete.nb 213

Page 214: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

6. Datenmanipulation, Fit, Interpolation und Approximation

6.1. Einlesen und Darstellen von externen Daten

ü Datensatz

Beispiel: Datensatzes mit kleinen Störungen ("Rauschen")

data TableSinx RandomReal0, 0.1, x, 0, 6, 0.10.0825544, 0.163566, 0.239017, 0.345698, 0.398644, 0.572659, 0.606469, 0.68598,0.777996, 0.787632, 0.863598, 0.919373, 1.02618, 1.02711, 1.00927, 1.04052, 1.05209,1.05081, 1.07049, 0.994893, 0.912323, 0.883008, 0.890584, 0.767463, 0.772529,0.611174, 0.588121, 0.490046, 0.380289, 0.279813, 0.175576, 0.0748045, 0.0153216,0.0756752, 0.245055, 0.313519, 0.439217, 0.460886, 0.55753, 0.626692,0.677752, 0.794561, 0.787415, 0.901321, 0.916947, 0.911875, 0.898283,0.962855, 0.913565, 0.980257, 0.903149, 0.87447, 0.845363, 0.746447,0.734175, 0.702508, 0.551038, 0.465536, 0.434261, 0.335448, 0.230161

ü Save und Get

Bei Save werden die Daten mit den Symbol-Definitionen abgespeichert.

Dabei wird der vorherige Inhalt nicht gelöscht. Die neuen Daten werden nur angehängt.

FileNames".m"

DeleteFile"datafile.m", "datafile2.m"DeleteFile::nffil : File not found during DeleteFiledata-file.m, data-file2.m.à$Failed

Daten in Datei "data-file.m" abspeichern.

Achtung, Arbeitsverzeichnis beachten! Siehe SetDirectory[....] im Setup

Save"datafile.m", data

Cleardata

data

data

In dieser Form lassen sich die Werte mit Get[...], bzw. (<<) wieder einlesen:

214 Mathematica_2014_complete.nb

Page 215: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

FilePrint"datafile.m"data = {0.08255438190891276, 0.16356592973216594, 0.23901658543147525, 0.34569823196491734, 0.3986437930799907, 0.5726588649180878, 0.6064687099397117, 0.6859796411047101, 0.7779956480016579, 0.787631756197625, 0.8635976256838903, 0.9193732265821211, 1.0261832525678865, 1.0271134317599477, 1.009265056154205, 1.0405232000729634, 1.0520881969827225, 1.0508123832518974, 1.0704896506942732, 0.9948925049107791, 0.9123232947327311, 0.8830076154702863, 0.890583832679871, 0.7674631037102468, 0.7725292355700342, 0.6111743196459553, 0.5881211084824195, 0.4900463224085726, 0.38028935593197133, 0.27981300310687507, 0.17557568486973388, 0.07480448434623381, -0.015321569524412479, -0.07567524749162255, -0.24505496234113125, -0.3135186077471239, -0.43921671342038615, -0.46088575462280507, -0.5575299461244073, -0.626692310755502, -0.6777517777009796, -0.794560535171678, -0.7874148128029235, -0.9013213898896779, -0.9169466955810635, -0.9118751717884706, -0.8982831097810591, -0.9628553443996499, -0.9135649043898822, -0.9802569193072758, -0.9031488763169222, -0.8744700483554118, -0.8453631469168371, -0.746447119968858, -0.7341748391122989, -0.7025084912877297, -0.5510384093235097, -0.4655359361228191, -0.43426111638940623, -0.33544815706677555, -0.23016142512519794}

Get"datafile.m"0.0825544, 0.163566, 0.239017, 0.345698, 0.398644, 0.572659, 0.606469, 0.68598,0.777996, 0.787632, 0.863598, 0.919373, 1.02618, 1.02711, 1.00927, 1.04052, 1.05209,1.05081, 1.07049, 0.994893, 0.912323, 0.883008, 0.890584, 0.767463, 0.772529,0.611174, 0.588121, 0.490046, 0.380289, 0.279813, 0.175576, 0.0748045, 0.0153216,0.0756752, 0.245055, 0.313519, 0.439217, 0.460886, 0.55753, 0.626692,0.677752, 0.794561, 0.787415, 0.901321, 0.916947, 0.911875, 0.898283,0.962855, 0.913565, 0.980257, 0.903149, 0.87447, 0.845363, 0.746447,0.734175, 0.702508, 0.551038, 0.465536, 0.434261, 0.335448, 0.230161

data

0.0825544, 0.163566, 0.239017, 0.345698, 0.398644, 0.572659, 0.606469, 0.68598,0.777996, 0.787632, 0.863598, 0.919373, 1.02618, 1.02711, 1.00927, 1.04052, 1.05209,1.05081, 1.07049, 0.994893, 0.912323, 0.883008, 0.890584, 0.767463, 0.772529,0.611174, 0.588121, 0.490046, 0.380289, 0.279813, 0.175576, 0.0748045, 0.0153216,0.0756752, 0.245055, 0.313519, 0.439217, 0.460886, 0.55753, 0.626692,0.677752, 0.794561, 0.787415, 0.901321, 0.916947, 0.911875, 0.898283,0.962855, 0.913565, 0.980257, 0.903149, 0.87447, 0.845363, 0.746447,0.734175, 0.702508, 0.551038, 0.465536, 0.434261, 0.335448, 0.230161

ü ReadList[...]

Datenfile aus einem anderen Programm oder mit dem Editor erzeugt:

einzelne Spalten durch Leerzeichen getrennt, keine Kommas:

FilePrint"Temperatur.dat" 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

Mathematica_2014_complete.nb 215

Page 216: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Beispiel: Temperaturverlauf als Funktion der Tageszeit

Einlesen mit der Funktion ReadList:

tempdat ReadList"Temperatur.dat", Real, Real0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

ü Import[...]

andere Möglichkeiten zum Einlesen von Datenfiles mit: Import[...]

datenx Import"Temperatur.dat"0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

ü OpenRead[...] flexible Daten-Importation

oder OpenRead, wenn der Datenfile z.B. strukturiert ist und auch Textinformationen enthält.

FilePrint"Temperatur1.dat"Temperaturverlauf eines Julitages in Mainz Uhrzeit MESZ Temperatur 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

datafile1 "Temperatur1.dat"

datei OpenReaddatafile1;titel1 Readdatei, String, Stringlist1 ReadListdatei, Real, RecordLists TrueClosedateiTemperatur1.dat

Temperaturverlauf eines Julitages in Mainz, Uhrzeit MESZ Temperatur

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

Temperatur1.dat

Vorsicht bei Files mit Leerzeilen,

diese werden nicht standardmäßig als eigene Strings erkannt!

216 Mathematica_2014_complete.nb

Page 217: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

FilePrint"Temperatur2.dat"Temperaturverlauf eines Julitages in Mainz

Uhrzeit MESZ Temperatur 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

datafile1 "Temperatur2.dat";

datei OpenReaddatafile1;titel1 Readdatei, String, String, Stringlist1 ReadListdatei, Real, RecordLists TrueClosedateiTemperaturverlauf eines Julitages in Mainz, Uhrzeit MESZ Temperatur,

0.00000000000000E0000 2.20000000000000E0001

2., 21., 4., 20., 6., 19., 8., 20., 10., 23., 12., 27.,14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

Temperatur2.dat

Leerzeilen muss man entsprechend berücksichtigen

oder man verwendet die Option: NullRecords -> True

Außerdem sollten keine Kommas als Trennzeichen verwendet werden.

datafile1 "Temperatur2.dat";

datei OpenReaddatafile1;titel1 Readdatei, String, String, String, NullRecords Truelist1 ReadListdatei, Real, RecordLists TrueClosedateiTemperaturverlauf eines Julitages in Mainz, , Uhrzeit MESZ Temperatur

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

Temperatur2.dat

Mathematica_2014_complete.nb 217

Page 218: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPlotlist1, PlotRange 18, 34

5 10 15 20

25

30

Soll nur ein Teil des Datenfiles gelesen werden, oder befindet sich am Ende des Files

wieder ein Text (Kommentar) muss die Anzahl der Elemente angegeben werden

datafile1 "Temperatur3.dat";

datei OpenReaddatafile1;titel1 Readdatei, String, String, String, NullRecords Truelist1 ReadListdatei, Real, RecordLists TrueClosedateiTemperaturverlauf eines Julitages in Mainz, , Uhrzeit MESZ Temperatur

Read::readn : Invalid real number found when reading from Temperatur3.dat.à

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23., 12., 27.,14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24., $Failed

Temperatur3.dat

datafile1 "Temperatur3.dat";

datei OpenReaddatafile1;titel1 Readdatei, String, String, String, NullRecords Truelist1 ReadListdatei, Real, 26, RecordLists TrueClosedateiTemperaturverlauf eines Julitages in Mainz, , Uhrzeit MESZ Temperatur

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

Temperatur3.dat

218 Mathematica_2014_complete.nb

Page 219: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Import[...] mit nachträglicher Auswahl durch Take, Part, Drop, etc.

data5 Import"Temperatur2.dat"Temperaturverlauf, eines, Julitages, in, Mainz, , Uhrzeit, MESZ, Temperatur,0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23., 12., 27.,14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

list2 Takedata5, 4, 160., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

list3 Partdata5, 4 ;; 100., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23., 12., 27.

Wenn die externen Daten nicht durch Leerzeichen oder Tabs getrennt sind, sondern durch Kom-

mas,

ist es besser, die Kommas vorher mit einem Texteditor zu entfernen!

6.2. Datenausgabe in externe Dateien

ü Übersicht

Zum Schreiben von Daten in externe Files gibt es ähnliche Prozeduren, z.B. Export[...]

oder auch wesentlich flexibler OpenWrite[...], OpenAppend[...] und

WriteString[...].

(siehe Mathematica-Help)

ü einfaches Schreiben mit Export[...]

Export"Output.dat", list1Output.dat

FilePrint"Output.dat"0. 22.2. 21.4. 20.6. 19.8. 20.10. 23.12. 27.14. 31.16. 33.18. 32.20. 29.22. 26.24. 24.

Mathematica_2014_complete.nb 219

Page 220: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Spezielle Formattierungen mit OpenWrite[...]

tab1 PaddedFormTableFormlist1, TableSpacing 0, 2, 8, 20.00 22.002.00 21.004.00 20.006.00 19.008.00 20.00

10.00 23.0012.00 27.0014.00 31.0016.00 33.0018.00 32.0020.00 29.0022.00 26.0024.00 24.00

Export"Output.dat", tab1Output.dat

Export erzeugt Dateien mit Mathematica Strukturen

FilePrint"Output.dat"PaddedForm[TableForm[{{0., 22.}, {2., 21.}, {4., 20.}, {6., 19.}, {8., 20.}, {10., 23.}, {12., 27.

OpenWrite erzeugt einfache ASCII Dateien, die von vielen Programmen weiter verwendet werden

können

file OpenWrite"Output2.dat";WriteStringfile, " Temperaturverlauf in Mainz\n\n"WriteStringfile, " Uhrzeit Temperatur\n"WriteStringfile, tab1Closefile;

FilePrint"Output2.dat" Temperaturverlauf in Mainz

Uhrzeit Temperatur 0.00 22.00 2.00 21.00 4.00 20.00 6.00 19.00 8.00 20.00 10.00 23.00 12.00 27.00 14.00 31.00 16.00 33.00 18.00 32.00 20.00 29.00 22.00 26.00 24.00 24.00

220 Mathematica_2014_complete.nb

Page 221: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

6.3. Datenmanipulation (strukturelle Änderung von Datensätzen)

ü mit Transpose

Zerlegung der Liste in Vektoren h, temp

tempdat

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

Transposetempdat0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.,22., 21., 20., 19., 20., 23., 27., 31., 33., 32., 29., 26., 24.

h 10., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.

temp 222., 21., 20., 19., 20., 23., 27., 31., 33., 32., 29., 26., 24.

oder auch ganz einfach:

h, temp Transposetempdat0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.,22., 21., 20., 19., 20., 23., 27., 31., 33., 32., 29., 26., 24.

h

0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24.

umgekehrt: Erzeugung eines Datensatzes aus Vektoren:

Transposeh, temp0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

weitere Standardfunktionen: Take, Part, Span, Rest, Drop, Append, Prepend, Insert,

Delete, ReplacePart, Join, Union, ... siehe unter Help!

testdata 1, 197, 12, 3, 367, 32, 4, 435, 41, 7, 569, 741, 197, 12, 3, 367, 32, 4, 435, 41, 7, 569, 74

Mathematica_2014_complete.nb 221

Page 222: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

MatrixForm1 197 123 367 324 435 417 569 74

3. Reihe der Matrix

testdata34, 435, 41

Parttestdata, 34, 435, 41

2. Spalte der Matrix

testdataAll, 2197, 367, 435, 569

Teilmatrix aus 1.-2. Spalte

ü Part and Span ;;

dataxy testdataAll, 1 ;; 21, 197, 3, 367, 4, 435, 7, 569

ü Take and Drop with Map û

dataxy Take, 1, 2 & testdata1, 197, 3, 367, 4, 435, 7, 569

dataxy Drop, 1 & testdata1, 197, 3, 367, 4, 435, 7, 569

ü Applyf , expr, 1 ûûû

1, 2 & testdata1, 197, 3, 367, 4, 435, 7, 569

222 Mathematica_2014_complete.nb

Page 223: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

6.4. Minimum und Maximum Suche, lokal und global

ü 1-dim Beispiele

ã Minimum einer 1 - dim Funktion

Plot2 x^2 3 x 5, x, 5, 5

-4 -2 2 4

10

20

30

40

50

60

70

Minimize2 x^2 3 x 5, x

318, x 3

4

MinValue2 x^2 3 x 5, x31

8

ArgMin2 x^2 3 x 5, x3

4

numerische Variante

NMinimize2 x^2 3 x 5, x3.875, x 0.75

Mathematica_2014_complete.nb 223

Page 224: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Minimum einer transzendenten Funktion mit "constraints"

Plotx Cosx, x, 10, 20

-10 -5 5 10 15 20

-15

-10

-5

5

10

15

Minimize geht nur für algebraische Funktionen

Minimizex Cosx, xMinimizex Cosx, x

NMinimize geht für beliebige Funktionen

Zur Bestimmung eines globalen Minimums oder Maximums muss der Bereich allerdings

eingeschränkt werden

NMinimizex Cosx, x0.561096, x 0.860334

Einschränkung mit "constraint": im Bereich 0 bis 15

NMinimizex Cosx, 0 x 15, x9.47729, x 9.52933

Einschränkung mit Anfangsintervall für Minimumsuche, hier [9,10]

NMinimizex Cosx, x, 9, 109.47729, x 9.52933

die Minimumsuche bleibt jedoch nicht auf das Intervall beschränkt

NMinimizex Cosx, x, 1, 23.28837, x 3.42562

224 Mathematica_2014_complete.nb

Page 225: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü 2-dim Beispiele

ã Minimum und Maximum einer 2-dim Funktion

fx_, y_ : x y 3^2 1

Plot3Dfx, y, x, 3, 3, y, 5, 5

Minimizefx, y, x, y1, x 1, y 3

Maximizefx, y, x, yMaximize::natt : The maximum is not attained at any point satisfying the given constraints. à

, x Indeterminate, y Indeterminate

ã Minimum einer 2 - dim algebraischen Funktion mit "constraints"

Minimizex 2 y, x^2 y^2 1, x, y

5 , x 4

5 5 , y

2

5

ü NMaximize mit constraints

fn_, x_, y_ : 16 x 1 x y 1 y Sinn x Sinn y2

Mathematica_2014_complete.nb 225

Page 226: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Maximum für n = 1

Plot3Df1, x, y, x, 0, 1, y, 0, 1

NMaximizef1, x, y, x, yNMaximize::cvdiv : Failed to converge to a solution. The function may be unbounded.à

1.782341025, x 792.35, y 735.665

NMaximizef1, x, y, 0 x 1, 0 y 1, x, y1., x 0.5, y 0.5

ã Maximum für n = 3 (mehrere lokale Maxima)

Plot3Df3, x, y, x, 0, 1, y, 0, 1, PlotRange All

226 Mathematica_2014_complete.nb

Page 227: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

NMaximizef3, x, y, 0 x 1, 0 y 1, x, y0.371886, x 0.5, y 0.205463

ã Maximum für n = 13 (sehr viele lokale Maxima)

Plot3Df13, x, y, x, 0, 1, y, 0, 1, PlotRange All

NMaximizef13, x, y, 0 x 1, 0 y 1, x, y0.673248, x 0.653037, y 0.653037

ü NMaximize mit unterschiedlichen Methoden

Für die Suche nach dem absoluten Maximum bietet Mathematica verschiedene Methoden an

NMaximizef13, x, y, 0 x 1, 0 y 1, x, y, Method Automatic0.673248, x 0.653037, y 0.653037

Method Ø "RandomSearch"

NMaximizef13, x, y, 0 x 1, 0 y 1,x, y, Method "RandomSearch"

0.673248, x 0.653037, y 0.653037

Method Ø{"RandomSearch", "SearchPoints" Ø 200, "RandomSeed" Ø 7}

NMaximizef13, x, y, 0 x 1, 0 y 1, x, y,Method "RandomSearch", "SearchPoints" 200, "RandomSeed" 7

1., x 0.5, y 0.5

Mathematica_2014_complete.nb 227

Page 228: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Method Ø"NelderMead"

NMaximizef13, x, y, 0 x 1, 0 y 1,x, y, Method "NelderMead"

0.673248, x 0.653037, y 0.653037

Method Ø"SimulatedAnnealing"

NMaximizef13, x, y, 0 x 1, 0 y 1,x, y, Method "SimulatedAnnealing"

0.673248, x 0.653037, y 0.653037

Method Ø "DifferentialEvolution"

NMaximizef13, x, y, 0 x 1, 0 y 1,x, y, Method "DifferentialEvolution"

1., x 0.5, y 0.5

am aufwändigsten, aber auch sichersten ist die Methode "RandomSearch" mit einer großen Anzahl

von "SearchPoints"

im Zweifel ist es immer besser, verschiedene Verfahren zu vergleichen

6.5. Statistische Analysen, Fits

ü Einfacher Linearer Fit mit Fit[...]

ã mit der Standardfunktion Fit[data, func, var] bekommt man als Ergebnis die gewünschte Fit-Funktion

Wir betrachten den folgenden Datensatz:

data TableNx Exp2 x, x, 100.135335, 0.0366313, 0.0148725, 0.0080511, 0.00544799,0.00442383, 0.0041909, 0.00453742, 0.00552666, 0.00747951

228 Mathematica_2014_complete.nb

Page 229: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

dataPlot ListPlotdata, AxesOrigin 0, 0

2 4 6 8 10

0.02

0.04

0.06

0.08

0.10

0.12

0.14

Mit Fit[...](Least Squares Fit) können die Daten nach der Methode der

kleinsten Quadrate angepasst werden.

Das Ergebnis von Fit[...] ist die Fit-Funktion.

Es wird jedoch nichts über die Güte des Fits ausgesagt. Das kann man dann einfach in einem Plot

beurteilen.

1. Polynom-Fit: a + b x + c x2

fit1 Fitdata, 1, x, x2, x0.140872 0.0439157 x 0.00320296 x2

2. Fit mit Exponentialfunktion (immer noch linear!)

fit2 Fitdata, 1, x2, Expx, x0.00352578 0.36731 x 0.000124671 x2

3. Für einige Fälle kann auch ein nichtlinearer Fit durchgeführt werden,

hier e^(a + b x + c x^2)

fit3 ExpFitLogdata, 1, x, x2, x0.9597351.3141 x0.0933464 x

2

Vergleich der 3 Fits mit den Daten: fit1: schwarz, fit2: blau, fit3: rot

Mathematica_2014_complete.nb 229

Page 230: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowdataPlot, PlotTooltipfit1, fit2, fit3, x, 1, 10,PlotStyle Black, Blue, Red

2 4 6 8 10-0.01

0.01

0.02

0.03

0.04

0.05

hier erscheint die rote Kurve (Exponential-Fit) am besten

ShowdataPlot, Plotfit1, fit2, fit3 Tooltip, x, 1, 10,PlotStyle Black, Blue, Red, PlotRange All,

PlotRange All

2 4 6 8 10

0.02

0.04

0.06

0.08

0.10

0.12

0.14

hier erscheint die blaue Kurve (Parabel+Exp) am besten

ü Einfacher Linearer oder Nichtlinearer Fit mit FindFit[...]

ã mit FindFit[data, expr, pars, vars] bekommt man als Ergebnis die Fitparameter mit ihren numerischen Werten

erstes Beispiel (fit1) mit Parabel-Fit

FindFitdata, a b x c x2, a, b, c, xa 0.140872, b 0.0439157, c 0.00320296

FindFit kann auch nichtlineare Fits durchführen (z.B. fit3)

230 Mathematica_2014_complete.nb

Page 231: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

FindFitdata, Expa b x c x2, a, b, c, xFindFit::cvmit : Failed to converge to the requested accuracy or precision within 100 iterations.à

a 17.7605, b 19.4236, c 1.87475

allerdings sind nichtlineare Fits immer etwas schwerer und oft nicht eindeutig,

es führt jedoch zu guten Lösungen, wenn man geeignete Startwerte angeben kann:

FindFitdata, Expa b x c x2, a, 1, b, 1, c, 0, xa 0.523988, b 1.59654, c 0.117488

im Anschluss an FindFit[...] erzeugt man die Fit-Funktion mit einer Regelzuweisung:

fit4 Expa b x c x2 . 0.5239881.59654 x0.117488 x

2

ShowdataPlot, Plotfit3, fit4, x, 1.0, 10, PlotRange All,

PlotStyle Red, Green, PlotRange All

2 4 6 8 10

0.02

0.04

0.06

0.08

0.10

0.12

0.14

Mathematica_2014_complete.nb 231

Page 232: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowdataPlot,Plotfit2, fit3, fit4, x, 1.0, 10, PlotRange All,

PlotStyle Blue, Red, Green, PlotRange All

2 4 6 8 10

0.02

0.04

0.06

0.08

0.10

0.12

0.14

nun erscheint die grüne Kurve (nichtlinerer Exponential-Fit) am besten

zum Suchen von geeigneten Startwerten eines nichtlinearen Fits ist ein Plot mit Manipulate sehr

gut geeignet.

232 Mathematica_2014_complete.nb

Page 233: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ManipulateShowdataPlot,PlotExpa b x c x2, x, 1.0, 10, PlotRange All,

PlotStyle Red, Green, PlotRange All,a, 0, 2, 2, Appearance "Labeled",b, 0, 2, 2, Appearance "Labeled",c, 0, 2, 2, Appearance "Labeled", SaveDefinitions True

a 0

b 0

c 0

2 4 6 8 10

0.2

0.4

0.6

0.8

1.0

ã Abweichung als Summe der Quadrate

i=1

n

yi - f xi2

xi Range10yi data

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

0.135335, 0.0366313, 0.0148725, 0.0080511, 0.00544799,0.00442383, 0.0041909, 0.00453742, 0.00552666, 0.00747951

abweichungxi_, yi_, fit_ :Moduleyt, yt fit . x xi; Plus yi yt2

Mathematica_2014_complete.nb 233

Page 234: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

abweichungxi, yi, fit1abweichungxi, yi, fit2abweichungxi, yi, fit3abweichungxi, yi, fit40.00335038

0.000146187

0.000519765

0.0000202158

der letzte (nichtlineare) Fit ist deutlich am besten, auch Fit2 ist besser als Fit3,

der Parabel-Fit (Fit1) ist am schlechtesten

ü Nachtrag zum Paket: ErrorBarPlots` : ErrorListPlot und ErrorBar

Needs"ErrorBarPlots`"

?ErrorBarPlots`*

ErrorBarPlots`

ErrorBar ErrorBarFunction ErrorBarPlot ErrorListPlot

im ersten Beispiel sind die Abszissen wieder einfach die natürlichen Zahlen,

die Ordinaten zeigen die i , unabhängig von x !

Der Fehlerbalken wird zufällig ermittelt.

ErrorListPlotTableSqrti, RandomReal0.3, i, 1, 20, 2

2 4 6 8 10

1.5

2.0

2.5

3.0

3.5

4.0

4.5

in dem nächsten Beispiel (Normalfall) wird der Fehler in der Ordinate y einfach als 3. Kompo-

nente der Vektoren angegeben

234 Mathematica_2014_complete.nb

Page 235: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ErrorListPlot1, 1., 0.3, 2, 2, 0.6, 3, 4, 0.3, 4, 8, 1, 5.2, 5, 2

2 3 4 5

2

4

6

8

im allgemeinen Fall werden Fehlerbalken mit der Funktion ErrorBar erzeugt.

Damit können zum einen Fehlerbalken in beiden Richtungen angegeben werden

und zum anderen können auch unsymmetrische Fehler angezeigt werden.

ErrorListPlot1, 1, ErrorBar0.2, 0.3,2, 2, ErrorBar0.2, 0.3, 3, 4, ErrorBar0.2, 0.3, 0.5,4, 8, ErrorBar0.7, 0.4, 1, 0.5,

ErrorBarFunction Automatic

1.5 2.0 2.5 3.0 3.5 4.0

2

4

6

8

ü Linearer Fit mit Fehler-Gewichten

daten

1, 1.5, 0.5, 2, 2.2, 0.4, 3, 2.3, 0.15, 4.5, 3.5, 0.7;

Zum Plotten von Datenpunkten mit Fehlerbalken muss das Standard-Paket "ErrorBarPlots`"

geladen werden:

Needs"ErrorBarPlots`"

Mathematica_2014_complete.nb 235

Page 236: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

errplot ErrorListPlotdaten, PlotRange 0, 5, 0, 4.2

0 1 2 3 4 50

1

2

3

4

Zum Fitten benötigt man die Daten in der Form eines 2-spaltigen Datensatzes {x,y} und eines

Vektors {s}

dataxy datenAll, 1 ;; 21, 1.5, 2, 2.2, 3, 2.3, 4.5, 3.5

error datenAll, 30.5, 0.4, 0.15, 0.7

einfache lineare Fits ohne Berücksichtigung der Fehler, bzw. ohne Gewichte

fit1 Fitdataxy, 1, x, x0.957009 0.540187 x

fit2 Fitdataxy, 1, x, x2, x1.29347 0.230506 x 0.0556437 x2

236 Mathematica_2014_complete.nb

Page 237: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl1 Showerrplot, Plotfit1, fit2, x, 0, 5,PlotLabel "ohne Fehlergewichte"

0 1 2 3 4 50

1

2

3

4ohne Fehlergewichte

ü Berechnung des Chi-Quadrat:

c2 = i=1

n yi - f xi2

si2

Das folgende Modul berechnet sowohl das c2 für Datensätze mit Fehlerangaben als auch die

einfache quadratische Abweichung für Datensätze ohne Fehlerangaben.

chiquadratdaten_, fit_ : Modulexi, yi, di, yt,xi datenAll, 1; yi datenAll, 2;di IfDimensionsdaten2 3, datenAll, 3, 1;

yt fit . x xi; Plus yi yt2

di2

chiquadratdaten, fit13.61521

chiquadratdataxy, fit10.116075

chiquadratdaten, fit21.87371

chiquadratdataxy, fit20.0923612

Mathematica_2014_complete.nb 237

Page 238: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Reduziertes Chi-Quadrat bzw. Chi-Quadrat pro Freiheitsgrad ( c2/d.o.f. )

Anzahl der Freiheitsgrade = Anzahl der Datenpunkte - Anzahl der Parameter

chiquadratdaten, fit1Lengthdaten 2

Beispiel für 4 Datenpunkte und 2 Parameter 1.8076

chiquadratdaten, fit2Lengthdaten 3

Beispiel für 4 Datenpunkte und 3 Parameter 1.87371

Obwohl die Abweichung im zweiten Fit kleiner ist als im ersten,

ist das reduzierte Chi-Quadrat im ersten Fall kleiner!

ü Linearer Fit mit LinearModelFit[data, func, var]

zuerst noch einmal zum Vergleich ohne Gewichte, das ergibt das gleiche Ergebnis wie bei Fit[...]

lm1 LinearModelFitdataxy, 1, x, x

FittedModel 0.957009+ 0.540187 x

die funktionale Form erhält man durch

Normallm10.957009 0.540187 x

Zum Berechnen von Funktionswerten oder z.B. zum Plotten kann man aber direkt das Ergebnis von

LinearModelFit verwenden

lm111.4972

zum Plotten der Fitkurve gemeinsam mit den Daten verwendet man meistensShowPlot ..., ListPlot ...alternative Plot-Methode mit Epilog:

238 Mathematica_2014_complete.nb

Page 239: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Plotlm1x, x, 0, 5,Epilog Red, PointSize0.02, Point dataxy

1 2 3 4 5

1.5

2.0

2.5

3.0

3.5

weitere Informationen über den Fit, z.B. Fehleranalyse:

Chi-Quadrat, Fitparameter, Parameter-Tabelle mit Fehlern, Kovarianzmatrix, Korrelations-

matrix, etc

(siehe Online Help für LinearModelFit)

sehr viele Eigenschaften des Fits bekommt man mit der Syntax: lm1".. properties .."

lm1"EstimatedVariance" 2Freiheitsgrad,hier unrealisch klein, da keine Fehler verwendet werden. In

diesem Fall wird der Fehler automatisch als 1.0 angenommen 0.0580374

fit1 lm1"BestFit"0.957009 0.540187 x

lm1"BestFitParameters"0.957009, 0.540187

lm1"ParameterTable"

Estimate Standard Error t Statistic P-Value

1 0.957009 0.272598 3.5107 0.072431x 0.540187 0.0931584 5.79859 0.0284767

Mathematica_2014_complete.nb 239

Page 240: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

lm1"ParameterConfidenceIntervalTable"

Estimate Standard Error Confidence Interval

1 0.957009 0.272598 -0.215884, 2.1299x 0.540187 0.0931584 0.139359, 0.941015

lm1"CovarianceMatrix" MatrixForm0.0743095 0.0227810.022781 0.00867849

lm1"CorrelationMatrix" MatrixForm1. 0.897076

0.897076 1.

linearer Fit mit Parabelform ohne Gewichte, bzw. Fehlerangaben

lm2 LinearModelFitdataxy, 1, x, x2, x

FittedModel 1.29347+ 0.230506 x+ 0.0556437 x2

fit2 lm2"BestFit"1.29347 0.230506 x 0.0556437 x2

pl1 Showerrplot, Plotfit1, fit2, x, 0, 5,PlotLabel "ohne Fehlergewichte"

0 1 2 3 4 50

1

2

3

4ohne Fehlergewichte

Vergleich der Parameter-Tabellen

240 Mathematica_2014_complete.nb

Page 241: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Gridlm1"EstimatedVariance", " ", lm2"EstimatedVariance",

lm1"ParameterTable", " ", lm2"ParameterTable"0.0580374 0.0923612

EstimaÖ StandÖ t P-ValÖ

1 0.957Ö 0.272Ö 3.5107 0.072Ö

x 0.540Ö 0.093Ö 5.798Ö 0.028Ö

EstimÖ StandÖ t P-ValÖ

1 1.293Ö 0.747Ö 1.729Ö 0.333Ö

x 0.230Ö 0.622Ö 0.370Ö 0.774Ö

x2 0.055Ö 0.109Ö 0.506Ö 0.701Ö

der 2. Fit ist aus statistischen Gründen schlechter als der 1. Fit, obwohl er vielleicht besser aussieht

!!!

Beachte insbesondere das c2 und die Standard-Fehler.

dann mit Gewichten aus den Fehlerbalken

Gewichte 1

error2

4., 6.25, 44.4444, 2.04082

lm1a LinearModelFitdataxy, 1, x, x, Weights Gewichte

FittedModel 1.08944+ 0.423259 x

Hier der Vergleich: links der ungewichtete Fit und rechts der fehlergewichtete Fit:

Mathematica_2014_complete.nb 241

Page 242: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Grid"BestFit", lm1"BestFit", lm1a"BestFit","EstimatedVariance",lm1"EstimatedVariance", lm1a"EstimatedVariance",

"BestFitParameters", lm1"BestFitParameters",lm1a"BestFitParameters",

"ParameterTable", lm1"ParameterTable",lm1a"ParameterTable",

"CorrelationMatrix", lm1"CorrelationMatrix" MatrixForm,lm1a"CorrelationMatrix" MatrixForm

, Frame AllBestFit 0.957009 0.540187 x 1.08944 0.423259 x

EstimatedVariance 0.0580374 0.55727

BestFitParameters 0.957009, 0.540187 1.08944, 0.423259

ParameterTable

EstiÖ StanÖ t P-VÖ

1 0.95Ö 0.27Ö 3.51Ö 0.07Ö

x 0.54Ö 0.09Ö 5.79Ö 0.02Ö

EstiÖ StanÖ t P-VÖ

1 1.08Ö 0.43Ö 2.51Ö 0.12Ö

x 0.42Ö 0.15Ö 2.81Ö 0.10Ö

CorrelationMatrix1. 0.897076

0.897076 1.1. 0.973458

0.973458 1.

lm2a LinearModelFitdataxy, 1, x, x2, x, Weights Gewichte;

pl2 Showerrplot, Plotlm1ax, lm2ax, x, 0, 5,PlotLabel "mit Fehlergewichten";

242 Mathematica_2014_complete.nb

Page 243: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

GraphicsRowpl1, pl2, ImageSize 600

0 1 2 3 4 50

1

2

3

4ohne Fehlergewichte

0 1 2 3 40

1

2

3

4mit Fehlergewichten

Im gewichteten Fit wird der 3. Datenpunkt mit dem kleinsten Fehler bevorzugt,

Datenpunkte mit großen Fehlern bekommen dagegen ein geringes statistisches Gewicht.

ü wichtigste Ergebnisse des LinearModelFit

BestFit Fitfunktion

EstimatedVariance reduziertes Chi-Quadrat

BestFitParameters Fit Parameter

ParameterTable:

Estimate Wert des Parameters

StandardError Fehler des Parameters für einen Confidence Level CL=0.68 (wert ±

fehler)

ü weitere Optionen für Ergebnis-Ausgabe

CovarianceMatrix Kovarianz-Matrix

CorrelationMatrix Korrelations-Matrix

ParameterConfidenceIntervals Konfidenzintervall der Parameter

ParameterConfidenceRegion Konfidenzregion

und vieles mehr, siehe Online Help von LinearModelFit oder NonlinearModelFit

ü Beispiel: Linearer Fit mit 4 Punkten

daten 0, 0, 0.3, 1, 1.5, 0.5, 2, 2, 0.5, 3, 2.5, 0.5;

Mathematica_2014_complete.nb 243

Page 244: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ErrorListPlotdaten, AxesOrigin 0.2, 0

0.0 0.5 1.0 1.5 2.0 2.5 3.0

0.5

1.0

1.5

2.0

2.5

3.0

dataxy datenAll, 1 ;; 2;

Gewichte 1 datenAll, 32;

nlm LinearModelFitdataxy, 1, x, x, Weights Gewichte

FittedModel 0.133663+ 0.871287 x

"EstimatedVariance", "BestFit", "ParameterTable"

0.742574, 0.133663 0.871287 x,

Estimate Standard Error t Statistic P-Value

1 0.133663 0.240622 0.555492 0.6344x 0.871287 0.154579 5.63651 0.0300638

ü Fehlerbänder

Fehlerband mit 50 % Confidence Level

nlm"MeanPredictionBands", ConfidenceLevel 0.5

0.133663 0.871287 x 0.816497 0.0578987 0.0496275 x 0.0238947 x2 ,

0.133663 0.871287 x 0.816497 0.0578987 0.0496275 x 0.0238947 x2

Fehlerband mit 68 % Confidence Level

nlm"MeanPredictionBands", ConfidenceLevel 0.68

0.133663 0.871287 x 1.31158 0.0578987 0.0496275 x 0.0238947 x2 ,

0.133663 0.871287 x 1.31158 0.0578987 0.0496275 x 0.0238947 x2

Fehlerband mit 99 % Confidence Level

244 Mathematica_2014_complete.nb

Page 245: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

nlm"MeanPredictionBands", ConfidenceLevel 0.99

0.133663 0.871287 x 9.92484 0.0578987 0.0496275 x 0.0238947 x2 ,

0.133663 0.871287 x 9.92484 0.0578987 0.0496275 x 0.0238947 x2

Fehlerbänder mit 50, 68, 90, 95, 99 und 99.9 % Confidence Level

bands50x_, bands68x_, bands90x_,bands95x_, bands99x_, bands999x_

Tablenlm"MeanPredictionBands", ConfidenceLevel cl,cl, .5, .68, .9, .95, .99, .999;

ShowListPlotdataxy,Plotnlmx, bands90x, bands95x, bands99x, bands999x,x, 0, 4, Filling 2 1, 3 2, 4 3, 5 4

68% Confidence Level: 68% aller Datenpunkte sollten im Fehlerband liegen

normales 1s Kriterium

ShowListPlotdataxy,Plotnlmx, bands68x, x, 0, 4, Filling 2 1

95% Confidence Level: 95% aller Datenpunkte sollten im Fehlerband liegen

2s Kriterium

Mathematica_2014_complete.nb 245

Page 246: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlotdataxy,Plotnlmx, bands95x, x, 0, 4, Filling 2 1

ü Nichtlinearer Fit mit FindFit[...]

data 10, 59.14, 1.25, 55.6, 1.00, 51.00,.75, 46.84, .5, 35.89, .4, 29.21, .3, 19.7,.2, 10., .1, 2.67;

lpl1 ListPlotdata, AxesOrigin 0, 0

2 4 6 8 10

10

20

30

40

50

60

Clearr

fx_ : c r2 1 Exp xr2

Einfacher nichtlinearer Fit mit FindFit ohne zusätzliche Optionen

nfit FindFitdata, fx, c, 70., r, .5, xc 77.0881, r 0.475636

246 Mathematica_2014_complete.nb

Page 247: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Nichtlinearer Fit mit NonlinearModelFit[data, func, pars, var]

fx . nfit54.7881 1 4.42029 x2

nlm NonlinearModelFitdata, fx, c, 70., r, .5, x

FittedModel 54.7881 1-‰-4.42029 x2

die Ergebnisse sind identisch!

nlm"EstimatedVariance", "BestFit", "ParameterTable"6.84047, 54.7881 1 4.42029 x2,

Estimate Standard Error t Statistic P-Value

c 77.0881 6.19237 12.4489 4.96759μ 10-6

r 0.475636 0.0220855 21.5361 1.17316μ 10-7

pl2 Plotnlmx, x, 0, 10, PlotRange All;

Showlpl1, pl2, PlotRange All

2 4 6 8 10

10

20

30

40

50

60

ü Beispiel: Gaußverteilung mit statistischen Fehlern

gaussdat ReadList"Gauss.dat", Real, Real;

X gaussdatAll, 1;Y gaussdatAll, 2; Y ;

Mathematica_2014_complete.nb 247

Page 248: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pl5 ErrorListPlotTransposeX, Y, ,PlotStyle Red, PointSize0.013

20 40 60 80 100

200

400

600

800

wi 1

2; Gewichte

Clearn0, x0, del

nlresult NonlinearModelFitgaussdat, n0 Exp x x0

del

2

,n0, 1000, x0, 60, del, 50, x,

Weights wi

FittedModel 851.487 ‰-0.00254226á1à2

"EstimatedVariance", "BestFit", "ParameterTable"0.818393, 851.487 0.00254226 49.4886x2,

Estimate Standard Error t Statistic P-Value

n0 851.487 5.45278 156.156 2.55743μ 10-118

x0 49.4886 0.0735273 673.065 8.70761μ 10-180

del 19.8331 0.0736596 269.253 3.25409μ 10-141

"CovarianceMatrix", "CorrelationMatrix"29.7328, 0.00169644, 0.231792,

0.00169644, 0.00540626, 0.0000397405, 0.231792, 0.0000397405, 0.00542574,1., 0.00423127, 0.577101, 0.00423127, 1., 0.00733763, 0.577101, 0.00733763, 1.

MatrixForm "CovarianceMatrix", "CorrelationMatrix"

29.7328 0.00169644 0.231792

0.00169644 0.00540626 0.00003974050.231792 0.0000397405 0.00542574

,1. 0.00423127 0.577101

0.00423127 1. 0.007337630.577101 0.00733763 1.

248 Mathematica_2014_complete.nb

Page 249: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Showpl5, Plotnlresultx, x, 0, 100, PlotRange All

20 40 60 80 100

200

400

600

800

Alle Angaben und Details über den NonlinearModelFit sind wie beim LinearModelFit (siehe Help)

ü Beispiel: Allgemeiner Fit mit Fehlern in x und y

Hierbei werden die Fehler in x sx) nach y zum Fehler in y sy) projiziert:

c2 = i=1

n yi - f xi2

syi2 + f ' xisxi2

Da a priori die Funktion f(x) und damit auch ihre Ableitung f'(x) noch nicht bekannt sind, führt man eine

Iteration durch,

die im Allgemeinen schnell konvergiert.

daten4 1, 0.2, 1.5, 0.5, 2, 0.8, 3.0, 0.5,4, 0.5, 2, 1.0, 6, 1.2, 2.5, 0.5, 7.5, 1.5, 1.5, 0.3;

Xa, Xa, Ya, Ya Transposedaten41, 2, 4, 6, 7.5, 0.2, 0.8, 0.5, 1.2, 1.5, 1.5, 3., 2, 2.5, 1.5, 0.5, 0.5, 1., 0.5, 0.3

datenplot TableXai, Yai,ErrorBarXai, Yai, i, 1, LengthXa

1, 1.5, ErrorBar0.2, 0.5, 2, 3., ErrorBar0.8, 0.5, 4, 2, ErrorBar0.5, 1.,6, 2.5, ErrorBar1.2, 0.5, 7.5, 1.5, ErrorBar1.5, 0.3

Mathematica_2014_complete.nb 249

Page 250: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

pldat ErrorListPlotdatenplot, PlotRange 0, 5

0 2 4 6 8

1

2

3

4

5

dataxy TransposeXa, Ya1, 1.5, 2, 3., 4, 2, 6, 2.5, 7.5, 1.5

mx m1, m2, m3, m4, m5 die Steigung der "wahren" Funktion ist erstmal unbekannt

m1, m2, m3, m4, m5

Gewichte :1

Ya2 mx Xa2

ã 0. Iteration

mx 0

Gewichte

0

4., 4., 1., 4., 11.1111

nlm LinearModelFitdataxy, 1, x, x2, x, Weights Gewichte

FittedModel 0.876173+ 1.0577 x- 0.130321 x2

250 Mathematica_2014_complete.nb

Page 251: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

nlm"EstimatedVariance", "BestFit", "ParameterTable"1.27205, 0.876173 1.0577 x 0.130321 x2,

Estimate Standard Error t Statistic P-Value

1 0.876173 0.931536 0.940568 0.446214x 1.0577 0.602277 1.75617 0.221142x2 -0.130321 0.0676832 -1.92546 0.194037

fitfunc1x_ nlm"BestFit"0.876173 1.0577 x 0.130321 x2

Showpldat, Plotfitfunc1x, x, 0, 9

0 2 4 6 8

1

2

3

4

5

ã 1. Iteration

mx fitfunc1'XaGewichte jetzt ändern sich die Gewichte 0.797058, 0.536416, 0.015131, 0.506154, 0.897117

3.63092, 2.30333, 0.999943, 1.61573, 0.526082

nlm LinearModelFitdataxy, 1, x, x2, x, Weights Gewichte

FittedModel 0.833421+ 1.01433 x- 0.125448 x2

fitfunc2x_ nlm"BestFit"0.833421 1.01433 x 0.125448 x2

Mathematica_2014_complete.nb 251

Page 252: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Showpldat, Plotfitfunc1x, fitfunc2x, x, 0, 9

0 2 4 6 8

1

2

3

4

5

ã 2. Iteration

mx fitfunc2'XaGewichte jetzt haben sich die

Gewichte nur noch geringfügig geändert 0.763429, 0.512533, 0.0107397, 0.491053, 0.867398

3.65881, 2.39165, 0.999971, 1.67439, 0.560899

nlm LinearModelFitdataxy, 1, x, x2, x, Weights Gewichte

FittedModel 0.82936+ 1.02343 x- 0.12665 x2

fitfunc3x_ nlm"BestFit"0.82936 1.02343 x 0.12665 x2

252 Mathematica_2014_complete.nb

Page 253: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

Showpldat,Plotfitfunc1x, fitfunc2x, fitfunc3x, x, 0, 9

0 2 4 6 8

1

2

3

4

5

GraphicsGridShowpldat, Plotfitfunc1x, x, 0, 9,Showpldat, Plotfitfunc1x, fitfunc2x, x, 0, 9,Showpldat, Plotfitfunc1x, fitfunc3x, x, 0, 9,

ImageSize 800

0 2 4 6 8

1

2

3

4

5

0 2 4 6 8

1

2

3

4

5

Die 1. und 2. Iteration sind grafisch nicht mehr zu unterscheiden!

nlm"EstimatedVariance", "BestFit", "ParameterTable"0.981426, 0.82936 1.02343 x 0.12665 x2,

Estimate Standard Error t Statistic P-Value

1 0.82936 1.02596 0.808372 0.503745x 1.02343 0.767239 1.33392 0.313846x2 -0.12665 0.0989389 -1.28008 0.328926

Mathematica_2014_complete.nb 253

Page 254: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü Beispiel: Fits an 2 Funktionen mit einem gemeinsamen Parametersatz z.B. Real- und Imaginärteil einer komplexen Funktion

ã Pseudo-Daten mit relativen Abweichungen und relativen Fehlern

ax_ : 3 c1 5 c2 x

bx_ : c1 c2 x2

f1x_ : 1

100ax2 bx2

f2x_ : 1

10ax bx

c10 1.0; c20 3.0; 0 0.35;

data1 Tablex, f1x RandomRealNormalDistribution0, 0 Absf1x ,

0 Absf1x . c1 c10, c2 c20,x, .9, .9, 0.2

data2 Tablex, f2x RandomRealNormalDistribution0, 0 Absf2x ,

0 Absf2x . c1 c10, c2 c20,x, .9, .9, 0.2

0.9, 1.19061, 0.370893, 0.7, 0.667032, 0.263015,0.5, 0.198199, 0.157743, 0.3, 0.0496677, 0.0583871,0.1, 0.0237638, 0.0625208, 0.1, 0.0330805, 0.161118, 0.3, 0.910598, 0.263741,0.5, 1.11724, 0.367604, 0.7, 2.8655, 0.472786, 0.9, 3.11345, 0.579665

0.9, 1.8026, 0.428875, 0.7, 0.265238, 0.207801,0.5, 0.117014, 0.117394, 0.3, 0.272311, 0.115818,0.1, 0.185725, 0.133506, 0.1, 0.593223, 0.231239, 0.3, 0.563615, 0.258976,0.5, 0.566381, 0.179322, 0.7, 0.177899, 0.278794, 0.9, 1.88175, 0.537623

GraphicsRowErrorListPlotdata1, ErrorListPlotdata2, ImageSize 600

-0.5 0.5

1

2

3

-0.5 0.5

-2

-1

1

2

254 Mathematica_2014_complete.nb

Page 255: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

gemeinsame Fitfunktion durch ERweiterung um einen zusätzlichen Parameter

x1, y1, 1 Transposedata1;x2, y2, 2 Transposedata2;

dataxy

JoinTranspose0 x1 1, x1, y1, Transpose0x2 2, x2, y21, 0.9, 1.19061, 1, 0.7, 0.667032, 1, 0.5, 0.198199, 1, 0.3, 0.0496677,1, 0.1, 0.0237638, 1, 0.1, 0.0330805, 1, 0.3, 0.910598, 1, 0.5, 1.11724,1, 0.7, 2.8655, 1, 0.9, 3.11345, 2, 0.9, 1.8026, 2, 0.7, 0.265238,2, 0.5, 0.117014, 2, 0.3, 0.272311, 2, 0.1, 0.185725, 2, 0.1, 0.593223,2, 0.3, 0.563615, 2, 0.5, 0.566381, 2, 0.7, 0.177899, 2, 0.9, 1.88175

wghts 1 Join1, 22

7.26949, 14.4557, 40.1884, 293.337, 255.83, 38.5225, 14.3763, 7.40013, 4.47374, 2.97609,5.43674, 23.1582, 72.5624, 74.5504, 56.1049, 18.7016, 14.9101, 31.0982, 12.8657, 3.45974

fitfunck_, x_ :f1x k 1f2x k 20 True

fitfunck_, x_ :

Piecewisef1x, k 1, f2x, k 2, 0, True

fitfunc1, x1

1003 c1 5 c2 x2 c1 c2 x22

fitfunc2, x1

103 c1 5 c2 x c1 c2 x2

fitfunc3, x0

ã Nichtlinearer Fit mit dem gemeinsamen Datensatz

nlm NonlinearModelFitdataxy, fitfunck, x,c1, 0, c2, 1, k, x, Weights wghts;

nlm"EstimatedVariance"0.930352

nlm"BestFitParameters"c1 1.17968, c2 3.13994

Mathematica_2014_complete.nb 255

Page 256: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

bestfk_, x_ nlm"BestFit"1

1003.53905 15.6997 x2 1.17968 3.13994 x22 k 1

1

103.53905 15.6997 x 1.17968 3.13994 x2 k 2

0 True

nlm"ParameterTable"

Estimate Standard Error t Statistic P-Value

c1 1.17968 0.0762907 15.463 7.74258μ 10-12

c2 3.13994 0.125879 24.9441 2.06258μ 10-15

nlm"CorrelationMatrix" MatrixForm1. 0.433266

0.433266 1.

GraphicsRowShowPlotbestf1, x, x, 1, 1, ErrorListPlotdata1,ShowPlotbestf2, x, x, 1, 1,ErrorListPlotdata2, ImageSize 600

-1.0 -0.5 0.5 1.0

0.51.01.52.02.53.03.5

-1.0 -0.5 0.5

-1

1

2

nlm"StandardizedResiduals" ListPlot, Filling Axis &

256 Mathematica_2014_complete.nb

Page 257: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

6.7. Interpolation

ü Polynominterpolation

Beispiel: Temperaturverlauf

Interpolation aus 5 Elementen der ursprünglichen Liste:

Die beiden Funktionen Part([[...]]) und Take[...] sind dafür am besten geeignet:

tempdat

0., 22., 2., 21., 4., 20., 6., 19., 8., 20., 10., 23.,12., 27., 14., 31., 16., 33., 18., 32., 20., 29., 22., 26., 24., 24.

tempdat1 tempdat1, 4, 7, 10, 130., 22., 6., 19., 12., 27., 18., 32., 24., 24.

tempdat1 tempdat1 ;; 13 ;; 30., 22., 6., 19., 12., 27., 18., 32., 24., 24.

tempdat1 Taketempdat, 1, 13, 30., 22., 6., 19., 12., 27., 18., 32., 24., 24.

ListPlottempdat1, PlotRange 16, 35, AxesOrigin 0, 18

5 10 15 20

20

25

30

35

ipol1 InterpolatingPolynomialtempdat1, x24. 24. x 0.0833333 0.0277778 0.0100309 0.000128601 6. x 12. x 0. x

Expand22. 2.36111 x 0.398148 x2 0.0154321 x3 0.000128601 x4

Mathematica_2014_complete.nb 257

Page 258: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlottempdat1, PlotRange 15, 35,Plotipol1, x, 0, 24

0 5 10 15 20

20

25

30

35

ü Stückweise stetige Interpolation mit Interpolation[data]

ifunc Interpolationtempdat1InterpolatingFunction0., 24.,

ShowListPlottempdat1, PlotRange 15, 35,Plotipol1, ifuncx, x, 0, 24

0 5 10 15 20

20

25

30

35

Lineare Interpolation

mit der Option: InterpolationOrder Ø 1

ifunc1 Interpolationtempdat1, InterpolationOrder 1InterpolatingFunction0., 24.,

258 Mathematica_2014_complete.nb

Page 259: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlottempdat1, PlotRange 15, 35,Plotipol1, ifunc1x, x, 0, 24

0 5 10 15 20

20

25

30

35

ã 1. und 2. Ableitungen der stückweise stetigen Interpolationsfunktion

Plotifunc'x, ifunc''x, x, 0, 24

5 10 15 20

-3

-2

-1

1

normalerweise ist der Interpolationsgrad von 3. Ordnung (kubische Polynome)

man kann jedoch auch andere Ordnungen vorgeben, z.B. lineare Interpolation!

ü Interpolation mit Splines

Needs"Splines`"

spl1 SplineFittempdat1, CubicSplineFunctionCubic, 0., 4.,

Die Spline-Interpolation im Package: SplineFit erzeugt eine Parameterdarstellung {x(t), y(t)},

also keine Funktion y(x)!

Mathematica_2014_complete.nb 259

Page 260: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlottempdat, PlotRange 15, 35,ParametricPlotspl1t, t, 0, 4

0 5 10 15 20

20

25

30

35

Vergleich der verschiedenen Interpolationsarten (Spline ist am besten!):

ShowListPlottempdat, PlotRange 15, 35,Plotipol1, ifunc1x, x, 0, 24, PlotStyle Blue, Green,ParametricPlotspl1t, t, 0, 4, PlotStyle Red

0 5 10 15 20

20

25

30

35

ü Interpolation mit einem Polynom 10. Ordnung

Beispiel einer Resonanzkurve

data1 Tablex, 1

1 x2, x, 5, 5, 1

5, 1

26, 4, 1

17, 3, 1

10, 2, 1

5,

1, 1

2, 0, 1, 1, 1

2, 2, 1

5, 3, 1

10, 4, 1

17, 5, 1

26

260 Mathematica_2014_complete.nb

Page 261: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ListPlotdata1, AxesOrigin 6, 0

-4 -2 0 2 4

0.2

0.4

0.6

0.8

1.0

ipol InterpolatingPolynomialdata1, x Expand

1 149 x2

2212181 x4

11 05083 x6

3400

7 x8

5525

x10

44 200

ShowListPlotdata1,AxesOrigin 5, 0, Frame True, AspectRatio 1.2,

PlotRange 0.3, 1.3, Plotipol, x, 5, 5

-4 -2 0 2 4

0.0

0.5

1.0

Mathematica_2014_complete.nb 261

Page 262: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ü stückweise stetige Interpolation mit kubischen Polynomen (keine Splines)

ifunc3 Interpolationdata1InterpolatingFunction5, 5,

ShowListPlotdata1, Frame True,

AxesOrigin 5, 0, AspectRatio 1.0,

PlotRange 0, 1.1, Plotifunc3x, x, 5, 5

-4 -2 0 2 40.0

0.2

0.4

0.6

0.8

1.0

262 Mathematica_2014_complete.nb

Page 263: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ã Ableitungen der Interpolationsfunktion

ShowListPlotdata1, Frame True, AspectRatio 1.2,PlotTooltipifunc3x, "InterpolationsFunktion",

Tooltipifunc3'x, "1. Ableitung",Tooltipifunc3''x, "2. Ableitung",

x, 5, 5, PlotRange All

-4 -2 0 2 4-1.0

-0.5

0.0

0.5

1.0

Hier hat die InterpolatingFunction nicht einmal eine stetige 1. Ableitung!

Die beste Interpolation liefern in diesem Falle wieder die Splines

mit einer stetigen und glatten 1. Ableitung (siehe Übungsaufgabe).

ü neu ab Vers. 7 : Method->Spline

ifunc3 Interpolationdata1, Method SplineInterpolatingFunction5, 5,

Mathematica_2014_complete.nb 263

Page 264: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlotdata1, Frame True,

AxesOrigin 5, 0, AspectRatio 1.0,

PlotRange 0, 1.1, Plotifunc3x, x, 5, 5

-4 -2 0 2 40.0

0.2

0.4

0.6

0.8

1.0

ShowListPlotdata1, Frame True, AspectRatio 1.2,PlotTooltipifunc3x, "InterpolationsFunktion",

Tooltipifunc3'x, "1. Ableitung",x, 5, 5, PlotRange All

-4 -2 0 2 4

-0.5

0.0

0.5

1.0

264 Mathematica_2014_complete.nb

Page 265: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

ShowListPlotdata1, Frame True, AspectRatio 1.2,PlotTooltipifunc3x, "InterpolationsFunktion",

Tooltipifunc3'x, "1. Ableitung",Tooltipifunc3''x, "2. Ableitung",

x, 5, 5, PlotRange All

-4 -2 0 2 4

-1.0

-0.5

0.0

0.5

1.0

mit der Spline-Methode ist auch die 1. Ableitung stetig und glatt

ü mehrdimensionale Interpolation

f0W_, th_ : 5.0 Costh ° W 1000

f2W_, th_ : f0W, th

bei ListInterpolation werden das Feld und das zugehörige Gitter getrennt angegeben

fint2 ListInterpolationTablef2W, th,W, 1100, 1200, 10, th, 0, 180, 10, 1100, 1200, 0, 180

InterpolatingFunction1100., 1200., 0., 180.,

bei Interpolation werden die Daten mit der Struktur: x1, y1, ..., f1, x2, y2, ..., f2, ...eingegeben

daher ist bei Verwendung einer mehrdimensionalen Tabelle ein Flatten-Befehl notwendig

Mathematica_2014_complete.nb 265

Page 266: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

tab1

TableW, th, f2W, th, W, 1100, 1200, 50, th, 0, 180, 901100, 0, 0.06, 1100, 90, 0.05, 1100, 180, 0.04,1150, 0, 0.04, 1150, 90, 0.0333333, 1150, 180, 0.0266667,1200, 0, 0.03, 1200, 90, 0.025, 1200, 180, 0.02

tab2 TableW, th, f2W, th,W, 1100, 1200, 50, th, 0, 180, 90 Flatten, 1 &

1100, 0, 0.06, 1100, 90, 0.05, 1100, 180, 0.04,1150, 0, 0.04, 1150, 90, 0.0333333, 1150, 180, 0.0266667,1200, 0, 0.03, 1200, 90, 0.025, 1200, 180, 0.02

fint2a InterpolationTableW, th, f2W, th,W, 1100, 1200, 10, th, 0, 180, 10 Flatten, 1 &

InterpolatingFunction1100., 1200., 0., 180.,

die Interpolation ergibt bei beiden Funktionen die selben Ergebnisse

f21120, 90, fint21120, 90, fint21120, 900.0416667, 0.0416667, 0.0416667

ManipulateGraphicsGridPlotf2w, th, fint2w, th, fint2w, th, th, 0, 180,

PlotAbsf2w, th fint2w, th, th, 0, 180,PlotAbsf2w, th fint2aw, th, th, 0, 180,

ImageSize 600, w, 1150, 1120, 1200, Appearance "Labeled",

ImageSize Large, SaveDefinitions True

w 1150

50 100 150

0.030

0.032

0.034

0.036

0.038

0.040

50 100 150

5.μ10-8

1.μ10-7

1.5μ10-7

2.μ10-7

2.5μ10-7

50 100

5.μ10-8

1.μ10-7

1.5μ10-7

2.μ10-7

2.5μ10-7

ü mehrdimensionale Interpolation mit Parametern

f3W_, th_, a_, b_ :a 5.0 Costh ° W 1000.0 b 2.0 Sinth ° W 1000.02

266 Mathematica_2014_complete.nb

Page 267: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

fint3 ListInterpolationTablef3W, th, a, b,W, 1100, 1200, 10, th, 0, 180, 10, 1100, 1200, 0, 180

InterpolatingFunction1100., 1200., 0., 180.,

f31180, 90, a, b Nfint31180, 90 Simplify0.0277778 a 0.0000925926 b

0.0277778 a 0.0000925926 b

f31185, 90, a, b Nfint31185, 90 Simplify0.027027 a 0.0000876552 b

0.0270269 a 0.0000876531 b

f31185, 93, a, b Nfint31185, 93 Simplify0.0267441 a 0.0000876152 b

0.026744 a 0.0000876125 b

6.8. Diskrete Approximation

ü Padé-Approximation

Die Padé-Approximation ist eine Entwicklung nach gebrochen-rationalen Funktionen p(x)/q(x).

Besonders deutlich ist der Vorteil gegenüber einer Taylorreihe bei Funktionen mit Polen. Im folgen-

den Beispiel wird der Tangens um x=0 mit einer Padé-Approximanten der Ordnung n=2 im Zähler

und m=4 im Nenner an

pad PadeApproximantTanx, x, 0, 2, 4x

1 x2

3

x4

45

Fq2_ : M2

M2 q2 1

q2M

Log q2

M2

SetDelayed::write : Tag List in mx££t, m y££t, m z££tq2_ is Protected.à$Failed

Mathematica_2014_complete.nb 267

Page 268: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PadeApproximantFq2, q2, q2p, 0, 1m xt, m yt, m ztq2p1

q2q2p m xt,m yt,m ztq2pm xt,m yt,m ztq2p

Im Vergleich dazu die Taylorreihe bis zur Ordnung n=8:

SeriesTanx, x, 0, 8

x x3

32 x5

1517 x7

315 Ox9

taylor Normal

x x3

32 x5

1517 x7

315

Die Padé-Aproximation [2,4] ist bis zur Ordnung n+m=2+4=6 mit der Taylorreihe identisch:

Seriespad, x, 0, 8

x x3

32 x5

157 x7

135 Ox9

Der Vergleich zeigt ganz deutlich den Vorteil der Padé-Approx. am Pol:

PlotTanx, taylor, pad, x, 0, 2 , PlotStyle

Black, Thickness0.001, Blue, Red, Thickness0.001

1 2 3 4 5 6

-200

-100

100

200

300

400

Approximation einer endlichen Funktion, z.B. Cosinus

pad1 PadeApproximantCosx, x, 0, 2, 21

5 x2

12

1 x2

12

268 Mathematica_2014_complete.nb

Page 269: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

tay1 NormalSeriesCosx, x, 0, 4

1 x2

2x4

24

PlotCosx, tay1, pad1, x, 0, ,PlotStyle Black, Blue, Red, PlotRange 1.5, 1.5

0.5 1.0 1.5 2.0 2.5 3.0

-1.5

-1.0

-0.5

0.5

1.0

1.5

Eine deutliche Verbesserung erzielt man bei einer Entwicklung um einen Punkt in der Mitte des

betrachteten Intervalls:

pad2 PadeApproximantCosx, x,

2, 2, 2

2 x

1 1

6

2 x2

tay2 NormalSeriesCosx, x,

2, 4

2 x

1

6

2 x

3

Die folgende Funktion ökonomisiert die Padé-Approximation, indem sie die hohe Genauigkeit im

Zentrum zugunsten einer deutlichen Verbesserung an den Rändern opfert:

Needs"FunctionApproximations`"

eco EconomizedRationalApproximationCosx, x, 0, , 2, 2

2 x

7

2402

2 x 7 4

2x

46080

1 7 2

240

1

6

2 x2

Mathematica_2014_complete.nb 269

Page 270: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotCosx, tay2, pad2, eco, x, 0, ,PlotStyle Black, Blue, Red, Purple, PlotRange 1.5, 1.5

0.5 1.0 1.5 2.0 2.5 3.0

-1.5

-1.0

-0.5

0.5

1.0

1.5

Die Güte der Approximation lässt sich nur noch in der Darstellung des Fehlers erkennen

PlotCosx tay2, Cosx pad2, Cosx eco, x, 0, ,PlotStyle Blue, Red, Purple, Thickness0.005,Frame True, PlotRange 0.05, 0.05

0.0 0.5 1.0 1.5 2.0 2.5 3.0

-0.04

-0.02

0.00

0.02

0.04

ü Numerische Aproximation

Die Funktion RationalInterpolation[...] arbeitet ähnlich wie die Funktion EconomizedRationalAp-

proximation[...], jedoch mit einem numerischen Algorithmus. Daher sind die Koeffizienten der

gebrochen-rationalen Funktion auch nicht exakt, sondern in Maschinengenauigkeit gegeben:

ri1 RationalInterpolationCosx, x, 2, 2, x, 0, 1.00915 0.642447 x 9.949191017 x2

1 0.498596 x 0.158708 x2

Die Fehler der beiden Methoden sind im Mittel etwa gleich:

270 Mathematica_2014_complete.nb

Page 271: Einführung in Mathematica (V7) · Einführung in Mathematica (V7) L. Tiator, M. Distler, Computer in der Wissenschaft, WS 2014/15 ü wichtiger Hinweis: Dieses Notebook soll nicht

PlotCosx eco, Cosx ri1,x, 0, , PlotStyle Purple, Brown

0.5 1.0 1.5 2.0 2.5 3.0

-0.015

-0.010

-0.005

0.005

0.010

0.015

Mit Hilfe der Funktion MiniMaxApproximation[...] wird der relative Fehler optmiert, indem die

Interpolationspunkte variiert werden:

MiniMaxApproximationCosx, x, 0, 3.2, 2, 2MiniMaxApproximation::extalt :

The extrema of the error do not alternate in sign. It may be that MiniMaxApproximation has lost track of the

extrema by going too fast. If so try increasing the values in the option Brake. It may

be that the WorkingPrecision is insufficient. Otherwise there is an extra extreme

value of the error, and MiniMaxApproximation cannot deal with this problem.à

0., 0.34276, 1.79417, 1.79417, 2.85973, 3.2, 1.0099 0.660848 x 0.0118379 x2

1. 0.508126 x 0.156399 x2,

0.00990048, 0.0129834, 0.0501346, 0.0501346, 0.0128681, 0.00999542

Diese Funktion ist numerisch jedoch etwas kritisch, z.B. sollten Nullstellen im Intervall

herausgenommen werden und auch die Intervallgrenzen und der Grad der Näherung sollten ggf.

variiert werden.

MiniMaxApproximationCosxx

2

, x, 0, 3.2, 2, 3

0., 0.20063, 0.778979, 1.60412, 2.42726, 3.00149, 3.2,

0.636531 0.311754 x 0.0987459 x2

1 0.15025 x 0.0474581 x2 0.000356391 x3, 0.000138709

Das Ergebnis ist eine Liste:

1. Element: Interpolationspunkte

2. Element: Interpolationsfunktion

3. Element: maximaler Fehler im betrachteten Intervall

Die Funktion erhält man daher als 1. Unterelement im 2. Element:

mma 2, 1 x

2;

Mathematica_2014_complete.nb 271