Herleitung Taylor series approximation

Neue Frage »

___Daniel___ Auf diesen Beitrag antworten »
Herleitung Taylor series approximation
Meine Frage:
Hey liebe Mathe-Helfer!

Ich habe hier ein mathematisches Problem aus der Praxis ("linear speed control of stepper motor" mit einem Mikrocontroller) dessen Ansatz ich nicht verstehe. Hier http://www.atmel.com/images/doc8017.pdf findet ihr eine Application Note von dem Prozessorhersteller Atmel mit einem Beispiel zur Implementierung des linearen Geschwindigkeitsverlaufs also konstanter Beschleunigung.

Generell geht es darum dass man die Zeit zum nächsten Takt n für den Schrittmotor berechnet muss und diese immer abhängig von der Zeit n-1 ist.

Auf der Seite 5 der PDF findet ihr folgende Formeln:
für den ersten Zählerwert c0:
sowie für den n-ten Zählerwert:

da solche Wurzeloperationen mit einem µC ziemlich zeitaufwändig sind und Die Rechenzeit zwischen zwei Takten im extremsten Fall nur 50-100µs beträgt, wird diese Wurzelfunktion in der Application Note von Atmel (siehe Anhang) mittels Taylorreihe aproximiert und als Ergebnis folgt dann:


Auf den Seite 14 des PDF-Dokuments findet ihr noch ein paar Zwischenschritte dafür. Hier taucht auch die O-Notation auf, die ich in dem Zusammenhang noch nie gesehen habe. Ich verstehe den Ansatzt sowie die darauf folgenden Schritte leider nicht. Mein Uni-Mathe ist auch schon etwas verblasst :/.

Auf Seite 5 steht dann noch: "This calculation is much faster than the double square root, but introduces an error of
0.44 at n=1. A way to compensate for this error is by multiplying c0 with 0,676." Wie kommen die auf diesen Fehlerwert 0,44 bzw den Korrekturfaktor 0,676?

Meine Ideen:
Ich habe schon ein paar Bücher durchgewälzt bzw. gesichtet aber bin nicht weiter gekommn. Offensichtlich kann man jedoch jede Wurzelfunktion als Potenzreihe ausdrücken, vermutlich wurde das auch hier gemacht?

Über eure kompetente Hilfe würde ich mich sehr freuen! smile

Dankeschön und viele Grüße,

Daniel
__Daniel__ Auf diesen Beitrag antworten »

Nochmal kurz zur Info:

Auf Seite 14 des Dokuments dessen Link ich im ersten Beitrag gepostet habe steht folgendes:

mit und

unter Kapitel 5.2 Inter-step delay: Using the Taylor series approximation


leads to


Finally, the expression or the counter delay can be approximated as:


Wenn mir hier jemand den Ansatz und die Schritte erklären könnte wäre ich total glücklich smile

Danke und viele Grüße,

Daniel
RavenOnJ Auf diesen Beitrag antworten »

Die Funktion wird um den Punkt x=0 entwickelt. Die Taylor-Approximation ist dann


In deinem Fall muss n groß genug sein, also , damit diese Taylor-Approximation gut genug ist (ich schätze mal, n > 3, dann beträgt der Fehler nur ca. 0,1%; je größer das n, desto besser die Näherung; bei dem weiter unten erwähnten Ausdruck sollte allerdings n>6 sein, damit der Fehler höchstens 0,1% beträgt). bedeutet nur eine zusammenfassende Näherung der Terme, die sich nur mit höchstens der 3. Potenz von x ändern, d.h. dritte und höhere Potenzen. Da , kann man diese anscheinend vernachlässigen.

In diesem Ausdruck


kommst du durch Erweiterung mit nach dem 1. Gleichheitszeichen zu



Da wird dann im Zähler und Nenner die Taylor-Approximation eingesetzt, mit erweitert und die -Terme werden vernachlässigt.

In einem letzten Schritt wird dann umgeschrieben

__Daniel__ Auf diesen Beitrag antworten »

Hey RavenOnJ

Danke erstmal für deine Hilfe! Echt top. Es handelt sich also um einen Spezialfall der Taylor-Reihe - die "Maclaurinsche Reihe".
Wann wird denn um den Punkt entwickelt und wann um einen anderen? Angenommen ich breche die Taylor-Reihe nach der ersten Potenz ab, dann habe ich exakt die Tangente an die Funktion im Entwicklungspunkt. Bei höheren Potenzen schmiegt sich die Reihe (insofern sie konvergiert, nehme ich an) besser und besser an die Funktion an - jedenfalls um den Entwicklungspunkt herum, der Fehler wird aber für große x-Werte (bzw. große ) immer größer - insofern "x" im Zähler steht.

Wenn das so stimmt interpretiere ich mal weiter.
Bei mir steht also das "x" bzw. "n" im Nenner, daher gehen die Glieder immer schneller gegen null je höher der Nennergrad und es kann schon früh abgebrochen werden - insofern man den Fehler für kleine "n" für klein genug erachtet. Korrekt?
Tatsächlich habe ich einen Fehler von weniger als 0,1% nach dem 8. Schritt (also n=8). Hast du echt top abgeschätzt. Wie machst du denn diese Fehlerabschätzung?

Ich hätte wahrscheinlich direkt von der Funktion die Taylorreihe entwickelt, statt erst von die Reihe zu entwickeln und dort dann für einzusetzen. Warum wurde denn der Weg gewählt? Offensichtlich muss man ja sowieso erst umformen um zu sehen, dass man davon die Reihe benötigt.

Der Bruch wird wohl einfach dafür gebildet um und ins Verhältnis zu bringen, zu eliminieren und dadurch nur mit auszudrücken?! Darauf muss man auch erstmal kommen...
Es wäre doch aber auch möglich von und die Taylor-Reihe zu entwickeln und dann mit auszudrücken...wobei..hm..für große "n" würde der Fehler dann tatsächlich immer größer werden, wenn schon nach der zweiten Potenz abgebrochen wird...ist das der Hauptgrund für das "ins Verhältnis setzen und eliminieren"?

Kurz noch mal zu meinem ersten Post:
"[...] Auf Seite 5 steht dann noch: "This calculation is much faster than the double square root, but introduces an error of
0.44 at n=1. A way to compensate for this error is by multiplying c0 with 0,676." Wie kommen die auf diesen Fehlerwert 0,44 bzw den Korrekturfaktor 0,676? [...]"

Den Wert muss ich tatsächlich über die Wurzel ausrechnen. Da es jedoch der erste Wert ist, ist dieser noch nicht Zeitkritisch - also kein Problem. Hast du ne Idee woher diese Kompesation kommt? Also die Faktoren...

Echt ein schönes Beispiel zum Einsatz der Taylorreihe in der Praxis. Der Mikrocontroller benötigt für die Rechnerei dadurch weniger als 50µs - wobei hier noch eine Restberechnung dazu kommt, da mit Integerwerten, also Ganzzahlen, gerechnet wird...

Vielen Dank dir nochmals!
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »