Algorithmische Mathematik pp 49-56 | Cite as
Approximative Darstellungen reeller Zahlen
- 4.8k Downloads
Zusammenfassung
Durch die Kombination der Klassen LargeInt (Programm 2.11) und Fraction (Programm 2.10) – erweitert um die noch fehlenden Operationen – kann man mit rationalen Zahlen rechnen, ohne Rundungsfehler zu machen. Allerdings sind die einzelnen Rechenoperationen vergleichsweise langsam, weil Zähler und Nenner – auch wenn man immer mit dem Euklidischen Algorithmus kürzt – groß werden können.
Wesentlich schneller ist das Rechnen mit Standarddatentypen wie double; allerdings muss man hier Rundungsfehler in Kauf nehmen und kontrollieren.
Komplexe Zahlen lassen sich natürlich (näherungsweise) speichern, indem man (Näherungen von) Real- und Imaginärteil speichert, ähnlich wie man rationale Zahlen als Paare ganzer Zahlen (Zähler und Nenner) darstellen kann. Analog zur Klasse Fraction kann man auch hierfür eine Klasse definieren. Die C++-Standardbibliothek enthält sogar schon einen Typ complex<double>, den man für komplexe Zahlen benutzen kann. Wir beschränken uns im Folgenden der Einfachheit halber auf reelle Zahlen; alles überträgt sich aber natürlich direkt auf komplexe Zahlen.