AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Koeffizienten eines Polynoms berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Koeffizienten eines Polynoms berechnen

Ein Thema von DelphiManiac · begonnen am 5. Jan 2009 · letzter Beitrag vom 9. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 12:49
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 13:45
Du hast erstmal 2 Mögliochkeiten (die du auch schon angesprochen hast)

Interpolation duch ein Polynom

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 (klick)

Aber im Normalfall (monton steigend/fallend, geringe Krümmung) ist das Polynom schon sehr gut. (Oft bereits mit niedriger Ordnung)


Wikipedia hat dazu einen guten Artikel mit basic-beispielcode

Zu den Begriffen, die du um dich geworfen hast:

-Horner Schema
Rechnet den Funktionswert f(x) schnell aus
-Polynominterpolation
Berechnet aus vorgegebenen Wertepaaren ein Polynom dass diese möglichst gut approximiert
-Polynomregression
Öhhh .... noch nie gehört, vll. n Synonym
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#3

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 13:51
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 Linear Curve Fitting Unit anschaun
(an der hab ich zwar mitgeschrieben, bin aber nichtmehr im Thema drin^^)

hier sollte die Matrix unit liegen


Zitat:
-Polynominterpolation
Arrow Berechnet aus vorgegebenen Wertepaaren ein Polynom dass diese möglichst gut approximiert
ist nicht ganz richtig.
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
narf - not a real function
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 14:00
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 14:11
Zitat von HenKst:
Zitat:
-Polynominterpolation
Arrow Berechnet aus vorgegebenen Wertepaaren ein Polynom dass diese möglichst gut approximiert
ist nicht ganz richtig.
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.
Nja, okay

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

@Programm: Exel hattest du ja schon angesprochen
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#6

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 14:20
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
Angehängte Dateien
Dateityp: exe gleichung_888.exe (575,0 KB, 26x aufgerufen)
narf - not a real function
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#7

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 14:39
@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
  Mit Zitat antworten Zitat
HenKst

Registriert seit: 7. Jul 2008
113 Beiträge
 
#8

Re: Koeffizienten eines Polynoms berechnen

  Alt 5. Jan 2009, 14:46
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
narf - not a real function
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Koeffizienten eines Polynoms berechnen

  Alt 9. Jan 2009, 08:26
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
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#10

Re: Koeffizienten eines Polynoms berechnen

  Alt 9. Jan 2009, 09:13
Hallo jFHeins,

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
Ich halte diese Aussage für vermessen. Ein Polynom 3.Grades trifft exakt 4 Punkte mehr nicht. Alles andere ist Zufall.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz