Hallo Leute, ich suche für einen Sensor eine passende Kennlinie, die ich im µC implementieren kann. Ich habe dazu 9 Stützstellen, die ich grafisch passend mit einem Polynom 5. Ordnung gut verbinden konnte. Ich habe die 9 Stellen in Excel in einem x-y Diagramm darstellen lassen und eine "Trendlinie" mit einem Polynom 5. Ordnung drüber gelegt. Dieses Polynom anzeigen lassen im Diagramm und als Kontrolle in Excel als Formel eingegeben. Über den Wertebereich von X kommen dann aber vollkommen andere Werte heraus, als erwartet. Folgende Stützstellen vom Sensor: Frequenz Messwert 1832 0 1950 8 1983 10 2065 15 2736 75 3388 160 4484 310 7832 640 10630 800 ergeben im Exceldiagramm das Polynom: y = -5E-17x5 + 2E-12x4 - 3E-08x3 + 0,0002x2 - 0,3474x + 220,16 und dieses in Excel eingegeben ergibt für die eingesetzten Frequenzen: Frequenz Messwert 1832 92 1950 108 1983 113 2065 126 2736 257 3388 413 4484 697 7832 1407 10630 1842 Ich komme einfach nicht auf den Fehler... Ich habe bereits mehrmals alles kontrolliert, aber leider sehe ich wahrscheinlich mittlerweile einfach darüber weg... Eventuell mag sich jemand diese Wertereihe ansehen und mir auf die Sprünge helfen. Vielen Dank bereits im voraus! Grüße, Olli
:
Bearbeitet durch User
Oliver S. schrieb: > ergeben im Exceldiagramm das Polynom: > y = -5E-17x5 Hier bist du jenseits der Genauigkeit von double. leo
Hallo, danke, mit der Antwort hast du mir bereits weiter geholfen. Scheinbar war auch Excel am Ende seiner Genauigkeit. Ich habe nun einfach die Frequenz nicht mehr in Hz sonder in kHz eingegeben und es kommen brauchbare Ergebnisse heraus! Danke und Grüße
Fast alle Koeffizienten sind auf nur 1 Stelle gerundet. Gibt es in Excel die Möglichkeit, die Koeffizienten genauer anzuzeigen? Wenn nicht, nimm LibreOffice
1 | -4.74107e-17*x**5+1.79892e-12*x**4-2.57563e-8*x**3+0.000165035*x**2-0.3446244*x+218.04885 |
oder beliebiges anderes Tool, das Approximationen berechnen kann.
:
Bearbeitet durch Moderator
Es scheint auch mit Excel zu gehen, nur sind Microsoft-typisch die Voreinstellungen völlig an der Praxis vorbei: https://support.microsoft.com/de-de/help/211967/chart-trendline-formula-is-inaccurate-in-excel
Gibt es einen Grund für die Annahme, dass ein Polynom 5ter Ordnung gut ist? Was ist das für ein Sensor? Wie gut deine Annäherung wirklich ist, siehst Du, wenn du einen der letzten 4 Punkte weglässt, dein Polynom suchst, und zeichnest, und dann den Punkt dazumalst. Wenn Du die "richtige" Funktion des Sensors kennst, nimm lieber die zur Optimierungssuche.
Oliver S. schrieb: > Ich habe die 9 Stellen in Excel in einem x-y Diagramm darstellen lassen > und eine "Trendlinie" mit einem Polynom 5. Ordnung drüber gelegt. Für 9 Stützstellen brauchst du aber ein Polynom 8. Grades. Solche "hochgradigen" Polynome gehen zwar durch die Stützstellen, schwingen dazwischen aber wild rum und sind daher für Interpolation ziemlich nutzlos. Du kannst durch jeweils 2-3 Stellen ein Polynom 2.-3. Grades legen und somit stückweise Interpolieren. Das geht mit B-Splines.
> Für 9 Stützstellen brauchst du aber ein Polynom 8. Grades. Solche > "hochgradigen" Polynome gehen zwar durch die Stützstellen, schwingen > dazwischen aber wild rum und sind daher für Interpolation ziemlich Das kann passieren. Deshalb schaut man sich die ja auch vorher genau an. .-) Man kann aber auch einfach weniger nehmen und es sich dann anschauen. Ich kann mich jetzt nicht erinnern jemals mehr wie 4.Ordnung gebraucht zu haben. Und Leute, Excel? Was soll diese kranke Peinlichkeit? Nehmt Matlab wenn euch das Geld zu den Ohren rauskommt oder Octave wenn nicht. Oder irgendein anderes Matheprogramm. Ich habe frueher immer Robot (Astronomieprogramm) genutzt. Ob doch nicht diesen kranken Visicalc abklatsch von Microsoft. Olaf
Olaf schrieb: > Man kann aber auch einfach weniger nehmen und es sich dann anschauen. > Ich kann mich jetzt nicht erinnern jemals mehr wie 4.Ordnung gebraucht > zu haben. Das geht halt nur wenn die Kurve "gerade" genug ist :) wenn es mehrere Maxima und/oder Wendepunkte hat reicht das nicht.
Olaf schrieb: > Und Leute, Excel? Was soll diese kranke Peinlichkeit? Nehmt Matlab wenn > euch das Geld zu den Ohren rauskommt oder Octave wenn nicht. Oder > irgendein anderes Matheprogramm. Ich habe frueher immer Robot > (Astronomieprogramm) genutzt. Ob doch nicht diesen kranken Visicalc > abklatsch von Microsoft. > > Olaf So ein Quatsch. Die gestellte Aufgabe lässt sich mit Excel problemlos lösen. Insbesondere für den, der Excel aus anderen Gründen beruflich einsetzt, ist es das Mittel der Wahl. Mit Matlab oder Octave muss man auch erst einmal umgehen können, um Aufgaben damit zu lösen. Wer allerdings weder mit Excel noch mit Matlab umgehen kann und auch nicht weiß, wo man Hilfe und Anleitungen findet, der hat schlechte Karten. Dann hilft nur zu Fuß rechnen, geht ja auch.
Nun, so trivial ist so ein Fit nicht. Erst mal sollte man sich entscheiden, will man eine interpolation, oder eine approximation. Bei der Interpolation geht die funktion durch die punkte, bei einer Approximation in der Naehe durch. Wenn die Daten verrauscht, dafuer ueberbestimmt ist ist die Approximation die Wahl. Wenn man zuwenige Punkte hat, eher die Interpolation. Bei einem Sensor, der nicht beliebig Nichtlinear sein kann, von der Theorie her, eher eine Approximation. Schwieriger wird's auch wenn die Punkte extrem verschieden auseinander sind. Dann wird bei einer normalen Approximation die enge Stelle bevorzugt.
> Erst mal sollte man sich entscheiden, will man eine interpolation, > oder eine approximation. DAs stimmt natuerlich! Man sollte aber noch was bedenken. Wieso hat der OP nur 9Punkte. Wieso nicht 90 oder 900? Wer weiss was zwischen Punkt 6 und Punkt 7 wirklich passiert? Die Antwort darauf ist ja wohl das er annimmt das da nicht mehr soviel los ist und das er sein System mit 9Punkten ausreichend gut beschrieben hat. Und wenn man schon so eine Auswahl trifft, dann kann man dasselbe auch machen indem man eine Approximation auswaehlt die auch nur genau genug, aber nicht perfekt ist. Es macht dann IMHO keinen Sinn mehr 100% genau durch die Stuetzstellen zu gehen. Deshalb spiele ich in so einem Fall immer mit den Werten rum bis ich eine brauchbar einfache Funktion habe die brauchbar genau genug an den Originalwerten vorbei geht. Olaf
A. S. schrieb: > Gibt es einen Grund für die Annahme, dass ein Polynom 5ter Ordnung gut > ist? Das habe ich mich auch gefragt. So, wie Yalu X. die Messgrößen in ein Diagramm gezeichnet hat, sollte ein Polynom 3. Grades ausreichend passen. Man bedenke, es sind Messwerte mit Messfehlern und der prinzipielle Verlauf erscheint aus der Kurve 3. Grades zu sein! Man müsste also ein Polynom 3. Grades so in die Messwerte einpassen, dass sich zu denen ein minimaler Fehler ergibt. Jeder höhere Grad trifft zwar die vorhandenen Messwerte besser, ergibt aber dazwischen ein schlechteres Ergebnis. Stichwort: "Polynomial Linear Regression".
Bonzo N. schrieb: > Erst mal sollte man sich > entscheiden, will man eine interpolation, oder eine approximation. Ganz recht. Wobei man statt Approximation eher Regression bzw. bei Kenntnis der Funktion Anpassung (engl. Fitting) sagt. A. S. schrieb: > Gibt es einen Grund für die Annahme, dass ein Polynom 5ter Ordnung gut > ist? Wenn ich mir das Polynom des TE ansehe, dann fällt mir sofort auf, daß die Koeffizienten für die Glieder der Ordnung 3, 4 und 5 sehr klein sind. Die naheliegende Schlußfolgerung ist, daß der Zusammenhang tatsächlich nur quadratisch ist. Die Glieder höherer Ordnung verbessern die Anpassung nur scheinbar - tatsächlich gleichen sie die unvermeidlichen Meßfehler nur ein kleines bißchen besser aus als eine quadratische Regression das täte. Mein Rat wäre, Excel eine quadratische Funktion an die 9 Punkte fitten zu lassen. Die wird vielleicht ein kleines bißchen schlechter passen, aber trotzdem näher an der Realität sein. Wenn man kann, sollte man danach noch weitere Meßwerte aufnehmen, bevorzugt an den Enden des Wertebereichs. Man kann auch von Anfang an so vorgehen, daß man die Werte von den Enden wegläßt und das Fitting nur für die sagen wir mal 7 mittleren Werte machen läßt. Und dann schaut man, wie gut die Funktion die Endwerte trifft. Wenn das Polynom überbestimmt ist, stehen die Chancen gut, daß es die Endwerte schlecht trifft. Eben weil höhergradige Polynome dazu neigen, außerhalb des Fittingbereichs "wegzulaufen".
Axel S. schrieb: > Die naheliegende Schlußfolgerung ist, daß der Zusammenhang > tatsächlich nur quadratisch ist. Hast du eine Vorstellung davon, wie eine quadratische Kurve aussieht? Die naheliegende Schlussfolgerung, wie HildeK richtig bemerkte, ist, dass ein Polynom dritten Grades angemessen ist. Mannomann, was lernt man heute eigentlich in der Mittelstufe?
Dieter R. schrieb: > Mannomann, was lernt man heute eigentlich in der Mittelstufe? Dreisatz und Lyrik-Interpretation.
Dr. Sommer schrieb: > Dieter R. schrieb: >> Mannomann, was lernt man heute eigentlich in der Mittelstufe? > > Dreisatz und Lyrik-Interpretation. Und sie lernen, wie man Genderneutrale und Texte verfasst, denn das ist viel wichtiger.
Hier ist eine Gegenüberstellung der Polynome 3., 4. und 5. Grades. Die Polynome 4. und 5. Grades passen beide ziemlich gut, unterscheiden sich aber dennoch stark voneinander. Um sich für eines von beiden zu entscheiden, bräuchte man noch einen weiteren Messpunkt zwischen dem vorletzten und dem letzten Punkt.
Man sollte den Sensor (gibts schon infos dazu?) kennen, notfalls den Hersteller fragen. Wenn es z.b. ein Temp-Sensor ist, der zwar sinnvoll dritten oder vierten Grades sein kann, aber da nur positive (oder nur negative) Faktoren hat, dann kann man sofort sehen, dass da andere (unbehandelte) Fehler mit reinspielen, z.B. vielleicht eine Sättigung im unteren Bereich. Zu Anfang meiner Laufbahn hatte ich die Ehre, Geiger-Müller-Zählraten zu linearisieren. Mein Vorgänger hatte (weil einfach) auch Bereichsweise Polynome dritten Grades gewählt. Die Übergänge waren entsprechend grausig. Als ich quasi den physikalischen Zusammenhang zugrunde legte (jeder Impuls zieht eine Totzeit nach sich), reichte ein Kalibrierpunkt für alle Bereiche.
Nachdem da so einige Vorschläge aus dem Bauch heraus kamen, hier mal eine echte Analyse mit Polynomen mit Grad 2,3,4 und 5. 2. Grad (rot) : deutliche Abweichung im unteren und oberen Breich 3. Grad (grün) : besser als 2. Grad aber sichtbare Abweichung im mittleren Bereich 4. Grad (blau) : starke Beule im oberen Bereich 5. Grad (schwarz) : Sehr guter Fit Oliver hat mit seinem Polynom 5. Grades eine sehr gute Wahl getroffen. Ergebnis von Octave >> p5=polyfit(x,y,5) >> p5 = Columns 1 through 4: -4.741067486400263e-17 1.798920916847662e-12 -2.575632625078849e-08 1.650350628640973e-04 Columns 5 and 6: -3.446243710231715e-01 2.180488537623672e+02 Berechnung nit Gnu-Octave x=[1832, 1950, 1983, 2065, 2736, 3388, 4484, 7832, 10630]; y=[0, 8, 10, 15, 75, 160, 310, 640, 800]; % Polyfit p2=polyfit(x,y,2) p3=polyfit(x,y,3) p4=polyfit(x,y,4) p5=polyfit(x,y,5) % Werte an den Stützstellen z2=polyval(p2,x) z3=polyval(p3,x) z4=polyval(p4,x) z5=polyval(p5,x) % Kurven plotten x1=1832:1:10630; zx2=polyval(p2,x1); zx3=polyval(p3,x1); zx4=polyval(p4,x1); zx5=polyval(p5,x1); plot(x,y,'o'); grid; hold on; plot(x1,zx2,'r') plot(x1,zx3,'y') plot(x1,zx3,'g') plot(x1,zx4,'b') plot(x1,zx5,'k')
:
Bearbeitet durch User
> Oliver hat mit seinem Polynom 5. Grades eine sehr gute Wahl getroffen.
Fuer die derzeit vorhanden Daten schon. Zum Vergleich mit der Realitaet
wuerde ich jetzt aber gerne noch einen Punkt bei 6000Hz sehen und kucken
wie viel der dann daneben liegt. Und wenn man dann feststellt das es
doch noch gar nicht so gut ist, aber man mit der Abweichung durchaus
leben kann, dann stellt man vielleicht auch fest das 3. oder 4.Grad auch
ausreichen.
Haengt halt immer von den Nebenbedinungen ab. Wenn man Energie und
Rechenleistung ohne Ende hat dann denkt man nicht weiter nach und pappt
das Polynom 5.Ordnung in den Code. Wenn das anders ist und man die
Berechnung vielleicht auch haeufiger durchfuehren muss dann nimmt man
etwas weniger.
Olaf
Oliver S. schrieb: > ich suche für einen Sensor eine passende Kennlinie, die ich im µC > implementieren kann. Wenn das ein echter Sensor ist und nicht eine Hausaufgabe: Was sagt denn das Datenblatt des Sensors? Oder ist das eine Eigenproduktion? Dann solltest du deutlich mehr Stützstellen machen und eher partiell zwischen den Stützstellen interpolieren. So hast du halt große Lücken, siehe die Diagramme von Yalu und Helmut.
Dieter R. schrieb: > Die gestellte Aufgabe lässt sich mit Excel problemlos lösen. So problemlos, dass das erste Ergebnis des TOs falsch war. Interessante Definition von "problemlos". > Insbesondere für den, der Excel aus anderen Gründen beruflich einsetzt, > ist es das Mittel der Wahl. https://www.forbes.com/sites/salesforce/2014/09/13/sorry-spreadsheet-errors/
Dieter R. schrieb: > Axel S. schrieb: > >> Die naheliegende Schlußfolgerung ist, daß der Zusammenhang >> tatsächlich nur quadratisch ist. > > Hast du eine Vorstellung davon, wie eine quadratische Kurve aussieht? > Die naheliegende Schlussfolgerung, wie HildeK richtig bemerkte, ist, > dass ein Polynom dritten Grades angemessen ist. Albern. So lange wir nicht wissen, wie groß die Fehler der einzelnen Meßpunkte sind, kann die richtige Funktion genausogut eine Gerade sein. Ich hatte mir die Verteilung der Punkte in der x/y Ebene selber gar nicht angeschaut. Nachdem jetzt einige Poster diese Darstellung geliefert haben, muß ich anmerken, daß die Meßpunkte absolut ungünstig liegen. Insbesondere aus der dicht gedrängten Punktwolke am unteren Ende läßt sich überhaupt gar nichts vernünftig ableiten. Wenn man nur einen dieser Punkte geringfügig verschiebt, werden sich die Koeffizienten massiv verändern. Wie bereits gesagt wurde, ist es überhaupt keine Kunst, eine Kurve zu finden, die exakt durch alle Datenpunkte geht. Für N Punkte halt einfach ein Polynom vom Grad N-1. Nur ist die Tatsache, daß die Kurve die existierenden Punkte trifft, überhaupt kein Kriterium dafür, daß sie den Zusammenhang korrekt wiedergibt. Jede Messung ist fehlerbehaftet. Es gibt keinen Grund für die Annahme, auch nur ein einziger dieser Punkte würde exakt auf der korrekten Kurve liegen.
Udo S. schrieb: > Oliver S. schrieb: >> ich suche für einen Sensor eine passende Kennlinie, die ich im µC >> implementieren kann. > > Wenn das ein echter Sensor ist und nicht eine Hausaufgabe: > Was sagt denn das Datenblatt des Sensors? > Oder ist das eine Eigenproduktion? Dann solltest du deutlich mehr > Stützstellen machen und eher partiell zwischen den Stützstellen > interpolieren. Das frage ich mich schon die ganze Zeit. Welcher Sensor hat denn eine derart hohe Genauigkeit, das sich eine derartige Polynomrechnung überhaupt lohnt? im Zeitalter des billigen Speichers ist eine Tabelle samt Interpolation der Zwischen- werte wesentlich sinnvoller.
Ich verwende für eine Sensoranwendung eine stückweise kubische Interpolation, in Matlab https://www.mathworks.com/help/matlab/ref/pchip.html (Erklärung unter "more about...". Ich habe ca. 100 Messwerte und lege per Augenmass 6-10 Stützstellen fest, zwischen denen interpoliert wird. Mir scheint das numerisch robuster zu sein, als beliebig hochgradige Polynome zu verwenden. Allerdings würde ich versuchen, mehr Daten als nur die neun Stützstellen zu bekommen.
Ein lineares Modell ergibt ein R² > 0.98. Das ist für ein Modell schon fast zu gut. Quadratisch geht es dann Richtung R² = 1 (fast).
Marten Morten schrieb: > Dieter R. schrieb: >> Die gestellte Aufgabe lässt sich mit Excel problemlos lösen. > > So problemlos, dass das erste Ergebnis des TOs falsch war. Interessante > Definition von "problemlos". > Das liegt aber nicht an Excel, sondern daran, dass der TO sich nicht genug Stellen hat anzeigen lassen. Wie es richtig geht, wurde ihm inzwischen auch mitgeteilt. Die Frage wäre nicht gewesen, "kann Excel das", sondern "wie mache ich es richtig mit Excel". Das gilt für jede verwendete Software - man muss die verwendeten Tools schon ein bisschen beherrschen, egal ob Excel, Matlab, Open Office, Kicad oder was immer man benutzt.
Oliver S. schrieb: > Ich habe dazu 9 Stützstellen, die ich grafisch passend mit einem Polynom > 5. Ordnung gut verbinden konnte. Ein Polynom 5. Ordnung ist schon arg hoch. Mit einem Polynom 3. Ordnung liegt das Bestimmtheitsmaß bereits bei 0,999. Um ein Polynom 5. Ordnung zu rechtfertigen, sind deine Messwerte gar nicht genau genug. Woher weisst du, dass der Wert für 6kHz bei 490 (Polynom 5. Ordnung) und nicht bei 465 (Polynom 3. Ordnung) liegt? Besser wäre, ein Modell zu verwenden, dass deinem Prozess entspricht. Polynome höherer Ordnung können zwischen den Stützstellen viel Unsinn treiben. Legen mal ein Polynom 6. Ordnung in deine Daten. Dann siehst du, was ich meine.
Harald W. schrieb: > Das frage ich mich schon die ganze Zeit. Welcher Sensor hat > denn eine derart hohe Genauigkeit, das sich eine derartige > Polynomrechnung überhaupt lohnt? Schon richtig, aber sollte die Frage nicht eher lauten: welche Art von Kurve hat den der Sensor auf Grund seiner physikalischen Eigenschaften? Ein NTC z.B. hat mit sehr guter Näherung im üblicherweise genutzten Bereich 2.Ordnung. Da lohnt sich eine quadratisches Polynom schon. Es gibt Größen, die einem dritten Grad folgen (z.B Temperaturgang von Rs oder von Quarzen und ev. der unbekannte vom TO), aber für höhere Grade fällt mir nichts ein.
Dieter R. schrieb: > Das liegt aber nicht an Excel, sondern daran, dass der TO sich nicht > genug Stellen hat anzeigen lassen. Gut jetzt wissen wir daß Excel ganz toll ist wenn es ein Könner bedient. Jetzt hast du genug für die Microsoft Fankurve getan, vieleicht können wir den Thread wieder zum eigentlichen Problem zurückführen. Und das ist nicht Excel sondern die oben gestellten Fragen: Welcher Sensor? Was sagt das Datenblatt? Wie genau sind die Stützstellen? Welche Art von Kurve hat den der Sensor auf Grund seiner physikalischen Eigenschaften? Und die Aussagen: Mehr Stützstellen und partielles interpolieren wäre besser. Die Stützstellen gleichmäßiger verteilen wäre besser. edit: Die Frage von HildeK hinzugefügt
:
Bearbeitet durch User
Dieter R. schrieb: > inzwischen auch mitgeteilt. Die Frage wäre nicht gewesen, "kann Excel > das", sondern "wie mache ich es richtig mit Excel". Oder noch besser: Wie mache ich das ohne Excel? OK, danach hat er wirklich nicht gefragt. Für Interessierte empfehle ich den guten alten Gauss anzuschauen, https://en.wikipedia.org/wiki/Linear_least_squares die erste Gleichung "OLS" ist der Schlüssel. Wenn man mal begriffen hat, dass das Prinzip gar nicht auf lineare Probleme limitiert ist, hat man ein tolles Werkzeug gewonnen. Ich habe das schon ein paarmal brauchen können.
Udo S. schrieb: > Gut jetzt wissen wir daß Excel ganz toll ist wenn es ein Könner bedient. Nun, Excel hat den Vorteil, das es das Polynom praktisch auf Knopfdruck liefert, ohne das man gleich studierter Mathematiker sein muss. Und es ist auf vielen Computern bereits fertig installiert. Natürlich kann auch die beste Software keine vernünftigen Ergebnisse liefern, wenn man z.B. zu wenig Stützstellen hat.
Harald W. schrieb: > das es das Polynom praktisch > auf Knopfdruck liefert Nur: Warum? Wenn er das in einen µC drücken will, ist eine LOT sowieso besser, als zu versuchen das mit float über ein Polynom zu berechnen. e-17 und x^5 auf nem µC nicht wirklich. Noch einen Stützwert bei 6000 ermitteln und dann linear interpolieren.
Harald w. schrieb > Wenn er das in einen µC drücken will, ist eine LOT sowieso besser, als > zu versuchen das mit float über ein Polynom zu berechnen. > > e-17 und x^5 auf nem µC nicht wirklich. > > Noch einen Stützwert bei 6000 ermitteln und dann linear interpolieren. Oliver hat ja schon geschrieben, dass die Zahlen besser aussehen, wenn die x-Werte durch 1000 teilt. Damit werden aus 10^-17 angenehme 10^-2. >> p1000=polyfit(x1000,y,5) -4.741067486406059e-02*x^5 + 1.798920916849266e+00*x^4 -2.575632625080475e+01*x^3 + 1.650350628641724e+02'x^2 -3.446243710233300e+02*x 2.180488537624904e+02
Harald W. schrieb: > Udo S. schrieb: > >> Gut jetzt wissen wir daß Excel ganz toll ist wenn es ein Könner bedient. > > Nun, Excel hat den Vorteil, das es das Polynom praktisch > auf Knopfdruck liefert, ohne das man gleich studierter > Mathematiker sein muss. Das ist nicht notwendig ein Vorteil. > Natürlich kann auch die beste > Software keine vernünftigen Ergebnisse liefern, wenn man > z.B. zu wenig Stützstellen hat. Oder wenn man die (sehr wahrscheinlich) falsche Annahme macht, ein Polynom wäre überhaupt geeignet, den Zusammenhang der Meßgrößen zu approximieren. Das Problem mit "Knopfdruck" Lösungsmachinen ist, daß sie dazu verleiten, Probleme von Leuten bearbeiten zu lassen, die dafür nicht qualifiziert sind und auch den größten Mist als Lösung akzeptieren, wenn es die magische Maschine auswirft. Ähnlich wie bei der Einführung von Taschenrechnern im Matheunterricht. Die Leute vertippen sich oder beachten irgendwo nicht die Reihenfolge von Operationen und schreiben nachher ein falsches Ergebnis hin, ohne auch nur eine Sekunde darüber nachzudenken, ob es überhaupt plausibel ist. Habe ich erlebt, als ich den Nachbarskindern Mathe-Nachhilfe gegeben habe. Da sollte ein Liter Benzin 500€ kosten. Hatte der Taschenrechner ausgerechnet. Das mußte stimmen! Hier doch auch: wenn man ein Polynom fitten läßt und die Koeffizienten unterscheiden sich um einen Faktor von 10^19 (220 vs. 5E-17), dann ist es doch offensichtlich, daß hier etwas nicht paßt. Und wenn von 5 Koeffizienten zwei bzw. drei von einem Ende her so vollkommen andere Größenordnungen haben als der Rest, dann ist die Schlußfolgerung einfach.
Seit langer Zeit nehme ich .. CurveExpert 1.4 https://curveexpert.software.informer.com/ oder .. CurveExpert 1.3 https://curveexpert.software.informer.com/1.3/
Helmut S. schrieb: > Oliver hat ja schon geschrieben, dass die Zahlen besser aussehen, wenn > die x-Werte durch 1000 teilt. Da hat man so schöne Integers, und dann teilt man die durch 1000, damit man auf dem µC mit floats rechnen muss. Und dann wird wieder rumgeheult, dass der µC zu langsam sei und zu wenig Speicher habe. Der Frage des "besten Fits" geht doch die Frage voraus, wie genau die Werte überhaupt sind. Bringt ja nichts, wenn man den vorletzten Punkt schön trifft, wenn der Messwert daneben liegt. Und die vielen Punkte links unten täuschen auch nur vor, dass da der Fit möglichst genau sei. Dabei wichten sie den Fit nur unnötig in diese Ecke. 1. Regel für ein gutes Fitting: Meßpunkte möglichst gleichmäßig verteilen. 2. Regel: Fehlertoleranzen abschätzen.
> Und dann wird wieder rumgeheult, dass der µC zu langsam sei und zu wenig > Speicher habe. Dein Einwand kann durchaus berechtigt sein und es gibt Anwendungen da sehe ich das ganz genauso. Ich hab sogar schonmal die Integerkoeffizienten so optimiert das man mit einem akzeptablen Verlust an Genauigkeit mit weitestgehend mit Shift Operationen ausgekommen ist. Aber andererseits sind heute Controller sehr viel schneller geworden. Ich hab letzten mal ein einer Anwendung einfach einen Digitalfilter der mit double rechnet und den ich vor 20Jahren auf dem PC programmiert habe einfach auf einen STM32 kopiert und es war nicht notwendig da irgendwas zu optimieren. Das kann man sich natuerlich nicht immer erlauben und ich kann nur jedem raten auch zu lernen wie es anders geht, aber es geht heute oefter als man denkt. Olaf
Modified Geometric Fit: a*x^(b/x) Coefficient Data: a = 4,26510805719E+003 b = -9,65600259823E+002
Axel S. schrieb: > Hier doch auch: wenn man ein Polynom fitten läßt und die Koeffizienten > unterscheiden sich um einen Faktor von 10^19 (220 vs. 5E-17), dann ist > es doch offensichtlich, daß hier etwas nicht paßt. Was sollte daran nicht passen? Es ist doch ganz natürlich, dass die Koeffizienten für hohe Potenzen von x bei so großen Werten von x (1832 bis 10639) winzig klein sein müssen. Die riesige Potenz 10639**5≈1.4e20 muss ja irgendwie wieder auf den Boden der Tatsachen (d.h. grob in die Größenordnung der y-Werte) zurückgeholt werden, und das geschieht eben mit einem entsprechend kleinen Koeffizienten. Die Ergebnisse zeigen ja auch, dass die vorgegebenen Messpunkte mit guter Genauigkeit erreicht werden. Solange die Koeffizienten in dem verwendeten Zahlenformat (bspw. float oder double) darstellbar sind, ist das überhaupt kein Problem. Anders sieht es aus, wenn das Polynom Festkommaarithmetik berechnet werden soll, wo nur wenige Größenordnungen abgedeckt werden. Dann sollte man, wie von Helmut vorgeschlagen, die x-Werte so skalieren, dass sie in der Größenordnung 1 liegen, so dass die Potenzen nicht extrem groß, und damit die Koeffizienten nicht extrem klein werden. Man kann zusätzlich zur Skalierung folgende Beziehung anwenden, um die Koeffizienten noch humaner zu machen:
Der Rechenaufwand ist dabei derselbe.
Mehr Messpunkte sind hilfreich, um eine bessere Interpolation zu finden.
Harald W. schrieb: > Nun, Excel hat den Vorteil, das es das Polynom praktisch > auf Knopfdruck liefert, ohne das man gleich studierter > Mathematiker sein muss. Lieschen Müller vom Blumenladen und Oma Erna von der Käsetheke fitten zuhause keine Polynome. Alle anderen die das für irgendeinen Zweck machen müssen werden sich bereits zuvor die Mühe gemacht haben zu verstehen was das überhaupt ist, was sie wollen, was sie nicht wollen und was man alles beachten muß.
Karl K. schrieb: > Helmut S. schrieb: >> Oliver hat ja schon geschrieben, dass die Zahlen besser >> aussehen, wenn die x-Werte durch 1000 teilt. > > Da hat man so schöne Integers, und dann teilt man die > durch 1000, damit man auf dem µC mit floats rechnen muss. > Und dann wird wieder rumgeheult, dass der µC zu langsam > sei und zu wenig Speicher habe. <Herumätzerei> Wer nicht nur rechnen kann, sondern eine gewisse mathematische Bildung hat, wertet ein Polynom mittels HORNER-Schema aus. Das macht die Sache sowohl schneller aus auch genauer. Dass das noch niemand vorgeschlagen hat, sagt etwas über das mathematische Niveau hier. </Herumätzerei>
Yalu X. schrieb: > Solange die Koeffizienten in dem verwendeten Zahlenformat > (bspw. float oder double) darstellbar sind, ist das > überhaupt kein Problem. Das stimmt so nicht. Grundsätzlich kann auch der Fall eintreten, dass die einzelnen Summanden sehr groß werden, aber unterschiedliche Vorzeichen haben, d.h. dass kleine Differenzen großer Größen entstehen. Das wird dann aufgrund der Stellenauslöschung übel. Dieser Fall liegt im gegebenen Beispiel allerdings nicht vor.
Karl K. schrieb: > Wenn er das in einen µC drücken will, ist eine LOT sowieso besser, als > zu versuchen das mit float über ein Polynom zu berechnen. Auf dem Mikrocontroller rechnet man sowas sinnvollerweise mit Festkomma und Horner, das geht schneller, kostet weniger und ist genauer als LUT mit Interpolation.
:
Bearbeitet durch User
Egon D. schrieb: > Wer nicht nur rechnen kann, sondern eine gewisse mathematische > Bildung hat, Und wer dazu noch etwas praktische Intelligenz hat, nimmt eine Tabelle mit deutlich mehr Stützstellen und interpoliert entweder linear oder max. quadratisch :-) Egon D. schrieb: > sagt etwas über das mathematische Niveau hier. http://www.klein-singen.de/statistik/t/Am_ue_santes/loewenfang.html
Udo S. schrieb: > Und wer dazu noch etwas praktische Intelligenz hat, nimmt eine Tabelle > mit deutlich mehr Stützstellen und interpoliert entweder linear oder > max. quadratisch :-) Nur wenn er unnütze Rechenzeit, Stromverbrauch und Erwärmung zu verschenken hat. Und Arbeitszeit um diesen umständlichen Kram zu implementieren.
:
Bearbeitet durch User
Udo S. schrieb: > Egon D. schrieb: >> Wer nicht nur rechnen kann, sondern eine gewisse >> mathematische Bildung hat, > > Und wer dazu noch etwas praktische Intelligenz hat, > nimmt eine Tabelle mit deutlich mehr Stützstellen > und interpoliert entweder linear oder max. > quadratisch :-) Kann man machen, ja... finde ich aber etwas unschön. Bei manchen Anwendungen will man eine stetige erste Ableitung haben, was der Polygonzug nicht leistet. Hängt aber davon ab, ob die Kiste schnell multiplizieren kann oder nicht. Auf dem Z80 würde ich auch nicht unbedingt ein kubisches Polynom verwenden... :)
Egon D. schrieb: > Yalu X. schrieb: > >> Solange die Koeffizienten in dem verwendeten Zahlenformat >> (bspw. float oder double) darstellbar sind, ist das >> überhaupt kein Problem. > > Das stimmt so nicht. > > Grundsätzlich kann auch der Fall eintreten, dass die > einzelnen Summanden sehr groß werden, aber unterschiedliche > Vorzeichen haben, d.h. dass kleine Differenzen großer Größen > entstehen. Das wird dann aufgrund der Stellenauslöschung > übel. Dieses Problem hat man auch dann, wenn man die x-Werte herunterskaliert und die Koeffizienten entsprechend anpasst. Die zu addierenden Summanden sind nämlich exakt die gleichen. Gegen Auslöschungsfehler hilft übrigens auch das Horner-Schema nicht.
Bernd K. schrieb: > Nur wenn er unnütze Rechenzeit, Stromverbrauch und Erwärmung zu > verschenken hat. Und Arbeitszeit um diesen umständlichen Kram zu > implementieren. Sorry Bernd, aber glaubst du wirklich mit deinem Polynom 5 oder auch 9 Grades und den oben gezeigten Stützstellen genauer zu sein, als eine Tabelle mit z.B. 64 Werten und einer einfachen Interpolation? Oder schneller, egal auf welchen Rechnersytem? Oder einfacher bzgl Code? Und selbst wenn "meine" Lösung 300 Bytes mehr brauchen sollte (was sie in 70% der Fälle nicht tut, weil man sich dann ggf. die Floatingpointbibliothek und evt noch mathematische Bibliotheken sparen kann) dann ist das völlig egal, weil man auf einem 32 Bitter genügend RAM hat, und euf einem 8 Bitter wieder zu wenig Rechenzeit um da mit Floats rumszuspielen.
Egon D. schrieb: > Wer nicht nur rechnen kann, sondern eine gewisse mathematische > Bildung hat, wertet ein Polynom mittels HORNER-Schema aus. Das > macht die Sache sowohl schneller aus auch genauer. > > Dass das noch niemand vorgeschlagen hat, sagt etwas über das > mathematische Niveau hier. Frei von Herumätzerei, da ist was dran - aber es ist erst der zweite Schritt. Wer eine gewisse physikalische Bildung hat und ein gewisses praktisch-technisches Verständnis, klärt mit Hilfe des Datenblatts und im Wissen um die Messgenauigkeit, welche Art der Interpolation der Problemstellung, dem verwendeten Sensor und der Messgenauigkeit angemessen ist. Darauf wurde hier schon mehrfach herumgehackt, die Antwort ist der TO aber bisher schuldig geblieben. Somit können wir nur raten, dass ein Polynom dritten Grades wohl "best guess" sein könnte. Wie man das denn errechnet, ob mit oder ohne Horner, ist je nach verwendetem Prozessor mehr oder weniger egal.
Yalu X. schrieb: > Egon D. schrieb: >> Yalu X. schrieb: >> >>> Solange die Koeffizienten in dem verwendeten Zahlenformat >>> (bspw. float oder double) darstellbar sind, ist das >>> überhaupt kein Problem. >> >> Das stimmt so nicht. >> >> Grundsätzlich kann auch der Fall eintreten, dass die >> einzelnen Summanden sehr groß werden, aber unterschiedliche >> Vorzeichen haben, d.h. dass kleine Differenzen großer Größen >> entstehen. Das wird dann aufgrund der Stellenauslöschung >> übel. > > Dieses Problem hat man auch dann, wenn [...] Klar, kann sein. Ich habe nur Deiner Aussage widersprechen wollen, dass es überhaupt kein Problem gibt, solange die Koeffizienten im verwendeten Zahlenformat darstellbar sind. Das scheint mir nämlich angesichts der denkbaren Stellenauslöschung eine steile These.
Udo S. schrieb: > Sorry Bernd, aber glaubst du wirklich mit deinem Polynom 5 oder auch 9 > Grades und den oben gezeigten Stützstellen genauer zu sein, als eine > Tabelle mit z.B. 64 Werten und einer einfachen Interpolation? 9. Grades ist absurd. 5. Grades ist wahrscheinlich schon übertrieben, aber selbst wenn: 5 Multiplikationen, 5 Additionen, 5 Rechtsschifts. Du: 6 Iterationen binäre Suche, dann Subtraktion, Division, Multiplikation, Addition. Wenn Du keine Hardware-Division hast brauchst Du 10 mal länger.
:
Bearbeitet durch User
Udo S. schrieb: > Bernd K. schrieb: >> Nur wenn er unnütze Rechenzeit, Stromverbrauch und >> Erwärmung zu verschenken hat. Und Arbeitszeit um >> diesen umständlichen Kram zu implementieren. > > Sorry Bernd, aber glaubst du wirklich mit deinem > Polynom 5 oder auch 9 Grades und den oben gezeigten > Stützstellen genauer zu sein, als eine Tabelle mit > z.B. 64 Werten und einer einfachen Interpolation? > Oder schneller, egal auf welchen Rechnersytem? > Oder einfacher bzgl Code? So ganz verstehe ich Deine angefressene Reaktion nicht. Polynomauswertung mittels Horner-Schema kostet für ein Polynom 5. Grades fünf Multiplikationen, fünf Additionen, Null Vergleiche und Null Sprünge (--> Fallunterscheidung). Wenn die Kiste schnell multiplizieren kann, geht es kaum schneller, einfacher und kompakter. Man sollte diese Lösung also nicht von vornherein als idiotisch abtun.
Egon D. schrieb: > Polynomauswertung mittels Horner-Schema kostet für ein > Polynom 5. Grades Dabei gehst Du aber davon aus, dass das ein Polynom ist oder durch eines 5. Grades sinnvoll angenähert werden kann. Da es keinerlei Aussage dazu gibt, weder wo die Werte herkommen (außer irgendwas mit Frequenz) noch wie genau die ermittelt sind, kannst Du da noch so gut Polynome an irgendwelche fehlerbehafteten Punkte anfitten, das bringt gar nix. Z.B. ein NTC in Spannungsteiler-Schaltung ist irgendwas mit 1/x, logarithmisch und Offset. Da kannst Du mit Polynomen rumfitten bis Du schwarz wirst und wirst nicht glücklich damit, eine LOT mit Fittings alle 5 oder 10K erschlägt das aber locker.
Dr. Sommer schrieb: > Für 9 Stützstellen brauchst du aber ein Polynom 8. Grades. Das ist meist Quatsch. Lass die 9 Punkte bspw. Messpunkte von einer linearen Abhängigkeit sein. Dann brauchst du genau zwei freie Parameter. Der Rest ist least Square Fit.
A. S. schrieb: > Zu Anfang meiner Laufbahn hatte ich die Ehre, Geiger-Müller-Zählraten zu > linearisieren. Mein Vorgänger hatte (weil einfach) auch Bereichsweise > Polynome dritten Grades gewählt. Die Übergänge waren entsprechend > grausig. Dann hätte er sich vielleicht mal mit kubischen Splines beschäftigen sollen. Da pass das mit den Übergängen besser.
Axel S. schrieb: >> Nun, Excel hat den Vorteil, das es das Polynom praktisch >> auf Knopfdruck liefert, ohne das man gleich studierter >> Mathematiker sein muss. > > Das ist nicht notwendig ein Vorteil. Nun, wir hatten ein computerbetriebenes (ein PC war sozusagen die Frontplatte) Meßgerät, das es erlaubte solche Polynome einzutippen. Die Polynome mussten vorher durch Messungen mit sehr vielen Stützstellen ermittelet werden. Da war der Weg über Excel das einfachste. Die Meßwerte wurden vorher sowieso über Excel gesammelt. > Das Problem mit "Knopfdruck" Lösungsmachinen ist, daß sie dazu > verleiten, Probleme von Leuten bearbeiten zu lassen, die dafür nicht > qualifiziert sind Nun, ich bin kein studierter Mathematiker aber als Ingenieur durchaus gewöhnt, Diagramme zu erstellen und zu beurteilen. und auch den größten Mist als Lösung akzeptieren, > Ähnlich wie bei der Einführung von Taschenrechnern im Matheunterricht. Nun, da habe ich es mir von vornherein angewöhnt, parallel eine Überschlagsrechnung im Kopf zu machen.
my2ct schrieb: > Dann hätte er sich vielleicht mal mit kubischen Splines beschäftigen > sollen. Da pass das mit den Übergängen besser. Wäre trotzdem genauso falsch. An den Übergängen sieht man es nur sofort. Etwas falsches (wie hier vermutlich das Polynom 5ten Grades) wird doch nicht richtig, indem man offensichtliche Fehler kaschiert. Wenn ein Zusammenhang linear ist, und ich 100 Messwertpaare hab, dann will ich LR und kein Perfektes Polynom100. Ich hab noch mit kurvenlinealen gearbeitet. Bei allzu vielen Stellen beim ablesen fragte man nach, wer denn das Lineal geeicht habe.
A. S. schrieb: > my2ct schrieb: >> Dann hätte er sich vielleicht mal mit kubischen Splines beschäftigen >> sollen. Da pass das mit den Übergängen besser. > > Wäre trotzdem genauso falsch. An den Übergängen sieht man es nur sofort. Ach. Hier wurden ja schon mal mangelnde mathematische Kenntnisse bemängelt. Das scheint sich fortzusetzen. Warum schreibst du einen Kommentar zu kubischen Splines, wenn du offensichtlich gar nicht weißt, was das ist?
Dieter R. schrieb: > Warum schreibst du einen > Kommentar zu kubischen Splines, wenn du offensichtlich gar nicht weißt, > was das ist? Und warum sollten kubische Splines für eine Funktion y=x/(1-x*t) irgendwie sinnvoll sein, nur weil sie die Übergänge besser kaschieren als Polynome? Die können ja nicht der Maßstab sein.
A. S. schrieb: > Dieter R. schrieb: >> Warum schreibst du einen Kommentar zu kubischen Splines, >> wenn du offensichtlich gar nicht weißt, was das ist? > > Und warum sollten kubische Splines für eine Funktion > y=x/(1-x*t) irgendwie sinnvoll sein, Gegenfrage: Warum sollte IRGENDEINE beliebige Ersatzfunktion sinnvoll sein -- man kann doch ebensogut die originale Funktion berechnen, oder?! -- Nein, das kann man eben NICHT immer. > nur weil sie die Übergänge besser kaschieren als Polynome? > Die können ja nicht der Maßstab sein. Splines SIND sachgerecht zusammengesetzte Polynomen und, JA! Genau das ist der Maßstab -- dass "die Übergänge besser kaschiert" sind. Wieso auch nicht?
Liebe Leute, neben dem (sicher interessanten) Problem, einen lächerlichen Haufen von Meßwerten zu interpolieren, bleibt doch die schon gestellte Frage: warum nicht mehr Meßpunkte und was sagt der Hersteller des Sensors (falls es sich um einen Solchen handeln sollte) ?! Und wann hätte man schon einmal ein Polinom 9ten Grades auf einem Proz realisiert :) Da rechnet sich schon mein PY auf einem gestandenen PC fast tot. Und mit Normierung auf meinetwegen 1 ist doch nichts gewonnen. Gute Nacht, Rainer
Egon D. schrieb: > man kann doch ebensogut die originale Funktion > berechnen, oder?! -- Nein, das kann man eben NICHT immer. Man kann sich aber immerhin mal Gedanken drüber machen, welche physikalischen Zusammenhänge zwischen den Werten bestehen. Und wenn da - nicht in diesem Fall, aber allgemein - eine 1/x Anhängigkeit oder ein Logarithmus besteht, kannst Du noch soviele Polygone zusammenfassen, das wird nix. Was zum Beispiel so bei obiger Funktion ein Polynom 5.Grades physikalisch rechtfertigen? Der meiste Kram läßt sich durch eine Parabel schonmal ganz gut annähern, und ich bin immer noch der Meinung, ohne Kenntnis wie genau die Werte ermittelt werden ist es sinnlos zu versuchen die Punkte möglichst genau zu treffen.
Karl K. schrieb: > Egon D. schrieb: >> man kann doch ebensogut die originale Funktion >> berechnen, oder?! -- Nein, das kann man eben NICHT immer. > > Man kann sich aber immerhin mal Gedanken drüber machen, > welche physikalischen Zusammenhänge zwischen den Werten > bestehen. Selbstverständlich. Das ist immer gut. > Und wenn da - nicht in diesem Fall, aber allgemein - eine > 1/x Anhängigkeit oder ein Logarithmus besteht, kannst Du > noch soviele Polygone zusammenfassen, das wird nix. (Polygone == Polynome?) Das stimmt so nicht. Es ist richtig, dass sich Funktionen mit einer horizonalen Asymptote nur mit Aufwand durch Polynome annähern lassen, aber machbar ist es. Darüberhinaus haben Polynome zahlreiche sehr angenehme Eigenschaften. > Was zum Beispiel so bei obiger Funktion ein Polynom 5.Grades > physikalisch rechtfertigen? Das ist nicht immer das Entscheidende. Viele Steuerungsprobleme haben i.d.R. einen physikalischen, einen mathematischen und einen rechentechnischen Aspekt. Wenn man schnell multiplizieren, aber nur langsam durch eine Variable dividieren kann, dann kann es aus rein rechen- technischen Gründen sinnvoll sein, eine Polynomapproximation zu verwenden -- es geht bei ausreichender Genauigkeit einfach schneller. > Der meiste Kram läßt sich durch eine Parabel schonmal > ganz gut annähern, und ich bin immer noch der Meinung, > ohne Kenntnis wie genau die Werte ermittelt werden ist > es sinnlos zu versuchen die Punkte möglichst genau zu > treffen. Das kann gut sein -- aber das betrifft den physikalischen Aspekt, nicht den rechentechnischen.
Egon D. schrieb: > Das kann gut sein -- aber das betrifft den physikalischen > Aspekt, nicht den rechentechnischen. Das erinnert aber bißchen an die Leute im Elektrotechnik-Praktikum, die ihre Messwerte von der Entladekurve eines Kondensators mit einem Polynom x-ten Grades annähern wollten. Rechentechnisch sicher bewundernswert, physikalisch leider Quatsch.
Egon D. schrieb: > Nein, das kann man eben NICHT immer. In diesem teilthread mit den splines ging es doch genau darum dass die zugrunde liegende Funktion (x/(1-xt)) bekannt ist bzw. erkannt hätte werden können. Dann ist so ein Rat Quatsch: my2ct schrieb: > Dann hätte er sich vielleicht mal mit kubischen Splines beschäftigen > sollen. Da pass das mit den Übergängen besser. Das ist genauso unsinnig wie Karls Beispiel: Karl K. schrieb: > Entladekurve eines Kondensators mit einem Polynom x-ten Grades annähern wollten
Ich habe sie jetzt nicht bei Hand, aber es gibt ne Website die gängige Protoformeln auf die gegebenen Meßpunkte in steigender Komplexität und Grad anwendet und R dazu ausgibt. Das erschlägt eigentlich alles.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.