Kurvenfitting

Tach zusammen,

ich habe eine Tabelle mit 39 Wertepaaren und möchte daraus eine Funktionsgleichung extrahieren.

Kennt jemand ein Tool (kostenlos zum downloaden) oder kann mir die Berechnung durchführen?

Vielen Dank,
Thomas

Hi Thomas :wink:

ich habe eine Tabelle mit 39 Wertepaaren
und möchte daraus eine Funktionsgleichung
extrahieren.

Weisst du denn etwas über den Kurvenverlauf? Also erwartest du eine exponentiell abfallende Funktion, eine lineare Funktion, eine quadratische,…

Wenn du keine Vorstellung hast, welche Art von Funktion da rauskommt, ist das Fitting sehr schwer. Man kan jedoch mit Sicherheit ein Polynom 39-ten Grades berechnen, das alle 39 Punkte „trifft“.

Also, überleg mal, ob du den erwarteten Kurvenverlauf kennst und melde dich dann nochmal :wink:))

cu Stefan.

Hi Stefan,

klar kenne ich den Verlauf, wenn ich die Wertepaare habe (Excel macht’s möglich).
Es ist eine NTC-Kennlinie: ca. 1/x

Ich nehme auch an, daß das Tool das anzeigen kann.

Man kan jedoch mit Sicherheit ein Polynom ::39-ten Grades
berechnen, das alle 39 Punkte „trifft“.

ich will nichts berechnen, ich möchte berechnen lassen, hihi.

Ciao,
Thomas

Ich mache derartige Fittings gern per Fehlerquadratsummen-Minimierung mit Hilfe der Solver-Funktion von Excel.

Hi Thomas :wink:

Es ist eine NTC-Kennlinie: ca. 1/x

Nunja, wenn es denn 1/x wäre, bräuchtest du ja nicht mehr zu fitten. Daher vermute ich mal, du hast einen Kurve der Form:

y = a/x + b

Beim Fitting möchtest du die beiden Parameter a und b heraus bekommen. Eine sehr einfache und schnelle Möglichkeit wäre die folgende.

Nimm deine y-Werte und multipliziere sie mit den x-Werten, also (x,y)->(x,x*y). Die so neu gebildeten Punkte (x,x*y) liegen dann auf einer Geraden:

y*x = a + b*x

Mittels „linearer Regression“ bekommst du dann ganz leicht die Werte a und b heraus.

Diese Methode ist sehr schnell, kann allerdings bei großen Messfehlern zu erheblichen Ungenauigkeiten führen, weshalb man dann besser solche Messpunkte, deren Fehler relativ zu ihrem Wert sehr hoch ist, aus der Berechnung rauslässt …

cu Stefan.

Hi,

nachdem ich die Solver-Beschreibung kurz angeschaut habe bin ich komplett verwirrt. Kannst Du mir das genauer beschreiben?

Nochmal: ich möchte beliebige X eingeben und das zugehörige Y angezeigt bekommen.

Zu EXCEL: eine lineare Interpolation würde mir schon genügen. Also abhängig vom X-Wert in der Tabelle die beiden passenden Wertepaare holen und den zugehörigen Y-Wert per Geradengleichung berechnen. Weisst Du wie das funktioniert (die Wertepaare holen, nicht anschließende die Berechnung)?

Ciao,
Thomas

Ich mache derartige Fittings gern per
Fehlerquadratsummen-Minimierung mit Hilfe
der Solver-Funktion von Excel.

Nochmal: ich möchte beliebige X eingeben
und das zugehörige Y angezeigt bekommen.

Das ist aber kein Fitting, sondern eine Interpolation. Wenn man die mit einer Fit-Funktion macht, muß man letztere sehr sorgfältig auswählen.

Zu EXCEL: eine lineare Interpolation
würde mir schon genügen. Also abhängig
vom X-Wert in der Tabelle die beiden
passenden Wertepaare holen und den
zugehörigen Y-Wert per Geradengleichung
berechnen.

Mit EXCEL bekomme ich das nicht hin (obwohl es geht), dafür könnte ich Dir eine entsprechdne Pascal-Funktion schreiben.

Hi Stefan,

