Aufgabe 1: (Berechnung von ln(2))
Eine schnell konvergierende Reihe zur Berechnung des natürlichen Logarithmus von 2 ist folgende:
2 |
1 · 31 |
2 |
3 · 33 |
2 |
5 · 35 |
Entwerfen Sie ein Iterationsschema für die Berechnung. Leiten Sie daraus die Iterationsgleichungen und Initialisierungen ab. Programmieren Sie eine entsprechende While-Schleife zur Berechnung von ln(2). Fügen Sie diese While-Schleife in eine Funktion double ln2() ein.
Aufgabe 2: (Fibonacci-Zahlen)
Für die Berechnung der Fibonacci-Zahlen kann auch folgendes Iterationsschema verwendet werden, das im Gegensatz zu dem weiter oben angegebenen Iterationsschema mit nur drei Variablen auskommt.
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ... |
f | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | ... |
g | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | ... |
Leiten Sie aus dem Iterationsschema die Iterationsgleichungen und Initialisierungen ab. Programmieren Sie eine entsprechende While-Schleife zur Berechnung der n-ten Fibonacci-Zahl. Fügen Sie diese While-Schleife in eine Funktion long fibo(int n) ein.
Aufgabe 3: (Berechnung des größten gemeinsamen Teilers)
Der größte gemeinsame Teiler zweier nichtnegativer ganzer Zahlen x und y lässt sich mithilfe folgender Iterationsgleichungen berechnen:
Als Initialisierung wird gesetzt:
Erstellen Sie das zugehörige Iterationsschema mit x = 17 und y = 5. Programmieren Sie eine entsprechende While-Schleife. Wie lautet die Schleifenbedingung der While-Schleife? Welche Variable enthält zum Schluss das Ergebnis?
Fügen Sie die While-Schleife in eine Funktion int ggt(int x, int y) ein, die den größten gemeinsamen Teiler von x und y berechnet.
Aufgabe 4: (Quadratwurzel)
Die iterative Berechnung der Quadratwurzel a = f nach dem Verfahren von Heron beruht auf folgenden Iterationsgleichungen eines sequentiellen Iterationsschemas:
mit den Initialisierungen
Setzen Sie diese Iterationsgleichungen in eine While-Schleife um. Brechen Sie die Iteration ab, wenn sich a und b um weniger als 10-12 unterscheiden. Fügen Sie diese While-Schleife in eine Funktion double sqrt(double f) ein.
Aufgabe 5: (Berechnung der Sinusfunktion)
Die Sinusfunktion sin(x) lässt sich mithilfe folgender Reihe berechnen:
x2n+1 |
(2n+1)! |
Entwerfen Sie ein Iterationsschema für die Berechnung und verwenden Sie dabei folgende Variablen:
v | Vorzeichen des Summanden | |
i | Wert von 2n+1 | |
s | Summand ohne Vorzeichen | |
p | Partialsumme |
Wie geht der jeweils nächste Summand s aus dem vorhergehenden Summanden s' hervor?
Iterationsschema:
n | 0 | 1 | 2 | 3 |
---|---|---|---|---|
v | ||||
i | ||||
s | ||||
p |
Leiten Sie aus dem Iterationsschema die zugehörigen Initialisierungen und Iterationsgleichungen ab. Programmieren Sie eine entsprechende While-Schleife zur Berechnung von sin(x). Brechen Sie die Schleife ab, wenn der neu hinzugekommene Summand kleiner als 10-14 ist.
Fügen Sie die While-Schleife in eine Funktion double sin(double x) ein.
Weiter mit: [Funktionen] oder [up]