Mag. Heinz Stegbauer, HTBLuVA Mödling
 
Approximation von ex im Taschenrechner
Mathematische Inhalte: Taylor-Reihen und -Polynome,
Rationale Funktionen, Kettenbruch-Entwicklung,
Koeffizientenvergleich, lin. Gleichungssysteme,
Polynomdivision, HORNER-Schema,
Relativer Fehler, Potenzen, Logarithmen.
Anwendung: Erzeugung brauchbarer Approximationen der Standardfunktionen, wie sie für Taschenrechner oder Computer benötigt werden. Kurzzusammenfassung: Nach kurzer Beleuchtung der Problematik wird als Musterbeispiel eine Approximation der Exponentialfunktion y=ex entwickelt, die in Taschenrechnern tatsächlich verwendet wird. Lehrplanbezug: IV. Jahrgang: Taylor-Reihen (nicht in allen Abteilungen vorgesehen) Zeitaufwand: 2 Stunden Mediales Umfeld: Eventuell PC (Turbo-PASCAL bzw. DERIVE) oder Taschenrechner für begleitende Experimente. Anmerkungen: Angeregt durch die interessanten Beiträge des Kollegen Wilfried Rohm, HTBLA Saalfelden über "Taylorreihen und Computereinsatz - Teil 1 und 2" in den letzten AMMU-Aussendungen habe ich mich entschlossen, über eigene Arbeiten auf diesem Gebiet zu berichten, die sehr weit zurückreichen: Im Jahre 1978 entwickelte ich für unseren PDP-8/e - Computer eine Ganzzahl- und Gleitkomma-Arithmetik sowie ein Paket der Standard-Funktionen (in Assemblersprache) als Kern eines PASCAL-Compilers. Erfahrungen aus jener Zeit verhelfen mir und meinen Schülern noch heute fallweise zu einer "Extra"-Stunde. Wenn die Schüler im Mathematikunterricht die ersten elementaren Funktionen kennengelernt haben und anwenden, stellen sie manchmal die Frage, wie denn der Taschenrechner die Funktionswerte berechnet. Speziell bei den Kreisfunktionen erscheint ihnen dies schwierig, da sie nur eine geometrische Definition als Seitenverhältnis im rechtwinkeligen Dreieck bzw. im Einheitskreis kennen.

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

Anzahl der richtigen signifikanten Ziffern.

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

Anzahl der Multiplikationen und/oder Divisionen.

Addition, Subtraktion und Verschiebungen gehen so schnell vor sich, daß ihre Anzahl nicht ins Gewicht fällt.
Zur Bewertung des Speicherbedarfs wird lediglich die

Anzahl der vorausberechneten und gespeicherten Konstanten

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:

x
Grad des Polynoms
0.05
5
0.1
6
0.2
8
0.5
10
1
13
2
17
5
25
10
36
Dies ist ein grundsätzliches Problem von Potenzreihen! Sie liefern nur nahe der Entwicklungsstelle
(hier: x0 = 0) gute Approximationen.
Der Tabelle ist also zu entnehmen, daß ex im Bereich 0 £ x < 0.1 durch das Polynom 6. Grades
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 verbessern

2. Anpassung an die Arithmetik des Rechners

3. Argumentbereich auf 0 £ x < 0.1 einschränken

Zunächst wird das Polynom mittels der Identität
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.
Die obige Kettenbruchdarstellung wurde übrigens ganz einfach durch wiederholte Polynomdivision erzeugt:
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.
Aus  erhält man leicht
, wobei L = lg e.
Für Computer, welche üblicherweise binäres Gleitkomma verwenden, würde man auf 2x ausweichen, also L = lb e setzen.

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 Umrechnungskonstante lg e:
lg e
0.434294481903251
Die Koeffizienten des Kettenbruches:
24L
10.423067565678043
12L
5.211533782839021
50L2
9.430584850580696
10L2
1.886116970116139
 
Und hier der komplette Rechenablauf:
 
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