vielen Dank für die Hilfe. Leider klappt´s nicht zufriedenstellend, weil´s halt doch nicht einfach y = a/x + b ist, nur ca.

Warte ich eben bis heute abend und mach´s zuhause. Ein Demoprogramm zum fitten habe ich in www.download.com gefunden.

Tschüß,
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallöle,

Nochmal: ich möchte beliebige X eingeben
und das zugehörige Y angezeigt bekommen.

Das ist aber kein Fitting, sondern eine
Interpolation. Wenn man die mit einer
Fit-Funktion macht, muß man letztere sehr
sorgfältig auswählen.

Oooops, kann durchaus sein, dass ich unter Fitting etwas falsch verstehe:
Ich habe ->> eine Tabelle mit X/Y-Paaren
ich möchte ->> eine Gleichung Y=f(X)
(die den tatsächlichen Verlauf im gegebenen Wertebereich natürlich mit möglichst wenig Unsicherheit repräsentiert)

Origin macht das z. B. (habe ich leider nicht)

Zu EXCEL: eine lineare Interpolation
würde mir schon genügen. Also abhängig
vom X-Wert in der Tabelle die beiden
passenden Wertepaare holen und den
zugehörigen Y-Wert per Geradengleichung
berechnen.

Mit EXCEL bekomme ich das nicht hin
(obwohl es geht), dafür könnte ich Dir
eine entsprechdne Pascal-Funktion
schreiben.

Danke, mein Taschenrechner kann das auch. VB, LabVIEW etc. auch.
In Excel kann ich es nicht (schluchz)

Anyway, heute abend mach ich´s eben zuhause mit DataFit Version 7.0.x von Oakdale Engineering. Gibt´s unter www.download.com als Demo.

Ciao,
Thomas

Hi Stupid :wink:

Das ist aber kein Fitting, sondern eine
Interpolation. Wenn man die mit einer
Fit-Funktion macht, muß man letztere sehr
sorgfältig auswählen.

Lineare Interpolation ist sehr wohl Fitting, nur dass du dazu keine Iteration brauchst. Die Parameter a und b bei der linearen Regression sind der beste Fit der Gerade an die Messpunkte im Sinne der Methode der kleinsten Quadrate.

cu Stefan.

Lineare Interpolation ist sehr wohl
Fitting, nur dass du dazu keine Iteration
brauchst. Die Parameter a und b bei der
linearen Regression sind der beste Fit
der Gerade an die Messpunkte im Sinne der
Methode der kleinsten Quadrate.

Die Interpolation (nämlich die Berechnung von Funktionswerten zwischen den Meßwerten)kann erst beginnen, wenn das Fitting (die Anpassung einer Fit-Funktion an die Meßwerte) beendet ist. Die Berechnung der Parameter einer Geraden durch zwei Punkte ist also ein Fitting, nicht aber die Berechnung neuer Funktionswerte mit Hilfe dieser Geradengleichung.

Hi Thomas :wink:

Ich habe gerade mal im Netz gesucht und mir eine NTC-Kennlinie angeschaut. Sie sieht mir doppelt-exponentiell aus. Eine Summe aus zwei abfallenden Exponentialfunktionen!

Wenn du also den Logarithmus der y-Werte nimmst, solltest du zwei Geraden kriegen, die sich in einem „Knick“ treffen. Beide Geraden kannst du dann fitten …

cu Stefan.

Ich habe ->> eine Tabelle mit
X/Y-Paaren
ich möchte ->> eine Gleichung
Y=f(X)
(die den tatsächlichen Verlauf im
gegebenen Wertebereich natürlich mit
möglichst wenig Unsicherheit
repräsentiert)

Wenn Sie die Gleichung für f(x) suchen, dann handelt es sich tatsächlich um ein Fitting. Wenn Sie dagegen nur an den Funktionswerten Y=f(X) interessiert sind, drann ist das eine Interpolation, die nicht notwendigerweise ein Fitting des gesamten Kurvenverlaufes voraussetzt, sondern auch aus Splines zusammengestückelt werden kann.

…Tja, MrStupid, womit wir wieder bei der ursprünglichen Frage angelangt sind, nicht?

>> ich habe eine Tabelle mit 39 Wertepaaren >> und möchte daraus eine
>> Funktionsgleichung extrahieren.

