Annäherungsfunktion < Geraden und Ebenen < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:09 Fr 13.03.2009 | Autor: | Sirvivor |
Hi,
Ich habe eine Funktion, die von drei Variablen abhängt, allerdings für meine Verwendung zu sperrig ist. Daher suche ich nach einer schnell berechenbaren Annäherung an diese Funktion.
Ich habe es bereits mit Taylor u. Ä. vesucht, aber es ist nicht nur in einem Fenster gut gelaufen.
Die Funktion Lautet:
[mm] z=acos(\bruch{x}{\wurzel{x^{2}+y^{2}}})
[/mm]
Mit Taylor habe ich nach der 5. Entwicklung über x=0 folgendes erhalten:
[mm] z=-11,459*\bruch{x^{5}}{y^{5}}+19,1\bruch{x^{3}}{y^{3}}-57\bruch{x}{y}+90
[/mm]
-240 [mm] \le [/mm] x [mm] \le [/mm] 240
0 [mm] \le [/mm] y [mm] \le [/mm] 240
0 [mm] \le [/mm] z [mm] \le [/mm] 180
[Dateianhang nicht öffentlich]
Allerdings liefert die Taylor Annäherung für große |x| und kleine y sehr Abweichende Werte.
Deshalb habe ich alle Werte von z > 180 auf 180 setzen lassen. Dadurch sieht das Bild schon garnicht mehr so schlimm aus, aber dennoch bleiben die beiden Dreiecke Oben links und unten Links schlecht an das Original Angenähert.
[Dateianhang nicht öffentlich]
Gibt es da noch bessere methoden?
Vielleicht eine einfache methode den acos() anzunähern, den rest bekommt man noch irgendwie hin.
Die haubtproblematik, ist, dass ich zwei noch komplexere Funktionen Annähern muss. k(x,y,z). Wenn das mit der Ebene Hinhaut, dann kann man sich ja auh daran versuchen.
Der Grund für mein Problem ist, dass diese sowie die beiden komplexeren Rechnungen von einem 8-Bit Microcontroller bei 16MHz in weniger als 1 ms berechnet werden müssen [mm] (\sim [/mm] 5000 Operationen). Da bleibt keine Zeit um ständig Iterationsverfahren durchlaufen zu lassen, um Zwischenergebnisse zu erzeugen.
Die Taylorformel könnt man sogar noch prozessorfreundlicher schreiben.
[mm] z=((-11,459*\bruch{x*x}{y*y}+19,1)*\bruch{x*x}{y*y}-57)*\bruch{x}{y}+90
[/mm]
Ich hoffe jemand hat eine Heißen Tipp für mich.
Vielen Dank für eure Mühen.
PS: Eine der anderen Formeln lautet:
[mm] \beta=90+acos(\bruch{x²+y²+z²-4000-40\wurzel{x²+y²}}{200*\wurzel{-40*\wurzel{x²+y²}+x²+y²+z²+400}})+atan(\bruch{z}{\wurzel{x²+y²}-20})
[/mm]
Dateianhänge: Anhang Nr. 1 (Typ: JPG) [nicht öffentlich] Anhang Nr. 2 (Typ: JPG) [nicht öffentlich]
|
|
|
|
Hallo Sirvivor,
> Hi,
>
> Ich habe eine Funktion, die von drei Variablen abhängt,
> allerdings für meine Verwendung zu sperrig ist. Daher suche
> ich nach einer schnell berechenbaren Annäherung an diese
> Funktion.
> Ich habe es bereits mit Taylor u. Ä. vesucht, aber es ist
> nicht nur in einem Fenster gut gelaufen.
>
> Die Funktion Lautet:
> [mm]z=acos(\bruch{x}{\wurzel{x^{2}+y^{2}}})[/mm]
>
> Mit Taylor habe ich nach der 5. Entwicklung über x=0
> folgendes erhalten:
>
> [mm]z=-11,459*\bruch{x^{5}}{y^{5}}+19,1\bruch{x^{3}}{y^{3}}-57\bruch{x}{y}+90[/mm]
Die Taylor-Formel liefert hier ein Polynom 5.Grades in x und y, und zwar
[mm]T_{5}\left(x,y\right)=\summe_{n=0}^{5}\summe_{i=1}^{n}a_{i,n-i}\left(x-x_{0}\right)^{i}*\left(y-y_{0}\right)^ {n-i}[/mm]
wobei [mm]\left(x_{0}, y_{0}\right)[/mm] der Entwicklungspunkt
und [mm]a_{i,n-i}=\left{\bruch{1}{i! * \left(n-i\right)!}\bruch{\partial^{n} z\left(x,y\right)}{\partial x^{i} \partial y^{n-i}}} \right|_{\left(x_{0}, y_{0}\right)} = \bruch{1}{i! * \left(n-i\right)!}z_{\underbrace{x \cdots x}_{i-mal}\underbrace{y \cdots y}_{\left(n-i\right)-mal}}\left(x_{0}, y_{0}\right)[/mm]
>
> -240 [mm]\le[/mm] x [mm]\le[/mm] 240
> 0 [mm]\le[/mm] y [mm]\le[/mm] 240
> 0 [mm]\le[/mm] z [mm]\le[/mm] 180
>
> [Dateianhang nicht öffentlich]
>
> Allerdings liefert die Taylor Annäherung für große |x| und
> kleine y sehr Abweichende Werte.
> Deshalb habe ich alle Werte von z > 180 auf 180 setzen
> lassen. Dadurch sieht das Bild schon garnicht mehr so
> schlimm aus, aber dennoch bleiben die beiden Dreiecke Oben
> links und unten Links schlecht an das Original Angenähert.
> [Dateianhang nicht öffentlich]
>
> Gibt es da noch bessere methoden?
> Vielleicht eine einfache methode den acos() anzunähern,
> den rest bekommt man noch irgendwie hin.
> Die haubtproblematik, ist, dass ich zwei noch komplexere
> Funktionen Annähern muss. k(x,y,z). Wenn das mit der Ebene
> Hinhaut, dann kann man sich ja auh daran versuchen.
> Der Grund für mein Problem ist, dass diese sowie die
> beiden komplexeren Rechnungen von einem 8-Bit
> Microcontroller bei 16MHz in weniger als 1 ms berechnet
> werden müssen [mm](\sim[/mm] 5000 Operationen). Da bleibt keine Zeit
> um ständig Iterationsverfahren durchlaufen zu lassen, um
> Zwischenergebnisse zu erzeugen.
> Die Taylorformel könnt man sogar noch
> prozessorfreundlicher schreiben.
>
> [mm]z=((-11,459*\bruch{x*x}{y*y}+19,1)*\bruch{x*x}{y*y}-57)*\bruch{x}{y}+90[/mm]
>
> Ich hoffe jemand hat eine Heißen Tipp für mich.
> Vielen Dank für eure Mühen.
>
> PS: Eine der anderen Formeln lautet:
>
> [mm]\beta=90+acos(\bruch{x²+y²+z²-4000-40\wurzel{x²+y²}}{200*\wurzel{-40*\wurzel{x²+y²}+x²+y²+z²+400}})+atan(\bruch{z}{\wurzel{x²+y²}-20})[/mm]
>
>
Gruß
MathePower
|
|
|
|