![]() |
Koeffizienten eines Polynoms berechnen
Hallo,
ich habe eine Frage, die ihr mir eventuell beantworten könnt. Wir kalibrieren Industrie-Geräte für Temperatur, Durchfluss, CO2 etc. Für die Berechnung gibt es 2 Möglichkeiten. 1. Man legt eine Tabelle an, die die Werte eindeutig zuweisen 2. Man fährt gewisse Punkte an und errechnet sich daraus ein N-Stelliges Polynom Meine Frage geht nun zu Punkt 2. Angenommen ich habe eine Messwertkurve und will daraus die Koeffizienten berechen, wie mache ich das? Dafür gibt es ja Programme (kennt ihr ein gutes?) Excel kann dies ja auch über die Trendkurve ein Polynom berechnen. Es gibt ja mehrere Mathematische Ansätze, aber gut kenne ich mich da nicht aus: -Horner Schema -Polynominterpolation -Polynomregression Ich will im Prinzip über N-Messwerte ein Polynom (n-Grades) bekommen, so dass ich nur eine Formel in der Firmware brauch und mit x reinzugehen. Viele Dank Gruß DM |
Re: Koeffizienten eines Polynoms berechnen
Du hast erstmal 2 Mögliochkeiten (die du auch schon angesprochen hast)
:arrow: Interpolation duch ein Polynom :arrow: Interpolation duch eine Spline ("Tabelle") Je nach der Kurve die du annähern möchtest, kann es Probleme mit dem Polynom geben - die Funktion wird u.U. sehr schlecht angenähert ( ![]() Aber im Normalfall (monton steigend/fallend, geringe Krümmung) ist das Polynom schon sehr gut. (Oft bereits mit niedriger Ordnung) Wikipedia hat dazu einen ![]() Zu den Begriffen, die du um dich geworfen hast: -Horner Schema :arrow: Rechnet den Funktionswert f(x) schnell aus -Polynominterpolation :arrow: Berechnet aus vorgegebenen Wertepaaren ein Polynom dass diese möglichst gut approximiert -Polynomregression :arrow: Öhhh .... noch nie gehört, vll. n Synonym :gruebel: |
Re: Koeffizienten eines Polynoms berechnen
Hi
Also mit interpolation wird das wohl nix, weil interpolierte Polinome bei kleinen Ungenauigkeiten(die bei Messwerten nunmal vorkommen) anfangen wie wild durch die Gegend zu springen. Für Approximation könntest du dir mal die ![]() (an der hab ich zwar mitgeschrieben, bin aber nichtmehr im Thema drin^^) ![]() Zitat:
Was du beschreibst ist Approximation(wie du ja auch sagst^^)bzw regression auf englisch ;) Interpolation berechnet eine Kurve die genau durch die angegebenen Werte geht, wobei der Rest beliebig abweichen kann. GreeZ HenKst |
Re: Koeffizienten eines Polynoms berechnen
Hey Danke für eure Antworten!!
Die Unit gucke ich mir mal an. Kennt ihr denn ein fertiges Programm, welches dieses Leistet? Also mit Wertepaaren füttern und dann die Koeffizientenbilden? (und am Besten noch grafisch darstellen)? Gruß DM |
Re: Koeffizienten eines Polynoms berechnen
Zitat:
Wenn es keine großartig gekrümmte Kurve ist, böte es sich an, auch bei 100 Messwerten ein Polynom 3. Grades zu verwenden - das trifft dann zwar nicht mehr alle Punkte, aber als Approximation sollte es reichen ;) Also Approximation statt Interpolation :stupid: @Programm: Exel hattest du ja schon angesprochen :mrgreen: |
Re: Koeffizienten eines Polynoms berechnen
Liste der Anhänge anzeigen (Anzahl: 1)
hm naja wirklich fertig ist das Programm zwar nicht aber ich lads trotzdem mal hoch^^
Benutzung Points/Formulas: links kannst du angeben welche funktion du benutzen willst, polynom sollte erstmal reichen der load knopf läd punkte textdateien die in etwa so aussehen 1 10 2 100 3 1000 4 10000 5 100000 und der solve knopf löst die gleichung(bzw versuchts ;) ) Punktecounter: gibt an wieviele Punkte du eingeben willst, erzeugt entsprechend viele Eingabefelder Anzeigecounter: gibt an wieviele errechnete Punkte ausgegeben und auf der graphic gezeichnet werden Residium: zeigt die genauigkeit an: 0 = passt; >0 passt schlechter; <0 bug^^ NonLinear: gibt die Anzahl der nicht linearen parameter an(brauchst du für polynome nicht) Linear: gibt die Anzahl der linearen Parameter an, wenn das gleichviele sind wie angegebene Punkte wird interpoliert, wenn es weniger sind approximiert (mehr geht nicht^^) Results: zeigt wenn ich mich recht erinnere die koefizienten an^^ Graphic: graphische Darstellung der funktion Programm ist aber wie gesagt unfertig und nicht durchgetestet |
Re: Koeffizienten eines Polynoms berechnen
@HenKst
Danke für dein Tool, habs mal ausprobiert und scheint (auf den ersten Blick) richtig zu funktionieren. Allerdings wollte ich jetzt mal ein paar Versuchsreihen starten und deshalb suche ich ein Tool, dass schon "ausgereift" ist um die Ergebnisse zu bewerten. Aber dein Prog geht schon genau in die Richtung... Vielen Dank |
Re: Koeffizienten eines Polynoms berechnen
Also ich denke schon das die Ergebnisse richtig sind.
Was nicht fertig ist ist die Oberfläche, Fehlermeldungen etc Darum ist es für professionellen Gebrauch vermutlich momentan nicht geeignet :) |
Re: Koeffizienten eines Polynoms berechnen
Hallo erstmal,
ich bin in Mathe zwar nicht mehr ganz so fit, aber ich möchte mal etwas als Denkanstoß einwerfen. Ich glaube mich erinnern zu können, dass diese Polynome nur Näherungskurven für die vollständige und eigentliche Funktion darstellen und zwar für einen bestimmten Bereich. außerhalb dieses Bereiches kann der Wert extrem abweichen. Zum 2. (ich weiß ja nicht ob ihr die Kurve vieleicht einfach nur mal darstellen wollt oder auch Rechnungen damit anstellt oder diese Funktion an die Besitzer der kalibrierten Geräte abgebt) ist eine Funktione, die der Genauigkeit in dem entsprechenden Bereich wiedergibt, ein Polynom mit sehr hohem N-Grad. Die Frage ist also, kann man das jemanden zumuten. Wenn du genaueres darüber wissen möchtest dann schau mal nach dem ISO-Leitfaden "Guide to the Expression of uncertainty in measurement" (GUM). Viel Glück |
Re: Koeffizienten eines Polynoms berechnen
Hallo jFHeins,
Zitat:
Zusatzbetrachtungen sind nötig um abschätzen zu können wie gross die Abweichung tatsächlich ist. Eine exakte Kurve kriegst du nur wenn du ein Polynom 99. Grades nimmst. Es gibt aber darüber hinaus jede Menge mathematische Methoden mit denen man Schmiegparabeln (Näherungskurven) berechnen kann. Z.B. Taylor Reihe usw. Das selbst zu programmieren sollte kein allzu grosses problem dartstellen. Grüsse Rainer |
Re: Koeffizienten eines Polynoms berechnen
Zitat:
Zitat:
Zitat:
Die bessere Lösung wäre eventuell, eine Tabelle zu nehmen und zwischen den Punkten quadratisch (oder bei vielen Werten sogar nur linear) zu interpolieren :stupid: Erfordert mehr Rechenaufwand, umgeht aber das Problem dass dass Polynom schwankt ;) |
Re: Koeffizienten eines Polynoms berechnen
Hallo nochmal
Ich hab das jetzt mal kurz aufgezeichnet, weil ich irritiert war, ob ein Polynom 3. Grades eine sagen wir Gerade oder gekrümmte Kurve wirklich 4 mal schneidet, denn ich kenne es nur so, das ein Polynom 3. Grades dies nur 3 mal macht. Dies hat sich erstmal auch bestätigt, was aber nicht Inhalt meiner Antwort hier sein soll. Wie schon beide meiner Vorredner sagten, trifft ein Polynom X.Grades nur X eventuell auch X+1 Punkte auf der eigentlichen Kurve. Dies bedeutet aber nicht, dass ein Polynom 99. Grades 99% aller Punkte trifft, sondern, wie in der ersten Aussage schonmal vertieft 99 oder 100 Punkte der "Ursprungsfunktion". Alle die sich mit Mathe auskennen, wissen aber, dass ein Punkt unendlich klein ist und zwischen zwei Punkten gibt es auf einer Kurve (selbst wenn es eine Gerade ist) unendlich viele Punkte. Ergo rein mathematisch betrachtet ist ein Polynom mit dem Grad unendlich nötig um alle Punkte zu treffen. Jetzt kommt hier die "eingeschränkte" Darstellungsmöglichkeit mit einem Bildschirm uns zu Hilfe. Also muss ich nur ermitteln, wieviele Pixel zwischen Anfangs- und Endpunkt liegen, damit ich eine Qualitative Aussage treffen kann zu welchem Prozentsatz ich genau bin. Dies ist allerdings nur die theoretische Betrachtung, welcher Aufwand nötig wäre, um eine sagen wir 99% oder 100% genaue Aussage, welche meine beiden Vorredner erreichen wollten, bekommt. Dass dieser Aufwand sicherlich in keinem Verhältnis mehr zum Nutzen steht, ist mir wohl bewußt. Bei der automatischen Erzeugung von Ausgleichskurven für eure Kalibriermessungen, sollten sinnvolle Annahmen getroffen werden, welche Genauigkeit wirklich von nöten ist und eine variable von euch einstellbare Anzahl an Polynomen für die Prüfung. |
Re: Koeffizienten eines Polynoms berechnen
Normalerweise weiss man in etwa, was man misst, bzw. kennt die physikalischen Grundlagen und Gesetze des Mediums. Hieraus lassen sich zumindest die Stammfunktionen ableiten. Natürlich gibt es auch Szenarien, in denen das unbekannt ist, z.B. bei Aktienkursen.
Wenn also die Stammfunktion bekannt ist, kann man eine Regression darüber laufen lassen und erhält somit eine Ausgleichsfunktion, die den Verlauf der Messpunkte beschreibt und in gewissem Rahmen Inter- und Extrapolationen erlaubt. Die Funktion wird keine Überraschungen liefern. So wird z.B. bei einer Kurve, die das Abkühlungsverhalten über die Zeit darstellt, mit sicherheit eine streng monoton fallende Stammfunktion eingesetzt werden, denn welches Objekt erwärmt sich spontan? Hier gibt es diverse Verfahren für spezielle Stammfunktionen (kleinste Quadrate, Gaus, etc.), oder allgemeine Iterationsverfahren, die die Parameter beliebiger Funktionen ermitteln. Wenn die Stammfunktion unbekannt oder nicht deterministisch ist, sollten Ausgleichssplines zum Ziel führen. Diese sind jedoch mit Vorsicht zu genießen, da sie jeglichen 'Mist' der Messwerte mitmachen, also Peaks erzeugen können, wo gar keine Sind usw. Von der Regel: X-Messwerte ergibt ein Polynom X-1.ten Grades würde ich abraten, denn beim kleinsten Messfehler schaukelt sich die Funktion so auf, das es eine Freude ist. Gleiches gilt übrigens für Splines und zu wenigen Messpunkten bei sich stark ändernden Werten (z.B. Peaks oder plötzlicher Anstieg). Die hier genannte Faustregel, nach der i.A. ein Polynom 3.Grades ausreicht, ist gar nicht so abwegig und führt in der Regel zu befriedigenden Ergebnissen. |
Re: Koeffizienten eines Polynoms berechnen
hallo fjheins,
nur zu deiner Information: Alle Polynome x ten Grades die als Näherungsfunktion benutzt werden nennt man Schmiegparabeln also auch deine Funktion 3. Grades. (E-Technik Studium Mathematik 1 1.Semester) Grüsse Rainer |
Re: Koeffizienten eines Polynoms berechnen
Zitat:
interessant, wir hatten den Begriff nicht - daher hatte ich angenommen es würde sich um eine quadratische Funktion handeln ;) Nichts für ungut ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz