Algorithmische Mathematik I (WS 2016/17) - Otto-von

Werbung
Otto-von-Guericke-Universität Magdeburg
Institut für Analysis und Numerik
Prof. Dr. F. Schieweck, Dipl.-Math. K. Simon
23.11.2016
Algorithmische Mathematik I (WS 2016/17)
Übungsblatt 7
abzugeben: Aufgabe 4 am 07.12.2016 vor der Vorlesung
1. Seien f0 := 1, f1 := 1 und fk := fk−1 + fk−2 für k ≥ 2 die Fibonacci-Zahlen und n ≥ 2
eine gegebene natürliche Zahl. Zeigen Sie, dass für die absteigende Kette der Folgenglieder
aj aus dem Euklidischen Algorithmus mit a0 := fn , a1 := fn−1 und aj der Rest bei
Ganzzahldivion von aj−2 durch aj−1 , j = 2, . . . , n − 1, gilt:
aj = fn−j
∀ j = 0, . . . , n − 1.
Bestimmen Sie die Zahl ggT(a0 , a1 ) sowie denjenigen Index `, für den gilt a`+1 = 0.
2. a) Schreiben Sie eine Funktion mit dem Kopf ggT Euklid(long a, long b, unsigned
int* l, unsigned int* l1, unsigned int* l2), welche mit Hilfe des Euklidischen
Algorithmus den größten gemeinsamen Teiler von a und b ermittelt und diesen als Wert
vom Typ unsigned int zurückgibt. Dabei soll die Anzahl l der benötigten Schritte im
Euklidischen Algorithmus sowie die Anzahlen l1 und l2 derjenigen Divisionen mit den
Quotienten qj = 1 bzw. qj = 2 in den entsprechenden Variablen gespeichert werden.
b) Schreiben Sie nun ein Programm, welches den Euklidischen Algorithmus automatisch
auf alle Zahlenpaare (a, b) mit a, b ∈ N und 1 ≤ b < a ≤ M anwendet. Der Maximalwert
M soll vom Benutzer eingegeben werden. Das Programm soll auch den Prozentsatz an
Divisionen mit qj = 1 bzw. qj = 2 im Bezug auf die Anzahl aller Divisionen berechnen
und die maximale Schrittanzahl lmax ausgeben, die während der Berechnungen bei
einem Durchgang des Euklidischen Algorithmus auftritt.
c) Bestimmen Sie die Laufzeitunterschiede für das gesamte Programm, wenn man die in
a) geschriebene Funktion durch diejenige in ’ggT naiv.c’ austauscht.
3. Zu Zahlen z0 ∈ N0 und z1 , . . . , zn ∈ N ist für n ≥ 1 der zugehörige Kettenbruch definiert
als die rationale Zahl
1
[z0 ; z1 , . . . , zn ] := z0 +
1
z1 +
1
z2 +
1
..
.+
1
zn−1 + .
zn
Für n = 0 ist er formal definiert als [z0 ; ] := z0 .
Sei x = ab mit a, b ∈ N eine gegebene positive rationale Zahl. Zeigen Sie, dass ein n ∈ N0
und zulässige Zahlen z0 , . . . , zn existieren, so dass x durch den entsprechenden Kettenbruch
[z0 ; z1 , . . . , zn ] dargestellt werden kann.
Hinweis. Betrachten Sie den Euklidischen Algorithmus mit den Anfangswerten a0 = a, a1 = b
und der absteigenden Kette der Folgenglieder aj mit a`+1 = 0. Führen Sie die Zahlen xj := aj /aj+1
1
für j = 0, . . . , `−1 ein und unteruchen Sie, wie sich, angefangen mit x0 = x = a/b, jedes xj rekursiv
durch Größen aus dem Euklidischen Algorithmus und xj+1 darstellen lässt.
4. (3 + 3 + 4 Punkte) Seien a, b ∈ N zwei Zahlen mit a > b sowie a0 := a und a1 := b
die Anfangsglieder der absteigenden Kette aj > aj+1 (j = 1, . . . , `) mit a`+1 = 0 aus dem
Euklidischen Algorithmus.
a) Zeigen Sie für die wachsende Folge (bk ) mit bk := a`+1−k für k = 0, 1, . . . , ` + 1 die
Abschätzungen
bk+1 ≥ bk + bk−1
∀ k = 1, . . . , `.
b) Beweisen Sie durch Vergleich mit den Fibonacci-Zahlen fk aus Aufgabe 1 die Ungleichungen
fk ≤ bk
∀ k = 1, . . . , ` + 1.
Führen Sie dazu einen Induktionsbeweis für die Aussagen
A(k) := ”Es gilt: fj ≤ bj
∀ j = 1, . . . , k.”
für k = 2, . . . , ` + 1 durch.
c) Zeigen Sie√mit Hilfe von b) und dem Resultat von Aufgabe 3 aus Blatt 6 für ` ≥ 2 und
γ := (1 + 5)/2 die Ungleichungen
1
b ≥ f` ≥ f`−1 + 1 > √ γ `
5
und leiten Sie daraus folgende obere Abschätzung für die Schrittanzahl ` des Euklidischen Algorithmus her
√
` < (log(γ))−1 log(b 5).
Dabei bezeichnet log(·) den Logarithmus zur Basis 10.
Herunterladen