MATHEMATISCHES INSTITUT DER UNIVERSITÄT MÜNCHEN Dr. W. Spann, G. Kleen WS 2022/2023

Programmieren II für Studierende der Mathematik

Aufgabe 4

Erstellen Sie eine Klasse rational für die Arithmetik rationaler Zahlen. Die interne Darstellung über Zähler und Nenner soll eindeutig sein, insbesondere soll der Bruch bereits gekürzt sein. (Hinweis: ggT). Verwenden Sie dabei private Datenkomponenten vom Typ long.

Überladen Sie neben den arithmetischen Grundoperationen auch die arithmetischen Zuweisungsoperatoren und die Ein/Ausgabeoperatoren. Letztere sollen Eingaben der Gestalt [±]p/q mit p ∈ ℕ_{0}, q ∈ ℕ akzeptieren und auch in dieser Form ausgeben. Außerdem soll eine Typumwandlung rational → long double möglich sein, die eine dezimale Gleitpunktzahl als Näherungswert einer rationalen Zahl liefert.

Erstellen Sie eine Potenzfunktion pow, die die Berechnung von r^{n} für rationales r ≠ 0 und n ∈ ℤ gestattet. Diese Funktion soll auch den Fall 0^{n} für n ∈ ℕ korrekt behandeln und 0^{0} := 1 liefern.

Erstellen Sie eine Funktion zur Berechnung von ∑_{k=1}^{n} kr^{k} und eine weitere Funktion zur Berech-

nung des Kettenbruchs b_{0} + \frac{a_{0}}{b_{1} + \frac{a_{1}}{b_{2} +\frac{a_{2}}{... b_{n−1} + \frac{a_{n−1}}{b_{n}}}}} , a_{0}, …, a_{n−1}, b_{0}, …, b_{n} ∈ ℕ.

Rechnen Sie folgende Beispiele:

(a) ∑_{k=1}^{n} kr^{k}  (b) \frac{nr^{n+2} − (n + 1)r^{n+1} + r}{(r − 1)^{2}}  jeweils für r = \frac{2}{3}, −\frac{10}{7} und n = 8

(c) 3 + \frac{1}{7 + \frac{1}{15 + \frac{1}{1 + \frac{1}{292}}}}

(d) Kettenbrüche mit a_{0} = 4, a_{i} = i^{2} (i ≥ 1), b_{0} = 0, b_{i} = 2i − 1 (i ≥ 1) für n = 1, 2, …, 10.

Berechnen Sie auch die Näherungswerte der Brüche als dezimale Gleitpunktzahlen.

Bearbeitungszeitraum: bis Donnerstag, 1.12.2022, 16^{00}