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.