17
6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen mit Mathematica ist die Tatsache, dass Mathematica in der Lage ist exakte, symbolische Ergebnisse von Rechnungen zu liefern. Es gibt jedoch Fälle, in denen Berechnungen in geschlossener Form nicht möglich sind. In solchen Fällen ist eine numerische Behandlung des Problems zielführend. Einige Funktionen, die Mathematica für diese Aufgabe zur Verfügung stellt, sollen in diesem Kapitel behandelt werden. 6.1 Einleitung: NIntegrate, NSum Wir betrachten folgendes Integral int = 0 1 Sin@Sin@xDD x 0 1 Sin@Sin@xDD x Plot@Sin@Sin@xDD, 8x, 0, 1<D 0.2 0.4 0.6 0.8 1.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 Es handelt sich also allem Anschein nach einer integrablen (“braven”) Funktion, für die das obige bestimmte Integral existieren sollte. Es gibt nur keinen geschlossenen (=symbolischen) Ausdruck für dieses Integral. Am einfachsten - allerdings nicht am effizientesten - ist es, die Funktion N zu verwenden.

6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

Embed Size (px)

Citation preview

Page 1: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

6. Numerisches Rechnen mit

MathematicaEine sehr wichtige Eigenschaft von Berechnungen mit Mathematica ist die Tatsache, dass Mathematica

in der Lage ist exakte, symbolische Ergebnisse von Rechnungen zu liefern. Es gibt jedoch Fälle, in

denen Berechnungen in geschlossener Form nicht möglich sind. In solchen Fällen ist eine numerische

Behandlung des Problems zielführend. Einige Funktionen, die Mathematica für diese Aufgabe zur

Verfügung stellt, sollen in diesem Kapitel behandelt werden.

6.1 Einleitung: NIntegrate, NSum

Wir betrachten folgendes Integral

int = à0

1

Sin@Sin@xDD âx

à0

1

Sin@Sin@xDD âx

Plot@Sin@Sin@xDD, 8x, 0, 1<D

0.2 0.4 0.6 0.8 1.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

Es handelt sich also allem Anschein nach einer integrablen (“braven”) Funktion, für die das obige

bestimmte Integral existieren sollte. Es gibt nur keinen geschlossenen (=symbolischen) Ausdruck für

dieses Integral. Am einfachsten - allerdings nicht am effizientesten - ist es, die Funktion N zu

verwenden.

Page 2: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

? N

N@exprD gives the numerical value of expr.

N@expr, nD attempts to give a result with n-digit precision. �

N@Π[email protected]

0.430606

N@Π, 40DN@int, 40D3.141592653589793238462643383279502884197

0.4306061031206906049123773552484657864336

Für die numerische Berechnung des Integrals ist es allerdings effizienter die Funktion NIntegrate zu

verwenden, weil bei N[Integrate[Sin[Sin[x]],{x,0,1}]] zunächst eine symbolische Lösung versucht wird,

und erst im Anschluss daran die numerische Auswertung des Integrals in Angriff genommen wird.

?? NIntegrate

NIntegrate@ f , 8x, xmin, xmax<D gives a numerical approximation to the integral àxmin

xmax

f dx.

NIntegrate@ f , 8x, xmin, xmax<, 8y, ymin, ymax<, … Dgives a numerical approximation to the multiple integral à

xmin

xmax

d x àymin

ymax

dy … f . �

Attributes@NIntegrateD = 8HoldAll, Protected<Options@NIntegrateD = 8AccuracyGoal ® ¥, Compiled ® Automatic, EvaluationMonitor ® None,

Exclusions ® None, MaxPoints ® Automatic, MaxRecursion ® Automatic, Method ® Automatic,

MinRecursion ® 0, PrecisionGoal ® Automatic, WorkingPrecision ® MachinePrecision<Durch die zusätzliche Angabe von Optionen kann die Genauigkeit und auch das numerische Verfahren

gesteuert werden.

NIntegrate@Sin@Sin@xDD, 8x, 0, 1<, WorkingPrecision ® 40D0.4306061031206906049123773552484657864336

Das Besondere an Mathematica, im Vergleich zur numerischen Behandung in anderen Programmier-

sprachen wie C++, ist, dass die Genauigkeit von numerischen Ergebnissen nicht durch die Maschinen-

genauigkeit des Computers beschränkt ist.

Die üblichen single-precision (4 Byte) bzw. double-precison (8 Byte) Gleitkommazahlen in C, C++,

Fortran, ... bedeuten Genauigkeiten von ca. 8 bzw. 16 Nachkommastellen. Eine solche Beschränkung

gibt es in Mathematica nicht.

2 06_Numerik.nb

Page 3: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

Das Besondere an Mathematica, im Vergleich zur numerischen Behandung in anderen Programmier-

sprachen wie C++, ist, dass die Genauigkeit von numerischen Ergebnissen nicht durch die Maschinen-

genauigkeit des Computers beschränkt ist.

Die üblichen single-precision (4 Byte) bzw. double-precison (8 Byte) Gleitkommazahlen in C, C++,

Fortran, ... bedeuten Genauigkeiten von ca. 8 bzw. 16 Nachkommastellen. Eine solche Beschränkung

gibt es in Mathematica nicht.

N@Π, 1000D3.1415926535897932384626433832795028841971693993751058209749445923078164062862�

08998628034825342117067982148086513282306647093844609550582231725359408128481�

11745028410270193852110555964462294895493038196442881097566593344612847564823�

37867831652712019091456485669234603486104543266482133936072602491412737245870�

06606315588174881520920962829254091715364367892590360011330530548820466521384�

14695194151160943305727036575959195309218611738193261179310511854807446237996�

27495673518857527248912279381830119491298336733624406566430860213949463952247�

37190702179860943702770539217176293176752384674818467669405132000568127145263�

56082778577134275778960917363717872146844090122495343014654958537105079227968�

92589235420199561121290219608640344181598136297747713099605187072113499999983�

72978049951059731732816096318595024459455346908302642522308253344685035261931�

18817101000313783875288658753320838142061717766914730359825349042875546873115�

9562863882353787593751957781857780532171226806613001927876611195909216420199

NIntegrate@Sin@Sin@xDD, 8x, 0, 1<, WorkingPrecision ® 20D �� Timing

NIntegrate@Sin@Sin@xDD, 8x, 0, 1<, WorkingPrecision ® 40D �� Timing

NIntegrate@Sin@Sin@xDD, 8x, 0, 1<, WorkingPrecision ® 100D �� Timing

NIntegrate@Sin@Sin@xDD, 8x, 0, 1<, WorkingPrecision ® 200D �� Timing

80.008000, 0.43060610312069060491<

80.008001, 0.4306061031206906049123773552484657864336<

80.024001,0.430606103120690604912377355248465786433608041821997469504633350750892193636�

0747925020003322128634955<

80.104007,0.430606103120690604912377355248465786433608041821997469504633350750892193636�

074792502000332212863495547968512886769444385260392350928954849458834511854�

39432678847358325343678073731387007932812142909212<Die Timing Funktion gibt als erstes Element der Liste die Zeit einer Berechnung in Sekunden, und als

zweites Element das eigentliche Berechnungsergebnis an.

Analog zu NIntegrate bietet Mathematica die Funktionen NSum und NProduct, um Summen bzw.

Produkte numerisch auswerten zu können.

06_Numerik.nb 3

Page 4: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

SumB 1

i2, 8i, 1, 100<F

NSumB 1

i2, 8i, 1, 100<F

1589508694133037873112297928517553859702383498543709859889432834803818�

131090369901 �972186144434381030589657976672623144161975583995746241782720354705517�

986165248000

1.63498

SumB 1

i2, 8i, 1, ¥<F

NSumB 1

i2, 8i, 1, ¥<F

Π2

6

1.64493

SumB 1

i3 + 1

, 8i, 1, ¥<F

NSumB 1

i3 + 1

, 8i, 1, ¥<F

NSumB 1

i3 + 1

, 8i, 1, ¥<, WorkingPrecision ® 100F �� Timing

-1

3

RootSumB2 + 3 ð1 + 3 ð12

+ ð13&,

PolyGamma@0, -ð1D1 + 2 ð1 + ð12

&F

0.686503

80.092006,0.686503342338623885964605209080584995390339118502529830410457446044378807583�

4285210798875393145449205<

4 06_Numerik.nb

Page 5: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

6.2 Wurzeln von Gleichungen / Eigenwerte von

Matrizen

NSolve and FindRoot

Bsp. 1

Solve @Cos@xD � x, xDSolve::nsmet : This system cannot be solved with the methods available to Solve. �

Solve@Cos@xD � x, xD

Plot@8Cos@xD, x<, 8x, -2, 2<D

-2 -1 1 2

-2

-1

1

2

NSolve@Cos@xD � x, xDNSolve::nsmet : This system cannot be solved with the methods available to NSolve. �

NSolve@Cos@xD � x, xD

? NSolve

NSolve@expr, varsD attempts to find numerical approximations to

the solutions of the system expr of equations or inequalities for the variables vars.

NSolve@expr, vars, RealsD finds solutions over the domain of real numbers. �

FindRoot@Cos@xD � x, 8x, 0<D8x ® 0.739085<

?? FindRoot

06_Numerik.nb 5

Page 6: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

FindRoot@ f , 8x, x0<D searches for a numerical root of f , starting from the point x = x0.

FindRoot@lhs == rhs, 8x, x0<D searches for a numerical solution to the equation lhs == rhs.

FindRoot@8 f1, f2, … <, 88x, x0<, 8y, y0<, … <D searches for a simultaneous numerical root of all the fi.

FindRoot@8eqn1, eqn

2, … <, 88x, x0<, 8y, y0<, … <D

searches for a numerical solution to the simultaneous equations eqni. �

Attributes@FindRootD = 8HoldAll, Protected<Options@FindRootD =

8AccuracyGoal ® Automatic, Compiled ® Automatic, DampingFactor ® 1, Evaluated ® True,

EvaluationMonitor ® None, Jacobian ® Automatic, MaxIterations ® 100, Method ® Automatic,

PrecisionGoal ® Automatic, StepMonitor ® None, WorkingPrecision ® MachinePrecision<

FindRoot@Cos@xD � x, 8x, 0<, WorkingPrecision ® 50D8x ® 0.73908513321516064165531208767387340401341175890076<

Bsp. 2

Gl = Sin@xD ã-x

�x

10

;

Solve@Gl, xDSolve::nsmet : This system cannot be solved with the methods available to Solve. �

SolveBã-xSin@xD �

x

10

, xF

FindRoot@Gl, 8x, 0<D8x ® 0.<

Plot@Evaluate@8Gl@@1DD, Gl@@2DD<D, 8x, -2 Π, 2 Π<D

-6 -4 -2 2 4 6

-2

-1

1

2

6 06_Numerik.nb

Page 7: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

FindRoot@Gl, 8x, 0<D8x ® 0.<

FindRoot@Gl, 8x, 1<D8x ® 1.73674<

FindRoot@Gl, 8x, -3<D8x ® -3.12789<

Bsp. 3

SolveAx6 + x5

- 45 � 0, xE99x ® RootA-45 + ð1

5+ ð1

6&, 1E=, 9x ® RootA-45 + ð1

5+ ð1

6&, 2E=,

9x ® RootA-45 + ð15

+ ð16&, 3E=, 9x ® RootA-45 + ð1

5+ ð1

6&, 4E=,

9x ® RootA-45 + ð15

+ ð16&, 5E=, 9x ® RootA-45 + ð1

5+ ð1

6&, 6E==

NSolveAx6 + x5

- 1 � 0, xE88x ® -1.2852<, 8x ® -0.671369 - 0.784851 ä<, 8x ® -0.671369 + 0.784851 ä<,

8x ® 0.373333 - 0.829645 ä<, 8x ® 0.373333 + 0.829645 ä<, 8x ® 0.881271<<

Linear Gleichungssysteme / Eigenwerte

Wir stellen ein lineares Gleichungssystem A.x = b mit Zufallsmatrix A und Vektor b auf.

06_Numerik.nb 7

Page 8: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

n = 5;

A = RandomReal@8-1, 1<, 8n, n<D;H* n ´ n Matrix mit Zufallszahlen zwischen -1 und 1 *LMatrixForm@ADb = RandomReal@8-1, 1<, 8n<D ;

H* Vektor der Länge n mit Zufallszahlen zwischen -1 und +1 *LMatrixForm@bDX = Array@x, nD;[email protected] 0.960132 -0.443571 0.777049 -0.46446

-0.415287 -0.00205618 -0.65513 -0.846094 -0.192528

0.845552 0.193961 -0.279799 -0.359511 -0.604314

-0.876001 -0.16735 -0.706992 0.404261 0.814263

0.281893 -0.572079 0.38814 -0.583305 -0.522685

-0.65118

0.901084

0.454009

0.713459

