... nun gut, fast alles.
Eine Taylor-Reihe ist eine Polynomfunktion, also eine Reihe, in der alle Potenzen von x mit einem Koeffizienten versehen sind:
y = a0 + a1·x + a2·x2 + a3·x3 + ...
Es gibt eine große Klasse von Funktionen, die man durch diese Reihe mit beliebiger Genauigkeit
nachbilden kann, wenn man genügend viele Glieder der Reihe berücksichtigt.
Solche Funktionen nennt man analytische. Hierunter finden sich das meiste,
mit dem man in Wissenschaft und Technik zu tun hat.
Die Idee dahinter:
Wenn die Reihe und die Funktion an der Stelle x=0 im Funktionswert und in allen Ableitungen übereinstimmen,
dann nähern sie sich immer stärker an. Bei Berücksichtigung von unendliche
vielen Gliedern werden die meisten Funktionen wirklich identisch.
Dazu müssen aber alle (also unendlich viele) Glieder der Reihe berücksichtigt werden.
Für praktische Anwendungen kommt man aber mit endlich vielen Gliedern schon sehr weit.
Die Standardfunktionen wie die Exponentialfunktion oder die Winkelfunktion werden in Computerprogrammen
oder sogar im Taschenrechner meist mit Taylor-Reihen berechnet. Dazu muss man nur die passenden Koeffizienten
a1, a2, usw. kennen.
Die Exponentialfunktion und eineTaylorentwicklung mit vier Gliedern
Die Koeffizientenformel ergibt sich aus der Forderung, dass die
Ableitungen der anzunähernden Funktion und des Polynoms an der Stelle x=0 gleich sein sollen. Dazu muss man die Ableitungen der anzunähernden Funktion f(x) berechnen. Hierbei hilft der Ableitungsrechner [1].
Die ersten Koeffizienten sind
a0 = f(0),
also der Funktionswert an dieser Stelle
a1 = f '(0),
also der Anstieg
a2 = f ''(0) / 2,
das ist die Hälfte der Krümmung
a3 = f '''(0) / 6
Allgemein gilt
an = f (n)(0) / n!
Hier ist f (n) die n-te Ableitung der abzubildenden Funktion und n! die Fakultät von n, also das Produkt aller Zaheln von 1 bis n.
Besonders einfach lässt sich die Taylor-Reihe der Exponentialfunktion f(x) = ex berechnen. Diese Funktion hat die Eigenschaft, dass ihre Ableitung wieder
ex ist, und alle weiteren Ableitungen auch. Diese Ableitung benötigen wir nur an
einer Stelle, nämlich x=0, also e0, was den Wert 1 ergibt. Alle Ableitungen haben also den Wert 1.
Die Exponentialfunktalfunktion lässt sich also annähern durch
ex = 1/0! + x/1! + x²/2! + x³/3! + ...
Hier habe ich für den Funktionswert selbst (die "nullte Ableitung") den Wert 0! ergänzt.
Es gilt 0!=1, so dass alles richtig bleibt und die Formel für alle Glieder gleich ist.
Für diese einfache Formel lege ich ein kleines Python-Programm hierher. Damit könnt ihr ausprobieren, wieviele Glieder der Taylor-Reihe ihr benötigt, um ex mit einer vernünftigen Genauigkeit zu bestimmen. Wie nicht anders zu erwarten war: Je weiter man sich von x=0 entfernt, desto mehr Gleider werden gebraucht. Das wird irgendwann unpraktisch, so das man weitere mathematische Tricks suchen muss, um die Taylorentwicklung auf einen kleinen Bereich um x=0 zu beschränken. Mit Hilfe der Potentgesetze ist das kein Problem, so dass der Taschenrechner auch e100 zügig berechnet.
# Exponentialfunktion mit Taylor-Entwicklung
from math import *
while (1==1):
x=float(input("x-Wert:"))
n=int(input("Anzahl Glieder:"))
fak=1
sum=1
potenz=1
for i in range (1,n):
fak=fak*i
potenz=potenz*x
sum=sum+potenz/fak
print("Näherung", sum, "exakt", exp(x))
In diesem Programm berechne ich sowohl die Fakultät als auch die Potenz nicht
für jedes Glied von Grund auf neu (wie es die Formel angibt), sonern führe sie
schrittweise mit. Das spart Rechnezeit. Damit man ein wenig experimentieren
kann, bleibt das Programm ewig in der Rechnschleife und muss mit strg-c
abgebrochen werden.
Man kann damit auch ausprobieren, wieviele Glieder man
für e100 benötigt. es sind über 120:
Kann man von der sogenannten Entwicklungsstelle x=0 nun alle Werte der
gewünschten Fnktion besteimmen, von praktischen Schwierigkeiten einmal
abgesehen?
Für einige Funktionen geht das tatsächlich, die
Exponentialfunktion ist ein Beispiel, für die Winkelfunktionen Sinus und
Kosinus gilt das auch. Es gibt aber auch andere Beispiele, ich habe y=1/x
ausgewählt. Diese kann um den Wert 0 herum nicht entwickelt werden, da sie
dort nicht definiert ist. Man behilft sich in solchen Fällen damit, dass man einfach den
Entwicklungspunkt
verschiebt, und stattdessen die Taylorentwicklung für y=1/z angibt, wobei z.B.
z=1-x. Die Reihe wird also um den Punkt x=-1 entwickelt und lautet:
1/z = 1/(1-x) =1+ z + z2 + z3 + z4 + z5 ...
Für z=-1 nähert sie sich sie sich x=0, also der Unstetigkeitsstelle. Es
ist intuitiv verständlich, dass es die Funktion nicht schafft, die
Unstetigkeitsstelle bei z=1 (also x=0) zu überwinden und von plus Unendlich
nach minus unendlich zu springen: Eine SIngularität begrenzt das
Konvergenzintervall immer. Interessanterweise "schafft" es die Reihe
aber auch nicht, über die ganz harmlose Stelle bei x=2 zu kommen! Dies liegt
daran, dass eine Taylorreihe – wenn überhaupt – nur in einem Intervall
konvergiert, welches symmetrisch zur Entwicklungsstelle ist.
Die Funktion 1/x (rot) und die ersten 10 Glieder ihrer
Taylor-Entwicklung (blau). Die Taylor-Reihe funktioniert nur zwischen 0 und
2(gestrichelte Hilfslinie)
Das muss man alles mal erlebt haben, deshalb gibt es auch hierzu wieder ein kleines Python-Programm:
# Exponentialfunktion mit Taylor-Entwicklung
# 1/x mit Taylor-Entwicklung
from turtle import *
from math import *
def plot(x,y, pc): # einen Punkt setzen
pencolor(pc)
penup()
goto(200*x-350,200*y-350)
pendown()
dot(2)
def plotBlue(x,y): # in Blau
plot(x,y,"blue")
def plotRed(x,y): # in Rot
plot(x,y,"red")
def plotBlack(x,y): # in Schwarz
plot(x,y,"black")
tracer(0,0) # Bildschirmaktualisierung aus
# ein kleines Koordinatensystem
y=-0.1 # y-Achse
for j in range (5100):
plotBlack(0,y)
y=y+0.001
y=-0.1 # Hilfslinie bei y=2
for j in range (200):
plotBlack(2,y)
y=y+0.02
x=-0.1 # x-Achse
for j in range (5100):
plotBlack(x,0)
x=x+0.001
# die eigentliche Rechnung
n=5 # Anzahl der Taylor-Koeffizienten, hier ändern
x=0.001
for j in range (5000):
x=1-x
sum=1
potenz=1
for i in range (1,n):
potenz=potenz*x
sum=sum+potenz
x=1-x
x=x+0.001
plotBlue (x, sum) # Näherung: blau
plotRed(x,1/(x)) # Exakt: rot
update() # Bildschirm anzeigen
Ihr seht: Das Polynom funktioniert nur
zwischen 0 und 2. Man kann dieses Verhalten zwar ausrechnen, aber ich erspare
uns das hier. Aber die Botschaft lautet: Taylor-entwicklungen funktionieren am
besten (oder überhaupt nur) in der Umgebung der Stellen, an der man sie – ggf.
nach einer Koordiantenverschiebung – entwickelt.
(Uwe Pilz, Dezember 2018)
[1] www.ableitungsrechner.net