Approximation von ex im Taschenrechner |
Eine realistische Antwort auf diese Frage kann erst im IV. Jahrgang gegeben werden, nachdem das Stoffgebiet "Taylor-Reihen und -Polynome" erarbeitet wurde. Der Autor zeigt dann gerne als Musterbeispiel eine in Taschenrechnern tatsächlich gebräuchliche Approximation der Exponentialfunktion y = ex . Andere Funktionen werden zum Teil auf ähnliche Weise berechnet, benötigen aber einen etwas größeren Aufwand.
Hauptanforderung an eine Approximation ist natürlich die Genauigkeit, also die
Will man 10 richtige Ziffern - unabhängig von der Stellung des Kommas - erzeugen, dann muß der relative Fehler kleiner als 5× 10-11 sein. Auf eine streng wissenschaftliche Fehleranalyse, die auch Abbrechfehler der Rechner-Arithmetik berücksichtigt, muß hier verzichtet werden.
Weitere Qualitätskriterien sind die Rechengeschwindigkeit eines solchen Funktions-Programms und sein Speicherbedarf. Als Maß für die Rechengeschwindigkeit nimmt man die
Addition, Subtraktion und Verschiebungen gehen so schnell vor sich,
daß ihre Anzahl nicht ins Gewicht fällt.
Zur Bewertung des Speicherbedarfs wird lediglich die
herangezogen.
Der Planungsspielraum zur Erzeugung von Programmvarianten gleicher
Genauigkeit läßt sich so beschreiben:
Je mehr Konstanten man vorausberechnet, desto weniger Operationen sind
erforderlich und umgekehrt.
Es soll nun ex im Bereich -¥ < x < ¥ mit einer Genauigkeit von 10 Stellen berechnet werden!
ZurAuswertung der ex - Reihe
mit einem Programm, benötigt man bei Verwendung der zugehörigen Rekursionsvorschrift
nur eine Konstante, nämlich 1, pro Glied aber je eine Multiplikation und eine Division!![]()
Die folgende Tabelle zeigt, wieviele Glieder der Reihe man - in Abhängigkeit vom Argument x - berücksichtigen muß, um die geforderte 10-stellige Genauigkeit zu erreichen:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
zur geforderten Genauigkeit angenähert werden kann. Benützt man zur Auswertung das HORNER-Schema
so erkennt man, daß 6 Multiplikationen und 6 vorausberechnete Konstanten benötigt werden.,
In der weiteren Folge sind drei Ziele anzustreben:
1. Auswertung des Taylor-Polynoms rechentechnisch verbessernZunächst wird das Polynom mittels der Identität2. Anpassung an die Arithmetik des Rechners
3. Argumentbereich auf 0 £ x < 0.1 einschränken
in eine rationale Funktion
transformiert (nach einer Methode des französischen Mathematikers H. Padé).
Koeffizientenvergleich über Grad 0 bis 6 führt auf 7 lineare Gleichungen für die ai und bi (b0 = 1) und man erhält (nach Erweiterung des Bruches mit 120)
Bei Umwandlung des Taylor-Polynoms in eine rationale Funktion bleibt die Anzahl der zur Auswertung benötigten Multiplikationen und/oder Divisionen im allgemeinen gleich. Erst durch Verwendung der äquivalenten Kettenbruch-Entwicklung.
wird der Rechenaufwand drastisch verringert (hier: nur mehr 3 Divisionen)! Es soll nicht verschwiegen werden, daß Kettenbrüche manchmal Probleme verursachen. Bei Subtraktion nahezu gleich großer Zahlen tritt Genauigkeitsverlust durch "Auslöschung" ein. Dies kann aber durch eine geringfügige Modifikation des Kettenbruches vermieden werden.
Bevor nun der vollständige Algorithmus dargelegt werden kann, muß noch die Anpassung an den Tachenrechner erfolgen. Taschenrechner benützen intern dezimale Gleitkomma-Arithmetik, es ist daher zweckmäßig, ex über 10x× lg e als Zehnerpotenz zu berechnen.
Für Computer, welche üblicherweise binäres Gleitkomma verwenden, würde man auf 2x ausweichen, also L = lb e setzen., wobei L = lg e.
Die Reduktion des Arguments auf den Bereich 0 £ x < 0.1 wird auf höchst einfache Weise bewerkstelligt:
Man zerlegt den Zehnerexponenten x× lg e in einen ganzzahligen Teil g und einen (positiven) Bruchanteil f, der wiederum in die Zehntel (0.z) und den Rest (h < 0.1) aufgespalten wird. Auf einer "Dezimalmaschine" benötigt man hiezu keine zählende Rechenoperation!
Sodann wird 10h mit dem Kettenbruch K10(h) angenähert, und 10z/10 aus einer vorausberechneten Tabelle der Potenzen 100.0, 100.1, ... , 100.9 entnommen. Die Multiplikation mit 10g ist im dezimalen Gleitkomma lediglich eine Stellenwertkorrektur (Addition zur Charakteristik).
Es ist also gelungen, die Funktion ex für beliebiges x auf 10 Stellen genau zu berechnen und es werden dazu nur 2 Multiplikationen und 3 Divisionen sowie 15 vorausberechnete und gespeicherte Konstanten benötigt!
Zu Vergleichszwecken sind hier sämtliche Daten zusammengestellt.
Die Tabelle der vorausberechneten Zehnerpotenzen:
100.0 | 1.000000000000000 |
100.1 | 1.258925411794167 |
100.2 | 1.584893192461113 |
100.3 | 1.995262314968879 |
100.4 | 2.511886431509580 |
100.5 | 3.162277660168379 |
100.6 | 3.981071705534972 |
100.7 | 5.011872336272723 |
100.8 | 6.309573444801932 |
100.9 | 7.943282347242815 |
|
|
|
|
|
|
|
|
|
|
Die zwei "echten" Multiplikationen sind in der obigen Darstellung als * gesetzt. Die drei Divisionen werden offensichtlich bei der Auswertung des Kettenbruches benötigt. Für den Sonderfall h = 0 muß anstelle des Kettenbruches der Wert 1 vorgesehen werden. Die Stellenwertkorrektur kann natürlich nur in der "Maschinensprache" des Taschenrechners in der beschriebenen Weise (ohne Multiplikation) erfolgen!
Literaturhinweis:
A. RALSTON / H. S. WILF
Mathematische Methoden für Digitalrechner I
R. Oldenbourg Verlag München Wien 1972