0.0527412

x@1Dx@2Dx@3Dx@4Dx@5D

A.X � b �� Thread �� TableForm

0.539045 x@1D + 0.960132 x@2D - 0.443571 x@3D + 0.777049 x@4D - 0.46446 x@5D � -0.65118

-0.415287 x@1D - 0.00205618 x@2D - 0.65513 x@3D - 0.846094 x@4D - 0.192528 x@5D � 0.901084

0.845552 x@1D + 0.193961 x@2D - 0.279799 x@3D - 0.359511 x@4D - 0.604314 x@5D � 0.454009

-0.876001 x@1D - 0.16735 x@2D - 0.706992 x@3D + 0.404261 x@4D + 0.814263 x@5D � 0.713459

0.281893 x@1D - 0.572079 x@2D + 0.38814 x@3D - 0.583305 x@4D - 0.522685 x@5D � 0.0527412

Lösen des Gleichungssystems mittels Solve

[email protected] � b �� Thread, XD88x@1D ® 0.580314, x@2D ® -0.556012,

x@3D ® -1.07843, x@4D ® -0.694251, x@5D ® 0.794564<<Lösen des Gleichungssystems durch Berechnung der Inversen Matrix A

-1 mit der Funktion Inverse

[email protected]., 80.580314, -0.556012, -1.07843, -0.694251, 0.794564<<

Wir vergleichen diese zwei Varianten in Bezug auf Effizienz für große Gleichungssysteme

8 06_Numerik.nb

Page 9: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

n = 500;

A = RandomReal@8-1, 1<, 8n, n<D;b = RandomReal@8-1, 1<, 8n<D ;

X = Array@x, nD;

[email protected] � b �� Thread, XD �� Timing

[email protected] �� Timing

Wir berechnen die Eigenwerte einer symmetrischen Matrix

A = K 2 1

1 4O;

Eigenvalues@AD:3 + 2 , 3 - 2 >

DetBK 2 - Λ 1

1 4 - ΛOF � 0

Solve@%, ΛD7 - 6 Λ + Λ

2� 0

::Λ ® 3 - 2 >, :Λ ® 3 + 2 >>

n = 3;

A = RandomInteger@8-10, 10<, 8n, n<D;A = HA + Transpose@ADL; H* Erzeuge Symmetrische Matrix *LMatrixForm@ADEigenvalues@ADEigenvalues@N@ADD10 0 -11

0 2 -13

-11 -13 -2

9RootA1972 - 294 ð1 - 10 ð12

+ ð13&, 3E,

RootA1972 - 294 ð1 - 10 ð12

+ ð13&, 1E, RootA1972 - 294 ð1 - 10 ð1

2+ ð1

3&, 2E=

819.8148, -16.0251, 6.21034<

n = 1000;

A = RandomReal@8-1, 1<, 8n, n<D;A = HA + Transpose@ADL; H* Erzeuge Symmetrische Matrix *LEigenvalues@AD �� Timing

6.3 Datenimport / -export und Fitten von

Datenpunkten

06_Numerik.nb 9

Page 10: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

6.3 Datenimport / -export und Fitten von

Datenpunkten

Wir wollen folgende Daten importieren, anschließend eine Ausgleichskurve berechnen und den berech-

neten Fit anschließend in ein Textfile exportieren.

1. 2.47555

1.1 0.933691

1.2 1.20543

1.3 4.82685

1.4 4.93016

1.5 4.49915

1.6 5.54694

1.7 6.08614

1.8 7.35384

1.9 9.92372

2. 9.16462

2.1 10.3166

2.2 12.0231

2.3 14.761

2.4 16.5036

2.5 17.942

2.6 19.9062

2.7 22.5465

2.8 25.2563

2.9 28.57

3. 29.6045

3.1 34.2396

3.2 37.6754

3.3 38.4054

3.4 41.2235

3.5 46.3449

3.6 51.0465

3.7 55.3397

3.8 59.8421

3.9 62.5401

4. 68.6102

4.1 74.5556

4.2 77.4624

4.3 84.1386

4.4 87.2202

4.5 97.9626

4.6 101.755

4.7 107.595

4.8 114.886

4.9 122.57

5. 129.149

10 06_Numerik.nb

Page 11: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

Import von Daten

SetDirectory@"�data�pep�LEHRE�Mathematica�SS2014"D;str = OpenRead @"Daten.txt"Ddaten = Table@Read@str, 8Number, Number<D, 8i, 1, 41<DClose@[email protected], 151D

881., 2.47555<, 81.1, 0.933691<, 81.2, 1.20543<, 81.3, 4.82685<,81.4, 4.93016<, 81.5, 4.49915<, 81.6, 5.54694<, 81.7, 6.08614<,81.8, 7.35384<, 81.9, 9.92372<, 82., 9.16462<, 82.1, 10.3166<, 82.2, 12.0231<,82.3, 14.761<, 82.4, 16.5036<, 82.5, 17.942<, 82.6, 19.9062<, 82.7, 22.5465<,82.8, 25.2563<, 82.9, 28.57<, 83., 29.6045<, 83.1, 34.2396<, 83.2, 37.6754<,83.3, 38.4054<, 83.4, 41.2235<, 83.5, 46.3449<, 83.6, 51.0465<,83.7, 55.3397<, 83.8, 59.8421<, 83.9, 62.5401<, 84., 68.6102<, 84.1, 74.5556<,84.2, 77.4624<, 84.3, 84.1386<, 84.4, 87.2202<, 84.5, 97.9626<,84.6, 101.755<, 84.7, 107.595<, 84.8, 114.886<, 84.9, 122.57<, 85., 129.149<<

Daten.txt

ListPlot@datenD

2 3 4 5

20

40

60

80

100

120

Berechnen von Ausgleichskurven (Daten-Fit)

Die importierten Daten sollen Messdaten der spezifischen Wärmekapazität eines Metalls bei tiefen

Temperaturen nahe des absoluten Nullpunkts repräsentieren. Die 1. Spalte ist die Temperatur in Kelvin,

die 2. Spalte die spezifische Wärmekapazität. Wie aus der Festkörperphysik bekannt ist, hat die

Wärmekapazität cV einen linearen Anteil (hervorgerufen durch die Elektronen) und einen kubischen

Anteil (hervorgerufen durch Gitterschwingungen = Phononen). Wir wollen nun durch Berechnung der

Ausgleichskurve die Parameter Α und Γ bestimmen.

cV@T_, Α_, Γ_D := Α T + Γ T3

06_Numerik.nb 11

Page 12: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

? Fit

Fit@data, funs, varsD finds a least-squares fit to a

list of data as a linear combination of the functions funs of variables vars. �

cVfit = FitAdaten, 9T, T3=, TE

Αfit = Coefficient@cVfit, T, 1DΓfit = Coefficient@cVfit, T, 3D1.07318 T + 0.995793 T

3

1.07318

0.995793

p1 = ListPlot@datenD;p2 = Plot@cV@T, Αfit, ΓfitD, 8T, 0, 5<, PlotStyle ® RedD;Show@p1, p2, PlotRange ® All, Frame ® True, FrameLabel ® 8T, cV<, Axes ® FalseD

0 1 2 3 4 5

0

20

40

60

80

100

120

T

cV

Für nichtlineare Fitprobleme und/oder wenn zusätzliche Informationen (zB Fehler der Fitparameters

etc.) gewünscht sind, bietet Mathematica umfangreicherer Funktionen an: LinearModelFit und Nonlin-

earModelFit

12 06_Numerik.nb

Page 13: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

? LinearModelFit

LinearModelFit@8y1, y2, … <, 8 f1, f2, … <, xD constructs a linear model

of the form Β0 + Β1 f1 + Β2 f2 + … that fits the yi for successive x values 1, 2, … .

LinearModelFit@88x11, x12, … , y1<, 8x21, x22, … , y2<, … <, 8 f1, f2, … <, 8x1, x2, … <D constructs a linear

model of the form Β0 + Β1 f1 + Β2 f2 + … where the fi depend on the variables xk.

LinearModelFit@8m, v<D constructs a linear model from the design matrix m and response vector v. �

Unten finden Sie ein Beispiel für die Anwendung von LinearModelFit auf unser obiges Fit-Problem.

Mehr Details zu dieser Funktion (und NonLinearModelFit) finden Sie im Documentation Center.

lm = LinearModelFitAdata, 9T, T3=, T, IncludeConstantBasis ® FalseE

FittedModelB 1.07316 T + 0.995795 T3 F

lm@"BestFit"D1.07316 T + 0.995795 T

3

lm@"ParameterTable"DEstimate Standard Error t-Statistic P-Value

