Numerik ARABIAta
Wie in wenigen anderen Systemen kann in SUSE Linux.12 gfortran mit
vierfacher Genauigkeit gerechnet werden. Das lässt den abenteuerlichen
Versuch zu, die Taylorentwicklung gegebener Funktionen ohne die
Anwendung eines Computer Algebra Systems mit ausschließlich numerischen
Methoden zu vollziehen. Dabei erfolgt hier nur die Entwicklung um null
(0.) und es werden reelle Koeffizienten vorausgesetzt.
Die jeweilige Funktion wird numerisch entwickelt, d.h. die Funktion
inklusive Ungenauigkeiten bei der Berechnung der Funktionswerte liegt
der Taylorentwicklung zugrunde.
Die Koeffizienten werden separat bestimmt. Dabei nimmt die
Ungenauigkeit der Funktionswerte zu und so auch diejenige der
nachfolgend gewonnenen Koeffizienten.
Im gegebenen Quelltext der Funktion
gvonx.f , Verzeichnis quellen,
kann der Ablauf bei Ermittlung der Koeffizienten in Abhängigkeit des Parameters n abgelesen werden:
n=0: f0(x)=f(x), a1=f0(0), absolutes Glied,
n=1: f1(x)=(f0(x)-a1)/x, a2=f1(0), lineares Glied,
n=2: f2(x)=(f1(x)-a2)/x, a3=f2(0), quadratisches Glied
usw.
Die jeweiligen Restfunktionen f1(x), f2(x), ... sind allerdings
durch eine (hebbare) Unstetigkeit vom Typ 0/0 definiert. Mittels
Interpolation des Punktes fi0=fi(0) werden die Funktionen zugänglich:
fi0=Summe ck*fi(+/-k*eps), k=1,2,...,fall.
Die Koeffizienten ck gelten dabei sowohl für fi(k*eps) als auch für fi(-k*eps).
Die zentrale Lage des Interpolationspunktes 0 und der äquidistante
Abstand der Stützstellen führt zur jeweils besten Interpolation in
Abhängigkeit von fall. Der Parameter fall ist dabei so zu wählen, dass
sich die Ungenauigkeit der Berechnung des Interpolationspolynoms
(mittels Hornerschema) einerseits und die Ungenauigkeit bei der
Bestimmung des Koeffizienten ai in Abhängigkeit vom untersuchten
Beispiel andererseits ungefähr die Waage halten.
Dabei werden die Koeffizienten ai nicht berechnet sondern
aufgesucht. Mit entsprechendem Rechenaufwand. Im gegebenen Quelltext der
Funktion
dwvon in avon.f , Verzeichnis quellen,
wird das Kriterium zur Beurteilung eines Datenpaares (eps,ai)
beschrieben. Darauf basiert das Auswahlverfahren zur Bestimmung der ai.
Nun zu den Beispielen
Jeder Taylorreihe ist ein Konvergenzintervall zugeordnet, das sich aus ihren Koeffizienten ergibt.
Nehmen wir zur Kenntnis, eine Taylorreihe kann in Abhängigkeit von
der betreffenden Funktion ein "großes" Konvergenzintervall vorweisen;
oder auch nicht. Es gibt auch Beispiele mit sehr kleinem
Konvergenzintervall.
Wir betrachten nun Intervalle, wo Werte mit einem Fehler kleiner als
eine gegebene Schranke gegenüber den entsprechenden Funktionswerten
mittels Taylorpolynom berechnet werden. Wir bezeichnen im Folgenden
solche Intervalle als "Konvergenzintervall".
Bei dieser Bezeichnungsweise ergibt sich die Einordnung:
Das Konvergenzintervall einer Taylorreihe umfasst das
Konvergenzintervall eines Taylorpolynoms der gleichen Funktion. Und auch
die Taylorpolynome höherer Ordnung umfassen diejenigen niederer
Ordnung. Und wenn nun, wie bei Anwendung numerisch bestimmter
Taylorpolynome, die Koeffizienten relativ ungenau sind, so fallen
entsprechende Konvergenzintervalle noch einmal kürzer aus. Deshalb
wurden in den angeführten Beispielen Vergleiche veranschaulicht:
Grüner, dicker Strich bei der Funktion, weißer, dünner Strich beim Taylorpolynom.
Man kann den Beginn der Abweichung in den Abbildungen deutlich erkennen.
Und da gibt es einiges zu kritisieren.
In einem kleinen Video wurde die Zunahme der Ungenauigkeit mit der Länge des Intervalls verdeutlicht.
Ergänzung weiterer Funktionen
Im gegebenen Quelltext der Funktion
qfunktionen.f , Verzeichnis quellen,
werden einige Standardfunktionen mit vierfacher Genauigkeit gegeben.
Für Taylorpolynome, die zur Gruppe der Kompositionen gehören,
d.h. absolutes Glied = 0, lineares Glied ungleich 0, werden nur die
Koeffizienten a2,a3,...,betrachtet und diesen Funktonen zugänglich
gemacht:
fog.f , Verzeichnis quellen,
fog = f(g(x)),
invers.f , Verzeichnis quellen,
invers(f) o f = f o invers(f) = x (Einselement der Gruppe)
d.h. invers(f(f(x))) = f(invers(f(x))) = x,
wurzel.f , Verzeichnis quellen,
a2>0, wurzel(f) o wurzel(f) = f,
d.h. wurzel(f(wurzel(f(x)))) = f(x).
Messdaten auswerten
Hier wird nur der einfache Fall betrachtet:
Eine Messreihe von Punkten (x,y), die x-Werte sind äquidistant angeordnet, die y-Werte folgen einer Kurve.
Die geringe Schrittweite in x-Richtung erlaubt auch bei hinreichender Genauigkeit eine lineare Interpolation, vgl.
qyvon
in der Datei qfunktionen.f im Verzeichnis quellen.
Auf diese Funktion bezieht sich die Tayorentwicklung um den Mittelpunkt der x-Werte. D.h. eine ungerade Anzahl von Punkten ist gegeben.
Allerdings folgt die Punktmenge oft einer Kurve, die einer Taylorentwicklung keinen Vorschub leistet. So auch im angegebenen Beispiel. Ein nur sehr kurzer "Konvergenzbereich" hindert jegliche weitere Anwendung.
Daher muss in solchen Fällen auf eine andere, allgemein bekannte Methode zur Bestimmung eines approximierenden Polynoms zurückgegriffen werden:
Simultane Berechnung der Koeffizienten der Approximation durch die Methode der
kleinsten Summe der Abstandsquadrate zwischen Polynom und Punktmenge.
Dabei fällt ein beträchtlicher Rechenaufwand an und eine vierfache Genauigkeit bei Bestimmung und Auswertung des jeweiligen Gleichungssystems ist unumgänglich.
Eine Bildergalerie zeigt den Unterschied deutlich. Mit ./messvon beginnt eine entsprechende Berechnung.
Simultane Berechnungen
In den folgenden Beispielen werden approximierende Polynome einer Punktmenge aufgesucht. Mit entsprechendem Rechenaufwand.
Man gebe im Verzeichnis work die folgenden Befehle an:
rm maxn
./tansinnextmaxn
Damit ergibt sich eine Bildergalerie. Hier die Berechnungsergebnisse.
Mit den Kommandos
rm maxn
./sintannextmaxn
ergibt sich die Bildergalerie. Hier die Berechnungsergebnisse. Sie zeigt die schrittweise Bestimmung von Polynomen, die immer besser die gegebene Punktmenge approximieren.
Bei diesem Beispiel "sintan" liegt nahe, an Stelle von 1, x, x^2, x^3 usw. 1, tan(x), (tan(x))^2, (tan(x))^3 usw. als Basisfunktionen zu betrachten. Damit erweitert sich das "Konvergenzintervall" etwas.
Natürlich ohne jemals π/2 zu erreichen..
Im letzten Beispiel. Hier die Berechnungsergebnisse.
rm maxn
./sinsinnextmaxn
ergibt sich eine kleine Überraschung beim Verhältnis zwischen Taylor- und Simultan-Polynom.
Die Programme sind hier
ohne Gewährleistung verfügbar.