…ob groß oder klein geschrieben ist mir Wurscht.
Eigentlich ist mir die Gleichung auch Wurscht: ich bin an den y-Werten für beliebige x-Werte interessiert.
Ich dachte einfach, daß ich mit einer Gleichung leichter zum Ziel komme, weil ich in Excel keinen Durchblick habe, wie ich linear interpolieren kann - und zwar automatisch und komfortabel ohne Wurstelei.
Leider haut das am Arbeitsplatz nicht so toll hin, drum mach ich´s heute abend bei ´nem Glas Wein.

Viele Grüße,
Thomas

Hi :wink:

Sorry! Du hast natürlich Recht. Ich habe nicht genau gelesen, da stand „Interpolation“, nicht „Regression“.

cu Stefan.

>>ich habe eine Tabelle mit 39
Wertepaaren >> und möchte daraus
eine
>> Funktionsgleichung extrahieren.

Geht’s vielleicht so ??
Vorhandene x und y -Werte in Excel eingeben,
x,y-Diagramm zeichnen lassen, Regressionskurve zeichnen lassen mit der Option ‚Gleichung anzeigen‘, verschiedene Regressionsformen ausprobieren, die Gleichung der Kurve, die am besten paßt abschreiben, in Excel eingeben(z.B.A1=B1^2),
dann wird automatisch zu jedem eingegebenen Wert in B1 der Wert von A1 berechnet.
Oder bringt das nichts ???

Eigentlich ist mir die Gleichung auch
Wurscht: ich bin an den y-Werten für
beliebige x-Werte interessiert.
Ich dachte einfach, daß ich mit einer
Gleichung leichter zum Ziel komme, weil
ich in Excel keinen Durchblick habe, wie
ich linear interpolieren kann - und zwar
automatisch und komfortabel ohne
Wurstelei.

Es ist zwar sicher schon zu spät, aber ich hab jetzt eine lineare Interpolation in EXCEL hinbekommen. Dazu muß man unter Extras|Makro|Visual Basic-Editor folgende Funktion definieren:

Function Interpol(Data As DataTable, X As Double) As Double
N = 1
While Data(N + 1, 1) > Data(N, 1): N = N + 1: Wend
If (X Data(N, 1) Then
Interpol = Data(N, 2)
Else
l = 0: r = N
While r - l > 1
i = Int((r + l) / 2)
If X Data(i, 1) Then
l = i
Else
l = i: r = i + 1
End If
Wend
Interpol = (Data(l, 2) * (Data(r, 1) - X) + Data(r, 2) * (X - Data(l, 1))) / (Data(r, 1) - Data(l, 1))
End If
End Function

Hat man seine X-Werte in Spalte A und seine Y-Werte in Spalte B, kann man den Y-Wert an der Stelle X mit Interpol($A$1:blush:B$39;X) berechnen. Das Ganze hat natürlich sen nachteil, daß benutzerdeninierte Funktionen unter EXCEL ziemlich langsam sind.

Danke…
Hi Thorsten,

is ja toll.
Vielen Dank an alle,

Thomas

Danke, es ist nicht zu spät :smile:
Hallo MrS,

Es ist zwar sicher schon zu spät, aber
ich hab jetzt eine lineare Interpolation
in EXCEL hinbekommen.

…nein, es ist nicht zu spät. Auch das kann ich sehr gut gebrauchen, denn die NTC-Kennlinie wird voraussichtlich im Microcontroller abgelegt und im Betrieb dann linear interpoliert. Mit Deiner Function Interpol kann ich Toleranzuntersuchungen etc. in Excel machen.

Außerdem weiss ich nun wie eigene Functions in Excel eingebunden werden können.

Viele Grüße,
Thomas

Vorsicht: Haarspalterei! :wink:
Hi Stefan!

Man kan jedoch mit
Sicherheit ein Polynom 39-ten Grades
berechnen, das alle 39 Punkte „trifft“.

Eines? Unendlich viele! Bei den Polynomen 38-ten Grades ist die Lösung allerdings eindeutig. :wink:

Gruß
Ted

Also, überleg mal, ob du den erwarteten
Kurvenverlauf kennst und melde dich dann
nochmal :wink:))

cu Stefan.