T 1.07316 0.127254 8.43323 2.5255 ´ 10-10

T3

0.995795 0.00759905 131.042 3.40109 ´ 10-53

06_Numerik.nb 13

Page 14: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

lm@"Properties"D8AdjustedRSquared, AIC, AICc, ANOVATable, ANOVATableDegreesOfFreedom,

ANOVATableEntries, ANOVATableFStatistics, ANOVATableMeanSquares,

ANOVATablePValues, ANOVATableSumsOfSquares, BasisFunctions,

BetaDifferences, BestFit, BestFitParameters, BIC, CatcherMatrix,

CoefficientOfVariation, CookDistances, CorrelationMatrix,

CovarianceMatrix, CovarianceRatios, Data, DesignMatrix,

DurbinWatsonD, EigenstructureTable, EigenstructureTableEigenvalues,

EigenstructureTableEntries, EigenstructureTableIndexes,

EigenstructureTablePartitions, EstimatedVariance, FitDifferences,

FitResiduals, Function, FVarianceRatios, HatDiagonal, MeanPredictionBands,

MeanPredictionConfidenceIntervals, MeanPredictionConfidenceIntervalTable,

MeanPredictionConfidenceIntervalTableEntries, MeanPredictionErrors,

ParameterConfidenceIntervals, ParameterConfidenceIntervalTable,

ParameterConfidenceIntervalTableEntries, ParameterConfidenceRegion,

ParameterErrors, ParameterPValues, ParameterTable, ParameterTableEntries,

ParameterTStatistics, PartialSumOfSquares, PredictedResponse,

Properties, Response, RSquared, SequentialSumOfSquares,

SingleDeletionVariances, SinglePredictionBands,

SinglePredictionConfidenceIntervals, SinglePredictionConfidenceIntervalTable,

SinglePredictionConfidenceIntervalTableEntries, SinglePredictionErrors,

StandardizedResiduals, StudentizedResiduals, VarianceInflationFactors<

Export von Daten

Wir wollen den besten Fit an unsere Datenpunkte in eine Textdatei exportieren.

f@T_D = cVfit

1.07318 T + 0.995793 T3

fitdat = Table@8T, f@TD<, 8T, 0, 5, 0.1<D880., 0.<, 80.1, 0.108314<, 80.2, 0.222602<, 80.3, 0.348841<, 80.4, 0.493003<,

80.5, 0.661064<, 80.6, 0.859<, 80.7, 1.09278<, 80.8, 1.36839<, 80.9, 1.6918<,81., 2.06897<, 81.1, 2.5059<, 81.2, 3.00855<, 81.3, 3.58289<, 81.4, 4.23491<,81.5, 4.97057<, 81.6, 5.79586<, 81.7, 6.71674<, 81.8, 7.73919<,81.9, 8.86919<, 82., 10.1127<, 82.1, 11.4757<, 82.2, 12.9642<, 82.3, 14.5841<,82.4, 16.3415<, 82.5, 18.2422<, 82.6, 20.2923<, 82.7, 22.4978<,82.8, 24.8646<, 82.9, 27.3986<, 83., 30.106<, 83.1, 32.9925<, 83.2, 36.0643<,83.3, 39.3273<, 83.4, 42.7875<, 83.5, 46.4508<, 83.6, 50.3232<,83.7, 54.4107<, 83.8, 58.7193<, 83.9, 63.2549<, 84., 68.0235<, 84.1, 73.0311<,84.2, 78.2837<, 84.3, 83.7872<, 84.4, 89.5477<, 84.5, 95.571<,84.6, 101.863<, 84.7, 108.43<, 84.8, 115.278<, 84.9, 122.413<, 85., 129.84<<

14 06_Numerik.nb

Page 15: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

SetDirectory@"�data�pep�LEHRE�Mathematica�SS2014"D;str = OpenWrite@"Fit.txt"D;WriteString@str, TableForm@fitdat, TableSpacing ® 80, 2<DD;Close@strD;

6.4 Numerische Lösung von

Differenzialgleichungen

Die Funktion DSolve versucht die analytische Lösung von (Systemen von) gewöhnlichen Differenzialgle-

ichungen, die Funktion NDSolve löst (Systeme von) Differenzialgleichungen durch numerische

Integration.

Bsp : Wir betrachten den schrägen Wurf einer Masse im Schwerefeld der Erde unter Berücksichtigung

