Hallo Zusammen,
ich versuche mein Problem so genau wie möglich zu schildern:
Ziel: Was möchte ich machen?
In der Wissenschaft hat man oft viele empirische Messwerte, die man mathematisch als Funktion darstellen will. Das geht oft bei linearen Zusammenhängen mit der Linearen Regression. Es gibt aber auch Fälle mit nichtlinearem Zusammenhang, hier geht man hin und versucht z.B. ein Polynom zu bestimmen. Die meisten Anwender greifen hier auf Excel zurück geben ihre Messwerte ein und legen eine Trendlinie durch und lassen sich das Polynom anzeigen. Schreiben die Formel ab und rechnen damit weiter.
Problem: Es ist viel Arbeit die Formel abzutippen und es entstehen Rundungsfehler. Bei Excel kann man zw. Polynom 2-6 Grades wählen. Manchmal geht man deswegen auch hin und möchte wissen welches der Polynome den geringsten Fehler hat. Dazu nimmt man die jeweilige Gleichung und rechnet auf die Messwerte zurück und lässt sich den Relativen Fehler anzeigen. So kann man sich dann wenn es nicht klar ersichtlich ist welcher Grad die beste Angleichung entspricht weiterhelfen.
Also zusammengefasst: Ich möchte ein Algorithmus der mir eine Polynomfunktion zurückgibt, als Sahnehäubchen sollte der Algorithmus noch überprüfen welcher der Polynome den geringsten relativen Fehler hat.
Was das Berechnen des Polynoms angeht habe ich hier eigentlich alles gefunden was ich brauche: [VB 2010] Polynom berechnen und zeichnen
Nun ist es aber so, das bei diesem Algorithmus nach Newton der Grad immer gleich Anzahl der Werte - 1 ist. Will man jetzt aber sagen, wir 30 Messwerte nehmen, müsste man ein Polynom 29. Grades berechnen. Daran scheitert aber irgendwann der Prozessor, da die Koeffizienten immer kleiner werden und dann irgendwann Hardwarebedingt so große Rundungsfehler auftreten, das man das ganze vergessen kann. Reduziert man den Grad auf 10 dann rechnet der Algorithmus auch nur bis zum 10 Messwert durch.
Kann man hier mal ausprobieren: ghg-alsdorf.de/fachkonferenz/mathe/java/Interpolation.htm (einfach viele Werte eingeben und dann Grad reduzieren)
Excel mancht es hier irgendwie anders, die Frage ist wie?
Man könnte ja z.B. hingehn und bei 12 Messwerten sagen, benutze nur jeden 3 Messwert, 12/3 = 4 und nutze diese 4 Messwerte und mache daraus ein Polynom 3. Grades.
Man könnte auch hingehn und immer 3 Messwerte als Mittelwert zusammenfassen und dadurch die anzahl der Werte für den Algorithmus reduzieren.
Oder gibt es noch andere Möglichkeiten?
Die Frage ist, welche Methode ist am genausten?
Im Anhang mal 2 Beispiele wie die Kurven aussehen, es sind also keine großen Schwankungen.
ich versuche mein Problem so genau wie möglich zu schildern:
Ziel: Was möchte ich machen?
In der Wissenschaft hat man oft viele empirische Messwerte, die man mathematisch als Funktion darstellen will. Das geht oft bei linearen Zusammenhängen mit der Linearen Regression. Es gibt aber auch Fälle mit nichtlinearem Zusammenhang, hier geht man hin und versucht z.B. ein Polynom zu bestimmen. Die meisten Anwender greifen hier auf Excel zurück geben ihre Messwerte ein und legen eine Trendlinie durch und lassen sich das Polynom anzeigen. Schreiben die Formel ab und rechnen damit weiter.
Problem: Es ist viel Arbeit die Formel abzutippen und es entstehen Rundungsfehler. Bei Excel kann man zw. Polynom 2-6 Grades wählen. Manchmal geht man deswegen auch hin und möchte wissen welches der Polynome den geringsten Fehler hat. Dazu nimmt man die jeweilige Gleichung und rechnet auf die Messwerte zurück und lässt sich den Relativen Fehler anzeigen. So kann man sich dann wenn es nicht klar ersichtlich ist welcher Grad die beste Angleichung entspricht weiterhelfen.
Also zusammengefasst: Ich möchte ein Algorithmus der mir eine Polynomfunktion zurückgibt, als Sahnehäubchen sollte der Algorithmus noch überprüfen welcher der Polynome den geringsten relativen Fehler hat.
Was das Berechnen des Polynoms angeht habe ich hier eigentlich alles gefunden was ich brauche: [VB 2010] Polynom berechnen und zeichnen
Nun ist es aber so, das bei diesem Algorithmus nach Newton der Grad immer gleich Anzahl der Werte - 1 ist. Will man jetzt aber sagen, wir 30 Messwerte nehmen, müsste man ein Polynom 29. Grades berechnen. Daran scheitert aber irgendwann der Prozessor, da die Koeffizienten immer kleiner werden und dann irgendwann Hardwarebedingt so große Rundungsfehler auftreten, das man das ganze vergessen kann. Reduziert man den Grad auf 10 dann rechnet der Algorithmus auch nur bis zum 10 Messwert durch.
Kann man hier mal ausprobieren: ghg-alsdorf.de/fachkonferenz/mathe/java/Interpolation.htm (einfach viele Werte eingeben und dann Grad reduzieren)
Excel mancht es hier irgendwie anders, die Frage ist wie?
Man könnte ja z.B. hingehn und bei 12 Messwerten sagen, benutze nur jeden 3 Messwert, 12/3 = 4 und nutze diese 4 Messwerte und mache daraus ein Polynom 3. Grades.
Man könnte auch hingehn und immer 3 Messwerte als Mittelwert zusammenfassen und dadurch die anzahl der Werte für den Algorithmus reduzieren.
Oder gibt es noch andere Möglichkeiten?
Die Frage ist, welche Methode ist am genausten?
Im Anhang mal 2 Beispiele wie die Kurven aussehen, es sind also keine großen Schwankungen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FredM“ ()