Ubung I zur Vorlesung Informatik III

Werbung
Übung I
zur Vorlesung Informatik III
Prof. Dr. Nikolaus Wulff
Zum 13. Oktober 2011
1
Konvergenz von Folgen
Sie werden häufig vor der Aufgabe stehen einen iterativen Algorithmus zu
entwickeln, der eine numerische Nährungslösung zu einem gegebenem Problem berechnet. Meist wissen Sie weder eine analytische Lösung noch kennen
Sie einen direkten Weg zur deren Berechnung. Der Computer kann Ihnen
jedoch sehr effizient eine Nährung mit gewünschter Genauigkeit liefern. Dies
geschieht häufig in Form einer Folge von Werten (ak )k∈N die (hoffentlich)
gegen die gesuchte exakte Lösung a konvergiert.
Eine Folge (ak )k∈N heißt Cauchy-Folge mit Grenzwert
a = lim ak
k→∞
(1)
falls es zu einem beliebig vorgegebenen ε > 0 ein n0 (ε) ∈ N gibt mit der
Eigenschaft
|an − am | < ε
∀ n > m ≥ n0 (ε).
(2)
oder anders formuliert alle an approximieren a mit Genauigkeit ε:
|an − a| < ε
∀ n > n0 (ε)
(3)
Bemerkung: n0 ist keine Konstante, sonderen hängt ab von der Wahl von ε,
meist wird dies jedoch nicht explizit ausgeschrieben.
Entscheidend für unsere Fragstellung ist jetzt, was bedeutet dies für eine
numerische Auswertung einer solchen Folge, welches n0 ist zu wählen oder
kann man auf dessen Bestimmung unter geeigneten Bedingungen eventuell ganz verzichten? Wie lässt sich ein geeigneter algorithmischer Rahmen
– quasi als Blaupause – zur Berechnung solcher Folgen, wie sie in vielen
numerischen Anwendungen vorkommen, beschreiben?
Aufgabe
Formulieren Sie den Kern des Algorithmus zur Bestimmung ob die Konvergenz einer Folge (ak )k∈N zu vorgegebenem ε erreicht ist oder nicht und
1
ermitteln Sie deren Grenzwert a. Berücksichtigen Sie ferner, dass unter
Umständen die Folge gar keine Cauchy-Folge ist, d.h. dass diese divergiert.
Auch dies muss erkannt werden, so dass sich der Algorithmus nicht in einer
Endlosschleife verfängt.
Da Sie in der Informatik – im Gegensatz zur Mathematik – mit einer
endlich genauen Zahlendarstellungen arbeiten, stellt sich die Frage nach der
Größe von ε. Wie ist diese geeignet zu wählen?
Tip
Konkreter Hintergrund dieser Fragestellung ist z.B. die numerische Integration und Differentiation (wie es im Praktikum ansteht), das numerische
Lösen von Differentialgleichungen, das Ermitteln von Eigenwerten von Matrizen mit iterativen Verfahren etc.
Um z.B. das bestimmte Integral
Z x
I(x) :=
f (u) du
(4)
0
numerisch zu bestimmen, wird im einfachsten Fall der Rechteckintegration
eine Folge Sn∈N (x) von Summen der Art
n−1
Sn (x) :=
xX x
f ( j)
n
n
(5)
j=0
zur Approximation des Integrals wiederholt mit wachsendem n ausgewertet,
bis die gewünschte Genauigkeit erreicht ist. Für stetige beschränkte Funktionen f wird die Folge (Sn ) gegen das Riemannsche Integral (4) konvergieren,
so dass
I(x) = lim Sn (x)
(6)
n→∞
gilt. Bis zu welchem n muss iteriert werden, um sicherzustellen, dass der gemachte Fehler kleiner ε ist? Denn n = ∞ ist nicht definiert, macht numerisch
keinen Sinn und dauert “ewig”...
2
2
Problematische Rekursion
Zur Berechnung der Fakultätet n! wird häufig ein rekursiver Algorithmus
verwendet, der genau n rekursive Aufrufe benötigt. Eine solche Verkettung
von rekursiven Aufrufen kann jedoch unter Umständen ungünstig sein, wie
das folgende Beispiel der Fibonacci Zahlen Fn zeigt. Diese sind ähnlich zur
Fakultät rekursiv definiert
F1
≡
F2 ≡ 1
(7)
Fn := Fn−1 + Fn−2
∀ n ∈ N\{1, 2}.
(8)
Machen Sie sich Gedanken zum Laufzeitverhalten eines rekursiven Algorithmus fib(n)≡ Fn . Überlegen Sie wie die Anzahl an rekursiven Aufrufen von
fib – bezeichnet als R(n) – ansteigt, um Fn für ein beliebiges n > 2 zu
berechnen.
Anbei zur Illustration des exponentiellen Verhaltens eine Tabelle mit
einigen Fibonacci Zahlen Fn und der Anzahl R(n) an notwendigen Rekursionen zu deren Berechnung.
n
3
4
5
...
10
20
30
F(n)
2
3
5
...
55
6765
832040
R(n)
3
5
9
...
109
13529
1664079
Aufgabe
• Entwickeln Sie einen rekursiven Algorithmus fib(int n) zur Berechnung
der Fibonacci Zahlen.
• Wie lautet das Bildungsgesetz R(n)? Beweisen Sie es mit vollständiger
Induktion.
• Wie kann der Algorithmus verbessert werden, so dass er lineares Verhalten zeigt? D.h. entwickeln Sie einen nicht rekursiven Algorithmus.
Tip
Das Bildungsgesetz R(n) kann selbst rekursiv definiert werden und besitzt
auch eine Darstellung mit Hilfe der Fibonacci Zahlen. Skizzieren Sie den
Aufrufgraphen (⇒ Baumstruktur) für die Berechnung von F5 , um sich klar
zu machen, weshalb hierzu 9 Aufrufe von fib benötigt werden.
3
Herunterladen