der Reibungskraft FR, die wir proportional zur Geschwindigkeit annehmen wollen:

FR = - Β v2 v

v=-Β |v| v

In[1]:=

v@t_D = x'@tD2+ z'@tD2

; H* friction force *Leom = 8x''@tD � -Β x'@tD v@tD, z''@tD � -g - Β z'@tD v@tD<;initial = 8x@0D � 0, z@0D � 0, x'@0D � v0 Cos@ΘD, z'@0D � v0 Sin@ΘD<;

In[4]:=

ndsolve::usage = "ndsolve@eqn,initial,functions,values,rangeDThis module numerically solves the system of differential equations

HeqnL with the initial conditions HinitialL for the functions

HfunctionsL depending in the range=8t,t0,t1<, where t is the

independent variable, t0 is the staring time and t1 is the

final time. The list of replacements values contains possible

parameters of the system of equations. The module returns

the solution and its first derivative, that is 8r@tD,v@tD<,where rHtL is the position vector and vHtL is the velocity.";

ndsolve@eqn_, initial_, functions_, values_, range_D :=

Module@8system, solution, r, v<,system = Join@eqn, initialD �. values;

solution = NDSolve@system, functions, rangeD @@1DD;r = functions �. solution;

v = D@r, tD;8r, v<D

06_Numerik.nb 15

Page 16: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

In[6]:=

values = :v0 ® 15, g ® 9.81, Β ® 0.01, Θ ®Π

4

>;sol = ndsolve@eom, initial, 8x@tD, z@tD<, values, 8t, 0, 5<D;r@t_D = sol@@1DD;v@t_D = sol@@2DD;pr = ParametricPlot@r@tD, 8t, 0, 5<, PlotRange ® 880, 25<, 80, 10<<D

Out[10]=

0 5 10 15 20 25

0

2

4

6

8

10

In[12]:=

ManipulateBvalues = :v0 ® 15, g ® 9.81, Β ® Βplot, Θ ®

Π

4

>;sol = ndsolve@eom, initial, 8x@tD, z@tD<, values, 8t, 0, 5<D;r@t_D = sol@@1DD;v@t_D = sol@@2DD;pr = ParametricPlot@r@tD, 8t, 0, 5<, PlotRange ® 880, 25<, 80, 10<<D,8Βplot, 0, 0.2<F

Out[12]=

Βplot

0.1

0 5 10 15 20 25

0

2

4

6

8

10

Übungsaufgaben

Ü 6.1: Berechnen Sie folgendes Integral:

16 06_Numerik.nb

Page 17: 6. Numerisches Rechnen mit Mathematicaphysik.uni-graz.at/~pep/Lehre/Mathematica2014/06_Numerik.pdf · 6. Numerisches Rechnen mit Mathematica Eine sehr wichtige Eigenschaft von Berechnungen

à0

Π

2

Sin@Cos@xDD âx

Entwickeln Sie weiters den Integranden in eine Taylorreihe 10. Ordnung und bestimmen so

näherungsweise das Integral.

Ü 6.2: Bestimmen Sie alle Lösungen der Gleichung: Sin@xD == x3

+ 2 x2

- x - 1. Hinweis: Plotten Sie

zunächst die beiden Funktionen auf der linken und rechten Seite der Gleichung, um einen graphischen

Eindruck über Anzahl und Lage der Lösungen zu bekommen.

Ü 6.3: Bestimmen Sie die Erdbeschleunigung g aus einer Messserie von Fallhöhe h und Fallzeit t durch

Berechnung einer Ausgleichskurve (Fit) h(t) = g

2t2. Die Messdaten erhalten Sie durch Import der Text-

datei UE06_Daten.txt: 1. Spalte = h, 2. Spalte = t.

Ü 6.4: Lösen Sie folgende Differentialgleichung (gedämpfte Pendelschwingung) numerisch:

Φ '' HtL = -g

LsinHΦHtLL - Γ Φ ' HtL. Die Anfangsbedingungen seien

ΦH0L =3 Π

4und Φ ' H0L = 0, und die Paramter seien g=9.81, L=1 und Γ=0.2. Stellen Sie die Lösung Φ(t) im

Zeitraum t=0 bis t=50 als Funktion der Zeit dar, und fertigen Sie auch einen Phasenraum-Plot {Φ(t),Φ’(t)}

an (ParamtricPlot).

06_Numerik.nb 17