6. numerisches rechnen mit...
TRANSCRIPT
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.
? N
N@exprD gives the numerical value of expr.
N@expr, nD attempts to give a result with n-digit precision. �
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
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
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
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
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
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
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
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
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
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
? 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
? 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
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
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
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
à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